@verified-network/verified-custody 0.4.1 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/style.css","../src/iosShim.ts","../src/pages/index.tsx","../src/services/store.tsx","../src/pages/ftu.tsx","../src/utils/constants.ts","../src/utils/helpers.tsx","../src/utils/config.ts","../src/pages/contact.tsx","../src/components/slider.tsx","../src/components/search.tsx","../src/components/overlays.tsx","../src/pages/otp.tsx","../src/services/contracts.ts","../src/pages/createPin.tsx","../src/components/success.tsx","../src/pages/addCosigners.tsx","../src/pages/enterPin.tsx"],"sourcesContent":["import \"./style.css\";\r\nimport \"./iosShim\";\r\n\r\nexport { default as VerifiedCustody } from \"./pages\";\r\n\r\nexport { default as FTUPage } from \"./pages/ftu\";\r\n\r\nexport { default as EnterPinPage } from \"./pages/enterPin\";\r\n\r\nexport { default as CreatePinPage } from \"./pages/createPin\";\r\n\r\nexport { default as ContactPage } from \"./pages/contact\";\r\n\r\nexport { default as OTPPage } from \"./pages/otp\";\r\n\r\nexport { default as AddCoSignersPage } from \"./pages/addCosigners\";\r\n\r\nexport { hashTheString, encryptString, decryptString } from \"./utils/helpers\";\r\n\r\nexport { VaultContextProvider } from \"./services/store\";\r\n\r\nexport {\r\n VerifiedWalletAction,\r\n VerifiedWalletVault,\r\n VerifiedWalletTx,\r\n VerifiedCustodyProps,\r\n VerifiedCustodyHelpers,\r\n} from \"./utils/types\";\r\n","\nfunction injectStyle(css) {\n if (!css || typeof document === 'undefined') return\n\n const head = document.head || document.getElementsByTagName('head')[0]\n const style = document.createElement('style')\n style.type = 'text/css'\n \n if(head.firstChild) {\n head.insertBefore(style, head.firstChild)\n } else {\n head.appendChild(style)\n }\n\n if(style.styleSheet) {\n style.styleSheet.cssText = css\n } else {\n style.appendChild(document.createTextNode(css))\n }\n}\ninjectStyle(\"textarea:focus,input:focus{outline:none;border:none}input{appearance:textfield;-moz-appearance:textfield;outline:none;border:none;margin:0}input::placeholder{margin:0}input[type=password]::-ms-reveal{display:none}input[type=password]::-moz-password-toggle{display:none}input[type=password]::-webkit-contacts-auto-fill-button{display:none}input::-webkit-inner-spin-button,input::-webkit-outer-spin-button{-webkit-appearance:none}::-webkit-scrollbar{width:5px;height:4px}::-webkit-scrollbar-thumb{height:4px;width:5px;background-color:var(--Neutral-200, #d8d9df);border-radius:4px}::-webkit-scrollbar-thumb:hover{background-color:var(--Neutral-200, #d8d9df)}::-webkit-scrollbar-track{background:transparent;height:4px;width:5px;cursor:pointer}p{margin:0}.verified-custd-mdl-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;padding-top:20px;padding-bottom:20px;overflow-y:auto;overflow-x:hidden;position:relative}.verified-custd-mdl-startup-outter{width:100%;height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;overflow-y:auto;overflow-x:hidden;background:linear-gradient(180deg,#643fff,#381ab7)}.verified-custd-mdl-startup-outter-norm{width:100%;height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;overflow-y:auto;overflow-x:hidden;background:var(--common-white_states-main, #fff)}.verified-custd-mdl-startup{width:650px;height:fit-content;display:flex;justify-content:center;align-items:center;flex-direction:column;overflow-x:hidden;overflow-y:auto;padding-bottom:20px;border:1px solid #0F122E;border-radius:10px;position:relative}.verified-custd-mdl-loading-screen{border-radius:10px;min-height:100%;width:100%;flex-shrink:0;background:#0000004d;z-index:10;display:flex;justify-content:center;align-items:center;overflow:auto;bottom:-10px;top:0;position:absolute}.verified-custd-mdl-startup-icon-container{width:76.119%;display:flex;justify-content:center;align-items:center;position:relative;flex-direction:column;height:298px}.verified-custd-mdl-startup-icon-shadow{position:absolute;bottom:10px;right:70px;width:48.5%}.verified-custd-mdl-startup-text-container{display:inline-flex;flex-direction:column;align-items:flex-start;gap:12px;margin-right:20px;margin-left:20px}.verified-custd-mdl-startup-text-header{color:var(--Neutral-White-100, var(--common-white_states-main, #fff));font-family:Manrope;font-size:2.1rem;font-style:normal;font-weight:700;line-height:2.8125rem;margin:0}.verified-custd-mdl-startup-text-footer{color:var(--Neutral-White-100, var(--common-white_states-main, #fff));font-family:Roboto;font-size:.9rem;font-style:normal;font-weight:400;line-height:1.5rem;opacity:.8}.verified-custd-mdl-ftu-startup-button{display:inline-flex;padding:14px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);border-radius:var(--space-8px, 8px);background:var(--primary-bitter-lemon-500, #cfe600);cursor:pointer;user-select:none;color:var(--Neutral-950, #0C0C0E);text-align:center;margin:20px;font-family:Roboto;font-size:16px;font-style:normal;font-weight:500;line-height:150%;outline:none;border:none}.verified-custd-mdl-startup-language{background:var(--common-white_states-main, #fff);height:100%;width:90%;max-width:700px}.verified-custd-mdl-startup-language-content-container{display:inline-flex;flex-direction:column;align-items:flex-start;gap:32px;width:100%}.verified-custd-mdl-st-language-content{display:flex;flex-direction:column;align-items:flex-start;gap:20px;align-self:stretch;width:100%}.verified-custd-mdl-st-language-text{color:var(--Neutral-950, #0c0c0e);font-family:Roboto;font-size:1.5rem;font-style:normal;font-weight:700;line-height:100%;align-self:stretch}.verified-custd-mdl-ms-search-content:hover{border-radius:var(--space-8px, 8px);border:1px solid var(--secondary-electric-violet-300, #9da3ff);background:var(--secondary-electric-violet-50, #ecefff)}.verified-custd-mdl-st-contact-input{display:flex;flex-direction:column;align-items:flex-start;gap:14px;width:100%}.verified-custd-mdl-st-contact-first-section{display:flex;width:150px;height:44px;padding-left:6px;align-items:center;border-radius:var(--space-8px, 8px);background:var(--Neutral-50, #f7f7f8);cursor:pointer;user-select:none}.verified-custd-mdl-st-contact-selection-icon{display:flex;justify-content:center;align-items:center;flex-shrink:0;border-radius:24px;cursor:pointer;user-select:none;overflow:hidden;width:28px;height:28px}.verified-custd-mdl-st-contact-selection-text{color:var(--Neutral-950, #0c0c0e);text-align:right;font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:500;line-height:140%;width:40px;flex-shrink:0;cursor:pointer;user-select:none}.verified-custd-mdl-custom-blank-page{height:0}.verified-custd-mdl-startup-otp-text{display:flex;flex-direction:column;align-items:flex-start;gap:12px;align-self:stretch}.verified-custd-mdl-startup-otp-header-text{align-self:stretch;color:var(--Neutral-600, #5b5d6e);font-family:Roboto;font-size:.7rem;font-style:normal;font-weight:400;line-height:150%;max-width:100%;word-wrap:break-word}.verified-custd-mdl-otp-input-group{display:flex;align-items:flex-start;gap:var(--space-8px, 8px);width:100%}.verified-custd-mdl-otp-input{display:flex;padding:20px 12px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);flex:1 0 0;align-self:stretch;border-radius:var(--space-8px, 8px);background:var(--Neutral-50, #f7f7f8);width:25%;color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-otp-input-red{border-radius:8px;border:1px solid var(--Error-600, #E23636);background:var(--Neutral-50, #F7F7F8);display:flex;padding:20px 12px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);flex:1 0 0;align-self:stretch;width:25%;color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-otp-incorrect-text{color:var(--Error-600, #E23636);font-family:Roboto;font-size:12px;font-style:normal;font-weight:400;line-height:140%;max-width:200px;word-wrap:break-word}.verified-custd-mdl-otp-timer{display:flex;justify-content:space-between;align-items:center;align-self:stretch}.verified-custd-mdl-otp-timer-text{color:var(--Neutral-950, #0c0c0e);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-otp-timer-text-red{color:var(--Error-600, #e23636);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-otp-resend-text{color:var(--Neutral-300, #b6b7c3);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-otp-resend-text-active{color:var(--secondary-electric-violet-600, #603ff4);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:500;line-height:140%;cursor:pointer;user-select:none}.verified-custd-mdl-st-otp-icon{cursor:pointer;user-select:none}.verified-custd-mdl-startup-button{display:inline-flex;padding:14px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);border-radius:var(--space-8px, 8px);background:var(--primary-bitter-lemon-500, #cfe600);cursor:pointer;user-select:none;color:var(--Neutral-950, #0C0C0E);text-align:center;opacity:0verified-custd-mdl-5;font-family:Roboto;font-size:16px;font-style:normal;font-weight:500;line-height:150%;outline:none;border:none;width:90%;max-width:500px}.verified-custd-mdl-startup-button-active{display:inline-flex;padding:14px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);border-radius:var(--space-8px, 8px);background:var(--primary-bitter-lemon-500, #cfe600);cursor:pointer;user-select:none;color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:16px;font-style:normal;font-weight:500;line-height:150%;outline:none;border:none;width:90%;max-width:500px}.verified-custd-mdl-otp-input[type=password]{font-weight:900}.verified-custd-mdl-startup-button-click{border-radius:var(--space-8px, 8px);border:1px solid var(--Neutral-950, #0c0c0e);cursor:pointer;user-select:none;display:inline-flex;padding:14px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:16px;font-style:normal;font-weight:500;line-height:150%;outline:none;width:90%;background:transparent;max-width:500px}.verified-custd-mdl-pin-input-container-text{color:var(--Neutral-600, #5B5D6E);font-family:Roboto;font-size:14px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-st-button-text{color:var(--Neutral-950, #0c0c0e);text-align:center;font-family:Roboto;font-size:1rem;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-startup-slider{display:flex;width:335px;align-items:center;gap:12px;border-radius:4px;width:100%}.verified-custd-mdl-startup-slider-line{height:4px;flex-shrink:0;border-radius:var(--space-8px, 8px);background:var(--Neutral-100, #eeeef0)}.verified-custd-mdl-startup-slider-line-active{height:4px;flex:1 0 0;border-radius:var(--space-8px, 8px);background:var(--secondary-electric-violet-600, #603ff4)}.verified-custd-mdl-startup-contact{display:inline-flex;flex-direction:column;align-items:flex-start;gap:20px;width:100%}.verified-custd-mdl-startup-contact-content{display:flex;flex-direction:column;align-items:flex-start;gap:16px;align-self:stretch}.verified-custd-mdl-startup-contact-text{color:var(--Neutral-950, #0c0c0e);font-family:Roboto;font-size:1rem;font-style:normal;font-weight:700;line-height:100%;align-self:stretch;max-width:100%;word-wrap:break-word}.verified-custd-mdl-st-contact-content-container{display:flex;align-items:flex-start;gap:var(--space-8px, 8px);width:100%}.verified-custd-mdl-st-contact-dropdown{cursor:pointer;user-select:none}.verified-custd-mdl-st-contact-second-section{display:flex;width:100%;height:44px;padding-left:6px;align-items:center;border-radius:var(--space-8px, 8px);background:var(--Neutral-50, #f7f7f8);color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:14px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-st-contact-second-section::placeholder{color:var(--Neutral-300, #b6b7c3);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-startup-contact-footer{display:inline-flex;flex-direction:column;align-items:center;gap:12px;width:100%;margin-top:16px}.verified-custd-mdl-st-contact-footer-first-section{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;width:100%}.verified-custd-mdl-st-contact-footer-second-section{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.verified-custd-mdl-st-contact-input-error{display:flex;align-items:center;gap:4px}.verified-custd-mdl-input-error-text{color:var(--Error-600, #e23636);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:400;line-height:140%;margin:0}.verified-custd-mdl-mobille-startup-search-box-container{display:flex;flex-direction:column;align-items:flex-start;gap:6px;width:100%}.verified-custd-mdl-mobile-startup-search-box{display:flex;height:40px;align-items:center;gap:6px;border-radius:6px;border:1px solid var(--Neutral-200, #d8d9df);background:var(--Neutral-50, #f7f7f8);width:100%;overflow:hidden}.verified-custd-mdl-ms-search-box-content{height:100%;width:100%;background:transparent;color:var(--Neutral-950, #0c0c0e);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-ms-search-box-content::placeholder{color:var(--Neutral-400, #8f91a1);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-mobile-startup-search-content{display:flex;width:100%;flex-direction:column;align-items:flex-start;gap:16px;border-radius:var(--space-8px, 8px);border:1px solid var(--Neutral-50, #f7f7f8);background:var(--common-white_states-main, #fff)}.verified-custd-mdl-ms-search-content-container{display:flex;flex-direction:column;align-items:flex-start;align-self:stretch;overflow-x:hidden;overflow-y:auto}.verified-custd-mdl-ms-search-content{display:flex;padding:var(--space-8px, 8px);align-items:center;gap:19px;align-self:stretch;cursor:pointer;user-select:none;height:34px;margin-bottom:5px;border:1px solid transparent}.verified-custd-mdl-ms-search-content-active{display:flex;padding:var(--space-8px, 8px);justify-content:space-between;align-items:center;align-self:stretch;border-radius:6px;background:var(--Success-50, #f1f8ed);cursor:pointer;user-select:none}.verified-custd-mdl-ms-search-content-text-container{display:flex;align-items:center;gap:19px}.verified-custd-mdl-ms-search-content-icon{display:flex;width:28px;height:28px;justify-content:center;align-items:center;border-radius:24px;border:1px solid rgba(0,0,0,.05);background:var(--common-white_states-main, #fff);box-shadow:0 1px 4px #eee}.verified-custd-mdl-ms-search-content-text{color:var(--Neutral-950, #0c0c0e);font-family:Roboto;font-size:.775rem;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-terms-and-condition{color:var(--Neutral-400, #8f91a1);font-family:Roboto;font-size:.6rem;font-style:normal;font-weight:400;line-height:140%}.verified-custd-mdl-privacy{display:flex;align-items:center;gap:4px;margin-bottom:20px}.verified-custd-mdl-privacy-text{color:var(--Neutral-800, #40414c);font-family:Roboto;font-size:.5rem;font-style:normal;font-weight:400;line-height:1.25rem;letter-spacing:.01563rem}.verified-custd-mdl-p-p-payment-portal-amount-info-separator{display:flex;align-items:center;gap:6px;align-self:stretch;justify-content:center}.verified-custd-mdl-p-p-payment-portal-line{width:50%;height:1px;background:#eeeef0}.verified-custd-mdl-p-payment-portal-separator-text{color:var(--Neutral-700, #4a4a5a);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:400;line-height:140%;opacity:.6}.verified-custd-mdl-startup-otp-footer{display:flex;align-items:center;gap:4px;width:100%;overflow:hidden}.verified-custd-mdl-startup-otp-footer-text{color:var(--Neutral-950, #0c0c0e);font-family:Manrope;font-size:.8rem;font-style:normal;font-weight:600;line-height:100%;max-width:100%;word-wrap:break-word}.verified-custd-mdl-otp-input-container{display:flex;flex-direction:column;align-items:flex-start;gap:6px;width:100%}.verified-custd-mdl-general-web-toast-error{display:flex;align-items:center;gap:12px}.verified-custd-mdl-general-web-toast-error-container{display:flex;width:100%;flex-direction:column;align-items:flex-start;gap:10px;padding:6px}.verified-custd-mdl-general-web-toast-error-title{margin:0;color:var(--Neutral-950, #0c0c0e);font-family:Manrope;font-size:1rem;font-style:normal;font-weight:600;line-height:100%;align-self:stretch}.verified-custd-mdl-general-web-toast-error-label{align-self:stretch;color:var(--Neutral-400, #8f91a1);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:400;line-height:150%;margin:0}.verified-custd-mdl-general-web-toast-success{display:flex;padding:12px;justify-content:space-between;align-items:center;align-self:stretch;border-radius:8px;background:var(--Success-50, #f1f8ed);width:100%;height:55px;max-height:55px}.verified-custd-mdl-general-web-toast-success-cont{display:flex;align-items:center;gap:12px;width:100%}.verified-custd-mdl-general-web-toast-success-container{display:flex;width:100%;flex-direction:column;align-items:flex-start;gap:10px;padding:6px}.verified-custd-mdl-general-web-toast-success-link{display:flex;align-items:center}.verified-custd-mdl-general-web-toast-success-link-text{color:var(--secondary-electric-violet-600, #603ff4);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:700;line-height:150%;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font}.verified-custd-mdl-success-popup-content-container{display:flex;width:28.4375%;padding:24px;flex-direction:column;align-items:center;background:var(--common-white_states-main, #fff);box-shadow:0 4px 19px #0000001f;height:100%}.verified-custd-mdl-success-popup-content{display:flex;width:100%;flex-direction:column;align-items:center;gap:32px}.verified-custd-mdl-success-popup-content-text{display:flex;flex-direction:column;align-items:center;gap:12px;align-self:stretch}.verified-custd-mdl-success-popup-content-text-header{color:var(--Neutral-950, #0c0c0e);text-align:center;font-family:Manrope;font-size:1.5rem;font-style:normal;font-weight:800;line-height:140%}.verified-custd-mdl-success-popup-content-text-footer{color:var(--Neutral-600, #5b5d6e);text-align:center;font-family:Roboto;font-size:1rem;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-body-icon{width:90%;max-width:90%;max-height:250px;height:250px}.verified-custd-mdl-add-cosigner-body{display:inline-flex;padding:10px;flex-direction:column;align-items:flex-start;gap:12px;border-radius:8px;background:var(--secondary-electric-violet-50, #ECEFFF)}.verified-custd-mdl-add-cosigner-body-text-cont{display:flex;align-items:center;gap:10px;width:100%}.verified-custd-mdl-add-cosigner-body-text-icon{display:flex;padding:8px;align-items:center;gap:10px;border-radius:24px;background:var(--secondary-electric-violet-200, #C2C7FF);overflow:hidden;justify-content:center;width:20px;height:20px}.verified-custd-mdl-add-cosigner-body-text-label{width:76.1%;color:var(--Neutral-600, #5B5D6E);font-family:Roboto;font-size:10px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-body-text-label-bold{color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:10px;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-add-cosigner-buttons-cont{display:inline-flex;padding:10px;align-items:flex-start;gap:10px;background:transparent;display:flex;justify-content:space-between}.verified-custd-mdl-add-cosigner-button-neut{width:45%;display:flex;padding:14px;justify-content:center;align-items:center;gap:8px;background:transparent;border-radius:8px;border:1px solid var(--Neutral-950, #0C0C0E);color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:150%;cursor:pointer}.verified-custd-mdl-add-cosigner-button-action{width:45%;display:flex;padding:14px;justify-content:center;align-items:center;gap:8px;border-radius:8px;background:var(--primary-bitter-lemon-500, #CFE600);border:none;color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:150%;cursor:pointer}.verified-custd-mdl-add-cosigner-more-body{display:inline-flex;padding:15px;flex-direction:column;align-items:flex-start;gap:12px;border-radius:8px;background:var(--secondary-electric-violet-50, #ECEFFF)}.verified-custd-mdl-add-cosigner-more-header-cont{display:flex;flex-direction:column;align-items:flex-start;gap:32px}.verified-custd-mdl-add-cosigner-more-title-cont{display:flex;flex-direction:column;align-items:flex-start;gap:16px;align-self:stretch}.verified-custd-mdl-add-cosigner-header-text{align-self:stretch;color:var(--Neutral-600, #5B5D6E);font-family:Roboto;font-size:12px;font-style:normal;font-weight:400;line-height:150%;margin:0}.verified-custd-mdl-add-cosigner-more-title{color:var(--Neutral-950, #0C0C0E);font-family:Manrope;font-size:18px;font-style:normal;font-weight:700;line-height:120%;margin:0}.verified-custd-mdl-add-cosigner-more-label{color:var(--Neutral-700, #4A4A5A);font-family:Roboto;font-size:14px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-more-label-link{align-self:stretch;color:var(--secondary-electric-violet-700, #4E2BD7);font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:150%;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;cursor:pointer;margin:0}.verified-custd-mdl-add-cosigner-header-info-cont{display:flex;padding:10px;flex-direction:column;align-items:flex-start;gap:12px;align-self:stretch;border-radius:8px;background:var(--Accent-100, #FFF9C1)}.verified-custd-mdl-add-cosigner-header-info-text{color:var(--Accent-800, #89490A);font-family:Roboto;font-size:10px;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-add-cosigner-header-info-text-bold{color:var(--Accent-800, #89490A);font-family:Roboto;font-size:10px;font-style:normal;font-weight:700;line-height:140%}.verified-custd-mdl-add-cosigner-step2-body{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin-top:20px}.verified-custd-mdl-add-cosigner-step2-body-header{display:flex;width:100%;justify-content:space-between;align-items:center}.verified-custd-mdl-add-cosigner-step2-body-header-first-text{color:var(--Neutral-950, #0C0C0E);text-align:right;font-family:Roboto;font-size:.8rem;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-add-cosigner-step2-body-header-second-text{color:var(--Neutral-950, #0C0C0E);text-align:right;font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-add-cosigner-step2-body-content{display:flex;flex-direction:column;align-items:flex-start;gap:16px;width:100%}.verified-custd-mdl-add-cosigner-step2-body-content-header{display:flex;padding-top:14px;justify-content:center;align-items:center;position:relative;width:100%;flex-direction:column}.verified-custd-mdl-add-cosigner-step2-body-content-header-cont{display:flex;width:100%;padding:12px;flex-direction:column;align-items:flex-start;gap:16px}.verified-custd-mdl-add-cosigner-step2-body-content-header-label{display:flex;padding:4px 6px;align-items:flex-start;gap:10px;position:absolute;left:12px;top:-14px;border-radius:6px;background:var(--secondary-electric-violet-100, #DDE1FF)}.verified-custd-mdl-add-cosigner-step2-body-content-header-label-text{color:var(--secondary-electric-violet-900, #362689);font-family:Roboto;font-size:10px;font-style:normal;font-weight:500;line-height:140%;margin:0}.verified-custd-mdl-add-cosigner-step2-body-content-header-body{justify-content:space-between;align-self:stretch;border-radius:8px;border:1px solid var(--Neutral-100, #EEEEF0);background:var(--Neutral-50, #F7F7F8);position:relative;display:flex;padding:12px;align-items:flex-start;gap:16px}.verified-custd-mdl-a-c-2-b-content-header-body-header-cont{display:flex;align-items:center;gap:12px}.verified-custd-mdl-a-c-2-b-content-header-body-header{display:flex;flex-direction:column;align-items:flex-start;gap:6px}.verified-custd-mdl-a-c-2-b-content-header-body-title{color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:16px;font-style:normal;font-weight:500;line-height:150%;margin:0;max-width:150px;word-wrap:break-word;overflow-wrap:break-word}.verified-custd-mdl-a-c-2-b-content-header-body-label{color:var(--Neutral-400, #8F91A1);font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:140%;margin:0;max-width:150px;word-wrap:break-word;overflow-wrap:break-word}.verified-custd-mdl-a-c-2-b-content-header-body-button{display:flex;padding:5.5px 8px;justify-content:center;align-items:center;gap:10px;border-radius:6px;border:1px solid var(--secondary-electric-violet-600, #603FF4);background:var(--secondary-electric-violet-600, #603FF4);color:var(--secondary-electric-violet-50, #ECEFFF);text-align:right;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-add-cosigner-step2-body-content-footer{display:flex;align-items:center;gap:4px;cursor:pointer}.verified-custd-mdl-add-cosigner-step2-body-content-footer-text{color:var(--secondary-electric-violet-600, #603FF4);text-align:right;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-add-cosigner-step2-add-more-body{display:flex;padding:15px;flex-direction:column;align-items:flex-start;gap:16px;border-radius:8px;border:1px solid var(--Neutral-200, #D8D9DF);min-width:90%;margin-bottom:20px;width:100%}.verified-custd-mdl-add-cosigner-step2-add-more-first{display:flex;justify-content:space-between;align-items:center;align-self:stretch;width:100%}.verified-custd-mdl-add-cosigner-step2-add-more-first-header{display:flex;align-items:flex-end;gap:5px}.verified-custd-mdl-add-cosigner-step2-add-more-first-header-text{color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:.7rem;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-add-cosigner-step2-add-more-first-footer{display:flex;padding:4px 6px;align-items:flex-start;gap:10px;border-radius:6px;background:var(--secondary-electric-violet-100, #DDE1FF)}.verified-custd-mdl-add-cosigner-step2-add-more-first-footer-text{color:var(--secondary-electric-violet-900, #362689);font-family:Roboto;font-size:10px;font-style:normal;font-weight:500;line-height:140%;margin:0}.verified-custd-mdl-add-cosigner-step2-add-more-second{display:flex;flex-direction:column;align-items:flex-start;gap:4px;width:100%}.verified-custd-mdl-add-cosigner-step2-add-more-second-input{display:flex;padding:12px;align-items:center;gap:182px;align-self:stretch;border-radius:8px;background:var(--Neutral-50, #F7F7F8);color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:12px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-step2-add-more-third{display:flex;align-items:flex-start;gap:24px;width:100%}.verified-custd-mdl-add-cosigner-step2-add-more-third-cont{display:flex;align-items:center;gap:4px}.verified-custd-mdl-add-cosigner-step2-add-more-third-cont-text{color:var(--Neutral-900, #383842);font-family:Roboto;font-size:13px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-step2-add-more-buttons{display:flex;align-items:flex-start;gap:16px;align-self:stretch;width:100%;background:transparent}.verified-custd-mdl-add-cosigner-step2-add-more-buttons-neut{width:50%;display:flex;padding:7.5px 12px;justify-content:center;align-items:center;gap:10px;flex:1 0 0;border-radius:8px;border:1px solid var(--secondary-electric-violet-600, #603FF4);color:var(--secondary-electric-violet-600, #603FF4);text-align:right;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:140%;background:transparent;cursor:pointer}.verified-custd-mdl-add-cosigner-step2-add-more-buttons-action{width:50%;display:flex;padding:6px 8px;justify-content:center;align-items:center;gap:10px;flex:1 0 0;align-self:stretch;border-radius:8px;border:1px solid var(--secondary-electric-violet-600, #603FF4);background:var(--secondary-electric-violet-600, #603FF4);color:var(--secondary-electric-violet-50, #ECEFFF);text-align:right;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:140%;cursor:pointer}.verified-custd-mdl-add-cosigner-step2-add-more-second-input::placeholder{color:var(--Neutral-300, #B6B7C3);font-family:Roboto;font-size:12px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-confirm-body-content{display:flex;padding-top:20px;padding-bottom:20px;flex-direction:column;justify-content:flex-start;align-items:center;gap:61px;border-radius:8px 8px 0 0;background:var(--Neutral-White-100, #FFF);width:100%;max-height:62.7%}.verified-custd-mdl-add-cosigner-confirm-body-cont{display:flex;flex-direction:column;align-items:flex-start;gap:16px;width:90%}.verified-custd-mdl-add-cosigner-confirm-body-header{display:flex;flex-direction:column;align-items:center;gap:16px}.verified-custd-mdl-add-cosigner-confirm-body-title{color:var(--Neutral-950, #0C0C0E);font-family:Manrope;font-size:16px;font-style:normal;font-weight:700;line-height:150%;margin:0}.verified-custd-mdl-add-cosigner-confirm-body-label{color:var(--Neutral-600, #5B5D6E);font-family:Roboto;font-size:12px;font-style:normal;font-weight:400;line-height:150%;margin:0}.verified-custd-mdl-add-cosigner-confirm-body-footer{display:flex;width:90%;padding:15px 15px 5px;flex-direction:column;align-items:flex-start;gap:5px;border-radius:8px;border:1px solid var(--Neutral-100, #EEEEF0);background:var(--Neutral-White-100, #FFF)}.verified-custd-mdl-add-cosigner-confirm-body-footer-ind-cont{width:100%;flex-direction:row;background:transparent;display:flex;justify-content:space-between;align-items:center;margin-bottom:3px}.verified-custd-mdl-add-cosigner-confirm-body-footer-ind{display:flex;flex-direction:column;align-items:center;gap:-6px;border-radius:2px}.verified-custd-mdl-add-cosigner-confirm-body-footer-ind-text-cont{display:flex;padding:4px 12px;justify-content:center;align-items:center;gap:10px;border-radius:6px;background:var(--secondary-electric-violet-600, #603FF4)}.verified-custd-mdl-add-cosigner-confirm-body-footer-ind-text{color:var(--Neutral-White-100, #FFF);text-align:center;font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:140%;margin:0}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-cont{width:100%;height:51px}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-cont{width:98%;height:16px;flex-shrink:0}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider{width:100%;height:5px;flex-shrink:0;border-radius:10px;background:var(--Neutral-100, #EEEEF0)}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-ind{height:5px;flex-shrink:0;border-radius:10px;background:var(--secondary-electric-violet-600, #603FF4);position:relative}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-icon{flex-shrink:0;position:absolute;top:-5px;right:0}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-text-cont{display:flex;width:100%;padding:10px 0;justify-content:space-between;align-items:center}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-text{color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:140%;margin:0;cursor:pointer}.verified-custd-mdl-a-c-2-b-content-header-body-header-icons{display:flex;justify-content:flex-end;align-items:center;gap:16px;margin-top:10px}.verified-custd-mdl-add-cosigner-step2-body-content-footer-dis{display:flex;align-items:center;gap:4px;margin-bottom:18px}.verified-custd-mdl-add-cosigner-step2-body-content-footer-text-dis{color:var(--Neutral-300, #B6B7C3);text-align:right;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-startup-contact-content-heder-cont{width:100%;display:flex;justify-content:space-between;flex-direction:row}.verified-custd-mdl-add-cosigner-confirm-body-content-outter{background:#0006;z-index:5;position:absolute;width:100%;bottom:0;right:0;left:0;height:100%;display:flex;flex-direction:column-reverse}.verified-custd-mdl-portfolio-page-content-header-button{display:flex;padding:6px 12px;align-items:center;gap:4px;border-radius:32px;background:var(--secondary-electric-violet-900, #362689);cursor:pointer;color:var(--Neutral-White-100, var(--common-white_states-main, #fff));border:none;width:fit-content;max-width:150px;font-family:Roboto;font-size:.65rem;font-style:normal;font-weight:400;line-height:140%;word-wrap:break-word;height:30px}.verified-custd-mdl-portfolio-page-content-header-button-cont{width:fit-content;height:fit-content;display:flex;flex-direction:column;gap:4px;justify-content:flex-start;position:relative}.verified-custd-mdl-portfolio-page-content-header-button-body{height:fit-content;width:fit-content;display:flex;flex-direction:column;gap:4px;border:none;border-radius:10px;background:var(--Neutral-50, #f7f7f8);padding:10px;position:absolute;top:33px;right:0}.verified-custd-mdl-portfolio-page-content-header-button-body-cont{background:none;cursor:pointer;border:1px solid transparent;padding:5px}.verified-custd-mdl-portfolio-page-content-header-button-body-cont:hover{border:1px solid #362689;background:transparent}.verified-custd-mdl-portfolio-page-content-header-button-body-text{width:110px;font-family:Roboto;font-size:.65rem;font-style:normal;font-weight:400;line-height:140%;word-wrap:break-word}.verified-custd-mdl-profile-popup-content-third{display:flex;padding:12px;flex-direction:column;align-items:flex-start;gap:12px;align-self:stretch;border-radius:var(--space-8px, 8px);background:var(--common-white_states-main, #fff);box-shadow:0 0 16px #0000001f}.verified-custd-mdl-profile-popup-content-third-container{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:12px;align-self:stretch}.verified-custd-mdl-profile-popup-content-third-content,.verified-custd-mdl-profile-popup-content-third-content-tkn{display:flex;padding:4px var(--space-0, 0px);justify-content:space-between;align-items:center;align-self:stretch;border-radius:var(--space-8px, 8px);cursor:pointer}.verified-custd-mdl-profile-popup-content-third-content-text-container{display:flex;align-items:center;gap:var(--space-8px, 8px)}.verified-custd-mdl-profile-popup-content-third-content-text{color:var(--Neutral-900, #383842);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:400;line-height:150%;max-width:170px;word-wrap:break-word}.verified-custd-mdl-profile-popup-content-third-content-line{width:100%;height:1px;background:#eeeef0}.verified-custd-mdl-profile-popup-content-third-content-tkn:hover{border:#362689 1px solid}.verified-custd-mdl-profile-popup-content{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:16px;align-self:stretch}.verified-custd-mdl-asset-layout-content{display:inline-flex;padding:0 20px 155px;flex-direction:column;align-items:flex-start;gap:20px;border-radius:8px;background:var(--Neutral-White-100, #fff);width:100%;height:100%}.verified-custd-mdl-profile-popup-content-second{display:flex;padding:12px;flex-direction:column;align-items:flex-start;gap:12px;align-self:stretch;border-radius:var(--space-8px, 8px);background:var(--common-white_states-main, #fff);box-shadow:0 0 16px #0000001f}.verified-custd-mdl-profile-popup-content-second-text{color:var(--Neutral-900, #383842);text-align:center;font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:700;line-height:150%}.verified-custd-mdl-profile-popup-content-second-container{display:flex;justify-content:space-between;align-items:center;align-self:stretch}.verified-custd-mdl-profile-popup-content-second-content{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:var(--space-8px, 8px);border-radius:24px;cursor:pointer}.verified-custd-mdl-profile-popup-content-second-content-icon{display:flex;padding:12px;flex-direction:column;align-items:center;gap:var(--space-8px, 8px);border-radius:4px;background:var(--secondary-electric-violet-50, #ecefff)}.verified-custd-mdl-profile-popup-content-second-content-text{color:#000;text-align:center;font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:400;line-height:1.125rem;text-transform:capitalize;width:fit-content;max-width:60px;height:36px}.verified-custd-mdl-profile-popup-content-third-button{display:flex;width:100px;padding:6px 14px;justify-content:center;align-items:center;gap:10px;border-radius:100px;border:1px solid var(--secondary-electric-violet-700, #4e2bd7)}.verified-custd-mdl-profile-popup-content-third-button-text{color:var(--secondary-electric-violet-600, #603ff4);text-align:center;font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:600;line-height:125%}.verified-custd-mdl-offer-security-popup-info-content{display:flex;padding:6px 12px;justify-content:center;align-items:center;gap:10px;background:var(--common-white_states-main, #fff);position:absolute;top:-1;left:4px;width:230px;border-radius:2px;z-index:3;box-shadow:0 0 16px #0000001f}.verified-custd-mdl-offer-security-popup-info-content-text{color:var(--Neutral-900, #383842);width:auto;max-width:300px;height:fit-content;word-wrap:break-word;overflow-wrap:break-word;font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:400;line-height:140%}\\n\");","if (typeof chrome === \"undefined\") {\r\n (window as any).chrome = {};\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { VaultContextProvider } from \"../services/store\";\r\nimport { VerifiedCustodyProps, VerifiedWalletVault } from \"../utils/types\";\r\nimport FTUPage from \"./ftu\";\r\nimport EnterPinPage from \"./enterPin\";\r\nimport {\r\n hashTheString,\r\n initWalletAndContract,\r\n loadAllGoogleFonts,\r\n} from \"../utils/helpers\";\r\nimport { actionTexts, countriesDetails, imageAssets } from \"../utils/constants\";\r\nimport { motion } from \"framer-motion\";\r\nimport { AddCoSignersPage, CreatePinPage } from \"..\";\r\nimport Success from \"../components/success\";\r\n\r\nconst VerifiedCustody = (props: VerifiedCustodyProps) => {\r\n const [fontsLoaded, setFontsLoaded] = useState<boolean>(true);\r\n\r\n const [isOnboard, setisOnboard] = useState<boolean | null>(null);\r\n\r\n const [vaultData, setVaultData] = useState<VerifiedWalletVault>({});\r\n\r\n const [_vaultData, _setVaultData] = useState<any>({});\r\n\r\n const [isLoading, setIsLoading] = useState<boolean>(false);\r\n\r\n const [showDashboard, setShowDasboard] = useState<boolean>(false);\r\n\r\n const [showCompleteVault, setShowCompleteVault] = useState<boolean>(false);\r\n\r\n const [showResetPin, setShowResetPin] = useState<boolean>(false);\r\n\r\n const [action, setAction] = useState<string>(\"\");\r\n\r\n const [allCountries, setAllCountries] = useState([]);\r\n\r\n const [step, setStep] = useState<string>(\"\");\r\n\r\n const [selectedCountry, setSelectedCountry] = useState(\r\n props.defaultCountry || {\r\n area: \"1\",\r\n flag: imageAssets.usaFlag,\r\n name: \"United States\",\r\n }\r\n );\r\n\r\n const [userNumberFmt, setUserNumberFmt] = useState<string>(\"\");\r\n\r\n const [userEmail, setUserEmail] = useState<string>(\"\");\r\n\r\n const [containerHeight, setContainerHeight] = useState<string | null>(null);\r\n const [containerScrollHeight, setContainerScrollHeight] = useState<\r\n string | null\r\n >(null);\r\n\r\n useEffect(() => {\r\n const PreloadGoogleFonts = () => {\r\n const isFontsLoaded = loadAllGoogleFonts(document);\r\n setFontsLoaded(isFontsLoaded);\r\n };\r\n PreloadGoogleFonts();\r\n }, []);\r\n\r\n useEffect(() => {\r\n const checkUserOnboardingStatus = () => {\r\n if (chrome?.storage?.local) {\r\n chrome.storage.local.get(\"myVault\", (res: any) => {\r\n // Existing user\r\n if (res.myVault && JSON.parse(res.myVault)?.vaultId) {\r\n setVaultData(JSON.parse(res.myVault));\r\n setisOnboard(true);\r\n }\r\n //FTU(First Time User)\r\n else setisOnboard(false);\r\n });\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n const myVault = JSON.parse(localStorage.getItem(\"myVault\"));\r\n if (myVault && myVault?.vaultId) {\r\n setVaultData(myVault);\r\n setisOnboard(true);\r\n } else setisOnboard(false);\r\n } else {\r\n setisOnboard(false);\r\n }\r\n };\r\n\r\n checkUserOnboardingStatus();\r\n }, []);\r\n\r\n useEffect(() => {\r\n const getAndFormatAllCountries = () => {\r\n const fmtCountries: any = countriesDetails\r\n .map((cnt: any) => {\r\n if (cnt) {\r\n return {\r\n name: cnt?.name,\r\n countryName: cnt?.name,\r\n officialName: cnt?.name,\r\n currencySymbol: cnt?.currency,\r\n currencyName: cnt?.currency,\r\n officialCurrencySymbol: cnt?.currency,\r\n countryCode: cnt?.code,\r\n flag: cnt?.flag,\r\n continent: cnt?.continent,\r\n phone_code: cnt?.phone_code,\r\n code: cnt?.code,\r\n };\r\n }\r\n })\r\n .flat();\r\n setAllCountries(fmtCountries?.filter((cnt: any) => cnt !== undefined));\r\n };\r\n getAndFormatAllCountries();\r\n }, []);\r\n\r\n useEffect(() => {\r\n function updateHeight() {\r\n const containerDiv = document.querySelector(\"#verified-custd-out-cont\");\r\n if (containerDiv) {\r\n setContainerHeight(\r\n containerDiv.getBoundingClientRect()?.height?.toString()\r\n );\r\n setContainerHeight(containerDiv.scrollHeight?.toString());\r\n } else {\r\n setContainerHeight(null);\r\n setContainerScrollHeight(null);\r\n }\r\n }\r\n\r\n updateHeight();\r\n window.addEventListener(\"resize\", updateHeight);\r\n\r\n return () => window.removeEventListener(\"resize\", updateHeight);\r\n }, []);\r\n\r\n return (\r\n <React.Fragment>\r\n {fontsLoaded && (\r\n <VaultContextProvider>\r\n <div\r\n id=\"verified-custd-out-cont\"\r\n className=\"verified-custd-mdl-container\"\r\n >\r\n {/* default blank page to capture delay??? */}\r\n {isOnboard === null && props.delayPageElement && (\r\n <React.Fragment>{props.delayPageElement} </React.Fragment>\r\n )}\r\n {/* default blank screen to capture delay??? */}\r\n {isOnboard === null && !props.delayPageElement && (\r\n <div\r\n style={\r\n props.delayPageStyle\r\n ? props.delayPageStyle\r\n : {\r\n width: \"100%\",\r\n height: \"100%\",\r\n background: \"trasparent\",\r\n border: \"none\",\r\n }\r\n }\r\n >\r\n {\" \"}\r\n </div>\r\n )}\r\n {isLoading && (\r\n <div\r\n style={\r\n containerHeight &&\r\n containerScrollHeight &&\r\n window &&\r\n Number(containerScrollHeight) > window.innerHeight\r\n ? {\r\n height: `${\r\n Number(containerHeight) +\r\n Number(containerScrollHeight)\r\n }px`,\r\n }\r\n : { height: \"100vh\" }\r\n } //whole page length ???\r\n className=\"verified-custd-mdl-loading-screen\"\r\n >\r\n <motion.img\r\n height=\"50px\"\r\n width=\"50px\"\r\n src={imageAssets.loadingIcon}\r\n alt=\"Loading...\"\r\n animate={{\r\n rotate: 360,\r\n scale: [1, 1.5, 1],\r\n }}\r\n transition={{\r\n duration: 2,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n />\r\n </div>\r\n )}\r\n {isOnboard !== null && (\r\n <React.Fragment>\r\n {/* first time users */}\r\n {!isOnboard && (\r\n <FTUPage\r\n fontsLoaded={fontsLoaded}\r\n helperFunctions={props.helperFunctions}\r\n popupView={props.popupView}\r\n action={props.action ? props.action : \"getPk\"}\r\n vaultData={\r\n props.reqVaultData\r\n ? {\r\n vaultId: decodeURIComponent(\r\n props.reqVaultData?.vId ||\r\n props.reqVaultData?.vaultId\r\n ),\r\n hashedVaultId: hashTheString(\r\n decodeURIComponent(\r\n props.reqVaultData?.vId ||\r\n props.reqVaultData?.vaultId\r\n )\r\n ),\r\n hashedVaultPin: decodeURIComponent(\r\n props.reqVaultData?.vPh ||\r\n props.reqVaultData?.hashedVaultPin\r\n ),\r\n coSignerId: decodeURIComponent(\r\n props.reqVaultData?.cId\r\n ),\r\n }\r\n : null\r\n }\r\n txData={\r\n props.txData\r\n ? Object.keys(props.txData)?.map((ky) => {\r\n props.txData[ky] = decodeURIComponent(\r\n props.txData[ky]\r\n );\r\n return props.txData;\r\n })[Object.keys(props.txData)?.length - 1]\r\n : null\r\n }\r\n showLogoPage={props.showLogoPage}\r\n logoPageElement={props.logoPageElement}\r\n logoTimeoutTime={props.logoTimeoutTime}\r\n defaultCountry={props.defaultCountry}\r\n setisOnboard={setisOnboard}\r\n setIsLoading={setIsLoading}\r\n dashbordElement={props.dashbordElement}\r\n chainId={Number(props.chainId)}\r\n enablePhone={props.enablePhone}\r\n />\r\n )}\r\n\r\n {/* existing users no dashboard or invite cosigners */}\r\n {isOnboard && !showDashboard && !showCompleteVault && (\r\n <EnterPinPage\r\n fontsLoaded={fontsLoaded}\r\n setisOnboard={setisOnboard}\r\n vaultId={vaultData?.vaultId}\r\n hashedVaultId={vaultData?.hashedVaultId}\r\n encrptedPk={vaultData?.pk}\r\n vaultAddress={vaultData?.address}\r\n vaultChannel={vaultData?.channel}\r\n regAddress={vaultData?.regAddress}\r\n origin={props.origin}\r\n title={props.title}\r\n actionText={props.actionText || actionTexts[props.action]}\r\n setIsLoading={setIsLoading}\r\n newChainId={Number(props.chainId)}\r\n action={props.action ? props.action : \"\"}\r\n reqVaultData={\r\n props.reqVaultData\r\n ? {\r\n vaultId: decodeURIComponent(\r\n props.reqVaultData?.vId ||\r\n props.reqVaultData?.vaultId\r\n ),\r\n hashedVaultId: hashTheString(\r\n decodeURIComponent(\r\n props.reqVaultData?.vId ||\r\n props.reqVaultData?.vaultId\r\n )\r\n ),\r\n hashedVaultPin: decodeURIComponent(\r\n props.reqVaultData?.vPh ||\r\n props.reqVaultData?.hashedVaultPin\r\n ),\r\n coSignerId: decodeURIComponent(\r\n props.reqVaultData?.cId\r\n ),\r\n }\r\n : null\r\n }\r\n reqTxData={\r\n props.txData\r\n ? Object.keys(props.txData)?.map((ky) => {\r\n props.txData[ky] = decodeURIComponent(\r\n props.txData[ky]\r\n );\r\n return props.txData;\r\n })[Object.keys(props.txData)?.length - 1]\r\n : null\r\n }\r\n txToSign={props.txToSign ? props.txToSign : null}\r\n signTxElement={props.signTxElement}\r\n helperFunctions={props.helperFunctions}\r\n setShowDashboard={setShowDasboard}\r\n setShowCompleteVault={setShowCompleteVault}\r\n setUserEmail={setUserEmail}\r\n setUserNumberFmt={setUserNumberFmt}\r\n setSelectedCountry={setSelectedCountry}\r\n enablePhone={props.enablePhone}\r\n />\r\n )}\r\n\r\n {/* existing users no dashboard or invite cosigners */}\r\n {isOnboard && showDashboard && showCompleteVault && (\r\n <EnterPinPage\r\n fontsLoaded={fontsLoaded}\r\n setisOnboard={setisOnboard}\r\n vaultId={vaultData?.vaultId}\r\n hashedVaultId={vaultData?.hashedVaultId}\r\n encrptedPk={vaultData?.pk}\r\n vaultAddress={vaultData?.address}\r\n regAddress={vaultData?.regAddress}\r\n vaultChannel={vaultData?.channel}\r\n origin={props.origin}\r\n title={props.title}\r\n actionText={props.actionText || actionTexts[props.action]}\r\n setIsLoading={setIsLoading}\r\n newChainId={Number(props.chainId)}\r\n action={props.action ? props.action : \"\"}\r\n reqVaultData={\r\n props.reqVaultData\r\n ? {\r\n vaultId: decodeURIComponent(\r\n props.reqVaultData?.vId ||\r\n props.reqVaultData?.vaultId\r\n ),\r\n hashedVaultId: hashTheString(\r\n decodeURIComponent(\r\n props.reqVaultData?.vId ||\r\n props.reqVaultData?.vaultId\r\n )\r\n ),\r\n hashedVaultPin: decodeURIComponent(\r\n props.reqVaultData?.vPh ||\r\n props.reqVaultData?.hashedVaultPin\r\n ),\r\n coSignerId: decodeURIComponent(\r\n props.reqVaultData?.cId\r\n ),\r\n }\r\n : null\r\n }\r\n reqTxData={\r\n props.txData\r\n ? Object.keys(props.txData)?.map((ky) => {\r\n props.txData[ky] = decodeURIComponent(\r\n props.txData[ky]\r\n );\r\n return props.txData;\r\n })[Object.keys(props.txData)?.length - 1]\r\n : null\r\n }\r\n txToSign={props.txToSign ? props.txToSign : null}\r\n signTxElement={props.signTxElement}\r\n helperFunctions={props.helperFunctions}\r\n setShowDashboard={setShowDasboard}\r\n setShowCompleteVault={setShowCompleteVault}\r\n setUserEmail={setUserEmail}\r\n setUserNumberFmt={setUserNumberFmt}\r\n setSelectedCountry={setSelectedCountry}\r\n enablePhone={props.enablePhone}\r\n />\r\n )}\r\n\r\n {/* existing users no dashboard but invite cosigners */}\r\n {isOnboard &&\r\n !showDashboard &&\r\n showCompleteVault &&\r\n step === \"\" && (\r\n <AddCoSignersPage\r\n setStep={setStep}\r\n setIsLoading={setIsLoading}\r\n userNumberFmt={userNumberFmt}\r\n userEmail={userEmail}\r\n selectedCountry={selectedCountry}\r\n allCountries={allCountries}\r\n helperFunctions={props.helperFunctions}\r\n enablePhone={props.enablePhone}\r\n />\r\n )}\r\n\r\n {isOnboard &&\r\n !showDashboard &&\r\n showCompleteVault &&\r\n step === \"7\" && (\r\n <Success\r\n action={props.action}\r\n setStep={setStep}\r\n stepToSet=\"8\"\r\n customTextHeader=\"Successful\"\r\n customTextFooter=\"Congratulations! You have successfully added Co-signers to your account.\"\r\n />\r\n )}\r\n\r\n {isOnboard &&\r\n !showDashboard &&\r\n showCompleteVault &&\r\n step === \"8\" &&\r\n props.dashbordElement && (\r\n <props.dashbordElement setIsLoading={setIsLoading} />\r\n )}\r\n\r\n {isOnboard &&\r\n !showDashboard &&\r\n showCompleteVault &&\r\n step === \"8\" &&\r\n !props.dashbordElement && <React.Fragment></React.Fragment>}\r\n\r\n {/* existing users show dashboard but no invite cosigners and showResetPin*/}\r\n {isOnboard &&\r\n !showCompleteVault &&\r\n showDashboard &&\r\n !showResetPin &&\r\n props.dashbordElement && (\r\n <props.dashbordElement\r\n setIsLoading={setIsLoading}\r\n setShowResetPin={setShowResetPin}\r\n setAction={setAction}\r\n setUserNumberFmt={setUserNumberFmt}\r\n setUserEmail={setUserEmail}\r\n setSelectedCountry={setSelectedCountry}\r\n setVaultData={_setVaultData}\r\n initWalletAndContract={initWalletAndContract}\r\n />\r\n )}\r\n {isOnboard &&\r\n !showCompleteVault &&\r\n showDashboard &&\r\n !showResetPin &&\r\n !props.dashbordElement && <React.Fragment></React.Fragment>}\r\n\r\n {isOnboard &&\r\n !showCompleteVault &&\r\n showDashboard &&\r\n showResetPin && (\r\n <CreatePinPage\r\n action=\"reset-pin\"\r\n setStep={setStep}\r\n setIsLoading={setIsLoading}\r\n userNumberFmt={userNumberFmt}\r\n userEmail={userEmail}\r\n vaultData={_vaultData}\r\n selectedCountry={selectedCountry}\r\n helperFunctions={props.helperFunctions}\r\n />\r\n )}\r\n </React.Fragment>\r\n )}\r\n </div>\r\n </VaultContextProvider>\r\n )}\r\n {!fontsLoaded && <h3>Preparing Modules...</h3>}\r\n </React.Fragment>\r\n );\r\n};\r\n\r\nexport default VerifiedCustody;\r\n","import React, { createContext, useContext, useState } from \"react\";\r\n\r\ninterface VaultStore {\r\n chainId: number | null;\r\n pk: string | null;\r\n address: string | null;\r\n signer: any;\r\n provider: any;\r\n vaultContract: any;\r\n vaultData: any;\r\n setChainId: (chainId: number | null) => void;\r\n setPk: (pk: string | null) => void;\r\n setAddress: (address: string | null) => void;\r\n setSigner: (signer: any) => void;\r\n setProvider: (provider: any) => void;\r\n setVaultContract: (vaultContract: any) => void;\r\n setVaultData: (vaultData: any) => void;\r\n}\r\n\r\nconst VaultStoreContext = createContext<VaultStore | undefined>(undefined);\r\n\r\nexport const VaultContextProvider = (props: {\r\n children: React.JSX.Element;\r\n}) => {\r\n const [chainId, setChainId] = useState<number | null>(null);\r\n const [pk, setPk] = useState<string | null>(null);\r\n const [address, setAddress] = useState<string | null>(null);\r\n const [signer, setSigner] = useState<any>(null);\r\n const [provider, setProvider] = useState<any>(null);\r\n const [vaultContract, setVaultContract] = useState<any>(null);\r\n const [vaultData, setVaultData] = useState<any>(null);\r\n const [fcmToken, setFcmToken] = useState<string | null>(null);\r\n\r\n return (\r\n <VaultStoreContext.Provider\r\n value={{\r\n chainId,\r\n pk,\r\n address,\r\n signer,\r\n provider,\r\n vaultContract,\r\n vaultData,\r\n setChainId,\r\n setPk,\r\n setAddress,\r\n setSigner,\r\n setProvider,\r\n setVaultContract,\r\n setVaultData,\r\n }}\r\n >\r\n {props.children}\r\n </VaultStoreContext.Provider>\r\n );\r\n};\r\n\r\nexport const useVaultStore = () => {\r\n const context = useContext(VaultStoreContext);\r\n if (context) {\r\n return context;\r\n } else {\r\n throw Error(\"useVaultStore must be used within VaultContextProvider\");\r\n }\r\n};\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { debounce } from \"lodash\";\r\nimport { actionTexts, countriesDetails, imageAssets } from \"../utils/constants\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport { initWalletAndContract, loadAllGoogleFonts } from \"../utils/helpers\";\r\nimport ContactPage from \"./contact\";\r\nimport OTPPage from \"./otp\";\r\nimport CreatePinPage from \"./createPin\";\r\nimport Success from \"../components/success\";\r\nimport AddCosignersPage from \"./addCosigners\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\nimport EnterPinPage from \"./enterPin\";\r\n\r\nconst FTUPage = (props: {\r\n fontsLoaded?: boolean;\r\n popupView?: boolean;\r\n action?: string;\r\n vaultData?: any;\r\n txData?: any;\r\n chainId?: number;\r\n defaultCountry?: {\r\n area: string;\r\n flag: string;\r\n name: string;\r\n };\r\n showLogoPage?: boolean;\r\n logoPageElement?: React.JSX.Element;\r\n logoTimeoutTime?: number;\r\n showStartupPage?: boolean;\r\n startupPageElement?: React.JSX.Element;\r\n enablePhone?: boolean;\r\n setisOnboard?: (isOnboard: boolean) => void;\r\n helperFunctions?: VerifiedCustodyHelpers;\r\n setIsLoading?: (isLoading: boolean) => void;\r\n dashbordElement?: React.ComponentType<{\r\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>;\r\n }>;\r\n}) => {\r\n const [fontsLoaded, setFontsLoaded] = useState<boolean>(\r\n props.fontsLoaded || false\r\n );\r\n const [showLogo, setShowLogo] = useState<boolean>(\r\n props.showLogoPage || false\r\n );\r\n const [allCountries, setAllCountries] = useState([]);\r\n const [step, setStep] = useState<string>(\"2\");\r\n const [selectedCountry, setSelectedCountry] = useState(\r\n props.defaultCountry || {\r\n area: \"1\",\r\n flag: imageAssets.usaFlag,\r\n name: \"United States\",\r\n }\r\n );\r\n const [userNumberFmt, setUserNumberFmt] = useState<string>(\"\");\r\n const [userEmail, setUserEmail] = useState<string>(\"\");\r\n const [showSuccessBtn, setShowSuccessBtn] = useState<boolean>(false);\r\n const [successBtnText, setSuccessBtnText] = useState<string>(\"\");\r\n const [successBtnNeutText, setSuccessBtnNeutText] = useState<string>(\"\");\r\n const [actionHeaderText, setActionHeaderText] = useState<string>(\"\");\r\n const [actionFooterText, setActionFooterText] = useState<string>(\"\");\r\n const [successBtnFunc, setSuccessBtnFunc] = useState(null);\r\n const [successBtnNeutFunc, setSuccessBtnNeutFunc] = useState(null);\r\n const [isExistingUser, setIsExistingUser] = useState<boolean>(false);\r\n\r\n const {\r\n setChainId,\r\n setAddress,\r\n setPk,\r\n setProvider,\r\n setSigner,\r\n setVaultContract,\r\n setVaultData,\r\n vaultData,\r\n chainId,\r\n } = useVaultStore();\r\n\r\n useEffect(() => {\r\n const PreloadGoogleFonts = () => {\r\n const isFontsLoaded = loadAllGoogleFonts(document);\r\n setFontsLoaded(isFontsLoaded);\r\n };\r\n if (!props.fontsLoaded) {\r\n PreloadGoogleFonts();\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n const initializeUserWalletAndContract = async () => {\r\n let lastPk: any;\r\n if (chrome?.storage?.local) {\r\n lastPk = await new Promise((resolve) => {\r\n chrome.storage.local.get([\"lastPk\"], (result) => {\r\n resolve(result.lastPk);\r\n });\r\n });\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n lastPk = localStorage.getItem(\"lastPk\");\r\n }\r\n\r\n const walletAndContractDetails = await initWalletAndContract(\r\n props.chainId,\r\n lastPk && lastPk?.length > 0 ? lastPk : undefined\r\n );\r\n setChainId(walletAndContractDetails.chainId);\r\n setAddress(walletAndContractDetails.address);\r\n setPk(walletAndContractDetails.pk);\r\n setProvider(walletAndContractDetails.provider);\r\n setSigner(walletAndContractDetails.signer);\r\n setVaultContract(walletAndContractDetails.vaultContract);\r\n setVaultData(walletAndContractDetails.vaultData);\r\n };\r\n initializeUserWalletAndContract();\r\n }, []);\r\n\r\n useEffect(() => {\r\n const handleLogoDisplay = debounce(\r\n () => {\r\n setShowLogo(false);\r\n },\r\n props.logoTimeoutTime ? props.logoTimeoutTime : 3000\r\n ); //3 seconds??\r\n handleLogoDisplay();\r\n }, []);\r\n\r\n useEffect(() => {\r\n const getAndFormatAllCountries = () => {\r\n const fmtCountries: any = countriesDetails\r\n .map((cnt: any) => {\r\n if (cnt) {\r\n return {\r\n name: cnt?.name,\r\n countryName: cnt?.name,\r\n officialName: cnt?.name,\r\n currencySymbol: cnt?.currency,\r\n currencyName: cnt?.currency,\r\n officialCurrencySymbol: cnt?.currency,\r\n countryCode: cnt?.code,\r\n flag: cnt?.flag,\r\n continent: cnt?.continent,\r\n phone_code: cnt?.phone_code,\r\n code: cnt?.code,\r\n };\r\n }\r\n })\r\n .flat();\r\n setAllCountries(fmtCountries?.filter((cnt: any) => cnt !== undefined));\r\n };\r\n getAndFormatAllCountries();\r\n }, []);\r\n\r\n return (\r\n <React.Fragment>\r\n {fontsLoaded && showLogo && props.logoPageElement && (\r\n <React.Fragment> {props.logoPageElement}</React.Fragment>\r\n )}\r\n {fontsLoaded && !showLogo && (\r\n <React.Fragment>\r\n {/* {step === \"1\" && props.showStartupPage && (\r\n <React.Fragment>{props.startupPageElement}</React.Fragment>\r\n )} */}\r\n {step === \"2\" && (\r\n <ContactPage\r\n setStep={setStep}\r\n setIsLoading={props.setIsLoading}\r\n setUserNumberFmt={setUserNumberFmt}\r\n userNumberFmt={userNumberFmt}\r\n setUserEmail={setUserEmail}\r\n userEmail={userEmail}\r\n setSelectedCountry={setSelectedCountry}\r\n selectedCountry={selectedCountry}\r\n allCountries={allCountries}\r\n helperFunctions={props.helperFunctions}\r\n enablePhone={props.enablePhone}\r\n />\r\n )}\r\n {step === \"3\" && (\r\n <OTPPage\r\n setStep={setStep}\r\n setIsLoading={props.setIsLoading}\r\n userNumberFmt={userNumberFmt}\r\n setUserNumberFmt={setUserNumberFmt}\r\n setUserEmail={setUserEmail}\r\n userEmail={userEmail}\r\n selectedCountry={selectedCountry}\r\n helperFunctions={props.helperFunctions}\r\n setIsExistingUser={setIsExistingUser}\r\n />\r\n )}\r\n\r\n {step === \"4\" && (\r\n <CreatePinPage\r\n setStep={setStep}\r\n setIsLoading={props.setIsLoading}\r\n setShowSuccessBtn={setShowSuccessBtn}\r\n setSuccessBtnText={setSuccessBtnText}\r\n setSuccessBtnNeutText={setSuccessBtnNeutText}\r\n setSuccessBtnFunc={setSuccessBtnFunc}\r\n setSuccessBtnNeutFunc={setSuccessBtnNeutFunc}\r\n userNumberFmt={userNumberFmt}\r\n userEmail={userEmail}\r\n selectedCountry={selectedCountry}\r\n action={props.action}\r\n vaultData={props.vaultData}\r\n txData={props.txData}\r\n setActionHeaderText={setActionHeaderText}\r\n setActionFooterText={setActionFooterText}\r\n helperFunctions={props.helperFunctions}\r\n isExistingUser={isExistingUser}\r\n />\r\n )}\r\n\r\n {step === \"5\" && (\r\n <Success\r\n setStep={setStep}\r\n stepToSet=\"6\"\r\n customTextHeader=\"Successful\"\r\n customTextFooter=\"Congratulations! You have successfully created a PIN to protect your account.\"\r\n action={props.action}\r\n showButton={showSuccessBtn}\r\n buttonText={successBtnText}\r\n buttonNeutText={successBtnNeutText}\r\n buttonFunc={successBtnFunc}\r\n buttonNeutFunc={successBtnNeutFunc}\r\n actionHeaderText={actionHeaderText}\r\n actionFooterText={actionFooterText}\r\n />\r\n )}\r\n\r\n {step === \"6\" && (\r\n <AddCosignersPage\r\n setStep={setStep}\r\n setIsLoading={props.setIsLoading}\r\n userNumberFmt={userNumberFmt}\r\n userEmail={userEmail}\r\n selectedCountry={selectedCountry}\r\n allCountries={allCountries}\r\n helperFunctions={props.helperFunctions}\r\n enablePhone={props.enablePhone}\r\n />\r\n )}\r\n\r\n {step === \"7\" && props.action === \"\" && (\r\n <Success\r\n action={props.action}\r\n setStep={setStep}\r\n stepToSet=\"8\"\r\n customTextHeader=\"Successful\"\r\n customTextFooter=\"Congratulations! You have successfully added Co-signers to your account.\"\r\n />\r\n )}\r\n\r\n {step === \"7\" && props.action !== \"\" && (\r\n <Success\r\n action={props.action}\r\n messageTosend={\r\n props.action === \"signRecovery\"\r\n ? {\r\n type: \"signRecovery\",\r\n value: {\r\n vaultData: props.vaultData,\r\n txData: { newUser: true, ...props.txData },\r\n chainId: chainId,\r\n },\r\n }\r\n : { type: \"closePopup\", key: \"\", value: \"\" }\r\n }\r\n customTextHeader=\"Successful\"\r\n customTextFooter=\"Congratulations! You have successfully added Co-signers to your account.\"\r\n />\r\n )}\r\n\r\n {step === \"8\" && props.dashbordElement && (\r\n <props.dashbordElement setIsLoading={props.setIsLoading} />\r\n )}\r\n\r\n {step === \"8\" && !props.dashbordElement && (\r\n <React.Fragment></React.Fragment>\r\n )}\r\n\r\n {step === \"0\" && (\r\n <EnterPinPage\r\n fontsLoaded={fontsLoaded}\r\n vaultId={vaultData?.vaultId}\r\n setisOnboard={props.setisOnboard}\r\n hashedVaultId={vaultData?.hashedVaultId}\r\n encrptedPk={vaultData?.pk}\r\n vaultAddress={vaultData?.address}\r\n vaultChannel={vaultData?.channel}\r\n actionText={actionTexts[\"getPk\"]}\r\n setIsLoading={props.setIsLoading}\r\n newChainId={Number(chainId || props.chainId)}\r\n action={\"getPk\"}\r\n reqVaultData={vaultData}\r\n reqTxData={\r\n props.txData\r\n ? Object.keys(props.txData)?.map((ky) => {\r\n props.txData[ky] = decodeURIComponent(props.txData[ky]);\r\n return props.txData;\r\n })[Object.keys(props.txData)?.length - 1]\r\n : null\r\n }\r\n helperFunctions={props.helperFunctions}\r\n setUserEmail={setUserEmail}\r\n setUserNumberFmt={setUserNumberFmt}\r\n setSelectedCountry={setSelectedCountry}\r\n enablePhone={props.enablePhone}\r\n />\r\n )}\r\n </React.Fragment>\r\n )}\r\n {!fontsLoaded && <h3>Preparing Modules...</h3>}\r\n </React.Fragment>\r\n );\r\n};\r\n\r\nexport default FTUPage;\r\n","export const defaultChainId =\r\n process.env.REACT_APP_NODE_ENV === \"production\" ? 8453 : 84532; //Base mainnet for production or Base Sepolia for developement\r\n\r\nexport const defaultVerifiedUrl =\r\n process.env.REACT_APP_NODE_ENV === \"production\"\r\n ? \"https://wallet.verified.network\"\r\n : \"https://veripay-bac0b.web.app\";\r\n\r\nexport const verifiedWebsiteUrls = [\r\n \"https://veripay-bac0b.web.app\",\r\n \"https://wallet.verified.network\",\r\n \"https://verified-l1.web.app\",\r\n \"https://invest.verified.network\",\r\n];\r\n\r\nexport const allGoogleFontUrls = [\r\n \"https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\",\r\n \"https://fonts.googleapis.com/css2?family=Manrope:wght@200..800&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\",\r\n \"https://fonts.googleapis.com/css2?family=Hind:wght@300;400;500;600;700&display=swap\",\r\n];\r\n\r\nexport const newTransactionEventHash =\r\n \"0x7f8d3f14b960b3bcf34baea4b46178e331b54a33e565d7d50d77cdfe9e926fe8\";\r\n\r\nexport const numberPositions = {\r\n 1: \"1st\",\r\n 2: \"2nd\",\r\n 3: \"3rd\",\r\n 4: \"4th\",\r\n 5: \"5th\",\r\n};\r\n\r\nexport const numberPositionsFmt = {\r\n 1: \"1 st\",\r\n 2: \"2 nd\",\r\n 3: \"3 rd\",\r\n 4: \"4 th\",\r\n 5: \"5 th\",\r\n};\r\n\r\nexport const actionTexts = {\r\n connect_wallet: \"connect your account\",\r\n eth_requestAccounts: \"connect your account\",\r\n getPk: \"recover your account details\",\r\n invitation: \"accept Co-Signer invitation\",\r\n signRecovery: \"sign account recovery\",\r\n completeRecovery: \"restore login access\",\r\n eth_sendTransaction: \"sign smart contract interaction\",\r\n};\r\n\r\nexport const imageAssets = {\r\n successIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/succes-page-icon.svg\",\r\n usaFlag:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/Flag-United-States-of-America%201.svg\",\r\n privacyTip:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/privacy_tip.svg\",\r\n addCoSignerIcon1:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/add-cosigner-icon-1.svg\",\r\n addCoSignerIcon2:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/add-cosigner-icon-2.svg\",\r\n addCoSignerIcon3:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/add-cosigner-icon-3.svg\",\r\n addCoSignerIcon4:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/add-cosigner-icon-4.svg\",\r\n pkicon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/pk-icon.svg\",\r\n encryptedIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/encrypted-icon.svg\",\r\n pinHide:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/pin-hide-icon.svg\",\r\n pinShow:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/pin-show-icon.svg\",\r\n arrowUp:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/contact-arrow-up.svg\",\r\n arrowDown:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/contact-dropdown.svg\",\r\n editBlue:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/edit.svg\",\r\n editBlack:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/edit-icon.svg\",\r\n search:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/search-icon.svg\",\r\n circleClicked:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/check-circle-icon.svg\",\r\n supervise:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/supervisor-icon.svg\",\r\n delete:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/delete-icon.svg\",\r\n pointer:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/pointer-icon.svg\",\r\n sliderDot:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/slider-icon.svg\",\r\n select:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/select-icon.svg\",\r\n selectClicked:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/select-clicked-icon.svg\",\r\n addIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/plus-circle-icon.svg\",\r\n addDisableIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/plus-circle-dis.svg\",\r\n errorAlert:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/error-icon.svg\",\r\n successAlert:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/success-icon.svg\",\r\n loadingIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/loading-icon.png\",\r\n checkCircle:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/check-circle.svg\",\r\n expandRight:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/chevron-right-icon.svg\",\r\n closeIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/close-icon.svg\",\r\n infoBlue:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/info-blue.svg\",\r\n profileEdit:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/profile-pic-edit.svg\",\r\n infoReference:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/quick_reference.svg\",\r\n profileQuestions:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/shield_question.svg\",\r\n verifiedCheckMark:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/verified-checkmark.svg\",\r\n friends:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/friends.svg\",\r\n baseIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/base-icon.svg\",\r\n ethereumIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/ethereum-icon.svg\",\r\n gnosisIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/gnois-icon.svg\",\r\n copyIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/copy_icon.svg\",\r\n errorIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/error.svg\",\r\n};\r\n\r\nexport const countriesDetails = [\r\n {\r\n name: \"Afghanistan\",\r\n code: \"AF\",\r\n currency: \"AFN\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/af.webp\",\r\n phone_code: \"93\",\r\n },\r\n {\r\n name: \"Albania\",\r\n code: \"AL\",\r\n currency: \"ALL\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/al.webp\",\r\n phone_code: \"355\",\r\n },\r\n {\r\n name: \"Algeria\",\r\n code: \"DZ\",\r\n currency: \"DZD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/dz.webp\",\r\n phone_code: \"213\",\r\n },\r\n {\r\n name: \"American Samoa\",\r\n code: \"AS\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/as.webp\",\r\n phone_code: \"1-684\",\r\n },\r\n {\r\n name: \"Andorra\",\r\n code: \"AD\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ad.webp\",\r\n phone_code: \"376\",\r\n },\r\n {\r\n name: \"Angola\",\r\n code: \"AO\",\r\n currency: \"AOA\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ao.webp\",\r\n phone_code: \"244\",\r\n },\r\n {\r\n name: \"Anguilla\",\r\n code: \"AI\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ai.webp\",\r\n phone_code: \"1-264\",\r\n },\r\n {\r\n name: \"Antarctica\",\r\n code: \"AQ\",\r\n currency: \"N/A\",\r\n continent: \"Antarctica\",\r\n flag: \"https://flagpedia.net/data/flags/h80/aq.webp\",\r\n phone_code: \"N/A\",\r\n },\r\n {\r\n name: \"Antigua and Barbuda\",\r\n code: \"AG\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ag.webp\",\r\n phone_code: \"1-268\",\r\n },\r\n {\r\n name: \"Argentina\",\r\n code: \"AR\",\r\n currency: \"ARS\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ar.webp\",\r\n phone_code: \"54\",\r\n },\r\n {\r\n name: \"Armenia\",\r\n code: \"AM\",\r\n currency: \"AMD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/am.webp\",\r\n phone_code: \"374\",\r\n },\r\n {\r\n name: \"Aruba\",\r\n code: \"AW\",\r\n currency: \"AWG\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/aw.webp\",\r\n phone_code: \"297\",\r\n },\r\n {\r\n name: \"Australia\",\r\n code: \"AU\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/au.webp\",\r\n phone_code: \"61\",\r\n },\r\n {\r\n name: \"Austria\",\r\n code: \"AT\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/at.webp\",\r\n phone_code: \"43\",\r\n },\r\n {\r\n name: \"Azerbaijan\",\r\n code: \"AZ\",\r\n currency: \"AZN\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/az.webp\",\r\n phone_code: \"994\",\r\n },\r\n {\r\n name: \"Bahamas\",\r\n code: \"BS\",\r\n currency: \"BSD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bs.webp\",\r\n phone_code: \"1-242\",\r\n },\r\n {\r\n name: \"Bahrain\",\r\n code: \"BH\",\r\n currency: \"BHD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bh.webp\",\r\n phone_code: \"973\",\r\n },\r\n {\r\n name: \"Bangladesh\",\r\n code: \"BD\",\r\n currency: \"BDT\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bd.webp\",\r\n phone_code: \"880\",\r\n },\r\n {\r\n name: \"Barbados\",\r\n code: \"BB\",\r\n currency: \"BBD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bb.webp\",\r\n phone_code: \"1-246\",\r\n },\r\n {\r\n name: \"Belarus\",\r\n code: \"BY\",\r\n currency: \"BYR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/by.webp\",\r\n phone_code: \"375\",\r\n },\r\n {\r\n name: \"Belgium\",\r\n code: \"BE\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/be.webp\",\r\n phone_code: \"32\",\r\n },\r\n {\r\n name: \"Belize\",\r\n code: \"BZ\",\r\n currency: \"BZD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bz.webp\",\r\n phone_code: \"501\",\r\n },\r\n {\r\n name: \"Benin\",\r\n code: \"BJ\",\r\n currency: \"XOF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bj.webp\",\r\n phone_code: \"229\",\r\n },\r\n {\r\n name: \"Bermuda\",\r\n code: \"BM\",\r\n currency: \"BMD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bm.webp\",\r\n phone_code: \"1-441\",\r\n },\r\n {\r\n name: \"Bhutan\",\r\n code: \"BT\",\r\n currency: \"BTN\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bt.webp\",\r\n phone_code: \"975\",\r\n },\r\n {\r\n name: \"Bolivia\",\r\n code: \"BO\",\r\n currency: \"BOB\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bo.webp\",\r\n phone_code: \"591\",\r\n },\r\n {\r\n name: \"Bosnia and Herzegovina\",\r\n code: \"BA\",\r\n currency: \"BAM\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ba.webp\",\r\n phone_code: \"387\",\r\n },\r\n {\r\n name: \"Botswana\",\r\n code: \"BW\",\r\n currency: \"BWP\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bw.webp\",\r\n phone_code: \"267\",\r\n },\r\n {\r\n name: \"Brazil\",\r\n code: \"BR\",\r\n currency: \"BRL\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/br.webp\",\r\n phone_code: \"55\",\r\n },\r\n {\r\n name: \"British Indian Ocean Territory\",\r\n code: \"IO\",\r\n currency: \"USD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/io.webp\",\r\n phone_code: \"246\",\r\n },\r\n {\r\n name: \"Brunei Darussalam\",\r\n code: \"BN\",\r\n currency: \"BND\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bn.webp\",\r\n phone_code: \"673\",\r\n },\r\n {\r\n name: \"Bulgaria\",\r\n code: \"BG\",\r\n currency: \"BGN\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bg.webp\",\r\n phone_code: \"359\",\r\n },\r\n {\r\n name: \"Burkina Faso\",\r\n code: \"BF\",\r\n currency: \"XOF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bf.webp\",\r\n phone_code: \"226\",\r\n },\r\n {\r\n name: \"Burundi\",\r\n code: \"BI\",\r\n currency: \"BIF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bi.webp\",\r\n phone_code: \"257\",\r\n },\r\n {\r\n name: \"Cambodia\",\r\n code: \"KH\",\r\n currency: \"KHR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kh.webp\",\r\n phone_code: \"855\",\r\n },\r\n {\r\n name: \"Cameroon\",\r\n code: \"CM\",\r\n currency: \"CFA\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cm.webp\",\r\n phone_code: \"237\",\r\n },\r\n {\r\n name: \"Canada\",\r\n code: \"CA\",\r\n currency: \"CAD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ca.webp\",\r\n phone_code: \"1\",\r\n },\r\n {\r\n name: \"Cape Verde\",\r\n code: \"CV\",\r\n currency: \"CVE\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cv.webp\",\r\n phone_code: \"238\",\r\n },\r\n {\r\n name: \"Cayman Islands\",\r\n code: \"KY\",\r\n currency: \"KYD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ky.webp\",\r\n phone_code: \"1-345\",\r\n },\r\n {\r\n name: \"Central African Republic\",\r\n code: \"CF\",\r\n currency: \"XAF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cf.webp\",\r\n phone_code: \"236\",\r\n },\r\n {\r\n name: \"Chad\",\r\n code: \"TD\",\r\n currency: \"CDF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/td.webp\",\r\n phone_code: \"235\",\r\n },\r\n {\r\n name: \"Chile\",\r\n code: \"CL\",\r\n currency: \"CLP\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cl.webp\",\r\n phone_code: \"56\",\r\n },\r\n {\r\n name: \"China\",\r\n code: \"CN\",\r\n currency: \"CNY\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cn.webp\",\r\n phone_code: \"86\",\r\n },\r\n {\r\n name: \"Christmas Island\",\r\n code: \"CX\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cx.webp\",\r\n phone_code: \"61\",\r\n },\r\n {\r\n name: \"Cocos (Keeling) Islands\",\r\n code: \"CC\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cc.webp\",\r\n phone_code: \"61\",\r\n },\r\n {\r\n name: \"Colombia\",\r\n code: \"CO\",\r\n currency: \"COP\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/co.webp\",\r\n phone_code: \"57\",\r\n },\r\n {\r\n name: \"Comoros\",\r\n code: \"KM\",\r\n currency: \"KMF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/km.webp\",\r\n phone_code: \"269\",\r\n },\r\n {\r\n name: \"Congo (Congo-Brazzaville)\",\r\n code: \"CG\",\r\n currency: \"CDF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cg.webp\",\r\n phone_code: \"242\",\r\n },\r\n {\r\n name: \"Congo (Democratic Republic of the Congo)\",\r\n code: \"CD\",\r\n currency: \"CDF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cd.webp\",\r\n phone_code: \"243\",\r\n },\r\n {\r\n name: \"Cook Islands\",\r\n code: \"CK\",\r\n currency: \"NZD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ck.webp\",\r\n phone_code: \"682\",\r\n },\r\n {\r\n name: \"Costa Rica\",\r\n code: \"CR\",\r\n currency: \"CRC\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cr.webp\",\r\n phone_code: \"506\",\r\n },\r\n {\r\n name: \"Croatia\",\r\n code: \"HR\",\r\n currency: \"HRK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/hr.webp\",\r\n phone_code: \"385\",\r\n },\r\n {\r\n name: \"Cuba\",\r\n code: \"CU\",\r\n currency: \"CUP\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cu.webp\",\r\n phone_code: \"53\",\r\n },\r\n {\r\n name: \"Curaçao\",\r\n code: \"CW\",\r\n currency: \"AWG\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cw.webp\",\r\n phone_code: \"599\",\r\n },\r\n {\r\n name: \"Cyprus\",\r\n code: \"CY\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cy.webp\",\r\n phone_code: \"357\",\r\n },\r\n {\r\n name: \"Czech Republic\",\r\n code: \"CZ\",\r\n currency: \"CZK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cz.webp\",\r\n phone_code: \"420\",\r\n },\r\n {\r\n name: \"Denmark\",\r\n code: \"DK\",\r\n currency: \"DKK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/dk.webp\",\r\n phone_code: \"45\",\r\n },\r\n {\r\n name: \"Djibouti\",\r\n code: \"DJ\",\r\n currency: \"DJF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/dj.webp\",\r\n phone_code: \"253\",\r\n },\r\n {\r\n name: \"Dominica\",\r\n code: \"DM\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/dm.webp\",\r\n phone_code: \"1-767\",\r\n },\r\n {\r\n name: \"Dominican Republic\",\r\n code: \"DO\",\r\n currency: \"DOP\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/do.webp\",\r\n phone_code: \"1-809\",\r\n },\r\n {\r\n name: \"Ecuador\",\r\n code: \"EC\",\r\n currency: \"USD\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ec.webp\",\r\n phone_code: \"593\",\r\n },\r\n {\r\n name: \"Egypt\",\r\n code: \"EG\",\r\n currency: \"EGP\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/eg.webp\",\r\n phone_code: \"20\",\r\n },\r\n {\r\n name: \"El Salvador\",\r\n code: \"SV\",\r\n currency: \"SVC\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sv.webp\",\r\n phone_code: \"503\",\r\n },\r\n {\r\n name: \"Equatorial Guinea\",\r\n code: \"GQ\",\r\n currency: \"GNF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gq.webp\",\r\n phone_code: \"240\",\r\n },\r\n {\r\n name: \"Eritrea\",\r\n code: \"ER\",\r\n currency: \"ERN\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/er.webp\",\r\n phone_code: \"291\",\r\n },\r\n {\r\n name: \"Estonia\",\r\n code: \"EE\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ee.webp\",\r\n phone_code: \"372\",\r\n },\r\n {\r\n name: \"Eswatini\",\r\n code: \"SZ\",\r\n currency: \"SZL\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sz.webp\",\r\n phone_code: \"268\",\r\n },\r\n {\r\n name: \"Ethiopia\",\r\n code: \"ET\",\r\n currency: \"ETB\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/et.webp\",\r\n phone_code: \"251\",\r\n },\r\n {\r\n name: \"Falkland Islands\",\r\n code: \"FK\",\r\n currency: \"FKP\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fk.webp\",\r\n phone_code: \"500\",\r\n },\r\n {\r\n name: \"Faroe Islands\",\r\n code: \"FO\",\r\n currency: \"DKK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fo.webp\",\r\n phone_code: \"298\",\r\n },\r\n {\r\n name: \"Fiji\",\r\n code: \"FJ\",\r\n currency: \"FJD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fj.webp\",\r\n phone_code: \"679\",\r\n },\r\n {\r\n name: \"Finland\",\r\n code: \"FI\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fi.webp\",\r\n phone_code: \"358\",\r\n },\r\n {\r\n name: \"France\",\r\n code: \"FR\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fr.webp\",\r\n phone_code: \"33\",\r\n },\r\n {\r\n name: \"Gabon\",\r\n code: \"GA\",\r\n currency: \"GAB\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ga.webp\",\r\n phone_code: \"241\",\r\n },\r\n {\r\n name: \"Gambia\",\r\n code: \"GM\",\r\n currency: \"GMD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gm.webp\",\r\n phone_code: \"220\",\r\n },\r\n {\r\n name: \"Georgia\",\r\n code: \"GE\",\r\n currency: \"GEL\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ge.webp\",\r\n phone_code: \"995\",\r\n },\r\n {\r\n name: \"Germany\",\r\n code: \"DE\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/de.webp\",\r\n phone_code: \"49\",\r\n },\r\n {\r\n name: \"Ghana\",\r\n code: \"GH\",\r\n currency: \"GHS\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gh.webp\",\r\n phone_code: \"233\",\r\n },\r\n {\r\n name: \"Greece\",\r\n code: \"GR\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gr.webp\",\r\n phone_code: \"30\",\r\n },\r\n {\r\n name: \"Greenland\",\r\n code: \"GL\",\r\n currency: \"DKK\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gl.webp\",\r\n phone_code: \"299\",\r\n },\r\n {\r\n name: \"Grenada\",\r\n code: \"GD\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gd.webp\",\r\n phone_code: \"1-473\",\r\n },\r\n {\r\n name: \"Guadeloupe\",\r\n code: \"GP\",\r\n currency: \"EUR\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gp.webp\",\r\n phone_code: \"590\",\r\n },\r\n {\r\n name: \"Guam\",\r\n code: \"GU\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gu.webp\",\r\n phone_code: \"1-671\",\r\n },\r\n {\r\n name: \"Guatemala\",\r\n code: \"GT\",\r\n currency: \"GTQ\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gt.webp\",\r\n phone_code: \"502\",\r\n },\r\n {\r\n name: \"Guinea\",\r\n code: \"GN\",\r\n currency: \"GNF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gn.webp\",\r\n phone_code: \"224\",\r\n },\r\n {\r\n name: \"Guinea-Bissau\",\r\n code: \"GW\",\r\n currency: \"GNF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gw.webp\",\r\n phone_code: \"245\",\r\n },\r\n {\r\n name: \"Guyana\",\r\n code: \"GY\",\r\n currency: \"GYD\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gy.webp\",\r\n phone_code: \"592\",\r\n },\r\n {\r\n name: \"Haiti\",\r\n code: \"HT\",\r\n currency: \"HTG\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ht.webp\",\r\n phone_code: \"509\",\r\n },\r\n {\r\n name: \"Heard Island and McDonald Islands\",\r\n code: \"HM\",\r\n currency: \"AUD\",\r\n continent: \"Australia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/hm.webp\",\r\n phone_code: \"61\",\r\n },\r\n {\r\n name: \"Honduras\",\r\n code: \"HN\",\r\n currency: \"HNL\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/hn.webp\",\r\n phone_code: \"504\",\r\n },\r\n {\r\n name: \"Hong Kong\",\r\n code: \"HK\",\r\n currency: \"HKD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/hk.webp\",\r\n phone_code: \"852\",\r\n },\r\n {\r\n name: \"Hungary\",\r\n code: \"HU\",\r\n currency: \"HUF\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/hu.webp\",\r\n phone_code: \"36\",\r\n },\r\n {\r\n name: \"Iceland\",\r\n code: \"IS\",\r\n currency: \"ISK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/is.webp\",\r\n phone_code: \"354\",\r\n },\r\n {\r\n name: \"India\",\r\n code: \"IN\",\r\n currency: \"INR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/in.webp\",\r\n phone_code: \"91\",\r\n },\r\n {\r\n name: \"Indonesia\",\r\n code: \"ID\",\r\n currency: \"IDR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/id.webp\",\r\n phone_code: \"62\",\r\n },\r\n {\r\n name: \"Iran\",\r\n code: \"IR\",\r\n currency: \"IRR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ir.webp\",\r\n phone_code: \"98\",\r\n },\r\n {\r\n name: \"Iraq\",\r\n code: \"IQ\",\r\n currency: \"IQD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/iq.webp\",\r\n phone_code: \"964\",\r\n },\r\n {\r\n name: \"Ireland\",\r\n code: \"IE\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ie.webp\",\r\n phone_code: \"353\",\r\n },\r\n {\r\n name: \"Israel\",\r\n code: \"IL\",\r\n currency: \"ILS\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/il.webp\",\r\n phone_code: \"972\",\r\n },\r\n {\r\n name: \"Italy\",\r\n code: \"IT\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/it.webp\",\r\n phone_code: \"39\",\r\n },\r\n {\r\n name: \"Jamaica\",\r\n code: \"JM\",\r\n currency: \"JMD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/jm.webp\",\r\n phone_code: \"1-876\",\r\n },\r\n {\r\n name: \"Japan\",\r\n code: \"JP\",\r\n currency: \"JPY\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/jp.webp\",\r\n phone_code: \"81\",\r\n },\r\n {\r\n name: \"Jordan\",\r\n code: \"JO\",\r\n currency: \"JOD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/jo.webp\",\r\n phone_code: \"962\",\r\n },\r\n {\r\n name: \"Kazakhstan\",\r\n code: \"KZ\",\r\n currency: \"KZT\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kz.webp\",\r\n phone_code: \"7\",\r\n },\r\n {\r\n name: \"Kenya\",\r\n code: \"KE\",\r\n currency: \"KES\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ke.webp\",\r\n phone_code: \"254\",\r\n },\r\n {\r\n name: \"Kiribati\",\r\n code: \"KI\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ki.webp\",\r\n phone_code: \"686\",\r\n },\r\n {\r\n name: \"Korea (North)\",\r\n code: \"KP\",\r\n currency: \"KPW\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kp.webp\",\r\n phone_code: \"850\",\r\n },\r\n {\r\n name: \"Korea (South)\",\r\n code: \"KR\",\r\n currency: \"KRW\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kr.webp\",\r\n phone_code: \"82\",\r\n },\r\n {\r\n name: \"Kuwait\",\r\n code: \"KW\",\r\n currency: \"KWD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kw.webp\",\r\n phone_code: \"965\",\r\n },\r\n {\r\n name: \"Kyrgyzstan\",\r\n code: \"KG\",\r\n currency: \"KGS\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kg.webp\",\r\n phone_code: \"996\",\r\n },\r\n {\r\n name: \"Laos\",\r\n code: \"LA\",\r\n currency: \"LAK\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/la.webp\",\r\n phone_code: \"856\",\r\n },\r\n {\r\n name: \"Latvia\",\r\n code: \"LV\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lv.webp\",\r\n phone_code: \"371\",\r\n },\r\n {\r\n name: \"Lebanon\",\r\n code: \"LB\",\r\n currency: \"LBP\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lb.webp\",\r\n phone_code: \"961\",\r\n },\r\n {\r\n name: \"Lesotho\",\r\n code: \"LS\",\r\n currency: \"LSL\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ls.webp\",\r\n phone_code: \"266\",\r\n },\r\n {\r\n name: \"Liberia\",\r\n code: \"LR\",\r\n currency: \"LRD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lr.webp\",\r\n phone_code: \"231\",\r\n },\r\n {\r\n name: \"Libya\",\r\n code: \"LY\",\r\n currency: \"LYD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ly.webp\",\r\n phone_code: \"218\",\r\n },\r\n {\r\n name: \"Liechtenstein\",\r\n code: \"LI\",\r\n currency: \"CHF\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/li.webp\",\r\n phone_code: \"423\",\r\n },\r\n {\r\n name: \"Lithuania\",\r\n code: \"LT\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lt.webp\",\r\n phone_code: \"370\",\r\n },\r\n {\r\n name: \"Luxembourg\",\r\n code: \"LU\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lu.webp\",\r\n phone_code: \"352\",\r\n },\r\n {\r\n name: \"Macau\",\r\n code: \"MO\",\r\n currency: \"MOP\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mo.webp\",\r\n phone_code: \"853\",\r\n },\r\n {\r\n name: \"Madagascar\",\r\n code: \"MG\",\r\n currency: \"MGA\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mg.webp\",\r\n phone_code: \"261\",\r\n },\r\n {\r\n name: \"Malawi\",\r\n code: \"MW\",\r\n currency: \"MWK\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mw.webp\",\r\n phone_code: \"265\",\r\n },\r\n {\r\n name: \"Malaysia\",\r\n code: \"MY\",\r\n currency: \"MYR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/my.webp\",\r\n phone_code: \"60\",\r\n },\r\n {\r\n name: \"Maldives\",\r\n code: \"MV\",\r\n currency: \"MVR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mv.webp\",\r\n phone_code: \"960\",\r\n },\r\n {\r\n name: \"Mali\",\r\n code: \"ML\",\r\n currency: \"XOF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ml.webp\",\r\n phone_code: \"223\",\r\n },\r\n {\r\n name: \"Malta\",\r\n code: \"MT\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mt.webp\",\r\n phone_code: \"356\",\r\n },\r\n {\r\n name: \"Marshall Islands\",\r\n code: \"MH\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mh.webp\",\r\n phone_code: \"692\",\r\n },\r\n {\r\n name: \"Martinique\",\r\n code: \"MQ\",\r\n currency: \"EUR\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mq.webp\",\r\n phone_code: \"596\",\r\n },\r\n {\r\n name: \"Mauritania\",\r\n code: \"MR\",\r\n currency: \"MRU\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mr.webp\",\r\n phone_code: \"222\",\r\n },\r\n {\r\n name: \"Mauritius\",\r\n code: \"MU\",\r\n currency: \"MUR\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mu.webp\",\r\n phone_code: \"230\",\r\n },\r\n {\r\n name: \"Mayotte\",\r\n code: \"YT\",\r\n currency: \"EUR\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/yt.webp\",\r\n phone_code: \"269\",\r\n },\r\n {\r\n name: \"Mexico\",\r\n code: \"MX\",\r\n currency: \"MXN\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mx.webp\",\r\n phone_code: \"52\",\r\n },\r\n {\r\n name: \"Micronesia\",\r\n code: \"FM\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fm.webp\",\r\n phone_code: \"691\",\r\n },\r\n {\r\n name: \"Moldova\",\r\n code: \"MD\",\r\n currency: \"MDL\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/md.webp\",\r\n phone_code: \"373\",\r\n },\r\n {\r\n name: \"Monaco\",\r\n code: \"MC\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mc.webp\",\r\n phone_code: \"377\",\r\n },\r\n {\r\n name: \"Mongolia\",\r\n code: \"MN\",\r\n currency: \"MNT\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mn.webp\",\r\n phone_code: \"976\",\r\n },\r\n {\r\n name: \"Montenegro\",\r\n code: \"ME\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/me.webp\",\r\n phone_code: \"382\",\r\n },\r\n {\r\n name: \"Montserrat\",\r\n code: \"MS\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ms.webp\",\r\n phone_code: \"1-664\",\r\n },\r\n {\r\n name: \"Morocco\",\r\n code: \"MA\",\r\n currency: \"MAD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ma.webp\",\r\n phone_code: \"212\",\r\n },\r\n {\r\n name: \"Mozambique\",\r\n code: \"MZ\",\r\n currency: \"MZN\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mz.webp\",\r\n phone_code: \"258\",\r\n },\r\n {\r\n name: \"Myanmar\",\r\n code: \"MM\",\r\n currency: \"MMK\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mm.webp\",\r\n phone_code: \"95\",\r\n },\r\n {\r\n name: \"Namibia\",\r\n code: \"NA\",\r\n currency: \"NAD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/na.webp\",\r\n phone_code: \"264\",\r\n },\r\n {\r\n name: \"Nauru\",\r\n code: \"NR\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nr.webp\",\r\n phone_code: \"674\",\r\n },\r\n {\r\n name: \"Nepal\",\r\n code: \"NP\",\r\n currency: \"NPR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/np.webp\",\r\n phone_code: \"977\",\r\n },\r\n {\r\n name: \"Netherlands\",\r\n code: \"NL\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nl.webp\",\r\n phone_code: \"31\",\r\n },\r\n {\r\n name: \"New Caledonia\",\r\n code: \"NC\",\r\n currency: \"XPF\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nc.webp\",\r\n phone_code: \"687\",\r\n },\r\n {\r\n name: \"New Zealand\",\r\n code: \"NZ\",\r\n currency: \"NZD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nz.webp\",\r\n phone_code: \"64\",\r\n },\r\n {\r\n name: \"Nicaragua\",\r\n code: \"NI\",\r\n currency: \"NIO\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ni.webp\",\r\n phone_code: \"505\",\r\n },\r\n {\r\n name: \"Niger\",\r\n code: \"NE\",\r\n currency: \"NGN\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ne.webp\",\r\n phone_code: \"227\",\r\n },\r\n {\r\n name: \"Nigeria\",\r\n code: \"NG\",\r\n currency: \"NGN\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ng.webp\",\r\n phone_code: \"234\",\r\n },\r\n {\r\n name: \"Niue\",\r\n code: \"NU\",\r\n currency: \"NZD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nu.webp\",\r\n phone_code: \"683\",\r\n },\r\n {\r\n name: \"Norfolk Island\",\r\n code: \"NF\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nf.webp\",\r\n phone_code: \"672\",\r\n },\r\n {\r\n name: \"North Macedonia\",\r\n code: \"MK\",\r\n currency: \"MKD\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mk.webp\",\r\n phone_code: \"389\",\r\n },\r\n {\r\n name: \"Northern Mariana Islands\",\r\n code: \"MP\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mp.webp\",\r\n phone_code: \"1-670\",\r\n },\r\n {\r\n name: \"Norway\",\r\n code: \"NO\",\r\n currency: \"NOK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/no.webp\",\r\n phone_code: \"47\",\r\n },\r\n {\r\n name: \"Oman\",\r\n code: \"OM\",\r\n currency: \"OMR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/om.webp\",\r\n phone_code: \"968\",\r\n },\r\n {\r\n name: \"Pakistan\",\r\n code: \"PK\",\r\n currency: \"PKR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pk.webp\",\r\n phone_code: \"92\",\r\n },\r\n {\r\n name: \"Palau\",\r\n code: \"PW\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pw.webp\",\r\n phone_code: \"680\",\r\n },\r\n {\r\n name: \"Panama\",\r\n code: \"PA\",\r\n currency: \"PAB\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pa.webp\",\r\n phone_code: \"507\",\r\n },\r\n {\r\n name: \"Papua New Guinea\",\r\n code: \"PG\",\r\n currency: \"PGK\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pg.webp\",\r\n phone_code: \"675\",\r\n },\r\n {\r\n name: \"Paraguay\",\r\n code: \"PY\",\r\n currency: \"PYG\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/py.webp\",\r\n phone_code: \"595\",\r\n },\r\n {\r\n name: \"Peru\",\r\n code: \"PE\",\r\n currency: \"PEN\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pe.webp\",\r\n phone_code: \"51\",\r\n },\r\n {\r\n name: \"Philippines\",\r\n code: \"PH\",\r\n currency: \"PHP\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ph.webp\",\r\n phone_code: \"63\",\r\n },\r\n {\r\n name: \"Pitcairn Islands\",\r\n code: \"PN\",\r\n currency: \"NZD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pn.webp\",\r\n phone_code: \"64\",\r\n },\r\n {\r\n name: \"Poland\",\r\n code: \"PL\",\r\n currency: \"PLN\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pl.webp\",\r\n phone_code: \"48\",\r\n },\r\n {\r\n name: \"Portugal\",\r\n code: \"PT\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pt.webp\",\r\n phone_code: \"351\",\r\n },\r\n {\r\n name: \"Puerto Rico\",\r\n code: \"PR\",\r\n currency: \"USD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pr.webp\",\r\n phone_code: \"1-787\",\r\n },\r\n {\r\n name: \"Qatar\",\r\n code: \"QA\",\r\n currency: \"QAR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/qa.webp\",\r\n phone_code: \"974\",\r\n },\r\n {\r\n name: \"Romania\",\r\n code: \"RO\",\r\n currency: \"RON\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ro.webp\",\r\n phone_code: \"40\",\r\n },\r\n {\r\n name: \"Russia\",\r\n code: \"RU\",\r\n currency: \"RUB\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ru.webp\",\r\n phone_code: \"7\",\r\n },\r\n {\r\n name: \"Rwanda\",\r\n code: \"RW\",\r\n currency: \"RWF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/rw.webp\",\r\n phone_code: \"250\",\r\n },\r\n {\r\n name: \"Saint Barthélemy\",\r\n code: \"BL\",\r\n currency: \"EUR\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bl.webp\",\r\n phone_code: \"590\",\r\n },\r\n {\r\n name: \"Saint Helena\",\r\n code: \"SH\",\r\n currency: \"SHP\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sh.webp\",\r\n phone_code: \"290\",\r\n },\r\n {\r\n name: \"Saint Kitts and Nevis\",\r\n code: \"KN\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kn.webp\",\r\n phone_code: \"1-869\",\r\n },\r\n {\r\n name: \"Saint Lucia\",\r\n code: \"LC\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lc.webp\",\r\n phone_code: \"1-758\",\r\n },\r\n {\r\n name: \"Saint Martin\",\r\n code: \"MF\",\r\n currency: \"EUR\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mf.webp\",\r\n phone_code: \"590\",\r\n },\r\n {\r\n name: \"Saint Pierre and Miquelon\",\r\n code: \"PM\",\r\n currency: \"EUR\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pm.webp\",\r\n phone_code: \"508\",\r\n },\r\n {\r\n name: \"Saint Vincent and the Grenadines\",\r\n code: \"VC\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/vc.webp\",\r\n phone_code: \"1-784\",\r\n },\r\n {\r\n name: \"Samoa\",\r\n code: \"WS\",\r\n currency: \"WST\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ws.webp\",\r\n phone_code: \"685\",\r\n },\r\n {\r\n name: \"San Marino\",\r\n code: \"SM\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sm.webp\",\r\n phone_code: \"378\",\r\n },\r\n {\r\n name: \"Sao Tome and Principe\",\r\n code: \"ST\",\r\n currency: \"STN\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/st.webp\",\r\n phone_code: \"239\",\r\n },\r\n {\r\n name: \"Saudi Arabia\",\r\n code: \"SA\",\r\n currency: \"SAR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sa.webp\",\r\n phone_code: \"966\",\r\n },\r\n {\r\n name: \"Senegal\",\r\n code: \"SN\",\r\n currency: \"XOF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sn.webp\",\r\n phone_code: \"221\",\r\n },\r\n {\r\n name: \"Serbia\",\r\n code: \"RS\",\r\n currency: \"RSD\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/rs.webp\",\r\n phone_code: \"381\",\r\n },\r\n {\r\n name: \"Seychelles\",\r\n code: \"SC\",\r\n currency: \"SCR\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sc.webp\",\r\n phone_code: \"248\",\r\n },\r\n {\r\n name: \"Sierra Leone\",\r\n code: \"SL\",\r\n currency: \"SLL\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sl.webp\",\r\n phone_code: \"232\",\r\n },\r\n {\r\n name: \"Singapore\",\r\n code: \"SG\",\r\n currency: \"SGD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sg.webp\",\r\n phone_code: \"65\",\r\n },\r\n {\r\n name: \"Sint Eustatius\",\r\n code: \"SX\",\r\n currency: \"USD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sx.webp\",\r\n phone_code: \"599\",\r\n },\r\n {\r\n name: \"Sint Maarten\",\r\n code: \"SM\",\r\n currency: \"ANG\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sm.webp\",\r\n phone_code: \"1-721\",\r\n },\r\n {\r\n name: \"Slovakia\",\r\n code: \"SK\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sk.webp\",\r\n phone_code: \"421\",\r\n },\r\n {\r\n name: \"Slovenia\",\r\n code: \"SI\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/si.webp\",\r\n phone_code: \"386\",\r\n },\r\n {\r\n name: \"Solomon Islands\",\r\n code: \"SB\",\r\n currency: \"SBD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sb.webp\",\r\n phone_code: \"677\",\r\n },\r\n {\r\n name: \"Somalia\",\r\n code: \"SO\",\r\n currency: \"SOS\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/so.webp\",\r\n phone_code: \"252\",\r\n },\r\n {\r\n name: \"South Africa\",\r\n code: \"ZA\",\r\n currency: \"ZAR\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/za.webp\",\r\n phone_code: \"27\",\r\n },\r\n {\r\n name: \"South Georgia and the South Sandwich Islands\",\r\n code: \"GS\",\r\n currency: \"GBP\",\r\n continent: \"Antarctica\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gs.webp\",\r\n phone_code: \"500\",\r\n },\r\n {\r\n name: \"South Sudan\",\r\n code: \"SS\",\r\n currency: \"SSP\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ss.webp\",\r\n phone_code: \"211\",\r\n },\r\n {\r\n name: \"Spain\",\r\n code: \"ES\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/es.webp\",\r\n phone_code: \"34\",\r\n },\r\n {\r\n name: \"Sri Lanka\",\r\n code: \"LK\",\r\n currency: \"LKR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lk.webp\",\r\n phone_code: \"94\",\r\n },\r\n {\r\n name: \"Sudan\",\r\n code: \"SD\",\r\n currency: \"SDG\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sd.webp\",\r\n phone_code: \"249\",\r\n },\r\n {\r\n name: \"Suriname\",\r\n code: \"SR\",\r\n currency: \"SRD\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sr.webp\",\r\n phone_code: \"597\",\r\n },\r\n {\r\n name: \"Svalbard and Jan Mayen\",\r\n code: \"SJ\",\r\n currency: \"NOK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sj.webp\",\r\n phone_code: \"47\",\r\n },\r\n {\r\n name: \"Sweden\",\r\n code: \"SE\",\r\n currency: \"SEK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/se.webp\",\r\n phone_code: \"46\",\r\n },\r\n {\r\n name: \"Switzerland\",\r\n code: \"CH\",\r\n currency: \"CHF\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ch.webp\",\r\n phone_code: \"41\",\r\n },\r\n {\r\n name: \"Syria\",\r\n code: \"SY\",\r\n currency: \"SYP\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sy.webp\",\r\n phone_code: \"963\",\r\n },\r\n {\r\n name: \"Taiwan\",\r\n code: \"TW\",\r\n currency: \"TWD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tw.webp\",\r\n phone_code: \"886\",\r\n },\r\n {\r\n name: \"Tajikistan\",\r\n code: \"TJ\",\r\n currency: \"TJS\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tj.webp\",\r\n phone_code: \"992\",\r\n },\r\n {\r\n name: \"Tanzania\",\r\n code: \"TZ\",\r\n currency: \"TZS\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tz.webp\",\r\n phone_code: \"255\",\r\n },\r\n {\r\n name: \"Thailand\",\r\n code: \"TH\",\r\n currency: \"THB\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/th.webp\",\r\n phone_code: \"66\",\r\n },\r\n {\r\n name: \"Timor-Leste\",\r\n code: \"TL\",\r\n currency: \"USD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tl.webp\",\r\n phone_code: \"670\",\r\n },\r\n {\r\n name: \"Togo\",\r\n code: \"TG\",\r\n currency: \"XOF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tg.webp\",\r\n phone_code: \"228\",\r\n },\r\n {\r\n name: \"Tokelau\",\r\n code: \"TK\",\r\n currency: \"NZD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tk.webp\",\r\n phone_code: \"690\",\r\n },\r\n {\r\n name: \"Tonga\",\r\n code: \"TO\",\r\n currency: \"TOP\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/to.webp\",\r\n phone_code: \"676\",\r\n },\r\n {\r\n name: \"Trinidad and Tobago\",\r\n code: \"TT\",\r\n currency: \"TTD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tt.webp\",\r\n phone_code: \"1-868\",\r\n },\r\n {\r\n name: \"Tunisia\",\r\n code: \"TN\",\r\n currency: \"TND\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tn.webp\",\r\n phone_code: \"216\",\r\n },\r\n {\r\n name: \"Turkey\",\r\n code: \"TR\",\r\n currency: \"TRY\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tr.webp\",\r\n phone_code: \"90\",\r\n },\r\n {\r\n name: \"Turkmenistan\",\r\n code: \"TM\",\r\n currency: \"TMT\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tm.webp\",\r\n phone_code: \"993\",\r\n },\r\n {\r\n name: \"Tuvalu\",\r\n code: \"TV\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tv.webp\",\r\n phone_code: \"688\",\r\n },\r\n {\r\n name: \"Uganda\",\r\n code: \"UG\",\r\n currency: \"UGX\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ug.webp\",\r\n phone_code: \"256\",\r\n },\r\n {\r\n name: \"Ukraine\",\r\n code: \"UA\",\r\n currency: \"UAH\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ua.webp\",\r\n phone_code: \"380\",\r\n },\r\n {\r\n name: \"United Arab Emirates\",\r\n code: \"AE\",\r\n currency: \"AED\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ae.webp\",\r\n phone_code: \"971\",\r\n },\r\n {\r\n name: \"United Kingdom\",\r\n code: \"GB\",\r\n currency: \"GBP\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gb.webp\",\r\n phone_code: \"44\",\r\n },\r\n {\r\n name: \"United States\",\r\n code: \"US\",\r\n currency: \"USD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/us.webp\",\r\n phone_code: \"1\",\r\n },\r\n {\r\n name: \"Uruguay\",\r\n code: \"UY\",\r\n currency: \"UYU\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/uy.webp\",\r\n phone_code: \"598\",\r\n },\r\n {\r\n name: \"Uzbekistan\",\r\n code: \"UZ\",\r\n currency: \"UZS\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/uz.webp\",\r\n phone_code: \"998\",\r\n },\r\n {\r\n name: \"Vanuatu\",\r\n code: \"VU\",\r\n currency: \"VUV\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/vu.webp\",\r\n phone_code: \"678\",\r\n },\r\n {\r\n name: \"Vatican City\",\r\n code: \"VA\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/va.webp\",\r\n phone_code: \"379\",\r\n },\r\n {\r\n name: \"Venezuela\",\r\n code: \"VE\",\r\n currency: \"VES\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ve.webp\",\r\n phone_code: \"58\",\r\n },\r\n {\r\n name: \"Vietnam\",\r\n code: \"VN\",\r\n currency: \"VND\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/vn.webp\",\r\n phone_code: \"84\",\r\n },\r\n {\r\n name: \"Wallis and Futuna\",\r\n code: \"WF\",\r\n currency: \"XPF\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/wf.webp\",\r\n phone_code: \"681\",\r\n },\r\n {\r\n name: \"Western Sahara\",\r\n code: \"EH\",\r\n currency: \"MAD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/eh.webp\",\r\n phone_code: \"212\",\r\n },\r\n {\r\n name: \"Yemen\",\r\n code: \"YE\",\r\n currency: \"YER\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ye.webp\",\r\n phone_code: \"967\",\r\n },\r\n {\r\n name: \"Zambia\",\r\n code: \"ZM\",\r\n currency: \"ZMW\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/zm.webp\",\r\n phone_code: \"260\",\r\n },\r\n {\r\n name: \"Zimbabwe\",\r\n code: \"ZW\",\r\n currency: \"ZWL\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/zw.webp\",\r\n phone_code: \"263\",\r\n },\r\n];\r\n","import {\r\n contractAddress,\r\n Custody,\r\n Provider,\r\n VerifiedWallet,\r\n} from \"@verified-network/verified-sdk\";\r\nimport { allGoogleFontUrls, defaultChainId, imageAssets } from \"./constants\";\r\nimport { ChainConfig } from \"./config\";\r\nimport crypto from \"crypto\";\r\nimport crypt from \"crypto-js\";\r\nimport { toast } from \"react-toastify\";\r\nimport { createSmartAccountClient } from \"@biconomy/account\";\r\nimport React from \"react\";\r\nimport { toMultichainNexusAccount } from \"@biconomy/abstractjs\";\r\nimport {\r\n base,\r\n baseSepolia,\r\n gnosis,\r\n mainnet,\r\n polygon,\r\n sepolia,\r\n} from \"viem/chains\";\r\nimport { http } from \"viem\";\r\n\r\n/**\r\n *\r\n * @param document Any web page loaded in the browser / Dom tree\r\n */\r\nexport const loadAllGoogleFonts = (document: Document) => {\r\n const apiExists = document.querySelector(\r\n `link[href=\"https://fonts.googleapis.com\"]`\r\n );\r\n if (!apiExists) {\r\n const apiLink = document.createElement(\"link\");\r\n apiLink.rel = \"preconnect\";\r\n apiLink.href = \"https://fonts.googleapis.com\";\r\n document.head.appendChild(apiLink);\r\n }\r\n const staticExists = document.querySelector(\r\n `link[href=\"https://fonts.gstatic.com\"]`\r\n );\r\n if (!staticExists) {\r\n const staticLink = document.createElement(\"link\");\r\n staticLink.rel = \"preconnect\";\r\n staticLink.href = \"https://fonts.gstatic.com\";\r\n document.head.appendChild(staticLink);\r\n }\r\n allGoogleFontUrls.map((fontUrl) => {\r\n const fontExists = document.querySelector(`link[href=\"${fontUrl}\"]`);\r\n if (!fontExists) {\r\n const fontLink = document.createElement(\"link\");\r\n fontLink.rel = \"stylesheet\";\r\n fontLink.href = fontUrl;\r\n document.head.appendChild(fontLink);\r\n }\r\n });\r\n\r\n return true;\r\n};\r\n\r\n/**\r\n * initialize user's wallet and vault contract using existing private key or create a new wallet for user\r\n * unsupported/invalid chainId passed will automatically use default supported chainId\r\n * @param chainId\r\n * @param privateKey\r\n *\r\n */\r\nexport const initWalletAndContract = async (\r\n chainId?: number,\r\n privateKey?: string\r\n) => {\r\n try {\r\n let sender: VerifiedWallet;\r\n //import existing wallet or create new one.\r\n if (privateKey) {\r\n sender = new VerifiedWallet(privateKey);\r\n } else {\r\n const mnemonics = VerifiedWallet.generateMnemonic();\r\n sender = VerifiedWallet.importWallet(mnemonics);\r\n }\r\n\r\n //initialize provider, signer, privatekey and vault contract\r\n const cntAddresses: any = contractAddress;\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n const pk = sender.privateKey;\r\n const vaultContract = new Custody(signer, cntAddresses[_chainId]?.Custody);\r\n const _signer: any = signer;\r\n const nexusAccount = await toMultichainNexusAccount({\r\n chains: [base, mainnet, sepolia, gnosis, baseSepolia, polygon],\r\n transports: [http(), http(), http(), http(), http(), http()],\r\n signer: _signer,\r\n });\r\n const address = nexusAccount.addressOn(_chainId);\r\n\r\n //valid return\r\n return {\r\n chainId: _chainId,\r\n address,\r\n pk,\r\n signer,\r\n provider,\r\n vaultContract,\r\n vaultData: null,\r\n };\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\r\n \"Error while initializing user's wallet and contract: \",\r\n err\r\n );\r\n }\r\n //default return;\r\n return {\r\n chainId: null,\r\n address: null,\r\n pk: null,\r\n signer: null,\r\n provider: null,\r\n vaultContract: null,\r\n vaultData: null,\r\n };\r\n }\r\n};\r\n\r\nexport const hashTheString = (text: string) => {\r\n const hash = crypto\r\n .createHash(\"sha256\")\r\n .update(text?.toLowerCase())\r\n .digest(\"hex\");\r\n return `0x${hash}`;\r\n};\r\n\r\nexport const encryptString = (text: string, secretKey: string) => {\r\n const encryptedAES = crypt.AES.encrypt(text, secretKey);\r\n return encryptedAES.toString();\r\n};\r\n\r\nexport const decryptString = (encryptedText: string, secretKey: string) => {\r\n var decryptedBytes = crypt.AES.decrypt(encryptedText, secretKey);\r\n var decryptedText = decryptedBytes.toString(crypt.enc.Utf8);\r\n return decryptedText;\r\n};\r\n\r\nexport const customEncryptString = (inputString: string, password: string) => {\r\n const salt = crypt.lib.WordArray.random(128 / 8);\r\n const key = crypt.PBKDF2(password, salt, {\r\n keySize: 256 / 32,\r\n iterations: 1000,\r\n });\r\n\r\n const iv = crypt.lib.WordArray.random(128 / 8);\r\n\r\n const encrypted = crypt.AES.encrypt(inputString, key, {\r\n iv: iv,\r\n padding: crypt.pad.Pkcs7,\r\n mode: crypt.mode.CBC,\r\n });\r\n\r\n const result = salt.toString() + iv.toString() + encrypted.toString();\r\n return result;\r\n};\r\n\r\nexport const customDecryptString = (\r\n encryptedString: string,\r\n password: string\r\n) => {\r\n const salt = crypt.enc.Hex.parse(encryptedString.substr(0, 32));\r\n const iv = crypt.enc.Hex.parse(encryptedString.substr(32, 32));\r\n const encrypted = encryptedString.substr(64);\r\n\r\n const key = crypt.PBKDF2(password, salt, {\r\n keySize: 256 / 32,\r\n iterations: 1000,\r\n });\r\n\r\n const decrypted = crypt.AES.decrypt(encrypted, key, {\r\n iv: iv,\r\n padding: crypt.pad.Pkcs7,\r\n mode: crypt.mode.CBC,\r\n });\r\n\r\n return decrypted.toString(crypt.enc.Utf8);\r\n};\r\n\r\nexport const getErrorToastContent = (title: string, content: string) => {\r\n return (\r\n <div className=\"verified-custd-mdl-general-web-toast-error\">\r\n <img style={{ marginLeft: \"5px\" }} src={imageAssets.errorAlert} alt=\"\" />\r\n <div className=\"verified-custd-mdl-general-web-toast-error-container\">\r\n <p className=\"verified-custd-mdl-general-web-toast-error-title\">\r\n {title}\r\n </p>\r\n <p className=\"verified-custd-mdl-general-web-toast-error-label\">\r\n {content}\r\n </p>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport const getSuccessToastContent = (\r\n title: string,\r\n content: string,\r\n link: string\r\n) => {\r\n return (\r\n <div className=\"verified-custd-mdl-general-web-toast-success\">\r\n <div className=\"verified-custd-mdl-general-web-toast-success-cont\">\r\n <img\r\n style={{ marginLeft: \"5px\" }}\r\n src={imageAssets.successAlert}\r\n alt=\"\"\r\n />\r\n <div className=\"verified-custd-mdl-general-web-toast-success-container\">\r\n <p className=\"verified-custd-mdl-general-web-toast-error-title\">\r\n {title}\r\n </p>\r\n <p className=\"verified-custd-mdl-general-web-toast-error-label\">\r\n {content}\r\n </p>\r\n </div>\r\n </div>\r\n {link?.length > 0 && (\r\n <div className=\"verified-custd-mdl-general-web-toast-success-link\">\r\n <a\r\n className=\"verified-custd-mdl-general-web-toast-success-link-text\"\r\n href={link}\r\n target=\"_blank\"\r\n rel=\"noreferrer\"\r\n >\r\n Follow your transaction.\r\n </a>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport const errorToast = (title: string, content: string) => {\r\n toast.dismiss();\r\n return toast.error(getErrorToastContent(title, content), {\r\n closeButton: false,\r\n position: \"top-center\",\r\n autoClose: 3000,\r\n hideProgressBar: false,\r\n pauseOnHover: false,\r\n draggable: false,\r\n closeOnClick: false,\r\n style: {\r\n background: \"#fef2f2\",\r\n width: \"600px\",\r\n height: \"67px\",\r\n maxHeight: \"67px\",\r\n position: \"absolute\",\r\n top: \"5px\",\r\n right: \"5px\",\r\n borderRadius: \"8px\",\r\n },\r\n icon: false,\r\n });\r\n};\r\n\r\nexport const successToast = (title: string, content: string, link: string) => {\r\n toast.dismiss();\r\n return toast.success(getSuccessToastContent(title, content, link), {\r\n closeButton: false,\r\n position: \"top-center\",\r\n autoClose: 3000,\r\n hideProgressBar: false,\r\n pauseOnHover: false,\r\n draggable: false,\r\n closeOnClick: false,\r\n style: {\r\n background: \"var(--Success-50, #F1F8ED)\",\r\n\r\n width: \"600px\",\r\n height: \"67px\",\r\n maxHeight: \"67px\",\r\n position: \"absolute\",\r\n top: \"5px\",\r\n right: \"5px\",\r\n borderRadius: \"8px\",\r\n },\r\n icon: false,\r\n });\r\n};\r\n","import { imageAssets } from \"../utils/constants\";\r\n\r\nexport const ChainConfig: any = {\r\n 1: {\r\n chainId: `0x${Number(1).toString(16)}`,\r\n chainName: \"Ethereum\",\r\n nativeCurrency: {\r\n name: \"ETH\",\r\n symbol: \"ETH\",\r\n decimals: 18,\r\n },\r\n rpcUrls: [\r\n \"https://eth-mainnet.g.alchemy.com/v2/82hkNrfu6ZZ8Wms2vr1U331ml3FtS7AZ\",\r\n ],\r\n blockExplorerUrls: [\"https://etherscan.io/\"],\r\n icon: imageAssets.ethereumIcon,\r\n },\r\n\r\n 8453: {\r\n chainId: `0x${Number(8453).toString(16)}`,\r\n chainName: \"Base Mainnet\",\r\n nativeCurrency: {\r\n name: \"ETH\",\r\n symbol: \"ETH\",\r\n decimals: 18,\r\n },\r\n rpcUrls: [\r\n \"https://base-mainnet.g.alchemy.com/v2/82hkNrfu6ZZ8Wms2vr1U331ml3FtS7AZ\",\r\n ],\r\n blockExplorerUrls: [\"https://basescan.org/\"],\r\n Icon: imageAssets.baseIcon,\r\n },\r\n\r\n 100: {\r\n chainId: `0x${Number(100).toString(16)}`,\r\n chainName: \"Gnosis\",\r\n nativeCurrency: {\r\n name: \"XDAI\",\r\n symbol: \"XDAI\",\r\n decimals: 18,\r\n },\r\n rpcUrls: [\"https://rpc.gnosischain.com/\"],\r\n blockExplorerUrls: [\"https://gnosisscan.io/\"],\r\n icon: imageAssets.gnosisIcon,\r\n },\r\n\r\n 11155111: {\r\n chainId: `0x${Number(11155111).toString(16)}`,\r\n chainName: \"Sepolia Test Network\",\r\n nativeCurrency: {\r\n name: \"ETH\",\r\n symbol: \"ETH\",\r\n decimals: 18,\r\n },\r\n rpcUrls: [\"https://eth-sepolia.public.blastapi.io\"],\r\n blockExplorerUrls: [\"https://sepolia.etherscan.io/\"],\r\n icon: imageAssets.ethereumIcon,\r\n },\r\n\r\n 84532: {\r\n chainId: `0x${Number(84532).toString(16)}`,\r\n chainName: \"Base Sepolia\",\r\n nativeCurrency: {\r\n name: \"ETH\",\r\n symbol: \"ETH\",\r\n decimals: 18,\r\n },\r\n rpcUrls: [\"https://sepolia.base.org\"],\r\n blockExplorerUrls: [\"https://sepolia.basescan.org/\"],\r\n icon: imageAssets.baseIcon,\r\n },\r\n};\r\n","import React, { useState } from \"react\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport { errorToast } from \"../utils/helpers\";\r\nimport PageSlider from \"../components/slider\";\r\nimport SearchBox from \"../components/search\";\r\nimport {\r\n PrivacyOverlay,\r\n TermsAndConditionsOverlay,\r\n} from \"../components/overlays\";\r\nimport { imageAssets } from \"../utils/constants\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\n\r\nconst ContactPage = (props: {\r\n setStep: (step: string) => void;\r\n setIsLoading: (isLoading: boolean) => void;\r\n setUserNumberFmt: (number: string) => void;\r\n userNumberFmt: string;\r\n setUserEmail: (email: string) => void;\r\n userEmail: string;\r\n setSelectedCountry: (country: {\r\n name: string;\r\n area: string;\r\n flag: string;\r\n }) => void;\r\n selectedCountry: { name: string; area: string; flag: string };\r\n allCountries: any;\r\n noContract?: boolean;\r\n helperFunctions?: VerifiedCustodyHelpers;\r\n enablePhone?: boolean;\r\n}) => {\r\n const [userNumber, setUserNumber] = useState(\"\");\r\n const [userInput, setUserInput] = useState(\"\");\r\n const [searchActive, setSearchActive] = useState(false);\r\n const [sendOtpErrorText, setSendOtpErrorText] = useState(\"\");\r\n\r\n const { pk, vaultContract, address } = useVaultStore();\r\n\r\n const handleButtonDisplay = () => {\r\n const button = document.getElementById(\"verified-custd-mdl-contact-button\");\r\n if (button && props.selectedCountry.area && userNumber.length === 10) {\r\n setSendOtpErrorText(\"\");\r\n button.className = \"verified-custd-mdl-startup-button-active\";\r\n } else if (\r\n button &&\r\n props.userEmail?.length > 0 &&\r\n isNaN(Number(props.userEmail)) &&\r\n props.userEmail?.includes(\"@\")\r\n ) {\r\n setSendOtpErrorText(\"\");\r\n button.className = \"verified-custd-mdl-startup-button-active\";\r\n } else {\r\n setSendOtpErrorText(\"\");\r\n button!.className = \"verified-custd-mdl-startup-button\";\r\n }\r\n };\r\n\r\n const handleSendOTP = async () => {\r\n if (!props.helperFunctions) {\r\n setSendOtpErrorText(\r\n \"No Helper Functions. Please include all helper functions in the ContactPage/FTUPage props.\"\r\n );\r\n } else {\r\n if (\r\n props.userEmail?.length > 0 &&\r\n !/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(props.userEmail)\r\n ) {\r\n setSendOtpErrorText(\"Invalid input, please check your email\");\r\n return;\r\n }\r\n\r\n const vaultId =\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${props.selectedCountry.area}${userNumber}`;\r\n const channel = props.userEmail?.length > 0 ? \"email\" : \"sms\";\r\n\r\n if (\r\n (vaultId && channel && pk && vaultContract) ||\r\n (vaultId && channel && props.noContract)\r\n ) {\r\n props.setIsLoading(true);\r\n await props.helperFunctions\r\n .sendOTPVerification(address, channel, vaultId)\r\n .then((res: any) => {\r\n props.setIsLoading(false);\r\n if (res) {\r\n setSendOtpErrorText(\"\");\r\n props.setStep(\"3\");\r\n } else {\r\n setSendOtpErrorText(\r\n channel === \"email\"\r\n ? \"Error while sending otp to your email. Try again later.\"\r\n : \"Error while sending otp to your phone number. Try again later.\"\r\n );\r\n errorToast(\r\n \"Oops something went wrong\",\r\n props.userEmail?.length > 0\r\n ? `Input a valid email and try again.`\r\n : `Input a valid phone number and try again.`\r\n );\r\n }\r\n });\r\n } else {\r\n !props.noContract\r\n ? setSendOtpErrorText(\r\n \"Network error. check your internet connection and try again.\"\r\n )\r\n : setSendOtpErrorText(\"\");\r\n }\r\n }\r\n };\r\n\r\n return (\r\n <div className=\"verified-custd-mdl-startup-language\">\r\n <div className=\"verified-custd-mdl-startup-contact\">\r\n <PageSlider sliderCount={[1, 2, 3]} currentSlider=\"0\" />\r\n\r\n <div className=\"verified-custd-mdl-startup-contact-content\">\r\n {props.enablePhone && (\r\n <p className=\"verified-custd-mdl-startup-contact-text\">\r\n Enter your phone number\r\n </p>\r\n )}\r\n\r\n {!props.enablePhone && (\r\n <p className=\"verified-custd-mdl-startup-contact-text\">\r\n Enter your email address\r\n </p>\r\n )}\r\n\r\n {props.enablePhone && (\r\n <div className=\"verified-custd-mdl-st-contact-input\">\r\n <div className=\"verified-custd-mdl-st-contact-content-container\">\r\n <div\r\n onClick={() => {\r\n setSearchActive(!searchActive);\r\n }}\r\n className=\"verified-custd-mdl-st-contact-first-section\"\r\n >\r\n <img\r\n onClick={() => {\r\n setSearchActive(!searchActive);\r\n }}\r\n alt=\"Country Flag\"\r\n className=\"verified-custd-mdl-st-contact-selection-icon\"\r\n src={props.selectedCountry.flag}\r\n />\r\n <p\r\n onClick={() => {\r\n setSearchActive(!searchActive);\r\n }}\r\n className=\"verified-custd-mdl-st-contact-selection-text\"\r\n >\r\n + {props.selectedCountry.area}\r\n </p>\r\n {searchActive && (\r\n <img\r\n onClick={() => {\r\n setSearchActive(!searchActive);\r\n }}\r\n alt=\"Dropdown Icon\"\r\n className=\"verified-custd-mdl-st-contact-dropdown\"\r\n src={imageAssets.arrowUp}\r\n />\r\n )}\r\n {!searchActive && (\r\n <img\r\n onClick={() => {\r\n setSearchActive(!searchActive);\r\n }}\r\n alt=\"Dropdown Icon\"\r\n className=\"verified-custd-mdl-st-contact-dropdown\"\r\n src={imageAssets.arrowDown}\r\n />\r\n )}\r\n </div>\r\n\r\n <input\r\n onInputCapture={(e: any) => {\r\n if (e.target.value === \"\") {\r\n setUserInput(userInput + \" \");\r\n } else {\r\n setUserInput(e.target.value);\r\n }\r\n const numericInput = e.target.value?.replace(/\\D/g, \"\");\r\n setUserNumber(numericInput);\r\n let formattedNumber = \"\";\r\n for (let i = 0; i < numericInput?.length; i++) {\r\n formattedNumber += numericInput[i];\r\n if ((i + 1) % 5 === 0 && i + 1 < numericInput?.length) {\r\n formattedNumber += \" \";\r\n }\r\n }\r\n props.setUserNumberFmt(formattedNumber);\r\n }}\r\n onInput={(e) => {\r\n handleButtonDisplay();\r\n }}\r\n value={props.userNumberFmt}\r\n id=\"phone-input\"\r\n type=\"text\"\r\n className=\"verified-custd-mdl-st-contact-second-section\"\r\n placeholder=\"Enter your phone number\"\r\n />\r\n </div>\r\n {searchActive && (\r\n <SearchBox\r\n pageName=\"ftu/contact\"\r\n searchContent={props.allCountries}\r\n type=\"area-code\"\r\n handleButtonDisplay={handleButtonDisplay}\r\n setSelected={props.setSelectedCountry}\r\n selected={props.selectedCountry}\r\n searchActive={searchActive}\r\n setSearchActive={setSearchActive}\r\n contentMaxHeight=\"300\"\r\n contentbottomMargin=\"300\"\r\n />\r\n )}\r\n {userNumber.length !== 10 &&\r\n userInput.length > 10 &&\r\n sendOtpErrorText === \"\" && (\r\n <div className=\"verified-custd-mdl-st-contact-input-error\">\r\n <p className=\"verified-custd-mdl-input-error-text\">\r\n Invalid input, please check your phone number\r\n </p>\r\n </div>\r\n )}\r\n {sendOtpErrorText?.length > 0 && (\r\n <div className=\"verified-custd-mdl-st-contact-input-error\">\r\n <p className=\"verified-custd-mdl-input-error-text\">\r\n {sendOtpErrorText}\r\n </p>\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {!searchActive && (\r\n <React.Fragment>\r\n {props.enablePhone && (\r\n <div className=\"verified-custd-mdl-p-p-payment-portal-amount-info-separator\">\r\n <div className=\"verified-custd-mdl-p-p-payment-portal-line\"></div>\r\n <p className=\"verified-custd-mdl-p-payment-portal-separator-text\">\r\n OR\r\n </p>\r\n <div className=\"verified-custd-mdl-p-p-payment-portal-line\"></div>\r\n </div>\r\n )}\r\n <div className=\"verified-custd-mdl-st-contact-input\">\r\n <input\r\n onInputCapture={(e: any) => {\r\n props.setUserEmail(e.target?.value);\r\n props.setUserNumberFmt(\"\");\r\n setUserNumber(\"\");\r\n setUserInput(\"\");\r\n }}\r\n onInput={(e) => {\r\n handleButtonDisplay();\r\n }}\r\n type=\"text\"\r\n className=\"verified-custd-mdl-st-contact-second-section\"\r\n placeholder=\"Enter your email address\"\r\n />\r\n {sendOtpErrorText?.length > 0 && props.userEmail?.length > 0 && (\r\n <div className=\"verified-custd-mdl-st-contact-input-error\">\r\n <p className=\"verified-custd-mdl-input-error-text\">\r\n {sendOtpErrorText}\r\n </p>\r\n </div>\r\n )}\r\n </div>\r\n </React.Fragment>\r\n )}\r\n </div>\r\n\r\n {!searchActive && <div style={{ height: \"80px\" }}></div>}\r\n\r\n <div className=\"verified-custd-mdl-startup-contact-footer\">\r\n <div className=\"verified-custd-mdl-st-contact-footer-first-section\">\r\n <TermsAndConditionsOverlay />\r\n <button\r\n id=\"verified-custd-mdl-contact-button\"\r\n onClick={async (e: any) => {\r\n if (\r\n e.target.className.includes(\r\n \"verified-custd-mdl-startup-button\"\r\n ) &&\r\n e.target.className !== \"verified-custd-mdl-startup-button\"\r\n ) {\r\n e.target.className = \"verified-custd-mdl-startup-button-click\";\r\n await handleSendOTP();\r\n } else {\r\n const buttonElement = document.getElementsByClassName(\r\n \"verified-custd-mdl-startup-button-active\"\r\n );\r\n if (buttonElement.length > 0) {\r\n buttonElement[0].className =\r\n \"verified-custd-mdl-startup-button-click\";\r\n await handleSendOTP();\r\n }\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button\"\r\n >\r\n Get OTP\r\n </button>\r\n {/* <div className=\"verified-custd-mdl-st-contact-footer-second-section\">\r\n <PrivacyOverlay />\r\n </div> */}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default ContactPage;\r\n","import React from \"react\";\r\n\r\nconst PageSlider = (props: any) => {\r\n return (\r\n <div className=\"verified-custd-mdl-startup-slider\">\r\n {props.sliderCount?.length > 0 &&\r\n props.sliderCount.map((_: any, idx: number) => (\r\n <React.Fragment key={idx}>\r\n {idx <= Number(props.currentSlider) && (\r\n <div\r\n key={`active-${idx}`}\r\n style={{ width: `${100 / props.sliderCount.length}%` }}\r\n className=\"verified-custd-mdl-startup-slider-line-active\"\r\n ></div>\r\n )}\r\n {idx > Number(props.currentSlider) && (\r\n <div\r\n key={`inactive-${idx}`}\r\n style={{ width: `${100 / props.sliderCount.length}%` }}\r\n className=\"verified-custd-mdl-startup-slider-line\"\r\n ></div>\r\n )}\r\n </React.Fragment>\r\n ))}\r\n </div>\r\n );\r\n};\r\n\r\nexport default PageSlider;\r\n","import React, { useState } from \"react\";\r\nimport { imageAssets } from \"../utils/constants\";\r\n\r\nconst SearchBox = (props: any) => {\r\n const [newSearchContent, setNewSearchContent] = useState<null | [Object]>(\r\n null\r\n );\r\n\r\n return (\r\n <div className=\"verified-custd-mdl-startup-language-content-container\">\r\n <div className=\"verified-custd-mdl-st-language-content\">\r\n {props.headerText && (\r\n <p className=\"verified-custd-mdl-st-language-text\">\r\n {props.headerText}\r\n </p>\r\n )}\r\n <div className=\"verified-custd-mdl-mobille-startup-search-box-container\">\r\n <div className=\"verified-custd-mdl-mobile-startup-search-box\">\r\n <img\r\n style={{ paddingLeft: \"6px\" }}\r\n src={imageAssets.search}\r\n alt=\"Search Icon\"\r\n className=\"verified-custd-mdl-mobile-search-icon\"\r\n />\r\n <input\r\n onInputCapture={() => {\r\n if (props.type === \"language\") {\r\n props.setSelected(\"\");\r\n }\r\n }}\r\n onInput={(e: any) => {\r\n if (e.target.value === \"\") {\r\n setNewSearchContent(null);\r\n } else {\r\n if (props.type === \"language\") {\r\n setNewSearchContent(\r\n // eslint-disable-next-line array-callback-return\r\n props.searchContent.filter((src: any) => {\r\n if (\r\n src.name\r\n .toLowerCase()\r\n .includes(e.target.value.toLowerCase())\r\n ) {\r\n src.searched = e.target.value.toLowerCase();\r\n src.nameArray = src.name.split(\"\");\r\n return src;\r\n }\r\n })\r\n );\r\n } else if (props.type === \"area-code\") {\r\n setNewSearchContent(\r\n // eslint-disable-next-line array-callback-return\r\n\r\n props.searchContent.filter((src: any) => {\r\n if (\r\n src?.name\r\n ?.toLowerCase()\r\n .includes(e.target.value.toLowerCase())\r\n ) {\r\n src.searched = e.target.value.toLowerCase();\r\n src.nameArray = src?.name?.split(\"\");\r\n return src;\r\n }\r\n })\r\n );\r\n }\r\n }\r\n\r\n props.handleButtonDisplay();\r\n }}\r\n type=\"text\"\r\n className=\"verified-custd-mdl-ms-search-box-content\"\r\n placeholder=\"Search\"\r\n />\r\n </div>\r\n <div className=\"verified-custd-mdl-mobile-startup-search-content\">\r\n <div\r\n style={\r\n props.contentMaxHeight\r\n ? { maxHeight: `${props.contentMaxHeight}px` }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-ms-search-content-container\"\r\n >\r\n {!newSearchContent &&\r\n props?.searchContent?.length > 0 &&\r\n props.searchContent.map((src: any, idx: number) => (\r\n <React.Fragment key={idx}>\r\n {props.type === \"area-code\" && (\r\n <div\r\n key={idx}\r\n onClickCapture={() => {\r\n props.setSelected({\r\n area: src.phone_code,\r\n flag: src.flag,\r\n name: src.name,\r\n });\r\n }}\r\n onClick={() => {\r\n if (props.setSearchActive) {\r\n props.setSearchActive(!props.setSearchActive);\r\n }\r\n props.handleButtonDisplay();\r\n }}\r\n className=\"verified-custd-mdl-ms-search-content\"\r\n >\r\n <img\r\n src={src.flag}\r\n alt=\"Search Result Icon\"\r\n className=\"verified-custd-mdl-ms-search-content-icon\"\r\n />\r\n <p className=\"verified-custd-mdl-ms-search-content-text\">\r\n {src.name}\r\n </p>\r\n </div>\r\n )}\r\n {props.type === \"language\" && (\r\n <React.Fragment>\r\n {window.location.search !== `?${idx}` && (\r\n <div\r\n key={idx}\r\n onClickCapture={() => {\r\n props.setSelected(src.name);\r\n }}\r\n onClick={() => {\r\n props.setSelected(src.name);\r\n if (props.setSearchActive) {\r\n props.setSearchActive(!props.setSearchActive);\r\n }\r\n props.handleButtonDisplay();\r\n }}\r\n className=\"verified-custd-mdl-ms-search-content\"\r\n >\r\n <img\r\n src={src.icon}\r\n alt=\"Search Result Icon\"\r\n className=\"verified-custd-mdl-ms-search-content-icon\"\r\n />\r\n {src.label && (\r\n <p className=\"verified-custd-mdl-ms-search-content-text\">\r\n {src.name} {`(${src.label})`}\r\n </p>\r\n )}\r\n {!src.label && (\r\n <p className=\"verified-custd-mdl-ms-search-content-text\">\r\n {src.name}\r\n </p>\r\n )}\r\n </div>\r\n )}\r\n {window.location.search === `?${idx}` && (\r\n <div\r\n key={idx}\r\n onClickCapture={() => {\r\n props.setSelected(src.name);\r\n }}\r\n onClick={() => {\r\n props.setSelected(src.name);\r\n if (props.setSearchActive) {\r\n props.setSearchActive(!props.setSearchActive);\r\n }\r\n props.handleButtonDisplay();\r\n }}\r\n className=\"verified-custd-mdl-ms-search-content-active\"\r\n >\r\n <div className=\"verified-custd-mdl-ms-search-content-text-container\">\r\n <img\r\n src={src.icon}\r\n alt=\"Search Result Icon\"\r\n className=\"verified-custd-mdl-ms-search-content-icon\"\r\n />\r\n {src.label && (\r\n <p className=\"verified-custd-mdl-ms-search-content-text\">\r\n {src.name} {`(${src.label})`}\r\n </p>\r\n )}\r\n {!src.label && (\r\n <p className=\"verified-custd-mdl-ms-search-content-text\">\r\n {src.name}\r\n </p>\r\n )}\r\n </div>\r\n {props.selected && props.selected.length > 0 && (\r\n <img\r\n src={imageAssets.circleClicked}\r\n alt=\"Clicked Icon\"\r\n />\r\n )}\r\n </div>\r\n )}\r\n </React.Fragment>\r\n )}\r\n </React.Fragment>\r\n ))}\r\n\r\n {newSearchContent &&\r\n newSearchContent.length > 0 &&\r\n newSearchContent.map((src: any, idx: number) => (\r\n <React.Fragment key={idx}>\r\n {props.type === \"area-code\" && (\r\n <div\r\n key={idx}\r\n onClickCapture={() => {\r\n props.setSelected({\r\n area: src?.phone_code,\r\n flag: src?.flag,\r\n name: src?.name,\r\n });\r\n }}\r\n onClick={() => {\r\n if (props.setSearchActive) {\r\n props.setSearchActive(!props.setSearchActive);\r\n }\r\n props.handleButtonDisplay();\r\n }}\r\n className=\"verified-custd-mdl-ms-search-content\"\r\n >\r\n <img\r\n src={src?.flag}\r\n alt=\"Search Result Icon\"\r\n className=\"verified-custd-mdl-ms-search-content-icon\"\r\n />\r\n <p className=\"verified-custd-mdl-ms-search-content-text\">\r\n {src?.nameArray?.length > 0 &&\r\n src?.nameArray.map((nm: any, idx: number) => (\r\n <React.Fragment key={idx}>\r\n {!src.searched.includes(nm.toLowerCase()) && (\r\n <span\r\n key={idx}\r\n style={{\r\n color: \"#B6B7C3\",\r\n }}\r\n >\r\n {nm}\r\n </span>\r\n )}\r\n {src.searched.includes(nm.toLowerCase()) && (\r\n <span key={idx}>{nm}</span>\r\n )}\r\n </React.Fragment>\r\n ))}\r\n </p>\r\n </div>\r\n )}\r\n {props.type === \"language\" && (\r\n <React.Fragment key={idx}>\r\n {window.location.search !== `?${idx}` && (\r\n <div\r\n onClickCapture={() => {\r\n props.setSelected(src.name);\r\n }}\r\n onClick={() => {\r\n props.setSelected(src.name);\r\n if (props.setSearchActive) {\r\n props.setSearchActive(!props.setSearchActive);\r\n }\r\n props.handleButtonDisplay();\r\n }}\r\n className=\"verified-custd-mdl-ms-search-content\"\r\n >\r\n <img\r\n src={src.icon}\r\n alt=\"Search Result Icon\"\r\n className=\"verified-custd-mdl-ms-search-content-icon\"\r\n />\r\n {!src.label && (\r\n <p className=\"verified-custd-mdl-ms-search-content-text\">\r\n {src.nameArray?.length > 0 &&\r\n src.nameArray.map((nm: any, idx: number) => (\r\n <React.Fragment key={idx}>\r\n {!src.searched.includes(\r\n nm.toLowerCase()\r\n ) && (\r\n <span\r\n key={idx}\r\n style={{\r\n color: \"#B6B7C3\",\r\n }}\r\n >\r\n {nm}\r\n </span>\r\n )}\r\n {src.searched.includes(\r\n nm.toLowerCase()\r\n ) && <span key={idx}>{nm}</span>}\r\n </React.Fragment>\r\n ))}\r\n </p>\r\n )}\r\n {src.label && (\r\n <p className=\"verified-custd-mdl-ms-search-content-text\">\r\n {src.nameArray?.length > 0 &&\r\n src.nameArray.map((nm: any, idx: number) => (\r\n <React.Fragment key={idx}>\r\n {!src.searched.includes(\r\n nm.toLowerCase()\r\n ) && (\r\n <span\r\n key={idx}\r\n style={{\r\n color: \"#B6B7C3\",\r\n }}\r\n >\r\n {nm}\r\n </span>\r\n )}\r\n {src.searched.includes(\r\n nm.toLowerCase()\r\n ) && <span key={idx}>{nm}</span>}\r\n </React.Fragment>\r\n ))}\r\n {!src.searched.includes(\r\n src.label.toLowerCase()\r\n ) && (\r\n <span\r\n style={{\r\n color: \"#B6B7C3\",\r\n }}\r\n >{` (${src.label})`}</span>\r\n )}\r\n {src.searched.includes(\r\n src.label.toLowerCase()\r\n ) && <span>{` (${src.label})`}</span>}\r\n </p>\r\n )}\r\n </div>\r\n )}\r\n {window.location.search === `?${idx}` && (\r\n <div\r\n key={idx}\r\n onClickCapture={() => {\r\n props.setSelected(src.name);\r\n }}\r\n onClick={() => {\r\n props.setSelected(src.name);\r\n if (props.setSearchActive) {\r\n props.setSearchActive(!props.setSearchActive);\r\n }\r\n props.handleButtonDisplay();\r\n }}\r\n className=\"verified-custd-mdl-ms-search-content-active\"\r\n >\r\n <div className=\"verified-custd-mdl-ms-search-content-text-container\">\r\n <img\r\n src={src.icon}\r\n alt=\"Search Result Icon\"\r\n className=\"verified-custd-mdl-ms-search-content-icon\"\r\n />\r\n {src.label && (\r\n <p className=\"verified-custd-mdl-ms-search-content-text\">\r\n {src.name} {`(${src.label})`}\r\n </p>\r\n )}\r\n {!src.label && (\r\n <p className=\"verified-custd-mdl-ms-search-content-text\">\r\n {src.name}\r\n </p>\r\n )}\r\n </div>\r\n\r\n {props.selected && props.selected.length > 0 && (\r\n <img\r\n src={imageAssets.circleClicked}\r\n alt=\"Clicked Icon\"\r\n />\r\n )}\r\n </div>\r\n )}\r\n </React.Fragment>\r\n )}\r\n </React.Fragment>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default SearchBox;\r\n","import React from \"react\";\r\nimport { imageAssets } from \"../utils/constants\";\r\n\r\nexport const TermsAndConditionsOverlay = () => {\r\n return (\r\n <p className=\"verified-custd-mdl-terms-and-condition\">\r\n By proceeding, you agree with Verified Wallet{\" \"}\r\n <span style={{ color: \"#603FF4\", cursor: \"pointer\" }}>T&C</span> and{\" \"}\r\n <span style={{ color: \"#603FF4\", cursor: \"pointer\" }}>\r\n Privacy Policy.\r\n </span>\r\n </p>\r\n );\r\n};\r\n\r\nexport const LogoutOverlay = (props: {\r\n setIsLoading: (isLoading: boolean) => void;\r\n setisOnboard?: (isOnboard: boolean) => void;\r\n}) => {\r\n return (\r\n <p\r\n style={{ fontSize: \"0.7rem\" }}\r\n className=\"verified-custd-mdl-terms-and-condition\"\r\n >\r\n Want to access a different account? Click{\" \"}\r\n <span\r\n style={{ color: \"#603FF4\", cursor: \"pointer\" }}\r\n onClick={async () => {\r\n props.setIsLoading(true);\r\n if (chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n await chrome.storage.local.remove(\"lastPk\");\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n localStorage.removeItem(\"myVault\");\r\n localStorage.removeItem(\"lastPk\");\r\n }\r\n if (props.setisOnboard) {\r\n props.setisOnboard(false);\r\n }\r\n props.setIsLoading(false);\r\n }}\r\n >\r\n Logout\r\n </span>{\" \"}\r\n to logout and login/create another account\r\n </p>\r\n );\r\n};\r\n\r\nexport const PrivacyOverlay = () => {\r\n return (\r\n <div className=\"verified-custd-mdl-privacy\">\r\n <img\r\n alt=\"Privacy Icon\"\r\n src={imageAssets.privacyTip}\r\n className=\"verified-custd-mdl-privacy-icon\"\r\n />\r\n <p className=\"verified-custd-mdl-privacy-text\">\r\n Trusted by 10M+ Investors globally\r\n </p>\r\n </div>\r\n );\r\n};\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport { errorToast, hashTheString } from \"../utils/helpers\";\r\nimport PageSlider from \"../components/slider\";\r\nimport { PrivacyOverlay } from \"../components/overlays\";\r\nimport { imageAssets } from \"../utils/constants\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\nimport { checkIsExistingUser } from \"../services/contracts\";\r\n\r\nconst OTPPage = (props: {\r\n setStep: (step: string) => void;\r\n setIsLoading: (isLoading: boolean) => void;\r\n setUserNumberFmt: (number: string) => void;\r\n setUserEmail: (email: string) => void;\r\n setIsExistingUser?: (isExistingUser: boolean) => void;\r\n selectedCountry: { name: string; area: string; flag: string };\r\n userNumberFmt: string;\r\n userEmail: string;\r\n noContract?: boolean;\r\n helperFunctions?: VerifiedCustodyHelpers;\r\n}) => {\r\n const [searchActive, setSearchActive] = useState(false);\r\n const [countdown, setCountdown] = useState(60);\r\n const [otpIncorrect, setOtpIncorrect] = useState(false);\r\n const [otherErrorText, setOtherErrorText] = useState(\"\");\r\n\r\n const { pk, vaultContract, address } = useVaultStore();\r\n\r\n useEffect(() => {\r\n if (countdown === 0) return;\r\n\r\n const reduceCountdown = setInterval(() => {\r\n setCountdown((prevCountdown) => prevCountdown - 1);\r\n }, 1000);\r\n\r\n return () => clearInterval(reduceCountdown);\r\n }, [countdown]);\r\n\r\n //todo: add key actions to input focus change\r\n const handlleInputFocus = (currentInput: any) => {\r\n if (currentInput.value.length > 0) {\r\n const nextInput = currentInput.nextElementSibling;\r\n if (nextInput) {\r\n nextInput.focus();\r\n }\r\n } else if (currentInput.value.length === 0) {\r\n currentInput.focus();\r\n }\r\n };\r\n\r\n const handleOtpPaste = (e: any) => {\r\n const pastedText = e.clipboardData.getData(\"text\");\r\n const numbersFromText = pastedText?.replace(/\\D/g, \"\");\r\n const allOptInputs: any = document.getElementsByClassName(\"otp-input\");\r\n if (allOptInputs?.length === 4 && numbersFromText?.length > 0) {\r\n for (let i = 0; i < allOptInputs.length; i++) {\r\n if (numbersFromText[i]) {\r\n allOptInputs[i].value = numbersFromText[i];\r\n allOptInputs[i].focus();\r\n }\r\n }\r\n }\r\n };\r\n\r\n const handleOtpBackspace = (e: any) => {\r\n const previousInpput = e.target.previousElementSibling;\r\n if (previousInpput) {\r\n previousInpput.focus();\r\n }\r\n };\r\n\r\n const handleButtonDisplay = () => {\r\n const button: any = document.getElementById(\r\n \"verified-custd-mdl-otp-button\"\r\n );\r\n const otp1: any = document.getElementById(\"verified-custd-mdl-otp-input-1\");\r\n const otp2: any = document.getElementById(\"verified-custd-mdl-otp-input-2\");\r\n const otp3: any = document.getElementById(\"verified-custd-mdl-otp-input-3\");\r\n const otp4: any = document.getElementById(\"verified-custd-mdl-otp-input-4\");\r\n if (\r\n button &&\r\n otp1?.value.length > 0 &&\r\n otp2?.value.length > 0 &&\r\n otp3?.value.length > 0 &&\r\n otp4?.value.length > 0 &&\r\n !otpIncorrect\r\n ) {\r\n button.className = \"verified-custd-mdl-startup-button-active\";\r\n } else {\r\n button.className = \"verified-custd-mdl-startup-button\";\r\n }\r\n };\r\n\r\n const handleVerifyOtp = async () => {\r\n if (!props.helperFunctions) {\r\n setOtherErrorText(\r\n \"No Helper Functions. Please include all helper functions in the OTPPage/FTUPage props.\"\r\n );\r\n setOtpIncorrect(true);\r\n } else {\r\n const vaultId =\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${props.selectedCountry.area}${props.userNumberFmt?.replace(\r\n \" \",\r\n \"\"\r\n )}`;\r\n const otp1: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-1\"\r\n );\r\n const otp2: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-2\"\r\n );\r\n const otp3: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-3\"\r\n );\r\n const otp4: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-4\"\r\n );\r\n if (\r\n (otp1?.value?.length > 0 &&\r\n otp2?.value?.length > 0 &&\r\n otp3?.value?.length > 0 &&\r\n otp4?.value?.length > 0 &&\r\n vaultId &&\r\n pk &&\r\n vaultContract) ||\r\n (otp1?.value?.length > 0 &&\r\n otp2?.value?.length > 0 &&\r\n otp3?.value?.length > 0 &&\r\n otp4?.value?.length > 0 &&\r\n vaultId &&\r\n props.noContract)\r\n ) {\r\n props.setIsLoading(true);\r\n const fullOtp = otp1?.value + otp2?.value + otp3?.value + otp4?.value;\r\n await props.helperFunctions\r\n .checkOTPVerification(address, vaultId, String(fullOtp))\r\n .then(async (res) => {\r\n if (res) {\r\n const hashedVaultId = hashTheString(vaultId);\r\n let isExisting = false;\r\n if (!props.noContract) {\r\n isExisting = await checkIsExistingUser(\r\n vaultContract,\r\n hashedVaultId\r\n );\r\n }\r\n\r\n if (isExisting === null) {\r\n setOtherErrorText(\r\n \"Unexpected error while fetching account details. Try again later.\"\r\n );\r\n setOtpIncorrect(true);\r\n return;\r\n }\r\n if (props.setIsExistingUser) {\r\n props.setIsExistingUser(isExisting);\r\n }\r\n props.setIsLoading(false);\r\n props.setStep(\"4\");\r\n } else {\r\n props.setIsLoading(false);\r\n setOtpIncorrect(true);\r\n }\r\n });\r\n }\r\n }\r\n };\r\n\r\n const handleResendOtp = async () => {\r\n if (!props.helperFunctions) {\r\n setOtherErrorText(\r\n \"No Helper Functions. Please include all helper functions in the OTPPage/FTUPage props.\"\r\n );\r\n setOtpIncorrect(true);\r\n } else {\r\n const vaultId =\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${props.selectedCountry.area}${props.userNumberFmt?.replace(\r\n \" \",\r\n \"\"\r\n )}`;\r\n\r\n const channel = props.userEmail?.length > 0 ? \"email\" : \"sms\";\r\n\r\n if (vaultId && channel) {\r\n props.setIsLoading(true);\r\n await props.helperFunctions\r\n .sendOTPVerification(address, channel, vaultId)\r\n .then((res: any) => {\r\n props.setIsLoading(false);\r\n if (res) {\r\n setCountdown(60);\r\n setOtpIncorrect(false);\r\n setOtherErrorText(\"\");\r\n const otp1: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-1\"\r\n );\r\n const otp2: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-2\"\r\n );\r\n const otp3: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-3\"\r\n );\r\n const otp4: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-4\"\r\n );\r\n (otp1!.value = \"\"),\r\n (otp2!.value = \"\"),\r\n (otp3!.value = \"\"),\r\n (otp4!.value = \"\");\r\n } else {\r\n errorToast(\"Oops something went wrong\", \"Unexpected error\");\r\n }\r\n });\r\n }\r\n }\r\n };\r\n\r\n return (\r\n <div className=\"verified-custd-mdl-startup-language\">\r\n <div className=\"verified-custd-mdl-startup-contact\">\r\n <PageSlider sliderCount={[1, 2, 3]} currentSlider=\"0\" />\r\n <div className=\"verified-custd-mdl-startup-contact-content\">\r\n <p className=\"verified-custd-mdl-startup-contact-text\">Enter OTP</p>\r\n <div className=\"verified-custd-mdl-startup-otp-text\">\r\n <p className=\"verified-custd-mdl-startup-otp-header-text\">\r\n Enter <span style={{ color: \"#0C0C0E\" }}>4-Digit OTP</span> (One\r\n Time Password) sent to your{\" \"}\r\n {props.userNumberFmt?.length > 0\r\n ? \"phone number\"\r\n : \"email address\"}\r\n </p>\r\n <div className=\"verified-custd-mdl-startup-otp-footer\">\r\n <p className=\"verified-custd-mdl-startup-otp-footer-text\">\r\n {props.userNumberFmt?.length > 0 && (\r\n <React.Fragment>\r\n <span>(+{props.selectedCountry?.area})</span>{\" \"}\r\n <span> {props.userNumberFmt?.split(\" \")[0]}</span>{\" \"}\r\n <span> {props.userNumberFmt?.split(\" \")[1]}</span>\r\n </React.Fragment>\r\n )}\r\n {props.userEmail?.length > 0 && <span>{props.userEmail}</span>}\r\n </p>\r\n <img\r\n onClick={() => {\r\n props.setUserNumberFmt(\"\");\r\n props.setUserEmail(\"\");\r\n props.setStep(\"2\");\r\n }}\r\n src={imageAssets.editBlue}\r\n alt=\"edit-icon\"\r\n className=\"verified-custd-mdl-st-otp-icon\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"verified-custd-mdl-otp-input-container\">\r\n <div className=\"verified-custd-mdl-otp-input-group\">\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setOtpIncorrect(false);\r\n setOtherErrorText(\"\");\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n onPaste={(e) => {\r\n handleOtpPaste(e);\r\n }}\r\n className={\r\n otpIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type=\"text\"\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-1\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setOtpIncorrect(false);\r\n setOtherErrorText(\"\");\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n otpIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type=\"text\"\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-2\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setOtpIncorrect(false);\r\n setOtherErrorText(\"\");\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n otpIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type=\"text\"\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-3\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setOtpIncorrect(false);\r\n setOtherErrorText(\"\");\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n otpIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type=\"text\"\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-4\"\r\n />\r\n </div>\r\n <div className=\"verified-custd-mdl-otp-timer\">\r\n {!otpIncorrect && countdown > 5 && otherErrorText === \"\" && (\r\n <p className=\"verified-custd-mdl-otp-timer-text\">\r\n <span style={{ color: \"#717286\", fontWeight: 400 }}>00:</span>\r\n {countdown}\r\n </p>\r\n )}\r\n {!otpIncorrect &&\r\n countdown <= 5 &&\r\n countdown > 0 &&\r\n otherErrorText === \"\" && (\r\n <p className=\"verified-custd-mdl-otp-timer-text-red\">\r\n <span style={{ fontWeight: 400 }}>00:</span>\r\n {countdown}\r\n </p>\r\n )}\r\n {!otpIncorrect && countdown === 0 && otherErrorText === \"\" && (\r\n <p className=\"verified-custd-mdl-otp-resend-text\">\r\n Didn't receive an OTP ?\r\n </p>\r\n )}\r\n {otpIncorrect && otherErrorText === \"\" && (\r\n <p className=\"verified-custd-mdl-otp-incorrect-text\">\r\n Please enter the correct OTP\r\n </p>\r\n )}\r\n {otpIncorrect && otherErrorText?.length > 0 && (\r\n <p className=\"verified-custd-mdl-otp-incorrect-text\">\r\n {otherErrorText}\r\n </p>\r\n )}\r\n {!otpIncorrect && countdown > 0 && otherErrorText === \"\" && (\r\n <p className=\"verified-custd-mdl-otp-resend-text\">Resend OTP</p>\r\n )}\r\n {!otpIncorrect && countdown === 0 && otherErrorText === \"\" && (\r\n <p\r\n onClick={async () => {\r\n //clear input content\r\n const inputs: any =\r\n document.getElementsByClassName(\"otp-input\");\r\n if (inputs) {\r\n for (let i = 0; i < inputs.length; i++) {\r\n inputs[i].value = \"\";\r\n }\r\n }\r\n\r\n await handleResendOtp();\r\n }}\r\n className=\"verified-custd-mdl-otp-resend-text-active\"\r\n >\r\n Resend OTP\r\n </p>\r\n )}\r\n {otpIncorrect && otherErrorText === \"\" && (\r\n <p\r\n onClick={async () => {\r\n //clear input content\r\n const inputs: any =\r\n document.getElementsByClassName(\"otp-input\");\r\n if (inputs) {\r\n for (let i = 0; i < inputs.length; i++) {\r\n inputs[i].value = \"\";\r\n }\r\n }\r\n\r\n await handleResendOtp();\r\n }}\r\n className=\"verified-custd-mdl-otp-resend-text-active\"\r\n >\r\n Resend OTP\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {!searchActive && <div style={{ height: \"100px\" }}></div>}\r\n\r\n <div className=\"verified-custd-mdl-startup-contact-footer\">\r\n <div className=\"verified-custd-mdl-st-contact-footer-first-section\">\r\n <button\r\n id=\"verified-custd-mdl-otp-button\"\r\n onClick={async (e: any) => {\r\n if (\r\n e.target.className.includes(\r\n \"verified-custd-mdl-startup-button\"\r\n ) &&\r\n e.target.className !== \"verified-custd-mdl-startup-button\"\r\n ) {\r\n e.target.className = \"verified-custd-mdl-startup-button-click\";\r\n await handleVerifyOtp();\r\n } else {\r\n const buttonElement = document.getElementsByClassName(\r\n \"verified-custd-mdl-startup-button-active\"\r\n );\r\n if (buttonElement.length > 0) {\r\n buttonElement[0].className =\r\n \"verified-custd-mdl-startup-button-click\";\r\n await handleVerifyOtp();\r\n }\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button\"\r\n >\r\n Proceed\r\n </button>\r\n {/* <div className=\"verified-custd-mdl-st-contact-footer-second-section\">\r\n <PrivacyOverlay />\r\n </div> */}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default OTPPage;\r\n","import { AbiCoder, encodeBytes32String } from \"ethers\";\r\nimport { combine, split } from \"shamir-secret-sharing\";\r\nimport {\r\n contractAddress,\r\n Custody,\r\n Provider,\r\n VerifiedWallet,\r\n} from \"@verified-network/verified-sdk\";\r\nimport { createSmartAccountClient } from \"@biconomy/account\";\r\nimport {\r\n decryptString,\r\n encryptString,\r\n errorToast,\r\n hashTheString,\r\n} from \"../utils/helpers\";\r\nimport {\r\n defaultChainId,\r\n newTransactionEventHash,\r\n numberPositions,\r\n} from \"../utils/constants\";\r\nimport { ChainConfig } from \"../utils/config\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\nimport { toMultichainNexusAccount } from \"@biconomy/abstractjs\";\r\nimport {\r\n base,\r\n baseSepolia,\r\n gnosis,\r\n mainnet,\r\n polygon,\r\n sepolia,\r\n} from \"viem/chains\";\r\nimport { http } from \"viem\";\r\n\r\nexport const checkIsExistingUser = async (\r\n vaultContract: any,\r\n hashedVaultId: string\r\n) => {\r\n try {\r\n return await vaultContract\r\n .getCreator(hashedVaultId, \"\")\r\n .then(async (res: any) => {\r\n if (res?.status === 0) {\r\n return true;\r\n } else if (res?.reason?.toLowerCase() === \"wallet not created\") {\r\n return false;\r\n } else if (res?.reason?.toLowerCase() === \"invalid pin\") {\r\n return true;\r\n }\r\n });\r\n } catch (err) {\r\n return null;\r\n }\r\n};\r\n\r\nexport const checkOrResetOrCreateVault = async (\r\n vaultId: string,\r\n hashedVaultId: string,\r\n vaultPin: string,\r\n hashedVaultPin: string,\r\n otpChannel: string,\r\n userPk: string,\r\n userAddress: string,\r\n vaultContract: any,\r\n action?: string,\r\n reqVaultData?: any,\r\n txData?: any\r\n) => {\r\n try {\r\n const vaultData = {\r\n vaultId,\r\n hashedVaultId,\r\n vaultPin,\r\n hashedVaultPin,\r\n vaultContract,\r\n };\r\n return await vaultContract\r\n .getCreator(hashedVaultId, hashedVaultPin)\r\n .then(async (res: any) => {\r\n if (res?.status === 0) {\r\n try {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n const encryptedPk = encryptString(userPk, secretKey);\r\n if (action === \"invitation\") {\r\n return { isExisting: true, ...vaultData };\r\n } else {\r\n if (chrome?.storage?.local) {\r\n await chrome.storage.local.set({\r\n myVault: JSON.stringify({\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n }),\r\n });\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n localStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n }\r\n if (chrome?.runtime?.sendMessage) {\r\n chrome.runtime.sendMessage({\r\n type:\r\n action && action === \"connect_wallet\"\r\n ? \"getPk\"\r\n : action && action === \"eth_requestAccounts\"\r\n ? \"getPk\"\r\n : action && action !== \"connect_wallet\"\r\n ? action\r\n : \"getPk\",\r\n value: {\r\n vaultData:\r\n action && action === \"signRecovery\"\r\n ? reqVaultData\r\n : action && action === \"completeRecovery\"\r\n ? reqVaultData\r\n : { vaultId, hashedVaultId, hashedVaultPin },\r\n txData: txData,\r\n },\r\n });\r\n } else if (!chrome?.runtime?.sendMessage) {\r\n const event = new CustomEvent(\r\n action && action === \"connect_wallet\"\r\n ? \"getPk\"\r\n : action && action === \"eth_requestAccounts\"\r\n ? \"getPk\"\r\n : action && action !== \"connect_wallet\"\r\n ? action\r\n : \"getPk\",\r\n {\r\n detail: {\r\n value: {\r\n vaultData:\r\n action && action === \"signRecovery\"\r\n ? reqVaultData\r\n : action && action === \"completeRecovery\"\r\n ? reqVaultData\r\n : { vaultId, hashedVaultId, hashedVaultPin },\r\n txData: txData,\r\n },\r\n },\r\n }\r\n );\r\n window.dispatchEvent(event);\r\n }\r\n }\r\n return action === \"getPk\"\r\n ? {\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n shouldStop: true,\r\n }\r\n : { shouldStop: true };\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error handling existing vault: \", err);\r\n }\r\n\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error fetching existing vault key(s). Try again later\"\r\n );\r\n return false;\r\n }\r\n } else if (res?.reason?.toLowerCase() === \"invalid pin\") {\r\n let lastPk: any;\r\n if (chrome?.storage?.local) {\r\n lastPk = await new Promise((resolve) => {\r\n chrome.storage.local.get([\"lastPk\"], (result) => {\r\n resolve(result.lastPk);\r\n });\r\n });\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n lastPk = localStorage.getItem(\"lastPk\");\r\n }\r\n if (\r\n action === \"reset-pin\" &&\r\n reqVaultData?.hashedOldPin &&\r\n reqVaultData?.vaultContract\r\n ) {\r\n return await resetVaultPin(\r\n hashedVaultId,\r\n reqVaultData?.hashedOldPin,\r\n hashedVaultPin,\r\n reqVaultData?.vaultContract\r\n );\r\n } else if (lastPk && lastPk?.length > 0) {\r\n //existing PK means failed confirmParticipant, and since wallet exists??\r\n return await vaultContract\r\n .confirmParticipant(\r\n hashedVaultId,\r\n hashedVaultPin,\r\n hashedVaultId,\r\n hashedVaultPin,\r\n true\r\n )\r\n .then(async (cfrmRes: any) => {\r\n if (cfrmRes?.status === 0) {\r\n //delete saved pk if confirmParticipant is successful??\r\n if (chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"lastPk\");\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n localStorage.removeItem(\"lastPk\");\r\n }\r\n try {\r\n const newSender = new VerifiedWallet(userPk);\r\n\r\n const userRegAddress = await newSender.getAddress();\r\n\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n const encryptedPk = encryptString(userPk, secretKey);\r\n\r\n if (chrome?.storage?.local) {\r\n await chrome.storage.local.set({\r\n myVault: JSON.stringify({\r\n address: userAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n }),\r\n });\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n localStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n address: userAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n }\r\n\r\n return vaultData;\r\n } catch (err) {\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error saving new vault details. Try again later\"\r\n );\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"save vault failed: \", err);\r\n }\r\n\r\n return false;\r\n }\r\n } else {\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error creating pin for existing vault. Try again later\"\r\n );\r\n\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"confirm pin vault failed: \", cfrmRes);\r\n }\r\n return false;\r\n }\r\n });\r\n } else {\r\n return null;\r\n }\r\n } else if (res?.reason?.toLowerCase() === \"wallet not created\") {\r\n return await vaultContract\r\n .createVault(hashedVaultId, hashedVaultPin)\r\n .then(async (vultRes: any) => {\r\n if (vultRes?.status === 0) {\r\n //temporary save the last pk incase confirmParticipant fails??\r\n if (chrome?.storage?.local) {\r\n await chrome.storage.local.set({\r\n lastPk: userPk,\r\n });\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n localStorage.setItem(\"lastPk\", userPk);\r\n }\r\n return await vaultContract\r\n .confirmParticipant(\r\n hashedVaultId,\r\n hashedVaultPin,\r\n hashedVaultId,\r\n hashedVaultPin,\r\n true\r\n )\r\n .then(async (cfrmRes: any) => {\r\n if (cfrmRes?.status === 0) {\r\n //delete saved pk if confirmParticipant is successful??\r\n if (chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"lastPk\");\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n localStorage.removeItem(\"lastPk\");\r\n }\r\n try {\r\n const newSender = new VerifiedWallet(userPk);\r\n\r\n const userRegAddress = await newSender.getAddress();\r\n\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n const encryptedPk = encryptString(userPk, secretKey);\r\n\r\n if (chrome?.storage?.local) {\r\n await chrome.storage.local.set({\r\n myVault: JSON.stringify({\r\n address: userAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n }),\r\n });\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n localStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n address: userAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n }\r\n\r\n return vaultData;\r\n } catch (err) {\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error savingr new vault details. Try again later\"\r\n );\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"save vault failed: \", err);\r\n }\r\n\r\n return false;\r\n }\r\n } else {\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error creating pin for new vault. Try again later\"\r\n );\r\n\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"confirm pin vault failed: \", cfrmRes);\r\n }\r\n return false;\r\n }\r\n });\r\n } else {\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error creating new vault. Try again later\"\r\n );\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"create vault failed: \", vultRes);\r\n }\r\n\r\n return false;\r\n }\r\n });\r\n }\r\n });\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"unexpected error: \", err);\r\n }\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error while creating pin. Try again later\"\r\n );\r\n return false;\r\n }\r\n};\r\n\r\nexport const validateVaultPin = async (\r\n vaultId: string,\r\n hashedVaultId: string,\r\n vaultPin: string,\r\n hashedVaultPin: string,\r\n encryptedPk: any,\r\n userAddress: string,\r\n otpChannel: \"sms\" | \"email\",\r\n chainId?: number,\r\n includePk?: boolean,\r\n newChainId?: number\r\n) => {\r\n try {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n const userPk = decryptString(encryptedPk, secretKey);\r\n\r\n if (userPk) {\r\n const cntAddresses: any = contractAddress;\r\n const sender = new VerifiedWallet(userPk);\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n\r\n const vaultContract = new Custody(signer, cntAddresses[_chainId].Custody);\r\n\r\n if (vaultContract) {\r\n return await vaultContract\r\n .getCreator(hashedVaultId, hashedVaultPin)\r\n .then(async (res: any) => {\r\n if (res?.status === 0) {\r\n const quorumSet = await vaultContract.getQuorum(\r\n hashedVaultId,\r\n hashedVaultPin\r\n );\r\n if (\r\n quorumSet?.status === 0 &&\r\n quorumSet?.response?.result?.length > 0\r\n ) {\r\n return includePk && Number(quorumSet?.response?.result[0]) > 0\r\n ? {\r\n address: userAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n channel: otpChannel,\r\n chainId: newChainId ? newChainId : _chainId,\r\n pin: vaultPin,\r\n pk: userPk,\r\n }\r\n : Number(quorumSet?.response?.result[0]) === 0\r\n ? {\r\n address: userAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n channel: otpChannel,\r\n chainId: newChainId ? newChainId : _chainId,\r\n pin: vaultPin,\r\n pk: userPk,\r\n inCompleteVault: true,\r\n }\r\n : {\r\n address: userAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n channel: otpChannel,\r\n chainId: newChainId ? newChainId : _chainId,\r\n pin: vaultPin,\r\n };\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"Invalid pin\");\r\n }\r\n return null;\r\n }\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"Invalid pin\");\r\n }\r\n return null;\r\n }\r\n });\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error ggetting vault contract\");\r\n }\r\n return null;\r\n }\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error decrypting pk\");\r\n }\r\n return null;\r\n }\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"unexpected error: \", err);\r\n }\r\n return null;\r\n }\r\n};\r\n\r\nexport const acceptOrRejectInvitation = async (\r\n sendCreatorAcceptance: VerifiedCustodyHelpers[\"sendCreatorAcceptance\"],\r\n sendCreatorRejection: VerifiedCustodyHelpers[\"sendCreatorRejection\"],\r\n channel: \"email\" | \"sms\",\r\n hashedCosignerId: string,\r\n hashedCosignerPin: string,\r\n hashedCreatorVaultId: string,\r\n hashedCreatorVaultPin: string,\r\n creatorVaultId: string,\r\n coSignerVaultId: string,\r\n accepted: boolean,\r\n vaultContract?: any,\r\n userPk?: string,\r\n chainId?: number\r\n) => {\r\n let contract: any;\r\n if (vaultContract) {\r\n contract = vaultContract;\r\n } else {\r\n const cntAddresses: any = contractAddress;\r\n const sender = new VerifiedWallet(userPk);\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n\r\n contract = new Custody(signer, cntAddresses[_chainId].Custody);\r\n }\r\n if (contract) {\r\n return await contract\r\n .confirmParticipant(\r\n hashedCreatorVaultId,\r\n hashedCosignerPin,\r\n hashedCosignerId,\r\n hashedCreatorVaultPin,\r\n accepted\r\n )\r\n .then(async (res: any) => {\r\n if (res?.status === 0) {\r\n if (accepted) {\r\n await sendCreatorAcceptance(\r\n channel,\r\n creatorVaultId,\r\n coSignerVaultId\r\n );\r\n } else {\r\n await sendCreatorRejection(\r\n channel,\r\n creatorVaultId,\r\n coSignerVaultId\r\n );\r\n }\r\n\r\n return true;\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"Accept or reject invitation failed with\");\r\n }\r\n return false;\r\n }\r\n })\r\n .catch((err: any) => {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"Accept or reject invitation failed with error: \", err);\r\n }\r\n return false;\r\n });\r\n } else {\r\n return false;\r\n }\r\n};\r\n\r\n// const retryCompleteVault = async () => {\r\n// failedParticipants = [...new Set(failedParticipants)]\r\n// await Promise.all(\r\n// failedParticipants.map(async (participant, idx) => {\r\n// const retryAdd = await mainService.vault.addParticipant(\r\n// vaultInfo.hashedVaultId,\r\n// vaultInfo.hashedVaultPin,\r\n// participant.hashedCosigner,\r\n// participant.share\r\n// )\r\n\r\n// if (retryAdd.status) {\r\n// // failedParticipants.push({\r\n// // creatorVaultId: ,\r\n// // fcmToken,\r\n// // cosigner,\r\n// // share: sharesArrayAsString[idx],\r\n// // })\r\n// } else {\r\n// const filtered = failedParticipants.filter(\r\n// (part) => part.cosigner !== participant.cosigner\r\n// )\r\n// failedParticipants = [...new Set(filtered)]\r\n// await sendNotification({\r\n// creator: vaultInfo.vaultId,\r\n// hashedCreator: vaultInfo.hashedVaultId,\r\n// idType: participant.idType,\r\n// email: participant.cosigner,\r\n// phoneNumber: participant.cosigner,\r\n// })\r\n// }\r\n// })\r\n// )\r\n\r\n// if (failedParticipants.length > 0) {\r\n// setIsRetry(true)\r\n// setIsLoading(false)\r\n// return\r\n// }\r\n\r\n// const addQuorum = await mainService.vault.defineQuorum(\r\n// vaultInfo.hashedVaultId,\r\n// vaultInfo.hashedVaultPin,\r\n// threshold.toString() // coming from the slider\r\n// )\r\n\r\n// if (addQuorum.status) {\r\n// return false\r\n// }\r\n// return true\r\n// }\r\n\r\nexport const completeVaultCreation = async (\r\n sendCoSignerInvitation: (\r\n channel: \"sms\" | \"email\",\r\n cosigerId: string,\r\n cretorId: string,\r\n hashedCretorPin: string\r\n ) => Promise<boolean>,\r\n sendCreatorConfirmation: (\r\n channel: \"sms\" | \"email\",\r\n cretorId: string,\r\n cosigersList: [],\r\n requiredSigners: number\r\n ) => Promise<boolean>,\r\n keyHolders: any,\r\n coSigners: any,\r\n otpChannel: \"sms\" | \"email\",\r\n KeyThreshold: number,\r\n vaultId: string,\r\n hashedVaultId: string,\r\n vaultPin: string,\r\n hashedVaultPin: string,\r\n vaultContract: any,\r\n pk: string\r\n) => {\r\n const keyShardsCount = Number(keyHolders.length);\r\n\r\n const privateKeySplits = await split(\r\n Uint8Array.from(pk.split(\"\").map((letter: string) => letter.charCodeAt(0))),\r\n Number(keyShardsCount),\r\n KeyThreshold\r\n );\r\n\r\n const sharesArrayAsString = privateKeySplits.map((share) => share.join(\",\"));\r\n\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n let failedKeyHolders = [];\r\n let succesfulKeyHolders = [];\r\n\r\n for (let idx = 0; idx < keyHolders.length; idx++) {\r\n const participant = keyHolders[idx];\r\n await vaultContract\r\n .addParticipant(\r\n hashedVaultId,\r\n hashedVaultPin,\r\n hashTheString(participant.vaultId),\r\n encryptString(sharesArrayAsString[idx], secretKey)\r\n )\r\n .then(async (res: any) => {\r\n const keyHolder = {\r\n creatorVaultId: vaultId,\r\n vaultPin: vaultPin,\r\n creatorHashedVaultId: hashedVaultId,\r\n creatorHashedVaultPin: hashedVaultPin,\r\n cosigner: participant.vaultId,\r\n hashedCosigner: hashTheString(participant.vaultId),\r\n cosignerVaultIdType:\r\n participant.otpChannel === \"sms\" ? \"PHONE\" : \"EMAIL\",\r\n cosignerVaultId: participant.vaultId,\r\n share: encryptString(sharesArrayAsString[idx], secretKey),\r\n ...participant,\r\n };\r\n if (res?.status === 0) {\r\n succesfulKeyHolders.push(keyHolder);\r\n if (participant.vaultId !== vaultId) {\r\n await sendCoSignerInvitation(\r\n participant.otpChannel,\r\n participant.vaultId,\r\n vaultId,\r\n hashedVaultPin\r\n ).then((res) => {\r\n if (!res) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while sending cosigner invite\");\r\n }\r\n // errorToast(\"Oops somethin went wrong\", \"error while sending cosigner invite\");\r\n }\r\n });\r\n }\r\n } else {\r\n failedKeyHolders.push(keyHolder);\r\n }\r\n });\r\n\r\n await new Promise((res) => setTimeout(res, 1000)); //1 second timeout to fix nonce error???\r\n }\r\n\r\n if (\r\n failedKeyHolders?.length > 0 ||\r\n succesfulKeyHolders?.length !== keyHolders?.length\r\n ) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while adding co-signers\");\r\n }\r\n errorToast(\"Oops somethin went wrong\", \"error while adding co-signers\");\r\n return false;\r\n }\r\n\r\n return await vaultContract\r\n .defineQuorum(hashedVaultId, hashedVaultPin, KeyThreshold.toString())\r\n .then(async (res: any) => {\r\n if (res?.status === 0) {\r\n const cosignersList = coSigners?.map((cng: any) => {\r\n return {\r\n name: cng?.name,\r\n email: cng?.email,\r\n phoneNumber: cng?.phoneNumber,\r\n contactType: String(cng?.otpChannel)?.toUpperCase(),\r\n position: `${numberPositions[Number(cng?.position)]} Co-Signer`,\r\n };\r\n });\r\n await sendCreatorConfirmation(\r\n otpChannel,\r\n vaultId,\r\n cosignersList,\r\n Number(KeyThreshold)\r\n ).then((res) => {\r\n if (!res) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while sending creator's confirmation\");\r\n }\r\n // errorToast(\"Oops somethin went wrong\", \"error while sending creator's confirmation\");\r\n }\r\n });\r\n\r\n return true;\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while saving vault keys\");\r\n }\r\n errorToast(\"Oops somethin went wrong\", \"error while saving vault keys\");\r\n return false;\r\n }\r\n });\r\n};\r\n\r\nexport const initiateVaultRecovery = async (\r\n sendCreatorInitiation: (\r\n channel: \"sms\" | \"email\",\r\n cretorId: string,\r\n hashedCretorPin: string,\r\n txId: number,\r\n requiredSigners: number\r\n ) => Promise<boolean>,\r\n hashedVaultId: string,\r\n hashedVaultPin: string,\r\n vaultId: string,\r\n vaultPin: string,\r\n encryptedPk: string,\r\n vaultChannel: \"sms\" | \"email\",\r\n chainId?: number\r\n) => {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n const userPk = decryptString(encryptedPk, secretKey);\r\n\r\n if (userPk) {\r\n const cntAddresses: any = contractAddress;\r\n const sender = new VerifiedWallet(userPk);\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n\r\n const vaultContract = new Custody(signer, cntAddresses[_chainId].Custody);\r\n\r\n if (vaultContract) {\r\n return await vaultContract\r\n .promptSignatures(hashedVaultId, hashedVaultPin)\r\n .then(async (res: any) => {\r\n if (res?.status === 0 && res?.response?.result?.logs) {\r\n const abiCoder = new AbiCoder();\r\n const vaultLogs = res?.response?.result?.logs?.filter(\r\n (log: any) =>\r\n log?.address?.toLowerCase() ===\r\n cntAddresses[_chainId].Custody?.toLowerCase() &&\r\n log?.topics\r\n ?.map((tp: string) => tp?.toLowerCase())\r\n ?.includes(newTransactionEventHash?.toLowerCase())\r\n );\r\n const txData = vaultLogs[0]?.data;\r\n\r\n const decodedTxData = abiCoder\r\n .decode([\"bytes32\", \"bytes32\", \"uint256\"], txData)\r\n ?.map((val, idx) => (idx < 2 ? val : Number(val)))\r\n .flat();\r\n const txId = decodedTxData[decodedTxData?.length - 1];\r\n await sendCreatorInitiation(\r\n vaultChannel,\r\n vaultId,\r\n hashedVaultPin,\r\n Number(txId),\r\n Number(vaultLogs?.length)\r\n );\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((err: any) => {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while initiating vault recovery\", err);\r\n }\r\n return false;\r\n });\r\n }\r\n }\r\n};\r\n\r\nexport const signVaultRecovery = async (\r\n sendCreatorSigned: (\r\n channel: \"sms\" | \"email\",\r\n cretorId: string,\r\n coSignerId: string\r\n ) => Promise<boolean>,\r\n sendCreatorCompleted: (\r\n channel: \"sms\" | \"email\",\r\n cretorId: string,\r\n txId: number\r\n ) => Promise<boolean>,\r\n hashedVaultId: string,\r\n hashedVaultPin: string,\r\n vaultId: string,\r\n vaultPin: string,\r\n encryptedPk: string,\r\n reqVaultId: string,\r\n hashedReqId: string,\r\n hashedReqPin: string,\r\n reqTxId: string,\r\n chainId?: number\r\n) => {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n const userPk = decryptString(encryptedPk, secretKey);\r\n\r\n if (userPk) {\r\n const cntAddresses: any = contractAddress;\r\n const sender = new VerifiedWallet(userPk);\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n\r\n const vaultContract = new Custody(signer, cntAddresses[_chainId].Custody);\r\n\r\n if (vaultContract) {\r\n return await vaultContract\r\n .signTransaction(\r\n hashedReqId,\r\n hashedVaultPin,\r\n hashedVaultId,\r\n reqTxId,\r\n hashedReqPin\r\n )\r\n .then(async (res: any) => {\r\n if (res?.status === 0) {\r\n await sendCreatorSigned(\r\n /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(reqVaultId) ? \"email\" : \"sms\",\r\n reqVaultId,\r\n vaultId\r\n );\r\n return await vaultContract\r\n .checkQuorum(hashedReqId, hashedReqPin, hashedVaultId, reqTxId)\r\n .then(async (qRes: any) => {\r\n if (qRes?.status === 0 && qRes?.response?.result) {\r\n if (qRes?.response?.result[0] === true) {\r\n await sendCreatorCompleted(\r\n /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(reqVaultId)\r\n ? \"email\"\r\n : \"sms\",\r\n reqVaultId,\r\n Number(reqTxId)\r\n );\r\n }\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n });\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((err: any) => {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while signing vault recovery\", err);\r\n }\r\n return false;\r\n });\r\n }\r\n }\r\n};\r\n\r\nexport const restoreVaultLogin = async (\r\n hashedVaultId: string,\r\n hashedVaultPin: string,\r\n vaultId: string,\r\n vaultPin: string,\r\n encryptedPk: string,\r\n reqTxId: string,\r\n otpChannel: \"sms\" | \"email\",\r\n chainId?: number\r\n) => {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n const userPk = decryptString(encryptedPk, secretKey);\r\n\r\n if (userPk) {\r\n const cntAddresses: any = contractAddress;\r\n const sender = new VerifiedWallet(userPk);\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n\r\n const vaultContract = new Custody(signer, cntAddresses[_chainId].Custody);\r\n\r\n if (vaultContract) {\r\n return await vaultContract\r\n .checkQuorum(hashedVaultId, hashedVaultPin, hashedVaultId, reqTxId)\r\n .then(async (qRes: any) => {\r\n if (qRes?.status === 0 && qRes?.response?.result) {\r\n if (qRes?.response?.result[0] === true) {\r\n return await vaultContract\r\n .getShards(hashedVaultId, hashedVaultPin, reqTxId)\r\n .then(async (res: any) => {\r\n if (res?.status === 0 && res?.response?.result) {\r\n const recoveredShrads = res?.response?.result.filter(\r\n (shrd: string) => shrd !== \"\"\r\n );\r\n if (recoveredShrads.length > 1) {\r\n //at least 2 shrads?? since minimum signers are 2??\r\n const secretKey = encodeBytes32String(vaultPin);\r\n const decryptedShares = recoveredShrads.map(\r\n (shrd: string) => decryptString(shrd, secretKey)\r\n );\r\n\r\n const shares = decryptedShares.map(\r\n (shrd: string) =>\r\n new Uint8Array(shrd.split(\",\").map(Number))\r\n );\r\n\r\n const combinedShares = await combine(shares);\r\n\r\n const pk = new TextDecoder().decode(combinedShares);\r\n\r\n if (pk) {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n const newEncryptedPk = encryptString(pk, secretKey);\r\n\r\n const newSender = new VerifiedWallet(pk);\r\n\r\n const userRegAddress = await newSender.getAddress();\r\n\r\n const newSigner = newSender.setProvider(\r\n new Provider(provider)\r\n );\r\n\r\n const _newsigner: any = newSigner;\r\n const nexusAccount = await toMultichainNexusAccount({\r\n chains: [\r\n base,\r\n mainnet,\r\n sepolia,\r\n gnosis,\r\n baseSepolia,\r\n polygon,\r\n ],\r\n transports: [\r\n http(),\r\n http(),\r\n http(),\r\n http(),\r\n http(),\r\n http(),\r\n ],\r\n signer: _newsigner,\r\n });\r\n const nexAddress = nexusAccount.addressOn(_chainId);\r\n if (chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n await chrome.storage.local.set({\r\n myVault: JSON.stringify({\r\n address: nexAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: newEncryptedPk,\r\n channel: otpChannel,\r\n }),\r\n });\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n localStorage.removeItem(\"myVault\");\r\n localStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n address: nexAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: newEncryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n }\r\n return true;\r\n }\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((err: any) => {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while restoring login access\", err);\r\n }\r\n return false;\r\n });\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((err: any) => {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while restoring login access\", err);\r\n }\r\n return false;\r\n });\r\n } else {\r\n return false;\r\n }\r\n }\r\n};\r\n\r\nexport const resetVaultPin = async (\r\n hashedVaultId: string,\r\n hashedOldPin: string,\r\n hashedNewPin: string,\r\n vaultContract: any\r\n) => {\r\n return await vaultContract\r\n .resetPin(hashedVaultId, hashedOldPin, hashedNewPin)\r\n .then(async (res: any) => {\r\n const trueAny: any = true;\r\n if (res?.status === 0) {\r\n return await vaultContract\r\n .confirmParticipant(\r\n hashedVaultId,\r\n hashedNewPin,\r\n hashedVaultId,\r\n hashedNewPin,\r\n trueAny\r\n )\r\n .then((cRes: any) => {\r\n if (cRes?.status === 0) {\r\n return {};\r\n } else {\r\n return null;\r\n }\r\n });\r\n } else {\r\n return null;\r\n }\r\n });\r\n};\r\n","import React, { useState } from \"react\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport { hashTheString } from \"../utils/helpers\";\r\nimport {\r\n acceptOrRejectInvitation,\r\n checkOrResetOrCreateVault,\r\n} from \"../services/contracts\";\r\nimport PageSlider from \"../components/slider\";\r\nimport Success from \"../components/success\";\r\nimport { imageAssets } from \"../utils/constants\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\n\r\nconst CreatePinPage = (props: {\r\n setStep: (step: string) => void;\r\n setIsLoading: (isLoading: boolean) => void;\r\n setShowSuccessBtn?: (showSuccessBtn: boolean) => void;\r\n setSuccessBtnText?: (successBtnText: string) => void;\r\n setSuccessBtnNeutText?: (successBtnNeutText: string) => void;\r\n setSuccessBtnFunc?: (successBtnFunc: any) => void;\r\n setSuccessBtnNeutFunc?: (successBtnNeutFunc: any) => void;\r\n setActionHeaderText?: (actionHeaderText: string) => void;\r\n setActionFooterText?: (actionFooterText: string) => void;\r\n userNumberFmt: string;\r\n userEmail: string;\r\n selectedCountry: { name: string; area: string; flag: string };\r\n action?: string;\r\n vaultData?: any;\r\n txData?: any;\r\n helperFunctions?: VerifiedCustodyHelpers;\r\n isExistingUser?: boolean;\r\n}) => {\r\n const [searchActive, setSearchActive] = useState(false);\r\n const [pinIncorrect, setPinIncorrect] = useState(false);\r\n const [pinIncorrectText, setPinIncorrectText] = useState(\"\");\r\n const [pinHide, setPinHide] = useState(true); //hide pin by default\r\n const [showInvitation, setShowInvitation] = useState(false);\r\n const [showInvitationSuccess, setShowInvitationSuccess] = useState(false);\r\n const [showCustomSuccess, setShowCustomSuccess] = useState(false);\r\n const [customSuccessText, setCustomSuccessText] = useState(\"\");\r\n const [vaultPin, setVaultPin] = useState(\"\");\r\n const [showRejectInvitation, setShowRejectInvitation] = useState(false);\r\n\r\n const { address, pk, vaultContract, setVaultData, setChainId, vaultData } =\r\n useVaultStore();\r\n\r\n //todo: add key actions to input focus change\r\n const handlleInputFocus = (currentInput: any) => {\r\n if (currentInput.value.length > 0) {\r\n const nextInput = currentInput.nextElementSibling;\r\n if (nextInput) {\r\n nextInput.focus();\r\n }\r\n } else if (currentInput.value.length === 0) {\r\n currentInput.focus();\r\n }\r\n };\r\n\r\n const handleOtpBackspace = (e: any) => {\r\n const previousInpput = e.target.previousElementSibling;\r\n if (previousInpput) {\r\n previousInpput.focus();\r\n }\r\n };\r\n\r\n const handleButtonDisplay = () => {\r\n const button: any = document.getElementById(\r\n \"verified-custd-mdl-otp-button\"\r\n );\r\n const otp1: any = document.getElementById(\"verified-custd-mdl-otp-input-1\");\r\n const otp2: any = document.getElementById(\"verified-custd-mdl-otp-input-2\");\r\n const otp3: any = document.getElementById(\"verified-custd-mdl-otp-input-3\");\r\n const otp4: any = document.getElementById(\"verified-custd-mdl-otp-input-4\");\r\n const otp5: any = document.getElementById(\"verified-custd-mdl-otp-input-5\");\r\n const otp6: any = document.getElementById(\"verified-custd-mdl-otp-input-6\");\r\n const otp7: any = document.getElementById(\"verified-custd-mdl-otp-input-7\");\r\n const otp8: any = document.getElementById(\"verified-custd-mdl-otp-input-8\");\r\n if (\r\n (!props.isExistingUser &&\r\n button &&\r\n otp1?.value.length > 0 &&\r\n otp2?.value.length > 0 &&\r\n otp3?.value.length > 0 &&\r\n otp4?.value.length > 0 &&\r\n otp5?.value.length > 0 &&\r\n otp6?.value.length > 0 &&\r\n otp7?.value.length > 0 &&\r\n otp8?.value.length > 0) ||\r\n (props.isExistingUser &&\r\n button &&\r\n otp1?.value.length > 0 &&\r\n otp2?.value.length > 0 &&\r\n otp3?.value.length > 0 &&\r\n otp4?.value.length > 0)\r\n ) {\r\n if (\r\n (!props.isExistingUser &&\r\n otp1?.value + otp2?.value + otp3?.value + otp4?.value ===\r\n otp5?.value + otp6?.value + otp7?.value + otp8?.value) ||\r\n props.isExistingUser\r\n ) {\r\n button.className = \"verified-custd-mdl-startup-button-active\";\r\n } else {\r\n button.className = \"verified-custd-mdl-startup-button\";\r\n setPinIncorrect(true);\r\n }\r\n } else {\r\n button.className = \"verified-custd-mdl-startup-button\";\r\n }\r\n };\r\n\r\n const handleVaultManagement = async () => {\r\n if (!props.helperFunctions) {\r\n setPinIncorrectText(\r\n \"No Helper Functions. Please include all helper functions in the CreatePinPage props.\"\r\n );\r\n setPinIncorrect(true);\r\n } else {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n const otp1: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-1\"\r\n );\r\n const otp2: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-2\"\r\n );\r\n const otp3: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-3\"\r\n );\r\n const otp4: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-4\"\r\n );\r\n\r\n const otp5: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-5\"\r\n );\r\n const otp6: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-6\"\r\n );\r\n const otp7: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-7\"\r\n );\r\n const otp8: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-8\"\r\n );\r\n const vaultId =\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${props.selectedCountry.area}${props.userNumberFmt?.replace(\r\n \" \",\r\n \"\"\r\n )}`;\r\n const channel = props.userEmail?.length > 0 ? \"email\" : \"sms\";\r\n\r\n if (\r\n (!props.isExistingUser &&\r\n otp1?.value?.length > 0 &&\r\n otp2?.value?.length > 0 &&\r\n otp3?.value?.length > 0 &&\r\n otp4?.value?.length > 0 &&\r\n otp5?.value?.length > 0 &&\r\n otp6?.value?.length > 0 &&\r\n otp7?.value?.length > 0 &&\r\n otp8?.value?.length > 0 &&\r\n vaultId &&\r\n channel &&\r\n pk &&\r\n address &&\r\n vaultContract) ||\r\n (!props.isExistingUser &&\r\n otp1?.value?.length > 0 &&\r\n otp2?.value?.length > 0 &&\r\n otp3?.value?.length > 0 &&\r\n otp4?.value?.length > 0 &&\r\n otp5?.value?.length > 0 &&\r\n otp6?.value?.length > 0 &&\r\n otp7?.value?.length > 0 &&\r\n otp8?.value?.length > 0 &&\r\n vaultId &&\r\n channel &&\r\n props.vaultData?.vaultContract &&\r\n props.vaultData?.hashedOldPin) ||\r\n (props.isExistingUser &&\r\n otp1?.value?.length > 0 &&\r\n otp2?.value?.length > 0 &&\r\n otp3?.value?.length > 0 &&\r\n otp4?.value?.length > 0 &&\r\n vaultId &&\r\n channel &&\r\n pk &&\r\n address &&\r\n vaultContract) ||\r\n (props.isExistingUser &&\r\n otp1?.value?.length > 0 &&\r\n otp2?.value?.length > 0 &&\r\n otp3?.value?.length > 0 &&\r\n otp4?.value?.length > 0 &&\r\n vaultId &&\r\n channel &&\r\n props.vaultData?.vaultContract &&\r\n props.vaultData?.hashedOldPin)\r\n ) {\r\n props.setIsLoading(true);\r\n const vaultPin = otp1?.value + otp2?.value + otp3?.value + otp4?.value;\r\n const hashedVaultId = hashTheString(vaultId);\r\n const hashedVaultPin = hashTheString(vaultPin);\r\n\r\n await checkOrResetOrCreateVault(\r\n vaultId,\r\n hashedVaultId,\r\n vaultPin,\r\n hashedVaultPin,\r\n channel,\r\n pk ? pk : props.vaultData?.pk,\r\n address ? address : props.vaultData?.address,\r\n vaultContract ? vaultContract : props.vaultData?.vaultContract,\r\n props.action,\r\n props.vaultData,\r\n props.txData\r\n ).then((res: any) => {\r\n props.setIsLoading(false);\r\n if (res) {\r\n setVaultData(\r\n res?.shouldStop && res?.vaultId\r\n ? {\r\n vaultId: res?.vaultId,\r\n hashedVaultId: res?.hashedVaultId,\r\n pk: res?.pk,\r\n channel: res?.channel,\r\n }\r\n : res?.shouldStop\r\n ? {}\r\n : res\r\n );\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n if (props.action === \"invitation\") {\r\n setVaultPin(vaultPin);\r\n setShowInvitation(true);\r\n } else if (props.action === \"reset-pin\") {\r\n if (chrome?.storage?.local) {\r\n chrome.storage.local.remove(\"myVault\");\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n localStorage.removeItem(\"myVault\");\r\n }\r\n setCustomSuccessText(\r\n \"You have successfully reset your account pin. Login with the new pin\"\r\n );\r\n setShowCustomSuccess(true);\r\n } else if (!res?.shouldStop) {\r\n props.setStep(\"5\");\r\n } else if (res?.shouldStop && props.action !== \"getPk\") {\r\n setCustomSuccessText(\"\");\r\n setShowCustomSuccess(true);\r\n } else if (res?.shouldStop && props.action === \"getPk\") {\r\n props.setStep(\"0\");\r\n }\r\n } else if (res === null) {\r\n if (props.action === \"reset-pin\") {\r\n setPinIncorrectText(\"Reset pin failed. Try again later.\");\r\n setPinIncorrect(true);\r\n } else {\r\n setPinIncorrectText(\r\n \"You are an existing user. Please input the right pin to recover your account.\"\r\n );\r\n setPinIncorrect(true);\r\n }\r\n } else {\r\n setPinIncorrectText(\r\n \"Unexpected error while creating account. Please try again later.\"\r\n );\r\n setPinIncorrect(true);\r\n }\r\n });\r\n }\r\n }\r\n };\r\n\r\n const handleAcceptAndRejectInvitation = async (accepted: boolean) => {\r\n const vaultId =\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${props.selectedCountry.area}${props.userNumberFmt?.replace(\r\n \" \",\r\n \"\"\r\n )}`;\r\n const channel = props.userEmail?.length > 0 ? \"email\" : \"sms\";\r\n if (\r\n vaultPin?.length === 4 &&\r\n props?.vaultData?.hashedVaultId &&\r\n props.vaultData?.hashedVaultPin &&\r\n vaultId\r\n ) {\r\n props.setIsLoading(true);\r\n const hashedVaultId = hashTheString(vaultId);\r\n const hashedVaultPin = hashTheString(vaultPin);\r\n await acceptOrRejectInvitation(\r\n props.helperFunctions.sendCreatorAcceptance,\r\n props.helperFunctions.sendCreatorRejection,\r\n channel,\r\n hashedVaultId,\r\n hashedVaultPin,\r\n props?.vaultData?.hashedVaultId,\r\n props.vaultData?.hashedVaultPin,\r\n props.vaultData?.vaultId,\r\n vaultId,\r\n accepted,\r\n vaultContract\r\n ).then((res) => {\r\n props.setIsLoading(false);\r\n if (\r\n res &&\r\n !vaultData?.isExisting &&\r\n props.setShowSuccessBtn &&\r\n props.setSuccessBtnText &&\r\n props.setSuccessBtnNeutText &&\r\n props.setActionHeaderText &&\r\n props.setActionFooterText\r\n ) {\r\n props.setShowSuccessBtn(true);\r\n props.setSuccessBtnText(\"Continue Setting Up Your Account\");\r\n props.setSuccessBtnNeutText(\"Do It Later\");\r\n props.setActionHeaderText(\"Successful\");\r\n props.setActionFooterText(\r\n accepted\r\n ? `You have been added as a Co-Signer for ${props.vaultData?.vaultId}`\r\n : `You rejected Co-signer reject from ${props.vaultData?.vaultId}`\r\n );\r\n props.setStep(\"5\");\r\n } else if (res && vaultData?.isExisting) {\r\n setShowInvitationSuccess(true);\r\n }\r\n });\r\n }\r\n };\r\n\r\n return (\r\n <React.Fragment>\r\n {!showCustomSuccess && !showInvitation && (\r\n <div className=\"verified-custd-mdl-startup-language\">\r\n <div className=\"verified-custd-mdl-startup-contact\">\r\n <PageSlider sliderCount={[1, 2, 3]} currentSlider=\"1\" />\r\n <div className=\"verified-custd-mdl-startup-contact-content\">\r\n {!props.isExistingUser && (\r\n <p className=\"verified-custd-mdl-startup-contact-text\">\r\n Create PIN\r\n </p>\r\n )}\r\n\r\n {props.isExistingUser && (\r\n <p className=\"verified-custd-mdl-startup-contact-text\">\r\n Enter PIN\r\n </p>\r\n )}\r\n <div className=\"verified-custd-mdl-startup-otp-text\">\r\n {!props.isExistingUser && (\r\n <p className=\"verified-custd-mdl-startup-otp-header-text\">\r\n Protect your blockchain assets. This PIN will be required\r\n for all transactions and logins.\r\n </p>\r\n )}\r\n\r\n {props.isExistingUser && (\r\n <p className=\"verified-custd-mdl-startup-otp-header-text\">\r\n Welcome back, please enter the{\" \"}\r\n <span style={{ color: \"#0C0C0E\" }}>4-Digit PIN</span> for\r\n your{\" \"}\r\n <span style={{ color: \"#0C0C0E\" }}>\r\n {props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${\r\n props.selectedCountry.area\r\n }${props.userNumberFmt?.replace(\" \", \"\")}`}\r\n </span>{\" \"}\r\n account.\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n <div className=\"verified-custd-mdl-otp-input-container\">\r\n {!props.isExistingUser && (\r\n <p className=\"verified-custd-mdl-pin-input-container-text\">\r\n New PIN\r\n </p>\r\n )}\r\n <div className=\"verified-custd-mdl-otp-input-group\">\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-1\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-2\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-3\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-4\"\r\n />\r\n </div>\r\n {props.isExistingUser && (\r\n <div className=\"verified-custd-mdl-otp-timer\">\r\n {!pinIncorrect && <p></p>}\r\n {pinIncorrect && pinIncorrectText === \"\" && (\r\n <p className=\"verified-custd-mdl-otp-incorrect-text\">\r\n Please enter the correct pin\r\n </p>\r\n )}\r\n {pinIncorrect && pinIncorrectText?.length > 0 && (\r\n <p className=\"verified-custd-mdl-otp-incorrect-text\">\r\n {pinIncorrectText}\r\n </p>\r\n )}\r\n {!pinHide && (\r\n <img\r\n style={{\r\n cursor: \"pointer\",\r\n width: \"24px\",\r\n height: \"24px\",\r\n }}\r\n onClick={() => setPinHide(true)}\r\n src={imageAssets.pinShow}\r\n alt=\"show pin icon\"\r\n />\r\n )}\r\n {pinHide && (\r\n <img\r\n style={{\r\n cursor: \"pointer\",\r\n width: \"24px\",\r\n height: \"24px\",\r\n }}\r\n onClick={() => setPinHide(false)}\r\n src={imageAssets.pinHide}\r\n alt=\"hide pin icon\"\r\n />\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {!props.isExistingUser && (\r\n <div className=\"verified-custd-mdl-otp-input-container\">\r\n <p className=\"verified-custd-mdl-pin-input-container-text\">\r\n Confirm PIN\r\n </p>\r\n <div className=\"verified-custd-mdl-otp-input-group\">\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-5\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-6\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-7\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n handleOtpBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-8\"\r\n />\r\n </div>\r\n <div className=\"verified-custd-mdl-otp-timer\">\r\n {!pinIncorrect && <p></p>}\r\n {pinIncorrect && pinIncorrectText === \"\" && (\r\n <p className=\"verified-custd-mdl-otp-incorrect-text\">\r\n Please enter the correct pin\r\n </p>\r\n )}\r\n {pinIncorrect && pinIncorrectText?.length > 0 && (\r\n <p className=\"verified-custd-mdl-otp-incorrect-text\">\r\n {pinIncorrectText}\r\n </p>\r\n )}\r\n {!pinHide && (\r\n <img\r\n style={{\r\n cursor: \"pointer\",\r\n width: \"24px\",\r\n height: \"24px\",\r\n }}\r\n onClick={() => setPinHide(true)}\r\n src={imageAssets.pinShow}\r\n alt=\"show pin icon\"\r\n />\r\n )}\r\n {pinHide && (\r\n <img\r\n style={{\r\n cursor: \"pointer\",\r\n width: \"24px\",\r\n height: \"24px\",\r\n }}\r\n onClick={() => setPinHide(false)}\r\n src={imageAssets.pinHide}\r\n alt=\"hide pin icon\"\r\n />\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n\r\n {!searchActive && <div style={{ height: \"30px\" }}></div>}\r\n\r\n <div className=\"verified-custd-mdl-startup-contact-footer\">\r\n <div className=\"verified-custd-mdl-st-contact-footer-first-section\">\r\n <button\r\n id=\"verified-custd-mdl-otp-button\"\r\n onClick={async (e: any) => {\r\n if (\r\n e.target.className.includes(\r\n \"verified-custd-mdl-startup-button\"\r\n ) &&\r\n e.target.className !== \"verified-custd-mdl-startup-button\"\r\n ) {\r\n e.target.className =\r\n \"verified-custd-mdl-startup-button-click\";\r\n await handleVaultManagement();\r\n } else {\r\n const buttonElement = document.getElementsByClassName(\r\n \"verified-custd-mdl-startup-button-active\"\r\n );\r\n if (buttonElement.length > 0) {\r\n buttonElement[0].className =\r\n \"verified-custd-mdl-startup-button-click\";\r\n await handleVaultManagement();\r\n }\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button\"\r\n >\r\n Confirm\r\n </button>\r\n {/* <div className=\"verified-custd-mdl-st-contact-footer-second-section\">\r\n <PrivacyOverlay />\r\n </div> */}\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n\r\n {!showCustomSuccess && showInvitation && (\r\n <React.Fragment>\r\n {!showInvitationSuccess && (\r\n <div\r\n style={{ padding: \"0\", position: \"relative\" }}\r\n className=\"verified-custd-mdl-startup-language\"\r\n >\r\n <div className=\"verified-custd-mdl-startup-contact\">\r\n <PageSlider sliderCount={[1, 2, 3]} currentSlider=\"1\" />\r\n <div className=\"verified-custd-mdl-startup-contact-content\">\r\n <p className=\"verified-custd-mdl-startup-contact-text\">\r\n <b>{props.vaultData?.vaultId}</b> has requested you to be a\r\n Co-Signer\r\n </p>\r\n </div>\r\n </div>\r\n <img\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n src={imageAssets.addCoSignerIcon1}\r\n alt=\"\"\r\n />\r\n {!showRejectInvitation && (\r\n <React.Fragment>\r\n <div className=\"verified-custd-mdl-add-cosigner-more-body\">\r\n <div className=\"verified-custd-mdl-add-cosigner-more-header-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-more-title-cont\">\r\n <p className=\"verified-custd-mdl-add-cosigner-more-title\">\r\n What is a Co-Signer?\r\n </p>\r\n </div>\r\n </div>\r\n <p\r\n style={{\r\n fontSize: \"12px\",\r\n color: \"var(--Neutral-600, #5B5D6E)\",\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n A Co-Signer is a person who has the right given by you to\r\n generate a new pin on your behalf incase you forget it.{\" \"}\r\n </p>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-icon\">\r\n <img src={imageAssets.pkicon} alt=\"icon\" />\r\n </div>\r\n <p className=\"verified-custd-mdl-add-cosigner-body-text-label\">\r\n As a Co Signer you can help{\" \"}\r\n <span className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\">\r\n reset PIN\r\n </span>\r\n </p>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-icon\">\r\n <img src={imageAssets.encryptedIcon} alt=\"icon\" />\r\n </div>\r\n <p className=\"verified-custd-mdl-add-cosigner-body-text-label\">\r\n Don’t worry, they{\" \"}\r\n <span className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\">\r\n will not get access\r\n </span>{\" \"}\r\n to your account in any way.\r\n </p>\r\n </div>\r\n </div>\r\n <div className=\"verified-custd-mdl-add-cosigner-buttons-cont\">\r\n <button\r\n onClick={() => {\r\n setShowRejectInvitation(true);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n Reject\r\n </button>\r\n\r\n <button\r\n onClick={async () => {\r\n await handleAcceptAndRejectInvitation(true);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n Accept\r\n </button>\r\n </div>\r\n </React.Fragment>\r\n )}\r\n\r\n {showRejectInvitation && (\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-content-outter\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-content\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-header\">\r\n <p className=\"verified-custd-mdl-add-cosigner-confirm-body-title\">\r\n Are you sure you want to reject this request?\r\n </p>\r\n <p\r\n style={{\r\n fontSize: \"12px\",\r\n color: \"var(--Neutral-600, #5B5D6E)\",\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-label\"\r\n >\r\n Once you reject to be a co-signer for{\" \"}\r\n <b>{props.vaultData?.vaultId}</b>, you will not be\r\n able to reset the PIN for them.\r\n </p>\r\n </div>\r\n\r\n <div\r\n style={{ width: \"90%\" }}\r\n className=\"verified-custd-mdl-add-cosigner-buttons-cont\"\r\n >\r\n <button\r\n onClick={async () => {\r\n await handleAcceptAndRejectInvitation(false);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n Yes\r\n </button>\r\n\r\n <button\r\n onClick={() => {\r\n setShowRejectInvitation(false);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n No\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n\r\n {showInvitationSuccess && (\r\n <Success\r\n messageTosend={{ type: \"closePopup\", key: \"\", value: \"\" }}\r\n customTextHeader=\"Successful\"\r\n customTextFooter={\r\n !showRejectInvitation\r\n ? `You have been added as a Co-Signer for ${props.vaultData?.vaultId}`\r\n : `You rejected Co-signer reject from ${props.vaultData?.vaultId}`\r\n }\r\n />\r\n )}\r\n </React.Fragment>\r\n )}\r\n\r\n {showCustomSuccess && (\r\n <Success\r\n messageTosend={{ type: \"closePopup\", key: \"\", value: \"\" }}\r\n customTextHeader=\"Successful\"\r\n customTextFooter={\r\n customSuccessText?.length > 0\r\n ? customSuccessText\r\n : \"You have successfully logged in your account.\"\r\n }\r\n />\r\n )}\r\n </React.Fragment>\r\n );\r\n};\r\n\r\nexport default CreatePinPage;\r\n","import React from \"react\";\r\nimport { errorToast } from \"../utils/helpers\";\r\nimport { defaultVerifiedUrl, imageAssets } from \"../utils/constants\";\r\n\r\nconst Success = (props: {\r\n setStep?: (step: string) => void;\r\n setShowDasboard?: (showDashboard: boolean) => void;\r\n stepToSet?: string;\r\n messageTosend?: { type: string; key?: string; value?: any };\r\n customTextHeader: string;\r\n customTextFooter: string;\r\n showButton?: boolean;\r\n showText?: boolean;\r\n buttonText?: string;\r\n buttonNeutText?: string;\r\n buttonFunc?: any;\r\n buttonNeutFunc?: any;\r\n action?: string;\r\n actionHeaderText?: string;\r\n actionFooterText?: string;\r\n timeoutTime?: number;\r\n}) => {\r\n const timeoutId = !props.showButton\r\n ? setTimeout(\r\n () => {\r\n if (props.messageTosend) {\r\n try {\r\n if (chrome?.runtime?.sendMessage) {\r\n chrome.runtime.sendMessage(props.messageTosend, (res) => {\r\n if (res && props.action !== \"signRecovery\") {\r\n window.close();\r\n }\r\n });\r\n } else if (!chrome?.runtime?.sendMessage) {\r\n const event = new CustomEvent(props.messageTosend?.type, {\r\n detail: {\r\n value: props.messageTosend?.value,\r\n },\r\n });\r\n window.dispatchEvent(event);\r\n }\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error sending message: \", err);\r\n }\r\n\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Unexpected error. Try again later\"\r\n );\r\n }\r\n }\r\n\r\n if (props.setStep && props.stepToSet) {\r\n props.setStep(props.stepToSet);\r\n }\r\n },\r\n props.timeoutTime ? props.timeoutTime : 3000\r\n )\r\n : null;\r\n\r\n const handleContinue = () => {\r\n props.setStep(\"6\");\r\n };\r\n\r\n const handleClosePopup = () => {\r\n if (chrome.runtime) {\r\n chrome.runtime.sendMessage({\r\n type: \"VW_REQ\",\r\n params: { method: \"closePopup\" },\r\n });\r\n }\r\n // if (chrome.tabs) {\r\n // chrome.tabs.update({\r\n // url: \"https://wallet.verified.network\",\r\n // });\r\n // } else {\r\n // window.location.href = \"https://wallet.verified.network\";\r\n // }\r\n };\r\n\r\n const handleShowDashboard = () => {\r\n props.setShowDasboard(true);\r\n };\r\n\r\n return (\r\n <div\r\n style={{\r\n alignContent: \"center\",\r\n justifyContent: \"center\",\r\n position: \"relative\",\r\n height: \"100%\",\r\n width: \"90%\",\r\n }}\r\n className=\"verified-custd-mdl-success-popup-content-container\"\r\n >\r\n <div className=\"verified-custd-mdl-success-popup-content\">\r\n <img\r\n style={{ width: \"90%\" }}\r\n src={imageAssets.successIcon}\r\n alt=\"Success Icon\"\r\n />\r\n <div className=\"verified-custd-mdl-success-popup-content-text\">\r\n <p className=\"verified-custd-mdl-success-popup-content-text-header\">\r\n {!props?.showButton\r\n ? props.customTextHeader\r\n : props.actionHeaderText}\r\n </p>\r\n <p className=\"verified-custd-mdl-success-popup-content-text-footer\">\r\n {!props?.showButton\r\n ? props.customTextFooter\r\n : props.actionFooterText}\r\n </p>\r\n </div>\r\n </div>\r\n\r\n {props.showButton && props.buttonText?.length > 0 && (\r\n <button\r\n style={{ marginTop: \"10px\", fontSize: \"14px\" }}\r\n onClick={() => {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n }\r\n if (props.action === \"invitation\") {\r\n handleContinue();\r\n }\r\n if (props.action === \"completeRecovery\") {\r\n handleShowDashboard();\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button-active\"\r\n >\r\n {props.buttonText}\r\n </button>\r\n )}\r\n {props.showButton && props.buttonNeutText?.length > 0 && (\r\n <button\r\n style={{ marginTop: \"10px\", fontSize: \"14px\" }}\r\n onClick={() => {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n }\r\n if (props.action === \"invitation\") {\r\n handleClosePopup();\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button-click\"\r\n >\r\n {props.buttonNeutText}\r\n </button>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default Success;\r\n","import React, { useState } from \"react\";\r\nimport { imageAssets, numberPositionsFmt } from \"../utils/constants\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport { completeVaultCreation } from \"../services/contracts\";\r\nimport PageSlider from \"../components/slider\";\r\nimport SearchBox from \"../components/search\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\n\r\nconst AddCosignersPage = (props: {\r\n setStep: (step: string) => void;\r\n setIsLoading: (isLoading: boolean) => void;\r\n userNumberFmt: string;\r\n userEmail: string;\r\n selectedCountry: { name: string; area: string; flag: string };\r\n allCountries: any;\r\n defaultCountry?: {\r\n area: string;\r\n flag: string;\r\n name: string;\r\n };\r\n helperFunctions?: VerifiedCustodyHelpers;\r\n enablePhone?: boolean;\r\n}) => {\r\n const [showLearnMore, setShowLearnMore] = useState<boolean>(false);\r\n const [learnMoreStep, setLearnMoreStep] = useState<string>(\"1\");\r\n const [cosignerStep, setCosignerStep] = useState<string>(\"1\");\r\n const [showAddMore, setShowAddMore] = useState<boolean>(false);\r\n const [addChannel, setAddChannel] = useState<string>(\"email\");\r\n const [coSignerNumber, setCoSignerNumber] = useState<string>(\"\");\r\n const [coSignerNumberFmt, setCoSignerNumberFmt] = useState<string>(\"\");\r\n const [coSignerEmail, setCoSignerEmail] = useState<string>(\"\");\r\n const [coSignerName, setCoSignerName] = useState<string>(\"\");\r\n const [userInput, setUserInput] = useState<string>(\"\");\r\n const [searchActive, setSearchActive] = useState<boolean>(false);\r\n const [selectedCountry, setSelectedCountry] = useState(\r\n props.defaultCountry || {\r\n area: \"1\",\r\n flag: imageAssets.usaFlag,\r\n name: \"United States\",\r\n }\r\n );\r\n const [coSigners, setCosigners] = useState([]);\r\n const [showSetRule, setShowSetRule] = useState<boolean>(false);\r\n const [requiredSigners, setRequiredSigners] = useState<number>(2);\r\n const [errorText, setErrorText] = useState<string>(\"\");\r\n\r\n const { pk, vaultData, vaultContract } = useVaultStore();\r\n\r\n const handleButtonDisplay = () => {\r\n const button = document.getElementById(\"add-cosigner-button\");\r\n if (button && coSigners?.length > 0) {\r\n button.className = \"startup-button-active\";\r\n } else {\r\n button!.className = \"startup-button\";\r\n }\r\n };\r\n\r\n const handleAddCoSigner = () => {\r\n if (addChannel === \"sms\" && coSignerNumber?.length === 0) {\r\n setErrorText(\"Invalid input, please check the phone number\");\r\n return;\r\n } else if (addChannel === \"sms\" && coSignerNumber?.length !== 10) {\r\n setErrorText(\"Invalid input, please check the phone number\");\r\n return;\r\n } else if (addChannel === \"email\" && coSignerEmail?.length === 0) {\r\n setErrorText(\"Invalid input, please check the email\");\r\n return;\r\n } else if (\r\n addChannel === \"email\" &&\r\n !/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(coSignerEmail)\r\n ) {\r\n setErrorText(\"Invalid input, please check the email\");\r\n return;\r\n } else if (\r\n coSigners?.find((sig) =>\r\n sig?.otpChannel === \"sms\"\r\n ? sig?.phoneArea?.toLowerCase() + sig?.number?.toLowerCase() ===\r\n selectedCountry.area?.toLowerCase() +\r\n coSignerNumberFmt?.toLowerCase()\r\n : sig?.email?.toLowerCase() === coSignerEmail?.toLowerCase()\r\n )\r\n ) {\r\n setErrorText(\r\n addChannel === \"sms\"\r\n ? \"Invalid input, phone number is already a co-signer\"\r\n : \"Invalid input, email is already a co-signer\"\r\n );\r\n return;\r\n } else if (\r\n addChannel === \"sms\" &&\r\n selectedCountry?.area?.toLowerCase() +\r\n coSignerNumberFmt?.toLowerCase() ===\r\n props.selectedCountry.area?.toLowerCase() +\r\n props.userNumberFmt?.toLowerCase()\r\n ) {\r\n setErrorText(\"Invalid input, phone number is creator's phone number\");\r\n return;\r\n } else if (\r\n addChannel === \"email\" &&\r\n coSignerEmail?.toLowerCase() === props.userEmail?.toLowerCase()\r\n ) {\r\n setErrorText(\"Invalid input, email is creator's email\");\r\n return;\r\n }\r\n setErrorText(\"\");\r\n let coSignerLength = coSigners?.length;\r\n setCosigners((cngs) => [\r\n {\r\n name: coSignerName,\r\n email: coSignerEmail,\r\n number: coSignerNumberFmt,\r\n phoneNumber: `+${selectedCountry?.area}${coSignerNumber}`,\r\n otpChannel: addChannel,\r\n phoneArea: selectedCountry?.area,\r\n position: cngs?.length + 1,\r\n vaultId:\r\n addChannel === \"sms\"\r\n ? `+${selectedCountry?.area}${coSignerNumber}`\r\n : coSignerEmail,\r\n },\r\n ...cngs,\r\n ]);\r\n setCoSignerEmail(\"\");\r\n setCoSignerName(\"\");\r\n setCoSignerNumber(\"\");\r\n setCoSignerNumberFmt(\"\");\r\n setUserInput(\"\");\r\n if (coSignerLength + 1 === 4) {\r\n setShowAddMore(false);\r\n }\r\n };\r\n\r\n const handleCompleteVault = async () => {\r\n const keyHolders = [\r\n {\r\n otpChannel: props?.userEmail?.length > 0 ? \"email\" : \"sms\",\r\n email: props?.userEmail,\r\n phoneNumber: `+${\r\n props?.selectedCountry?.area\r\n }${props?.userNumberFmt?.replace(\" \", \"\")}`,\r\n vaultId: vaultData?.vaultId,\r\n },\r\n ...coSigners,\r\n ];\r\n\r\n if (\r\n keyHolders?.length > 0 &&\r\n coSigners?.length > 0 &&\r\n requiredSigners &&\r\n vaultData?.vaultId &&\r\n vaultData?.hashedVaultId &&\r\n vaultData?.vaultPin &&\r\n vaultData?.hashedVaultPin &&\r\n vaultContract &&\r\n pk &&\r\n props.helperFunctions?.sendCoSignerInvitation &&\r\n props.helperFunctions?.sendCreatorConfirmation\r\n ) {\r\n props.setIsLoading(true);\r\n await completeVaultCreation(\r\n props.helperFunctions.sendCoSignerInvitation,\r\n props.helperFunctions.sendCreatorConfirmation,\r\n keyHolders,\r\n coSigners,\r\n props?.userEmail?.length > 0 ? \"email\" : \"sms\",\r\n requiredSigners,\r\n vaultData.vaultId,\r\n vaultData.hashedVaultId,\r\n vaultData.vaultPin,\r\n vaultData.hashedVaultPin,\r\n vaultContract,\r\n pk\r\n ).then((res) => {\r\n props.setIsLoading(false);\r\n if (res) {\r\n props.setStep(\"7\");\r\n }\r\n });\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n style={{ padding: \"0\" }}\r\n className=\"verified-custd-mdl-startup-language\"\r\n >\r\n {!showLearnMore && (\r\n <React.Fragment>\r\n {cosignerStep === \"1\" && (\r\n <React.Fragment>\r\n {\" \"}\r\n <div className=\"verified-custd-mdl-startup-contact\">\r\n <PageSlider sliderCount={[1, 2, 3]} currentSlider=\"2\" />\r\n <div className=\"verified-custd-mdl-startup-contact-content\">\r\n <p className=\"verified-custd-mdl-startup-contact-text\">\r\n We require you to add at least another Co-Signer.\r\n </p>\r\n </div>\r\n </div>\r\n <img\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n src={imageAssets.addCoSignerIcon1}\r\n alt=\"\"\r\n />\r\n <div className=\"verified-custd-mdl-add-cosigner-body\">\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-icon\">\r\n <img src={imageAssets.pkicon} alt=\"icon\" />\r\n </div>\r\n <p className=\"verified-custd-mdl-add-cosigner-body-text-label\">\r\n This is a blockchain based platform where{\" \"}\r\n <span className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\">\r\n we do not store password keys.\r\n </span>\r\n </p>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-icon\">\r\n <img src={imageAssets.encryptedIcon} alt=\"icon\" />\r\n </div>\r\n <p className=\"verified-custd-mdl-add-cosigner-body-text-label\">\r\n Don’t worry, the{\" \"}\r\n <span className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\">\r\n Co-Signer does not get access\r\n </span>{\" \"}\r\n to your account in any way.\r\n </p>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-icon\">\r\n <img src={imageAssets.supervise} alt=\"icon\" />\r\n </div>\r\n <p className=\"verified-custd-mdl-add-cosigner-body-text-label\">\r\n You can{\" \"}\r\n <span className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\">\r\n be your own Co-Signer\r\n </span>{\" \"}\r\n by adding a different contact number or Email ID. to your\r\n account in any way.\r\n </p>\r\n </div>\r\n </div>\r\n <div className=\"verified-custd-mdl-add-cosigner-buttons-cont\">\r\n <button\r\n onClick={() => {\r\n setLearnMoreStep(\"1\");\r\n setShowLearnMore(true);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n Learn More\r\n </button>\r\n\r\n <button\r\n onClick={() => {\r\n setCosignerStep(\"2\");\r\n setShowAddMore(false);\r\n setShowLearnMore(false);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n Add Co-Signer\r\n </button>\r\n </div>\r\n </React.Fragment>\r\n )}\r\n\r\n {cosignerStep === \"2\" && (\r\n <React.Fragment>\r\n {\" \"}\r\n <div className=\"verified-custd-mdl-startup-contact\">\r\n <PageSlider sliderCount={[1, 2, 3]} currentSlider=\"2\" />\r\n <div\r\n style={{ gap: \"16px\" }}\r\n className=\"verified-custd-mdl-startup-contact-content\"\r\n >\r\n <p className=\"verified-custd-mdl-startup-contact-text\">\r\n Add your Co-Signers\r\n </p>\r\n <div className=\"verified-custd-mdl-startup-otp-text\">\r\n {!showSetRule && (\r\n <p className=\"verified-custd-mdl-add-cosigner-header-text\">\r\n Add a phone number/an Email ID of Co-Signer to send them\r\n a request.\r\n </p>\r\n )}\r\n <div className=\"verified-custd-mdl-add-cosigner-header-info-cont\">\r\n <p className=\"verified-custd-mdl-add-cosigner-header-info-text\">\r\n <span className=\"verified-custd-mdl-add-cosigner-header-info-text-bold\">\r\n NOTE:\r\n </span>{\" \"}\r\n You can add yourself as a Co-Signer and further add more\r\n Co-Signers to your account.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-body\">\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-body-header\">\r\n <p className=\"verified-custd-mdl-add-cosigner-step2-body-header-first-text\">\r\n Add Co-Signers\r\n </p>\r\n\r\n <p className=\"verified-custd-mdl-add-cosigner-step2-body-header-second-text\">\r\n ({coSigners?.length + 1 < 5 ? coSigners?.length + 1 : 5}/5)\r\n </p>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-body-content\">\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-body-content-header\">\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-body\">\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-label\">\r\n <p className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-label-text\">\r\n Creator\r\n </p>\r\n </div>\r\n <div className=\"verified-custd-mdl-a-c-2-b-content-header-body-header-cont\">\r\n <div className=\"verified-custd-mdl-a-c-2-b-content-header-body-header\">\r\n <p className=\"verified-custd-mdl-a-c-2-b-content-header-body-title\">\r\n You\r\n </p>\r\n {props.userEmail?.length > 0 && (\r\n <p className=\"verified-custd-mdl-a-c-2-b-content-header-body-label\">\r\n {props.userEmail}\r\n </p>\r\n )}\r\n {props.userEmail?.length === 0 && (\r\n <p className=\"verified-custd-mdl-a-c-2-b-content-header-body-label\">\r\n (+{props.selectedCountry.area}){\" \"}\r\n {props.userNumberFmt}\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n\r\n {/* <button className=\"verified-custd-mdl-a-c-2-b-content-header-body-button\">\r\n Add Self\r\n </button> */}\r\n </div>\r\n </div>\r\n {!showSetRule &&\r\n coSigners\r\n .sort((a, b) => a?.position - b?.position)\r\n .map((cng: any, idx: number) => (\r\n <div\r\n key={idx}\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-cont\"\r\n >\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-body\">\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-label\">\r\n <p className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-label-text\">\r\n {\r\n numberPositionsFmt[cng?.position]?.split(\r\n \" \"\r\n )[0]\r\n }\r\n <sup>\r\n {\r\n numberPositionsFmt[cng?.position]?.split(\r\n \" \"\r\n )[1]\r\n }\r\n </sup>{\" \"}\r\n Co-Signer\r\n </p>\r\n </div>\r\n <div className=\"verified-custd-mdl-a-c-2-b-content-header-body-header-cont\">\r\n <div className=\"verified-custd-mdl-a-c-2-b-content-header-body-header\">\r\n <p className=\"verified-custd-mdl-a-c-2-b-content-header-body-title\">\r\n {cng?.name}\r\n </p>\r\n {cng.otpChannel === \"email\" && (\r\n <p className=\"verified-custd-mdl-a-c-2-b-content-header-body-label\">\r\n {cng.email}\r\n </p>\r\n )}\r\n {cng.otpChannel === \"sms\" && (\r\n <p className=\"verified-custd-mdl-a-c-2-b-content-header-body-label\">\r\n (+{cng?.phoneArea}) {cng.number}\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-a-c-2-b-content-header-body-header-icons\">\r\n <img\r\n style={{ cursor: \"pointer\" }}\r\n src={imageAssets.editBlack}\r\n alt=\"edit\"\r\n />\r\n <img\r\n onClickCapture={() => {\r\n setCosigners((cngs) =>\r\n cngs\r\n ?.filter((sig) =>\r\n sig?.otpChannel === \"sms\"\r\n ? sig?.phoneArea?.toLowerCase() +\r\n sig?.number?.toLowerCase() !==\r\n cng?.phoneArea?.toLowerCase() +\r\n cng?.number?.toLowerCase()\r\n : sig?.email?.toLowerCase() !==\r\n cng?.email?.toLowerCase()\r\n )\r\n ?.map((nSig, newId) => {\r\n nSig.position = newId + 1;\r\n return nSig;\r\n })\r\n );\r\n }}\r\n onClick={() => {\r\n handleButtonDisplay();\r\n }}\r\n style={{ cursor: \"pointer\" }}\r\n src={imageAssets.delete}\r\n alt=\"delete\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n\r\n {showSetRule && (\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-content-outter\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-content\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-header\">\r\n <p className=\"verified-custd-mdl-add-cosigner-confirm-body-title\">\r\n Specify the number of Co-Signers you need to sign\r\n off for an approval\r\n </p>\r\n <p className=\"verified-custd-mdl-add-cosigner-confirm-body-label\">\r\n By default we need 2, you can add up to 5\r\n Co-Signers as minimum sign off needed for\r\n approval.\r\n </p>\r\n </div>\r\n\r\n <div\r\n style={{ width: \"100%\" }}\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer\"\r\n >\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-ind-cont\">\r\n {new Array(coSigners?.length + 1)\r\n .fill(\"1\")\r\n .map((_: any, idx: number) => (\r\n <div\r\n style={\r\n idx + 1 === requiredSigners\r\n ? {}\r\n : {\r\n height: \"0\",\r\n width: \"0\",\r\n overflow: \"hidden\",\r\n }\r\n }\r\n key={idx}\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-ind\"\r\n >\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-ind-text-cont\">\r\n <p className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-ind-text\">\r\n {String(idx + 1)}\r\n </p>{\" \"}\r\n </div>\r\n <img\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-ind-icon\"\r\n src={imageAssets.pointer}\r\n alt=\"\"\r\n />\r\n </div>\r\n ))}\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider\">\r\n <div\r\n style={\r\n coSigners?.length === 1\r\n ? {\r\n width: `${\r\n 100 / coSigners?.length\r\n }%`,\r\n }\r\n : {\r\n width: `calc(${\r\n 100 / coSigners?.length\r\n }% + 12px)`,\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-ind\"\r\n >\r\n <img\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-icon\"\r\n src={imageAssets.sliderDot}\r\n alt=\"\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-text-cont\">\r\n {new Array(coSigners?.length + 1)\r\n .fill(\"1\")\r\n .map((_: any, idx: number) => (\r\n <p\r\n style={\r\n idx === coSigners?.length\r\n ? { paddingRight: \"12px\" }\r\n : idx === 0\r\n ? { paddingLeft: \"12px\" }\r\n : {}\r\n }\r\n onClick={() => {\r\n if (idx + 1 > 1) {\r\n setRequiredSigners(idx + 1);\r\n }\r\n }}\r\n key={idx}\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-text\"\r\n >\r\n {String(idx + 1)}\r\n </p>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <button\r\n id=\"confirm-cosigner-button\"\r\n style={{ marginBottom: \"10px\", width: \"100%\" }}\r\n onClick={async (e: any) => {\r\n if (\r\n e.target.className.includes(\"startup-button\") &&\r\n e.target.className !== \"startup-button\"\r\n ) {\r\n e.target.className = \"startup-button-click\";\r\n await handleCompleteVault();\r\n } else {\r\n const buttonElement =\r\n document.getElementsByClassName(\r\n \"startup-button-active\"\r\n );\r\n if (buttonElement.length > 0) {\r\n buttonElement[0].className =\r\n \"startup-button-click\";\r\n }\r\n await handleCompleteVault();\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button-active\"\r\n >\r\n Confirm\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n\r\n {showAddMore && coSigners?.length < 4 && (\r\n <div\r\n style={{ width: \"90%\" }}\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-body\"\r\n >\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-add-more-first\">\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-add-more-first-header\">\r\n <p className=\"verified-custd-mdl-add-cosigner-step2-add-more-first-header-text\">\r\n Add Details\r\n </p>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-add-more-first-footer\">\r\n <p className=\"verified-custd-mdl-add-cosigner-step2-add-more-first-footer-text\">\r\n {\r\n numberPositionsFmt[coSigners?.length + 1]?.split(\r\n \" \"\r\n )[0]\r\n }\r\n <sup>\r\n {\r\n numberPositionsFmt[\r\n coSigners?.length + 1\r\n ]?.split(\" \")[1]\r\n }\r\n </sup>{\" \"}\r\n Co-Signer\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-add-more-second\">\r\n <input\r\n onInput={(e: any) => {\r\n setCoSignerName(e.target.value);\r\n }}\r\n value={coSignerName}\r\n placeholder=\"Enter Co-signer name\"\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-second-input\"\r\n type=\"text\"\r\n />\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-add-more-third\">\r\n {props.enablePhone && (\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-add-more-third-cont\">\r\n <img\r\n onClick={() => {\r\n setAddChannel(\"sms\");\r\n setErrorText(\"\");\r\n setCoSignerEmail(\"\");\r\n }}\r\n src={\r\n addChannel === \"sms\"\r\n ? imageAssets.selectClicked\r\n : imageAssets.select\r\n }\r\n alt=\"\"\r\n />\r\n <p className=\"verified-custd-mdl-add-cosigner-step2-add-more-third-cont-text\">\r\n Phone number\r\n </p>\r\n </div>\r\n )}\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-add-more-third-cont\">\r\n <img\r\n onClick={() => {\r\n setAddChannel(\"email\");\r\n setErrorText(\"\");\r\n setCoSignerNumber(\"\");\r\n setCoSignerNumberFmt(\"\");\r\n setUserInput(\"\");\r\n }}\r\n src={\r\n addChannel === \"email\"\r\n ? imageAssets.selectClicked\r\n : imageAssets.select\r\n }\r\n alt=\"\"\r\n />\r\n <p className=\"verified-custd-mdl-add-cosigner-step2-add-more-third-cont-text\">\r\n Email\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-add-more-third\">\r\n {addChannel === \"sms\" && (\r\n <div className=\"verified-custd-mdl-st-contact-input\">\r\n <div className=\"verified-custd-mdl-st-contact-content-container\">\r\n <div\r\n onClick={() => {\r\n setSearchActive(!searchActive);\r\n }}\r\n className=\"verified-custd-mdl-st-contact-first-section\"\r\n >\r\n <img\r\n onClick={() => {\r\n setSearchActive(!searchActive);\r\n }}\r\n alt=\"Country Flag\"\r\n className=\"verified-custd-mdl-st-contact-selection-icon\"\r\n src={selectedCountry.flag}\r\n />\r\n <p\r\n onClick={() => {\r\n setSearchActive(!searchActive);\r\n }}\r\n className=\"verified-custd-mdl-st-contact-selection-text\"\r\n >\r\n + {selectedCountry.area}\r\n </p>\r\n {searchActive && (\r\n <img\r\n onClick={() => {\r\n setSearchActive(!searchActive);\r\n }}\r\n alt=\"Dropdown Icon\"\r\n className=\"verified-custd-mdl-st-contact-dropdown\"\r\n src={imageAssets.arrowUp}\r\n />\r\n )}\r\n {!searchActive && (\r\n <img\r\n onClick={() => {\r\n setSearchActive(!searchActive);\r\n }}\r\n alt=\"Dropdown Icon\"\r\n className=\"verified-custd-mdl-st-contact-dropdown\"\r\n src={imageAssets.arrowDown}\r\n />\r\n )}\r\n </div>\r\n\r\n <input\r\n onInputCapture={(e: any) => {\r\n if (e.target.value === \"\") {\r\n setUserInput(userInput + \" \");\r\n } else {\r\n setUserInput(e.target.value);\r\n }\r\n const numericInput = e.target.value?.replace(\r\n /\\D/g,\r\n \"\"\r\n );\r\n setCoSignerNumber(numericInput);\r\n let formattedNumber = \"\";\r\n for (\r\n let i = 0;\r\n i < numericInput?.length;\r\n i++\r\n ) {\r\n formattedNumber += numericInput[i];\r\n if (\r\n (i + 1) % 5 === 0 &&\r\n i + 1 < numericInput?.length\r\n ) {\r\n formattedNumber += \" \";\r\n }\r\n }\r\n setCoSignerNumberFmt(formattedNumber);\r\n setErrorText(\"\");\r\n }}\r\n onInput={(e) => {\r\n handleButtonDisplay();\r\n }}\r\n value={coSignerNumberFmt}\r\n id=\"phone-input\"\r\n type=\"text\"\r\n className=\"verified-custd-mdl-st-contact-second-section\"\r\n placeholder=\"Enter phone number\"\r\n />\r\n </div>\r\n {searchActive && (\r\n <SearchBox\r\n pageName=\"ftu/contact\"\r\n searchContent={props.allCountries}\r\n type=\"area-code\"\r\n handleButtonDisplay={handleButtonDisplay}\r\n setSelected={setSelectedCountry}\r\n selected={selectedCountry}\r\n searchActive={searchActive}\r\n setSearchActive={setSearchActive}\r\n contentMaxHeight=\"300\"\r\n contentbottomMargin=\"300\"\r\n />\r\n )}\r\n {errorText === \"\" &&\r\n coSignerNumber.length !== 10 &&\r\n userInput.length > 10 && (\r\n <div className=\"verified-custd-mdl-st-contact-input-error\">\r\n <p className=\"verified-custd-mdl-input-error-text\">\r\n Invalid input, please check the phone number\r\n </p>\r\n </div>\r\n )}\r\n {errorText !== \"\" && (\r\n <div className=\"verified-custd-mdl-st-contact-input-error\">\r\n <p className=\"verified-custd-mdl-input-error-text\">\r\n {errorText}\r\n </p>\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n {addChannel === \"email\" && (\r\n <React.Fragment>\r\n <div className=\"verified-custd-mdl-st-contact-input\">\r\n <input\r\n style={{ width: \"100%\" }}\r\n onInputCapture={(e: any) => {\r\n setCoSignerEmail(e.target.value);\r\n setErrorText(\"\");\r\n }}\r\n onInput={(e) => {\r\n handleButtonDisplay();\r\n }}\r\n value={coSignerEmail}\r\n id=\"email-input\"\r\n type=\"text\"\r\n className=\"verified-custd-mdl-st-contact-second-section\"\r\n placeholder=\"Enter email\"\r\n />\r\n {errorText !== \"\" && (\r\n <div className=\"verified-custd-mdl-st-contact-input-error\">\r\n <p className=\"verified-custd-mdl-input-error-text\">\r\n {errorText}\r\n </p>\r\n </div>\r\n )}\r\n </div>\r\n </React.Fragment>\r\n )}\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-add-more-buttons\">\r\n <button\r\n onClick={() => setShowAddMore(false)}\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-buttons-neut\"\r\n >\r\n Cancel\r\n </button>\r\n <button\r\n onClickCapture={() => {\r\n handleAddCoSigner();\r\n }}\r\n onClick={() => handleButtonDisplay()}\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-buttons-action\"\r\n >\r\n Add\r\n </button>\r\n </div>\r\n </div>\r\n )}\r\n\r\n {!showAddMore && !showSetRule && coSigners?.length < 4 && (\r\n <div\r\n onClick={() => setShowAddMore(true)}\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-footer\"\r\n >\r\n <img\r\n style={{ width: \"20px\" }}\r\n src={imageAssets.addIcon}\r\n alt=\"add icon\"\r\n />\r\n <p className=\"verified-custd-mdl-add-cosigner-step2-body-content-footer-text\">\r\n Add another Co-Signer\r\n </p>\r\n </div>\r\n )}\r\n {!showAddMore && !showSetRule && coSigners?.length === 4 && (\r\n <div className=\"verified-custd-mdl-add-cosigner-step2-body-content-footer-dis\">\r\n <img\r\n style={{ width: \"20px\" }}\r\n src={imageAssets.addDisableIcon}\r\n alt=\"add icon\"\r\n />\r\n <p className=\"verified-custd-mdl-add-cosigner-step2-body-content-footer-text-dis\">\r\n Add another Co-Signer\r\n </p>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n {!showSetRule && (\r\n <button\r\n style={\r\n !showAddMore && coSigners?.length < 4\r\n ? {\r\n marginTop: \"50px\",\r\n marginBottom: \"20px\",\r\n width: \"100%\",\r\n }\r\n : { marginBottom: \"20px\", width: \"100%\" }\r\n }\r\n id=\"add-cosigner-button\"\r\n onClick={async (e: any) => {\r\n if (\r\n e.target.className.includes(\"startup-button\") &&\r\n e.target.className !== \"startup-button\"\r\n ) {\r\n e.target.className = \"startup-button-click\";\r\n if (coSigners?.length > 0) {\r\n setRequiredSigners(2);\r\n setShowSetRule(true);\r\n setShowAddMore(false);\r\n }\r\n } else {\r\n const buttonElement = document.getElementsByClassName(\r\n \"startup-button-active\"\r\n );\r\n if (buttonElement.length > 0) {\r\n buttonElement[0].className = \"startup-button-click\";\r\n if (coSigners?.length > 0) {\r\n setRequiredSigners(2);\r\n setShowSetRule(true);\r\n setShowAddMore(false);\r\n }\r\n }\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button\"\r\n >\r\n Proceed\r\n </button>\r\n )}\r\n </React.Fragment>\r\n )}\r\n </React.Fragment>\r\n )}\r\n\r\n {showLearnMore && (\r\n <React.Fragment>\r\n {learnMoreStep === \"1\" && (\r\n <React.Fragment>\r\n <img\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n src={imageAssets.addCoSignerIcon2}\r\n alt=\"\"\r\n />\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-more-body\">\r\n <div className=\"verified-custd-mdl-add-cosigner-more-header-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-more-title-cont\">\r\n <p className=\"verified-custd-mdl-add-cosigner-more-title\">\r\n What is a Co-Signer?\r\n </p>\r\n </div>\r\n </div>\r\n <p className=\"verified-custd-mdl-add-cosigner-more-label\">\r\n A Co-Signer is a person who has the right given by you to\r\n generate a new pin on your behalf incase you forget it.{\" \"}\r\n </p>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-buttons-cont\">\r\n <button\r\n onClick={() => setShowLearnMore(false)}\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n Back\r\n </button>\r\n\r\n <button\r\n onClick={() => setLearnMoreStep(\"2\")}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n Next\r\n </button>\r\n </div>\r\n </React.Fragment>\r\n )}\r\n\r\n {learnMoreStep === \"2\" && (\r\n <React.Fragment>\r\n <img\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n src={imageAssets.addCoSignerIcon3}\r\n alt=\"\"\r\n />\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-more-body\">\r\n <div className=\"verified-custd-mdl-add-cosigner-more-header-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-more-title-cont\">\r\n <p className=\"verified-custd-mdl-add-cosigner-more-title\">\r\n Why is it needed?\r\n </p>\r\n </div>\r\n </div>\r\n <p className=\"verified-custd-mdl-add-cosigner-more-label\">\r\n In blockchain application, it is impossible to reset a key if\r\n the PIN is forgotten you can login with the help of Co-Signer\r\n </p>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-buttons-cont\">\r\n <button\r\n onClick={() => setLearnMoreStep(\"1\")}\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n Back\r\n </button>\r\n\r\n <button\r\n onClick={() => setLearnMoreStep(\"3\")}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n Next\r\n </button>\r\n </div>\r\n </React.Fragment>\r\n )}\r\n\r\n {learnMoreStep === \"3\" && (\r\n <React.Fragment>\r\n <img\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n src={imageAssets.addCoSignerIcon4}\r\n alt=\"\"\r\n />\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-more-body\">\r\n <div className=\"verified-custd-mdl-add-cosigner-more-header-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-more-title-cont\">\r\n <p className=\"verified-custd-mdl-add-cosigner-more-title\">\r\n Who can be my Co-Signer?\r\n </p>\r\n </div>\r\n </div>\r\n <p className=\"verified-custd-mdl-add-cosigner-more-label\">\r\n You can nominate your trusted acquaintances, family members\r\n and even yourself as a co-signer.\r\n </p>\r\n <p className=\"verified-custd-mdl-add-cosigner-more-label-link\">\r\n Learn More in Details\r\n </p>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-buttons-cont\">\r\n <button\r\n onClick={() => setLearnMoreStep(\"2\")}\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n Back\r\n </button>\r\n\r\n <button\r\n onClick={() => {\r\n setCosignerStep(\"2\");\r\n setShowAddMore(false);\r\n setShowLearnMore(false);\r\n setLearnMoreStep(\"1\");\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n Start\r\n </button>\r\n </div>\r\n </React.Fragment>\r\n )}\r\n </React.Fragment>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default AddCosignersPage;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport {\r\n hashTheString,\r\n initWalletAndContract,\r\n loadAllGoogleFonts,\r\n} from \"../utils/helpers\";\r\nimport {\r\n defaultChainId,\r\n imageAssets,\r\n verifiedWebsiteUrls,\r\n} from \"../utils/constants\";\r\nimport {\r\n acceptOrRejectInvitation,\r\n initiateVaultRecovery,\r\n restoreVaultLogin,\r\n signVaultRecovery,\r\n validateVaultPin,\r\n} from \"../services/contracts\";\r\nimport PageSlider from \"../components/slider\";\r\nimport { LogoutOverlay, PrivacyOverlay } from \"../components/overlays\";\r\nimport Success from \"../components/success\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport { ethers } from \"ethers\";\r\n\r\nconst EnterPinPage = (props: {\r\n fontsLoaded?: boolean;\r\n setisOnboard: (isOnboard: boolean) => void;\r\n vaultId: string;\r\n hashedVaultId: string;\r\n encrptedPk: string;\r\n vaultAddress: string;\r\n regAddress?: string;\r\n vaultChannel: \"sms\" | \"email\";\r\n actionText?: string;\r\n title?: string;\r\n origin?: string;\r\n chainId?: number;\r\n newChainId?: number;\r\n action?: string;\r\n reqVaultData?: any;\r\n reqTxData?: any;\r\n signTxElement?: any;\r\n txToSign?: any;\r\n setIsLoading: (isLoading: boolean) => void;\r\n setShowDashboard?: (showDashboard: boolean) => void;\r\n setShowCompleteVault?: (showDashboard: boolean) => void;\r\n setUserEmail?: (userEmail: string) => void;\r\n setUserNumberFmt?: (userNumberFmt: string) => void;\r\n setSelectedCountry?: (selectedCountry: {\r\n area: string;\r\n flag: string;\r\n name: string;\r\n }) => void;\r\n helperFunctions?: VerifiedCustodyHelpers;\r\n enablePhone?: boolean;\r\n}) => {\r\n const [fontsLoaded, setFontsLoaded] = useState(props.fontsLoaded || false);\r\n const [pinIncorrect, setPinIncorrect] = useState(false);\r\n const [pinHide, setPinHide] = useState(true); //hide pin by default\r\n const [searchActive, setSearchActive] = useState(false);\r\n const [showSuccess, setShowSuccess] = useState(false);\r\n const [vaultData, _setVaultData] = useState(null);\r\n const [vaultDataRes, setVaultDataRes] = useState(null);\r\n const [chainId, _setChainId] = useState(props.newChainId || defaultChainId);\r\n const [showChains, setShowChains] = useState(false);\r\n const [showInvitation, setShowInvitation] = useState(false);\r\n const [showInvitationSuccess, setShowInvitationSuccess] = useState(false);\r\n const [showRejectInvitation, setShowRejectInvitation] = useState(false);\r\n const [isAccepted, setIsAccepted] = useState(false);\r\n const [pinIncorrectText, setPinIncorrectText] = useState(\"\");\r\n const [showTx, setShowTx] = useState(false);\r\n const [newTx, setNewTx] = useState({});\r\n\r\n const {\r\n setChainId,\r\n setAddress,\r\n setPk,\r\n setProvider,\r\n setSigner,\r\n setVaultContract,\r\n setVaultData,\r\n } = useVaultStore();\r\n\r\n useEffect(() => {\r\n const PreloadGoogleFonts = () => {\r\n const isFontsLoaded = loadAllGoogleFonts(document);\r\n setFontsLoaded(isFontsLoaded);\r\n };\r\n if (!props.fontsLoaded) {\r\n PreloadGoogleFonts();\r\n }\r\n }, []);\r\n\r\n //todo: add key actions to input focus change\r\n const handlleInputFocus = (currentInput: any) => {\r\n if (currentInput.value.length > 0) {\r\n const nextInput = currentInput.nextElementSibling;\r\n if (nextInput) {\r\n nextInput.focus();\r\n }\r\n } else if (currentInput.value.length === 0) {\r\n currentInput.focus();\r\n }\r\n };\r\n\r\n const hanlePinPaste = (e: any) => {\r\n const pastedText = e.clipboardData.getData(\"text\");\r\n const numbersFromText = pastedText?.replace(/\\D/g, \"\");\r\n const allOptInputs: any = document.getElementsByClassName(\"otp-input\");\r\n if (allOptInputs?.length === 4 && numbersFromText?.length > 0) {\r\n for (let i = 0; i < allOptInputs.length; i++) {\r\n if (numbersFromText[i]) {\r\n allOptInputs[i].value = numbersFromText[i];\r\n allOptInputs[i].focus();\r\n }\r\n }\r\n }\r\n };\r\n\r\n const hanslePinBackspace = (e: any) => {\r\n const previousInpput = e.target.previousElementSibling;\r\n if (previousInpput) {\r\n previousInpput.focus();\r\n }\r\n };\r\n\r\n const handleButtonDisplay = () => {\r\n const button: any = document.getElementById(\r\n \"verified-custd-mdl-otp-button\"\r\n );\r\n const otp1: any = document.getElementById(\"verified-custd-mdl-otp-input-1\");\r\n const otp2: any = document.getElementById(\"verified-custd-mdl-otp-input-2\");\r\n const otp3: any = document.getElementById(\"verified-custd-mdl-otp-input-3\");\r\n const otp4: any = document.getElementById(\"verified-custd-mdl-otp-input-4\");\r\n if (\r\n button &&\r\n otp1?.value.length > 0 &&\r\n otp2?.value.length > 0 &&\r\n otp3?.value.length > 0 &&\r\n otp4?.value.length > 0 &&\r\n !pinIncorrect\r\n ) {\r\n button.className = \"verified-custd-mdl-startup-button-active\";\r\n } else {\r\n button.className = \"verified-custd-mdl-startup-button\";\r\n }\r\n };\r\n\r\n const handleVerifyPin = async () => {\r\n if (!props.helperFunctions) {\r\n setPinIncorrectText(\r\n \"No Helper Functions. Please include all helper functions in the EnterPinPage props.\"\r\n );\r\n setPinIncorrect(true);\r\n } else {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n const otp1: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-1\"\r\n );\r\n const otp2: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-2\"\r\n );\r\n const otp3: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-3\"\r\n );\r\n const otp4: any = document.getElementById(\r\n \"verified-custd-mdl-otp-input-4\"\r\n );\r\n\r\n if (\r\n otp1?.value?.length > 0 &&\r\n otp2?.value?.length > 0 &&\r\n otp3?.value?.length > 0 &&\r\n otp4?.value?.length > 0 &&\r\n props.hashedVaultId &&\r\n props.encrptedPk\r\n ) {\r\n props.setIsLoading(true);\r\n const fullOtp = otp1?.value + otp2?.value + otp3?.value + otp4?.value;\r\n await validateVaultPin(\r\n props.vaultId,\r\n props.hashedVaultId,\r\n fullOtp,\r\n hashTheString(fullOtp),\r\n props.encrptedPk,\r\n props.vaultAddress,\r\n props.vaultChannel,\r\n Number(chainId),\r\n verifiedWebsiteUrls?.includes(props.origin?.toLowerCase())\r\n ).then(async (res) => {\r\n if (res && !res?.inCompleteVault) {\r\n props.setIsLoading(false);\r\n _setVaultData(res);\r\n setVaultDataRes(\r\n res?.pk && props.action !== \"eth_requestAccounts\"\r\n ? {\r\n address: res.address,\r\n channel: res.channel,\r\n chainId: res.chainId,\r\n pk: res?.pk,\r\n }\r\n : {\r\n address: props.regAddress,\r\n channel: res.channel,\r\n chainId: res.chainId,\r\n }\r\n );\r\n\r\n if (\r\n props.action === \"getPk\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() ===\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n props.setIsLoading(true);\r\n await initiateVaultRecovery(\r\n props.helperFunctions.sendCreatorInitiation,\r\n props.hashedVaultId,\r\n hashTheString(fullOtp),\r\n props.vaultId,\r\n fullOtp,\r\n props.encrptedPk,\r\n props.vaultChannel,\r\n Number(chainId)\r\n ).then(async (res) => {\r\n props.setIsLoading(false);\r\n if (chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n localStorage.removeItem(\"myVault\");\r\n }\r\n if (res) {\r\n setShowSuccess(true);\r\n } else {\r\n setPinIncorrectText(\r\n `Account recovery failed. Verify you don't have pending account recovery process and Try again later`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n });\r\n } else if (props.action === \"signRecovery\") {\r\n props.setIsLoading(true);\r\n await signVaultRecovery(\r\n props.helperFunctions.sendCreatorSigned,\r\n props.helperFunctions.sendCreatorCompleted,\r\n props.hashedVaultId,\r\n hashTheString(fullOtp),\r\n props.vaultId,\r\n fullOtp,\r\n props.encrptedPk,\r\n props.reqVaultData?.vaultId,\r\n props.reqVaultData?.hashedVaultId,\r\n props.reqVaultData?.hashedVaultPin,\r\n props.reqTxData?.id,\r\n Number(chainId)\r\n ).then(async (res) => {\r\n props.setIsLoading(false);\r\n if (\r\n !props.reqTxData?.newUser &&\r\n chrome?.storage?.local &&\r\n !props.vaultAddress\r\n ) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n } else if (\r\n !props.reqTxData?.newUser &&\r\n !chrome?.storage?.local &&\r\n !props.vaultAddress &&\r\n localStorage\r\n ) {\r\n localStorage.removeItem(\"myVault\");\r\n }\r\n if (res) {\r\n setShowSuccess(true);\r\n } else {\r\n setPinIncorrectText(\r\n `Error while signing transaction; it's either you are not a valid co-signer or you had signed this particular transaction before. Verify and try again later.`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n });\r\n } else if (\r\n props.action === \"completeRecovery\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() ===\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n props.setIsLoading(true);\r\n await restoreVaultLogin(\r\n props.hashedVaultId,\r\n hashTheString(fullOtp),\r\n props.vaultId,\r\n fullOtp,\r\n props.encrptedPk,\r\n props.reqTxData?.id,\r\n props.vaultChannel,\r\n Number(chainId)\r\n ).then(async (res) => {\r\n props.setIsLoading(false);\r\n if (res) {\r\n setShowSuccess(true);\r\n } else {\r\n if (chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n localStorage.removeItem(\"myVault\");\r\n }\r\n setPinIncorrectText(\r\n `Error while restoring login access. Verify all required co-signers had signed our account recovery and try again later.`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n });\r\n } else if (\r\n props.action === \"eth_sendTransaction\" &&\r\n props.encrptedPk?.length > 0 &&\r\n res?.pin?.length > 0 &&\r\n props.signTxElement\r\n ) {\r\n setNewTx({\r\n chainId,\r\n ky: ethers.encodeBytes32String(res?.pin),\r\n ...props.txToSign, //overwrite chainId if exist\r\n });\r\n setShowInvitation(false);\r\n setShowTx(true);\r\n } else if (\r\n props.action === \"invitation\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() !==\r\n props.vaultId?.toLowerCase() &&\r\n props.reqVaultData?.coSignerId?.toLowerCase() ===\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n setShowInvitation(true);\r\n } else if (\r\n props.action === \"invitation\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() ===\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n setPinIncorrectText(\r\n `You cannot accept your own Co-Signer invitation. please logout and login to: ${props.reqVaultData?.coSignerId} account`\r\n );\r\n setPinIncorrect(true);\r\n } else if (\r\n props.action === \"invitation\" &&\r\n props.reqVaultData?.coSignerId?.toLowerCase() !==\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n setPinIncorrectText(\r\n `You cannot accept this Co-Signer invitation. please logout and login to: ${props.reqVaultData?.coSignerId} account`\r\n );\r\n setPinIncorrect(true);\r\n } else if (\r\n props.action === \"getPk\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() !==\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n if (chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n localStorage.removeItem(\"myVault\");\r\n }\r\n setPinIncorrectText(\r\n `You are not authorized to fetch account details. please logout and login to: ${props.reqVaultData?.vaultId} account`\r\n );\r\n setPinIncorrect(true);\r\n } else if (\r\n props.action === \"completeRecovery\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() !==\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n if (chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n localStorage.removeItem(\"myVault\");\r\n }\r\n setPinIncorrectText(\r\n `You are not authorized to restore login access for this account. please logout and login to: ${props.reqVaultData?.vaultId} account`\r\n );\r\n setPinIncorrect(true);\r\n } else if (\r\n (props.action === \"connect_wallet\" && !props?.vaultAddress) ||\r\n (props.action === \"eth_requestAccounts\" && !props?.vaultAddress)\r\n ) {\r\n setPinIncorrectText(\r\n `Incomplete account details received. This may be due to incomplete/unexpected error from last login. Please logout and login back to recover account details.`\r\n );\r\n setPinIncorrect(true);\r\n } else if (props.action === \"\" && props.vaultAddress) {\r\n props.setShowDashboard(true);\r\n } else if (props.action === \"\" && !props.vaultAddress) {\r\n setPinIncorrectText(\r\n \"Incomplete account login detected. Logout and try again later\"\r\n );\r\n setPinIncorrect(true);\r\n } else {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n setShowSuccess(true);\r\n }\r\n } else if (res && res?.inCompleteVault && res?.pk) {\r\n const walletAndContractDetails = await initWalletAndContract(\r\n Number(chainId),\r\n res?.pk\r\n );\r\n setChainId(walletAndContractDetails.chainId);\r\n setAddress(walletAndContractDetails.address);\r\n setPk(walletAndContractDetails.pk);\r\n setProvider(walletAndContractDetails.provider);\r\n setSigner(walletAndContractDetails.signer);\r\n setVaultContract(walletAndContractDetails.vaultContract);\r\n setVaultData({\r\n vaultId: res?.vaultId,\r\n hashedVaultId: res?.hashedVaultId,\r\n vaultPin: res?.pin,\r\n hashedVaultPin: hashTheString(res?.pin),\r\n vaultContract: walletAndContractDetails.vaultContract,\r\n });\r\n if (res?.channel?.toLowerCase() === \"sms\") {\r\n const areaCode = res?.vaultId?.replace(\r\n res?.vaultId?.slice(-10),\r\n \"\"\r\n );\r\n const formattedNumber =\r\n res?.vaultId?.slice(-10)?.slice(0, 5) +\r\n \" \" +\r\n res?.vaultId?.slice(-10)?.slice(5);\r\n props.setSelectedCountry({\r\n area: areaCode?.replace(\"+\", \"\"),\r\n name: \"\",\r\n flag: \"\",\r\n });\r\n\r\n props.setUserNumberFmt(formattedNumber);\r\n props.setUserEmail(\"\");\r\n } else {\r\n props.setUserEmail(res?.vaultId);\r\n props.setUserNumberFmt(\"\");\r\n }\r\n props.setIsLoading(false);\r\n props.setShowCompleteVault(true);\r\n props.setShowDashboard(false);\r\n } else {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(true);\r\n props.setIsLoading(false);\r\n }\r\n });\r\n }\r\n }\r\n };\r\n\r\n const handleAcceptAndRejectInvitation = async (accepted: boolean) => {\r\n const vaultId = props.vaultId;\r\n if (\r\n vaultData?.pin?.length > 0 &&\r\n vaultData?.pk?.length > 0 &&\r\n props?.reqVaultData?.hashedVaultId &&\r\n props.reqVaultData?.hashedVaultPin &&\r\n vaultId &&\r\n props.helperFunctions?.sendCreatorAcceptance &&\r\n props.helperFunctions?.sendCreatorRejection\r\n ) {\r\n props.setIsLoading(true);\r\n const vaultPin = vaultData.pin;\r\n const hashedVaultId = hashTheString(vaultId);\r\n const hashedVaultPin = hashTheString(vaultPin);\r\n await acceptOrRejectInvitation(\r\n props.helperFunctions.sendCreatorAcceptance,\r\n props.helperFunctions.sendCreatorRejection,\r\n props.vaultChannel,\r\n hashedVaultId,\r\n hashedVaultPin,\r\n props?.reqVaultData?.hashedVaultId,\r\n props.reqVaultData?.hashedVaultPin,\r\n props?.reqVaultData?.vaultId,\r\n vaultId,\r\n accepted,\r\n null,\r\n vaultData.pk,\r\n Number(chainId)\r\n ).then((res) => {\r\n props.setIsLoading(false);\r\n if (res) {\r\n setIsAccepted(accepted);\r\n setShowInvitationSuccess(true);\r\n }\r\n });\r\n }\r\n };\r\n\r\n return (\r\n <React.Fragment>\r\n {fontsLoaded && !showInvitation && !showTx && (\r\n <React.Fragment>\r\n {!showSuccess && (\r\n <div className=\"verified-custd-mdl-startup-language\">\r\n <div className=\"verified-custd-mdl-startup-contact\">\r\n <PageSlider sliderCount={[1]} currentSlider=\"0\" />\r\n <div className=\"verified-custd-mdl-startup-contact-content\">\r\n <div className=\"verified-custd-mdl-startup-contact-content-heder-cont\">\r\n <p\r\n style={{ alignSelf: \"center\" }}\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n Enter PIN\r\n </p>\r\n {/* <div className=\"verified-custd-mdl-portfolio-page-content-header-button-cont\">\r\n <button\r\n onClick={() => setShowChains(!showChains)}\r\n className=\"verified-custd-mdl-portfolio-page-content-header-button\"\r\n >\r\n {chainConfig[chainId].chainName}\r\n <img src={expandIcon} alt=\"Expand Icon\" />\r\n </button>\r\n {showChains && (\r\n <div className=\"verified-custd-mdl-portfolio-page-content-header-button-body\">\r\n {Object.keys(chainConfig).map((chn: any) => (\r\n <div\r\n onClick={() => {\r\n setChainId(chn);\r\n setShowChains(false);\r\n }}\r\n className=\"verified-custd-mdl-portfolio-page-content-header-button-body-cont\"\r\n >\r\n <p className=\"verified-custd-mdl-portfolio-page-content-header-button-body-text\">\r\n {chainConfig[chn].chainName}\r\n </p>\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div> */}\r\n </div>\r\n <div className=\"verified-custd-mdl-startup-otp-text\">\r\n <p className=\"verified-custd-mdl-startup-otp-header-text\">\r\n Welcome back, please enter the{\" \"}\r\n <span style={{ color: \"#0C0C0E\" }}>4-Digit PIN</span> for\r\n your{\" \"}\r\n <span style={{ color: \"#0C0C0E\" }}>{props.vaultId}</span>{\" \"}\r\n account.\r\n </p>\r\n <div className=\"verified-custd-mdl-startup-otp-footer\">\r\n {props.actionText && (\r\n <p className=\"verified-custd-mdl-startup-otp-footer-text\">\r\n {props.actionText ? `To ${props.actionText} ` : \"\"}{\" \"}\r\n from origin: {props.origin || props.title}\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"verified-custd-mdl-otp-input-container\">\r\n <div className=\"verified-custd-mdl-otp-input-group\">\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n hanslePinBackspace(e);\r\n }\r\n }}\r\n onPaste={(e) => {\r\n hanlePinPaste(e);\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-1\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n hanslePinBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-2\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n hanslePinBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-3\"\r\n />\r\n <input\r\n onInputCapture={(e: any) => {\r\n e.target.value = e.target.value?.replace(/\\D/g, \"\");\r\n setPinIncorrect(false);\r\n }}\r\n onInput={(e) => {\r\n handlleInputFocus(e.target);\r\n handleButtonDisplay();\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Backspace\" && e.target.value === \"\") {\r\n hanslePinBackspace(e);\r\n }\r\n }}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n type={pinHide ? \"password\" : \"text\"}\r\n maxLength={1}\r\n id=\"verified-custd-mdl-otp-input-4\"\r\n />\r\n </div>\r\n <div className=\"verified-custd-mdl-otp-timer\">\r\n {pinIncorrect && pinIncorrectText === \"\" && (\r\n <p className=\"verified-custd-mdl-otp-incorrect-text\">\r\n Please enter the correct pin\r\n </p>\r\n )}\r\n {pinIncorrect && pinIncorrectText?.length > 0 && (\r\n <p className=\"verified-custd-mdl-otp-incorrect-text\">\r\n {pinIncorrectText}\r\n </p>\r\n )}\r\n {!pinIncorrect && (\r\n <p className=\"verified-custd-mdl-otp-incorrect-text\"></p>\r\n )}\r\n\r\n {!pinHide && (\r\n <img\r\n style={{\r\n cursor: \"pointer\",\r\n width: \"24px\",\r\n height: \"24px\",\r\n }}\r\n onClick={() => setPinHide(true)}\r\n src={imageAssets.pinShow}\r\n alt=\"show pin icon\"\r\n />\r\n )}\r\n {pinHide && (\r\n <img\r\n style={{\r\n cursor: \"pointer\",\r\n width: \"24px\",\r\n height: \"24px\",\r\n }}\r\n onClick={() => setPinHide(false)}\r\n src={imageAssets.pinHide}\r\n alt=\"hide pin icon\"\r\n />\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {!searchActive && <div style={{ height: \"100px\" }}></div>}\r\n\r\n <div className=\"verified-custd-mdl-startup-contact-footer\">\r\n <div className=\"verified-custd-mdl-st-contact-footer-first-section\">\r\n <LogoutOverlay\r\n setisOnboard={props.setisOnboard}\r\n setIsLoading={props.setIsLoading}\r\n />\r\n <button\r\n id=\"verified-custd-mdl-otp-button\"\r\n onClick={async (e: any) => {\r\n if (\r\n e.target.className.includes(\r\n \"verified-custd-mdl-startup-button\"\r\n ) &&\r\n e.target.className !==\r\n \"verified-custd-mdl-startup-button\"\r\n ) {\r\n e.target.className =\r\n \"verified-custd-mdl-startup-button-click\";\r\n await handleVerifyPin();\r\n } else {\r\n const buttonElement = document.getElementsByClassName(\r\n \"verified-custd-mdl-startup-button-active\"\r\n );\r\n if (buttonElement.length > 0) {\r\n buttonElement[0].className =\r\n \"verified-custd-mdl-startup-button-click\";\r\n await handleVerifyPin();\r\n }\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button\"\r\n >\r\n Proceed\r\n </button>\r\n {/* <div className=\"verified-custd-mdl-st-contact-footer-second-section\">\r\n <PrivacyOverlay />\r\n </div> */}\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n {showSuccess && (\r\n <Success\r\n messageTosend={\r\n props.action === \"getPk\"\r\n ? {\r\n type: \"closePopup\",\r\n key: \"\",\r\n value: \"\",\r\n }\r\n : props.action === \"signRecovery\"\r\n ? {\r\n type: \"closePopup\",\r\n key: \"\",\r\n value: \"\",\r\n }\r\n : props.action === \"completeRecovery\"\r\n ? {\r\n type: \"closePopup\",\r\n key: \"\",\r\n value: \"\",\r\n }\r\n : {\r\n type: \"vaultData\",\r\n key: \"vaultData\",\r\n value: vaultDataRes,\r\n }\r\n }\r\n customTextHeader={\"Successful\"}\r\n customTextFooter={\r\n props.action === \"getPk\" && props.vaultChannel === \"email\"\r\n ? \"You have successfully initiated your account recovery process check your email for further instructions\"\r\n : props.action === \"getPk\" && props.vaultChannel === \"sms\"\r\n ? \"You have successfully initiated your account recovery process check your phone number messages for further instructions\"\r\n : props.action === \"signRecovery\"\r\n ? `Congratulations! You have successfully signed account recovery transaction for user: ${props.reqVaultData?.vaultId}`\r\n : props.action === \"completeRecovery\"\r\n ? `Congratulations! You have successfully restored login access for your ${props?.vaultId} account`\r\n : `Congratulations! You have successfully ${\r\n props.action === \"connect_wallet\"\r\n ? \"connected your account\"\r\n : props.action === \"eth_requestAccounts\"\r\n ? \"connected your account\"\r\n : props?.actionText\r\n ? props.actionText\r\n : \"logged in to your account.\"\r\n } `\r\n }\r\n showButton={props.action === \"completeRecovery\" ? true : false}\r\n buttonText={\r\n props.action === \"completeRecovery\" ? \"Go To Dashboard\" : \"\"\r\n }\r\n setShowDasboard={props.setShowDashboard}\r\n actionFooterText={\r\n props.action === \"completeRecovery\"\r\n ? `Congratulations! You have successfully restored login access for your ${props?.vaultId} account`\r\n : \"\"\r\n }\r\n />\r\n )}\r\n </React.Fragment>\r\n )}\r\n {fontsLoaded && showInvitation && !showTx && (\r\n <React.Fragment>\r\n {!showInvitationSuccess && (\r\n <div\r\n style={{ padding: \"0\", position: \"relative\" }}\r\n className=\"verified-custd-mdl-startup-language\"\r\n >\r\n <div className=\"verified-custd-mdl-startup-contact\">\r\n <PageSlider sliderCount={[1, 2, 3]} currentSlider=\"1\" />\r\n <div className=\"verified-custd-mdl-startup-contact-content\">\r\n <p className=\"verified-custd-mdl-startup-contact-text\">\r\n <b>{props.reqVaultData?.vaultId}</b> has requested you to be\r\n a Co-Signer\r\n </p>\r\n </div>\r\n </div>\r\n <img\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n src={imageAssets.addCoSignerIcon1}\r\n alt=\"\"\r\n />\r\n {!showRejectInvitation && (\r\n <React.Fragment>\r\n <div className=\"verified-custd-mdl-add-cosigner-more-body\">\r\n <div className=\"verified-custd-mdl-add-cosigner-more-header-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-more-title-cont\">\r\n <p className=\"verified-custd-mdl-add-cosigner-more-title\">\r\n What is a Co-Signer?\r\n </p>\r\n </div>\r\n </div>\r\n <p\r\n style={{\r\n fontSize: \"12px\",\r\n color: \"var(--Neutral-600, #5B5D6E)\",\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n A Co-Signer is a person who has the right given by you to\r\n generate a new pin on your behalf incase you forget it.{\" \"}\r\n </p>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-icon\">\r\n <img src={imageAssets.pkicon} alt=\"icon\" />\r\n </div>\r\n <p className=\"verified-custd-mdl-add-cosigner-body-text-label\">\r\n As a Co Signer you can help{\" \"}\r\n <span className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\">\r\n reset PIN\r\n </span>\r\n </p>\r\n </div>\r\n\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-body-text-icon\">\r\n <img src={imageAssets.encryptedIcon} alt=\"icon\" />\r\n </div>\r\n <p className=\"verified-custd-mdl-add-cosigner-body-text-label\">\r\n Don’t worry, they{\" \"}\r\n <span className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\">\r\n will not get access\r\n </span>{\" \"}\r\n to your account in any way.\r\n </p>\r\n </div>\r\n </div>\r\n <div className=\"verified-custd-mdl-add-cosigner-buttons-cont\">\r\n <button\r\n onClick={() => {\r\n setShowRejectInvitation(true);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n Reject\r\n </button>\r\n\r\n <button\r\n onClick={async () => {\r\n await handleAcceptAndRejectInvitation(true);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n Accept\r\n </button>\r\n </div>\r\n </React.Fragment>\r\n )}\r\n\r\n {showRejectInvitation && (\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-content-outter\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-content\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-cont\">\r\n <div className=\"verified-custd-mdl-add-cosigner-confirm-body-header\">\r\n <p className=\"verified-custd-mdl-add-cosigner-confirm-body-title\">\r\n Are you sure you want to reject this request?\r\n </p>\r\n <p\r\n style={{\r\n fontSize: \"12px\",\r\n color: \"var(--Neutral-600, #5B5D6E)\",\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-label\"\r\n >\r\n Once you reject to be a co-signer for{\" \"}\r\n <b>{props.reqVaultData?.vaultId}</b>, you will not be\r\n able to reset the PIN for them.\r\n </p>\r\n </div>\r\n\r\n <div\r\n style={{ width: \"90%\" }}\r\n className=\"verified-custd-mdl-add-cosigner-buttons-cont\"\r\n >\r\n <button\r\n onClick={async () => {\r\n await handleAcceptAndRejectInvitation(false);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n Yes\r\n </button>\r\n\r\n <button\r\n onClick={() => {\r\n setShowRejectInvitation(false);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n No\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n {showInvitationSuccess && (\r\n <Success\r\n messageTosend={{\r\n type: \"getPk\",\r\n key: \"vaultData\",\r\n value: vaultData,\r\n }}\r\n customTextHeader=\"Successful\"\r\n customTextFooter={\r\n isAccepted\r\n ? `You have been added as a Co-Signer for ${props.reqVaultData?.vaultId}`\r\n : `You rejected Co-signer reject from ${props.reqVaultData?.vaultId}`\r\n }\r\n />\r\n )}\r\n </React.Fragment>\r\n )}\r\n {fontsLoaded && !showInvitation && showTx && (\r\n <props.signTxElement\r\n setIsLoading={props.setIsLoading}\r\n txToSign={newTx}\r\n />\r\n )}\r\n {!fontsLoaded && <h3>Preparing Modules...</h3>}\r\n </React.Fragment>\r\n );\r\n};\r\n\r\nexport default EnterPinPage;\r\n"],"mappings":"kkBAAA,IAAAA,GAAA,GAAAC,GAAAD,GAAA,sBAAAE,GAAA,gBAAAC,GAAA,kBAAAC,GAAA,iBAAAC,GAAA,YAAAC,GAAA,YAAAC,GAAA,yBAAAC,GAAA,oBAAAC,GAAA,kBAAAC,GAAA,kBAAAC,GAAA,kBAAAC,KAAA,eAAAC,GAAAb,ICCA,SAASc,GAAYC,EAAK,CACxB,GAAI,CAACA,GAAO,OAAO,SAAa,IAAa,OAE7C,IAAMC,EAAO,SAAS,MAAQ,SAAS,qBAAqB,MAAM,EAAE,CAAC,EAC/DC,EAAQ,SAAS,cAAc,OAAO,EAC5CA,EAAM,KAAO,WAEVD,EAAK,WACNA,EAAK,aAAaC,EAAOD,EAAK,UAAU,EAExCA,EAAK,YAAYC,CAAK,EAGrBA,EAAM,WACPA,EAAM,WAAW,QAAUF,EAE3BE,EAAM,YAAY,SAAS,eAAeF,CAAG,CAAC,CAElD,CACAD,GAAY;AAAA,CAAk3mC,ECpB13mC,OAAO,OAAW,MACnB,OAAe,OAAS,CAAC,GCD5B,IAAAI,EAA2C,qBCA3C,IAAAC,GAA2D,qBAmBrDC,MAAoB,kBAAsC,MAAS,EAE5DC,GAAwBC,GAE/B,CACJ,GAAM,CAACC,EAASC,CAAU,KAAI,aAAwB,IAAI,EACpD,CAACC,EAAIC,CAAK,KAAI,aAAwB,IAAI,EAC1C,CAACC,EAASC,CAAU,KAAI,aAAwB,IAAI,EACpD,CAACC,EAAQC,CAAS,KAAI,aAAc,IAAI,EACxC,CAACC,EAAUC,CAAW,KAAI,aAAc,IAAI,EAC5C,CAACC,EAAeC,CAAgB,KAAI,aAAc,IAAI,EACtD,CAACC,EAAWC,CAAY,KAAI,aAAc,IAAI,EAC9C,CAACC,EAAUC,CAAW,KAAI,aAAwB,IAAI,EAE5D,OACE,GAAAC,QAAA,cAACnB,GAAkB,SAAlB,CACC,MAAO,CACL,QAAAG,EACA,GAAAE,EACA,QAAAE,EACA,OAAAE,EACA,SAAAE,EACA,cAAAE,EACA,UAAAE,EACA,WAAAX,EACA,MAAAE,EACA,WAAAE,EACA,UAAAE,EACA,YAAAE,EACA,iBAAAE,EACA,aAAAE,CACF,GAECd,EAAM,QACT,CAEJ,EAEakB,GAAgB,IAAM,CACjC,IAAMC,KAAU,eAAWrB,EAAiB,EAC5C,GAAIqB,EACF,OAAOA,EAEP,MAAM,MAAM,wDAAwD,CAExE,EChEA,IAAAC,EAA2C,qBAC3CC,GAAyB,kBCDlB,IAAMC,GACX,QAAQ,IAAI,qBAAuB,aAAe,KAAO,MAE9CC,GACX,QAAQ,IAAI,qBAAuB,aAC/B,kCACA,gCAEOC,GAAsB,CACjC,gCACA,kCACA,8BACA,iCACF,EAEaC,GAAoB,CAC/B,iJACA,8KACA,qFACF,EAEaC,GACX,qEAEWC,GAAkB,CAC7B,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,KACL,EAEaC,GAAqB,CAChC,EAAG,OACH,EAAG,OACH,EAAG,OACH,EAAG,OACH,EAAG,MACL,EAEaC,GAAc,CACzB,eAAgB,uBAChB,oBAAqB,uBACrB,MAAO,+BACP,WAAY,8BACZ,aAAc,wBACd,iBAAkB,uBAClB,oBAAqB,iCACvB,EAEaC,EAAc,CACzB,YACE,iGACF,QACE,kHACF,WACE,4FACF,iBACE,oGACF,iBACE,oGACF,iBACE,oGACF,iBACE,oGACF,OACE,wFACF,cACE,+FACF,QACE,8FACF,QACE,8FACF,QACE,iGACF,UACE,iGACF,SACE,qFACF,UACE,0FACF,OACE,4FACF,cACE,kGACF,UACE,gGACF,OACE,4FACF,QACE,6FACF,UACE,4FACF,OACE,4FACF,cACE,oGACF,QACE,iGACF,eACE,gGACF,WACE,2FACF,aACE,6FACF,YACE,6FACF,YACE,6FACF,YACE,mGACF,UACE,2FACF,SACE,0FACF,YACE,iGACF,cACE,gGACF,iBACE,gGACF,kBACE,mGACF,QACE,wFACF,SACE,0FACF,aACE,8FACF,WACE,2FACF,SACE,0FACF,UACE,qFACJ,EAEaC,GAAmB,CAC9B,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,aACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,sBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,yBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,iCACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,oBACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,GACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,2BACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,mBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,0BACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,4BACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,2CACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,qBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,oBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,mBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,oCACN,KAAM,KACN,SAAU,MACV,UAAW,YACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,GACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,mBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,kBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,2BACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,mBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,mBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,GACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,sBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,wBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,4BACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,mCACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,wBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,kBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,+CACN,KAAM,KACN,SAAU,MACV,UAAW,aACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,yBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,sBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,uBACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,GACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,oBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,CACF,ECl9DA,IAAAC,GAKO,0CCHA,IAAMC,GAAmB,CAC9B,EAAG,CACD,QAAS,MACT,UAAW,WACX,eAAgB,CACd,KAAM,MACN,OAAQ,MACR,SAAU,EACZ,EACA,QAAS,CACP,uEACF,EACA,kBAAmB,CAAC,uBAAuB,EAC3C,KAAMC,EAAY,YACpB,EAEA,KAAM,CACJ,QAAS,SACT,UAAW,eACX,eAAgB,CACd,KAAM,MACN,OAAQ,MACR,SAAU,EACZ,EACA,QAAS,CACP,wEACF,EACA,kBAAmB,CAAC,uBAAuB,EAC3C,KAAMA,EAAY,QACpB,EAEA,IAAK,CAC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","names":["index_exports","__export","addCosigners_default","contact_default","createPin_default","enterPin_default","ftu_default","otp_default","VaultContextProvider","pages_default","decryptString","encryptString","hashTheString","__toCommonJS","injectStyle","css","head","style","import_react","import_react","VaultStoreContext","VaultContextProvider","props","chainId","setChainId","pk","setPk","address","setAddress","signer","setSigner","provider","setProvider","vaultContract","setVaultContract","vaultData","setVaultData","fcmToken","setFcmToken","React","useVaultStore","context","import_react","import_lodash","defaultChainId","defaultVerifiedUrl","verifiedWebsiteUrls","allGoogleFontUrls","newTransactionEventHash","numberPositions","numberPositionsFmt","actionTexts","imageAssets","countriesDetails","import_verified_sdk","ChainConfig","imageAssets","import_crypto","import_crypto_js","import_react_toastify","import_react","import_abstractjs","import_chains","import_viem","loadAllGoogleFonts","document","apiLink","staticLink","allGoogleFontUrls","fontUrl","fontLink","initWalletAndContract","chainId","privateKey","_a","_b","_c","_d","_e","sender","mnemonics","cntAddresses","_chainId","ChainConfig","defaultChainId","provider","signer","pk","vaultContract","_signer","address","err","hashTheString","text","crypto","encryptString","secretKey","crypt","decryptString","encryptedText","decryptedBytes","decryptedText","getErrorToastContent","title","content","React","imageAssets","errorToast","title","content","getErrorToastContent","import_react","import_react","PageSlider","props","_a","React","_","idx","slider_default","import_react","SearchBox","props","_a","newSearchContent","setNewSearchContent","React","imageAssets","e","src","_b","idx","_c","nm","search_default","import_react","TermsAndConditionsOverlay","React","LogoutOverlay","props","_a","_b","ContactPage","props","_a","userNumber","setUserNumber","userInput","setUserInput","searchActive","setSearchActive","sendOtpErrorText","setSendOtpErrorText","pk","vaultContract","address","useVaultStore","handleButtonDisplay","_b","button","handleSendOTP","_c","vaultId","channel","res","errorToast","React","slider_default","imageAssets","e","numericInput","formattedNumber","i","search_default","TermsAndConditionsOverlay","buttonElement","contact_default","import_react","import_ethers","import_shamir_secret_sharing","import_verified_sdk","import_abstractjs","import_chains","import_viem","checkIsExistingUser","vaultContract","hashedVaultId","res","_a","_b","checkOrResetOrCreateVault","vaultId","vaultPin","hashedVaultPin","otpChannel","userPk","userAddress","action","reqVaultData","txData","vaultData","_c","_d","_e","_f","_g","_h","secretKey","encryptedPk","encryptString","event","err","errorToast","lastPk","resolve","result","resetVaultPin","cfrmRes","userRegAddress","vultRes","validateVaultPin","chainId","includePk","newChainId","decryptString","cntAddresses","sender","_chainId","ChainConfig","defaultChainId","provider","signer","quorumSet","acceptOrRejectInvitation","sendCreatorAcceptance","sendCreatorRejection","channel","hashedCosignerId","hashedCosignerPin","hashedCreatorVaultId","hashedCreatorVaultPin","creatorVaultId","coSignerVaultId","accepted","contract","completeVaultCreation","sendCoSignerInvitation","sendCreatorConfirmation","keyHolders","coSigners","KeyThreshold","pk","keyShardsCount","sharesArrayAsString","letter","share","failedKeyHolders","succesfulKeyHolders","idx","participant","hashTheString","keyHolder","cosignersList","cng","numberPositions","initiateVaultRecovery","sendCreatorInitiation","vaultChannel","abiCoder","vaultLogs","log","tp","newTransactionEventHash","decodedTxData","val","txId","signVaultRecovery","sendCreatorSigned","sendCreatorCompleted","reqVaultId","hashedReqId","hashedReqPin","reqTxId","qRes","restoreVaultLogin","recoveredShrads","shrd","shares","combinedShares","newEncryptedPk","newSender","_newsigner","nexAddress","hashedOldPin","hashedNewPin","cRes","OTPPage","props","_a","_b","_c","_d","_e","_f","searchActive","setSearchActive","countdown","setCountdown","otpIncorrect","setOtpIncorrect","otherErrorText","setOtherErrorText","pk","vaultContract","address","useVaultStore","reduceCountdown","prevCountdown","handlleInputFocus","currentInput","nextInput","handleOtpPaste","e","pastedText","numbersFromText","allOptInputs","i","handleOtpBackspace","previousInpput","handleButtonDisplay","button","otp1","otp2","otp3","otp4","handleVerifyOtp","_g","_h","_i","_j","vaultId","fullOtp","res","hashedVaultId","hashTheString","isExisting","checkIsExistingUser","handleResendOtp","channel","errorToast","React","slider_default","imageAssets","inputs","buttonElement","otp_default","import_react","import_react","Success","props","_a","_b","timeoutId","_c","_d","res","event","err","errorToast","handleContinue","handleClosePopup","handleShowDashboard","React","imageAssets","success_default","CreatePinPage","props","_a","_b","_c","_d","_e","_f","searchActive","setSearchActive","pinIncorrect","setPinIncorrect","pinIncorrectText","setPinIncorrectText","pinHide","setPinHide","showInvitation","setShowInvitation","showInvitationSuccess","setShowInvitationSuccess","showCustomSuccess","setShowCustomSuccess","customSuccessText","setCustomSuccessText","vaultPin","setVaultPin","showRejectInvitation","setShowRejectInvitation","address","pk","vaultContract","setVaultData","setChainId","vaultData","useVaultStore","handlleInputFocus","currentInput","nextInput","handleOtpBackspace","e","previousInpput","handleButtonDisplay","button","otp1","otp2","otp3","otp4","otp5","otp6","otp7","otp8","handleVaultManagement","_g","_h","_i","_j","_k","_l","_m","_n","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","_y","_z","_A","_B","_C","_D","_E","_F","_G","_H","vaultId","channel","hashedVaultId","hashTheString","hashedVaultPin","checkOrResetOrCreateVault","res","handleAcceptAndRejectInvitation","accepted","acceptOrRejectInvitation","React","slider_default","imageAssets","buttonElement","success_default","createPin_default","import_react","AddCosignersPage","props","_a","_b","_c","_d","showLearnMore","setShowLearnMore","learnMoreStep","setLearnMoreStep","cosignerStep","setCosignerStep","showAddMore","setShowAddMore","addChannel","setAddChannel","coSignerNumber","setCoSignerNumber","coSignerNumberFmt","setCoSignerNumberFmt","coSignerEmail","setCoSignerEmail","coSignerName","setCoSignerName","userInput","setUserInput","searchActive","setSearchActive","selectedCountry","setSelectedCountry","imageAssets","coSigners","setCosigners","showSetRule","setShowSetRule","requiredSigners","setRequiredSigners","errorText","setErrorText","pk","vaultData","vaultContract","useVaultStore","handleButtonDisplay","button","handleAddCoSigner","sig","coSignerLength","cngs","handleCompleteVault","_e","_f","keyHolders","completeVaultCreation","res","React","slider_default","a","b","cng","idx","numberPositionsFmt","nSig","newId","_","e","buttonElement","numericInput","formattedNumber","i","search_default","addCosigners_default","import_react","import_ethers","EnterPinPage","props","_a","_b","_c","_d","_e","fontsLoaded","setFontsLoaded","pinIncorrect","setPinIncorrect","pinHide","setPinHide","searchActive","setSearchActive","showSuccess","setShowSuccess","vaultData","_setVaultData","vaultDataRes","setVaultDataRes","chainId","_setChainId","defaultChainId","showChains","setShowChains","showInvitation","setShowInvitation","showInvitationSuccess","setShowInvitationSuccess","showRejectInvitation","setShowRejectInvitation","isAccepted","setIsAccepted","pinIncorrectText","setPinIncorrectText","showTx","setShowTx","newTx","setNewTx","setChainId","setAddress","setPk","setProvider","setSigner","setVaultContract","setVaultData","useVaultStore","PreloadGoogleFonts","isFontsLoaded","loadAllGoogleFonts","handlleInputFocus","currentInput","nextInput","hanlePinPaste","e","pastedText","numbersFromText","allOptInputs","i","hanslePinBackspace","previousInpput","handleButtonDisplay","button","otp1","otp2","otp3","otp4","handleVerifyPin","_f","fullOtp","validateVaultPin","hashTheString","verifiedWebsiteUrls","res","_g","_h","_i","_j","_k","_l","_m","_n","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","_y","_z","_A","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_R","_S","_T","initiateVaultRecovery","signVaultRecovery","restoreVaultLogin","walletAndContractDetails","initWalletAndContract","areaCode","formattedNumber","handleAcceptAndRejectInvitation","accepted","vaultId","vaultPin","hashedVaultId","hashedVaultPin","acceptOrRejectInvitation","React","slider_default","imageAssets","LogoutOverlay","buttonElement","success_default","enterPin_default","FTUPage","props","_a","_b","fontsLoaded","setFontsLoaded","showLogo","setShowLogo","allCountries","setAllCountries","step","setStep","selectedCountry","setSelectedCountry","imageAssets","userNumberFmt","setUserNumberFmt","userEmail","setUserEmail","showSuccessBtn","setShowSuccessBtn","successBtnText","setSuccessBtnText","successBtnNeutText","setSuccessBtnNeutText","actionHeaderText","setActionHeaderText","actionFooterText","setActionFooterText","successBtnFunc","setSuccessBtnFunc","successBtnNeutFunc","setSuccessBtnNeutFunc","isExistingUser","setIsExistingUser","setChainId","setAddress","setPk","setProvider","setSigner","setVaultContract","setVaultData","vaultData","chainId","useVaultStore","PreloadGoogleFonts","isFontsLoaded","loadAllGoogleFonts","lastPk","resolve","result","walletAndContractDetails","initWalletAndContract","fmtCountries","countriesDetails","cnt","React","contact_default","otp_default","createPin_default","success_default","addCosigners_default","enterPin_default","actionTexts","ky","ftu_default","import_framer_motion","VerifiedCustody","props","_a","_b","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","_m","_n","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","_y","_z","_A","fontsLoaded","setFontsLoaded","isOnboard","setisOnboard","vaultData","setVaultData","_vaultData","_setVaultData","isLoading","setIsLoading","showDashboard","setShowDasboard","showCompleteVault","setShowCompleteVault","showResetPin","setShowResetPin","action","setAction","allCountries","setAllCountries","step","setStep","selectedCountry","setSelectedCountry","imageAssets","userNumberFmt","setUserNumberFmt","userEmail","setUserEmail","containerHeight","setContainerHeight","containerScrollHeight","setContainerScrollHeight","isFontsLoaded","loadAllGoogleFonts","res","myVault","fmtCountries","countriesDetails","cnt","updateHeight","containerDiv","React","VaultContextProvider","ftu_default","hashTheString","ky","enterPin_default","actionTexts","addCosigners_default","success_default","initWalletAndContract","createPin_default","pages_default"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/style.css","../src/iosShim.ts","../src/polyfillCryptoRN.ts","../src/pages/platform.tsx","../src/utils/constants.ts","../src/pages/globalStyle.tsx","../src/pages/index.tsx","../src/services/store.tsx","../src/pages/ftu.tsx","../src/utils/helpers.tsx","../src/utils/config.ts","../src/lib/biconomyRNFix.ts","../src/lib/abi/boostrap.json","../src/lib/abi/factory.json","../src/pages/contact.tsx","../src/components/slider.tsx","../src/components/search.tsx","../src/components/overlays.tsx","../src/pages/otp.tsx","../src/services/contracts.ts","../src/pages/createPin.tsx","../src/components/success.tsx","../src/pages/addCosigners.tsx","../src/pages/enterPin.tsx"],"sourcesContent":["import \"./style.css\";\r\nimport \"./iosShim\";\r\nimport \"./polyfillCryptoRN\";\r\n\r\nexport { default as VerifiedCustody } from \"./pages\";\r\n\r\nexport { default as FTUPage } from \"./pages/ftu\";\r\n\r\nexport { default as EnterPinPage } from \"./pages/enterPin\";\r\n\r\nexport { default as CreatePinPage } from \"./pages/createPin\";\r\n\r\nexport { default as ContactPage } from \"./pages/contact\";\r\n\r\nexport { default as OTPPage } from \"./pages/otp\";\r\n\r\nexport { default as AddCoSignersPage } from \"./pages/addCosigners\";\r\n\r\nexport {\r\n hashTheString,\r\n encryptString,\r\n decryptString,\r\n encryptWithPasskey,\r\n decryptWithPasskey,\r\n loadAllGoogleFonts,\r\n loadAllGoogleFontsRN,\r\n publicKeyCredentialRequestOptions,\r\n} from \"./utils/helpers\";\r\n\r\nexport { initPlatform, getPlatformComponents } from \"./pages/platform\";\r\n\r\nexport { VaultContextProvider } from \"./services/store\";\r\n\r\nexport {\r\n VerifiedWalletAction,\r\n VerifiedWalletVault,\r\n VerifiedWalletTx,\r\n VerifiedCustodyProps,\r\n VerifiedCustodyHelpers,\r\n} from \"./utils/types\";\r\n","\nfunction injectStyle(css) {\n if (!css || typeof document === 'undefined') return\n\n const head = document.head || document.getElementsByTagName('head')[0]\n const style = document.createElement('style')\n style.type = 'text/css'\n \n if(head.firstChild) {\n head.insertBefore(style, head.firstChild)\n } else {\n head.appendChild(style)\n }\n\n if(style.styleSheet) {\n style.styleSheet.cssText = css\n } else {\n style.appendChild(document.createTextNode(css))\n }\n}\ninjectStyle(\"textarea:focus,input:focus{outline:none;border:none}input{appearance:textfield;-moz-appearance:textfield;outline:none;border:none;margin:0}input::placeholder{margin:0}input[type=password]::-ms-reveal{display:none}input[type=password]::-moz-password-toggle{display:none}input[type=password]::-webkit-contacts-auto-fill-button{display:none}input::-webkit-inner-spin-button,input::-webkit-outer-spin-button{-webkit-appearance:none}::-webkit-scrollbar{width:5px;height:4px}::-webkit-scrollbar-thumb{height:4px;width:5px;background-color:var(--Neutral-200, #d8d9df);border-radius:4px}::-webkit-scrollbar-thumb:hover{background-color:var(--Neutral-200, #d8d9df)}::-webkit-scrollbar-track{background:transparent;height:4px;width:5px;cursor:pointer}p{margin:0}.verified-custd-mdl-container{width:100%;height:100%;display:flex;justify-content:center;padding-bottom:20px;overflow-y:auto;overflow-x:hidden;position:relative}.verified-custd-mdl-startup-outter{width:100%;height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;overflow-y:auto;overflow-x:hidden;background:linear-gradient(180deg,#643fff,#381ab7)}.verified-custd-mdl-startup-outter-norm{width:100%;height:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;overflow-y:auto;overflow-x:hidden;background:var(--common-white_states-main, #fff)}.verified-custd-mdl-startup{width:650px;height:fit-content;display:flex;justify-content:center;align-items:center;flex-direction:column;overflow-x:hidden;overflow-y:auto;padding-bottom:20px;border:1px solid #0F122E;border-radius:10px;position:relative}.verified-custd-mdl-loading-screen{width:100vh;border-radius:10px;width:100%;flex-shrink:0;background:#0000004d;z-index:100;display:flex;justify-content:center;align-items:center;overflow:auto;position:absolute;inset:0}.verified-custd-mdl-startup-icon-container{width:76.119%;display:flex;justify-content:center;align-items:center;position:relative;flex-direction:column;height:298px}.verified-custd-mdl-startup-icon-shadow{position:absolute;bottom:10px;right:70px;width:48.5%}.verified-custd-mdl-startup-text-container{display:inline-flex;flex-direction:column;align-items:flex-start;gap:12px;margin-right:20px;margin-left:20px}.verified-custd-mdl-startup-text-header{color:var(--Neutral-White-100, var(--common-white_states-main, #fff));font-family:Manrope;font-size:2.1rem;font-style:normal;font-weight:700;line-height:2.8125rem;margin:0}.verified-custd-mdl-startup-text-footer{color:var(--Neutral-White-100, var(--common-white_states-main, #fff));font-family:Roboto;font-size:.9rem;font-style:normal;font-weight:400;line-height:1.5rem;opacity:.8}.verified-custd-mdl-ftu-startup-button{display:inline-flex;padding:14px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);border-radius:var(--space-8px, 8px);background:var(--primary-bitter-lemon-500, #cfe600);cursor:pointer;user-select:none;color:var(--Neutral-950, #0C0C0E);text-align:center;margin:20px;font-family:Roboto;font-size:16px;font-style:normal;font-weight:500;line-height:150%;outline:none;border:none}.verified-custd-mdl-startup-language{background:var(--common-white_states-main, #fff);height:100%;width:100%}.verified-custd-mdl-startup-language-content-container{display:inline-flex;flex-direction:column;align-items:flex-start;gap:32px;width:100%}.verified-custd-mdl-st-language-content{display:flex;flex-direction:column;align-items:flex-start;gap:20px;align-self:stretch;width:100%}.verified-custd-mdl-st-language-text{color:var(--Neutral-950, #0c0c0e);font-family:Roboto;font-size:1.5rem;font-style:normal;font-weight:700;line-height:100%;align-self:stretch}.verified-custd-mdl-ms-search-content:hover{border-radius:var(--space-8px, 8px);border:1px solid var(--secondary-electric-violet-300, #9da3ff);background:var(--secondary-electric-violet-50, #ecefff)}.verified-custd-mdl-st-contact-input{display:flex;flex-direction:column;align-items:flex-start;gap:14px;width:90%}.verified-custd-mdl-st-contact-first-section{display:flex;width:150px;height:44px;padding-left:6px;align-items:center;border-radius:var(--space-8px, 8px);background:var(--Neutral-50, #f7f7f8);cursor:pointer;user-select:none}.verified-custd-mdl-st-contact-selection-icon{display:flex;justify-content:center;align-items:center;flex-shrink:0;border-radius:24px;cursor:pointer;user-select:none;overflow:hidden;width:28px;height:28px}.verified-custd-mdl-st-contact-selection-text{color:var(--Neutral-950, #0c0c0e);text-align:right;font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:500;line-height:140%;width:40px;flex-shrink:0;cursor:pointer;user-select:none}.verified-custd-mdl-custom-blank-page{height:0}.verified-custd-mdl-startup-otp-text{display:flex;flex-direction:column;align-items:flex-start;gap:12px;align-self:stretch}.verified-custd-mdl-startup-otp-header-text{align-self:stretch;color:var(--Neutral-600, #5b5d6e);font-family:Roboto;font-size:.7rem;font-style:normal;font-weight:400;line-height:150%;max-width:100%;word-wrap:break-word}.verified-custd-mdl-otp-input-group{display:flex;align-items:flex-start;gap:var(--space-8px, 8px);width:100%}.verified-custd-mdl-otp-input{display:flex;padding:20px 12px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);flex:1 0 0;align-self:stretch;border-radius:var(--space-8px, 8px);background:var(--Neutral-50, #f7f7f8);width:25%;color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-otp-input-red{border-radius:8px;border:1px solid var(--Error-600, #E23636);background:var(--Neutral-50, #F7F7F8);display:flex;padding:20px 12px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);flex:1 0 0;align-self:stretch;width:25%;color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-otp-incorrect-text{color:var(--Error-600, #E23636);font-family:Roboto;font-size:12px;font-style:normal;font-weight:400;line-height:140%;max-width:200px;word-wrap:break-word}.verified-custd-mdl-otp-timer{display:flex;justify-content:space-between;align-items:center;align-self:stretch}.verified-custd-mdl-otp-timer-text{color:var(--Neutral-950, #0c0c0e);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-otp-timer-text-red{color:var(--Error-600, #e23636);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-otp-resend-text{color:var(--Neutral-300, #b6b7c3);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-otp-resend-text-active{color:var(--secondary-electric-violet-600, #603ff4);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:500;line-height:140%;cursor:pointer;user-select:none}.verified-custd-mdl-st-otp-icon{cursor:pointer;user-select:none}.verified-custd-mdl-startup-button{display:inline-flex;padding:14px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);border-radius:var(--space-8px, 8px);background:var(--primary-bitter-lemon-500, #cfe600);cursor:pointer;user-select:none;color:var(--Neutral-950, #0C0C0E);text-align:center;opacity:.5;font-family:Roboto;font-size:16px;font-style:normal;font-weight:500;line-height:150%;outline:none;border:none;width:90%;max-width:500px}.verified-custd-mdl-startup-button-active{display:inline-flex;padding:14px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);border-radius:var(--space-8px, 8px);background:var(--primary-bitter-lemon-500, #cfe600);cursor:pointer;user-select:none;color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:16px;font-style:normal;font-weight:500;line-height:150%;outline:none;border:none;width:90%;max-width:500px}.verified-custd-mdl-otp-input[type=password]{font-weight:900}.verified-custd-mdl-startup-button-click{border-radius:var(--space-8px, 8px);border:1px solid var(--Neutral-950, #0c0c0e);cursor:pointer;user-select:none;display:inline-flex;padding:14px;justify-content:center;align-items:center;gap:var(--space-8px, 8px);color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:16px;font-style:normal;font-weight:500;line-height:150%;outline:none;width:90%;background:transparent;max-width:500px}.verified-custd-mdl-pin-input-container-text{color:var(--Neutral-600, #5B5D6E);font-family:Roboto;font-size:14px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-st-button-text{color:var(--Neutral-950, #0c0c0e);text-align:center;font-family:Roboto;font-size:1rem;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-startup-slider{display:flex;width:335px;align-items:center;gap:12px;border-radius:4px;width:100%}.verified-custd-mdl-startup-slider-line{height:4px;flex-shrink:0;border-radius:var(--space-8px, 8px);background:var(--Neutral-100, #eeeef0)}.verified-custd-mdl-startup-slider-line-active{height:4px;flex:1 0 0;border-radius:var(--space-8px, 8px);background:var(--secondary-electric-violet-600, #603ff4)}.verified-custd-mdl-startup-contact{display:inline-flex;flex-direction:column;align-items:flex-start;gap:20px;width:100%}.verified-custd-mdl-startup-contact-content{display:flex;flex-direction:column;align-items:flex-start;gap:16px;align-self:stretch}.verified-custd-mdl-startup-contact-text{color:var(--Neutral-950, #0c0c0e);font-family:Roboto;font-size:1rem;font-style:normal;font-weight:700;line-height:100%;align-self:stretch;max-width:100%;word-wrap:break-word}.verified-custd-mdl-st-contact-content-container{display:flex;align-items:flex-start;gap:var(--space-8px, 8px);width:100%}.verified-custd-mdl-st-contact-dropdown{cursor:pointer;user-select:none}.verified-custd-mdl-st-contact-second-section{display:flex;width:100%;height:44px;padding-left:6px;align-items:center;border-radius:var(--space-8px, 8px);background:var(--Neutral-50, #f7f7f8);color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:14px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-st-contact-second-section::placeholder{color:var(--Neutral-300, #b6b7c3);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-startup-contact-footer{display:inline-flex;flex-direction:column;align-items:center;gap:12px;width:100%;margin-top:16px}.verified-custd-mdl-st-contact-footer-first-section{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;width:100%}.verified-custd-mdl-st-contact-footer-second-section{display:flex;align-items:center;justify-content:center;gap:4px;width:100%}.verified-custd-mdl-st-contact-input-error{display:flex;align-items:center;gap:4px}.verified-custd-mdl-input-error-text{color:var(--Error-600, #e23636);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:400;line-height:140%;margin:0}.verified-custd-mdl-mobille-startup-search-box-container{display:flex;flex-direction:column;align-items:flex-start;gap:6px;width:100%}.verified-custd-mdl-mobile-startup-search-box{display:flex;height:40px;align-items:center;gap:6px;border-radius:6px;border:1px solid var(--Neutral-200, #d8d9df);background:var(--Neutral-50, #f7f7f8);width:100%;overflow:hidden}.verified-custd-mdl-ms-search-box-content{height:100%;width:100%;background:transparent;color:var(--Neutral-950, #0c0c0e);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-ms-search-box-content::placeholder{color:var(--Neutral-400, #8f91a1);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-mobile-startup-search-content{display:flex;width:100%;flex-direction:column;align-items:flex-start;gap:16px;border-radius:var(--space-8px, 8px);border:1px solid var(--Neutral-50, #f7f7f8);background:var(--common-white_states-main, #fff)}.verified-custd-mdl-ms-search-content-container{display:flex;flex-direction:column;align-items:flex-start;align-self:stretch;overflow-x:hidden;overflow-y:auto}.verified-custd-mdl-ms-search-content{display:flex;padding:var(--space-8px, 8px);align-items:center;gap:19px;align-self:stretch;cursor:pointer;user-select:none;height:34px;margin-bottom:5px;border:1px solid transparent}.verified-custd-mdl-ms-search-content-active{display:flex;padding:var(--space-8px, 8px);justify-content:space-between;align-items:center;align-self:stretch;border-radius:6px;background:var(--Success-50, #f1f8ed);cursor:pointer;user-select:none}.verified-custd-mdl-ms-search-content-text-container{display:flex;align-items:center;gap:19px}.verified-custd-mdl-ms-search-content-icon{display:flex;width:28px;height:28px;justify-content:center;align-items:center;border-radius:24px;border:1px solid rgba(0,0,0,.05);background:var(--common-white_states-main, #fff);box-shadow:0 1px 4px #eee}.verified-custd-mdl-ms-search-content-text{color:var(--Neutral-950, #0c0c0e);font-family:Roboto;font-size:.775rem;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-terms-and-condition{color:var(--Neutral-400, #8f91a1);font-family:Roboto;font-size:.7rem;font-style:normal;font-weight:450;line-height:140%}.verified-custd-mdl-privacy{display:flex;align-items:center;gap:4px;margin-bottom:20px}.verified-custd-mdl-privacy-text{color:var(--Neutral-800, #40414c);font-family:Roboto;font-size:.5rem;font-style:normal;font-weight:400;line-height:1.25rem;letter-spacing:.01563rem}.verified-custd-mdl-p-p-payment-portal-amount-info-separator{display:flex;align-items:center;gap:6px;align-self:stretch;justify-content:center}.verified-custd-mdl-p-p-payment-portal-line{width:50%;height:1px;background:#eeeef0}.verified-custd-mdl-p-payment-portal-separator-text{color:var(--Neutral-700, #4a4a5a);font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:400;line-height:140%;opacity:.6}.verified-custd-mdl-startup-otp-footer{display:flex;align-items:center;gap:4px;width:100%;overflow:hidden}.verified-custd-mdl-startup-otp-footer-text{color:var(--Neutral-950, #0c0c0e);font-family:Manrope;font-size:.8rem;font-style:normal;font-weight:600;line-height:100%;max-width:100%;word-wrap:break-word}.verified-custd-mdl-otp-input-container{display:flex;flex-direction:column;align-items:flex-start;gap:6px;width:100%}.verified-custd-mdl-general-web-toast-error{display:flex;align-items:center;gap:12px}.verified-custd-mdl-general-web-toast-error-container{display:flex;width:100%;flex-direction:column;align-items:flex-start;gap:10px;padding:6px}.verified-custd-mdl-general-web-toast-error-title{margin:0;color:var(--Neutral-950, #0c0c0e);font-family:Manrope;font-size:1rem;font-style:normal;font-weight:600;line-height:100%;align-self:stretch}.verified-custd-mdl-general-web-toast-error-label{align-self:stretch;color:var(--Neutral-400, #8f91a1);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:400;line-height:150%;margin:0}.verified-custd-mdl-general-web-toast-success{display:flex;padding:12px;justify-content:space-between;align-items:center;align-self:stretch;border-radius:8px;background:var(--Success-50, #f1f8ed);width:100%;height:55px;max-height:55px}.verified-custd-mdl-general-web-toast-success-cont{display:flex;align-items:center;gap:12px;width:100%}.verified-custd-mdl-general-web-toast-success-container{display:flex;width:100%;flex-direction:column;align-items:flex-start;gap:10px;padding:6px}.verified-custd-mdl-general-web-toast-success-link{display:flex;align-items:center}.verified-custd-mdl-general-web-toast-success-link-text{color:var(--secondary-electric-violet-600, #603ff4);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:700;line-height:150%;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font}.verified-custd-mdl-success-popup-content-container{display:flex;width:28.4375%;padding:24px;flex-direction:column;align-items:center;background:var(--common-white_states-main, #fff);box-shadow:0 4px 19px #0000001f;height:100%}.verified-custd-mdl-success-popup-content{display:flex;width:100%;flex-direction:column;align-items:center;gap:32px}.verified-custd-mdl-success-popup-content-text{display:flex;flex-direction:column;align-items:center;gap:12px;align-self:stretch}.verified-custd-mdl-success-popup-content-text-header{color:var(--Neutral-950, #0c0c0e);text-align:center;font-family:Manrope;font-size:1.5rem;font-style:normal;font-weight:800;line-height:140%}.verified-custd-mdl-success-popup-content-text-footer{color:var(--Neutral-600, #5b5d6e);text-align:center;font-family:Roboto;font-size:1rem;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-body-icon{width:90%;max-width:90%;max-height:250px;height:250px}.verified-custd-mdl-add-cosigner-body{display:inline-flex;padding:10px;flex-direction:column;align-items:flex-start;gap:12px;border-radius:8px;background:var(--secondary-electric-violet-50, #ECEFFF)}.verified-custd-mdl-add-cosigner-body-text-cont{display:flex;align-items:center;gap:10px;width:100%}.verified-custd-mdl-add-cosigner-body-text-icon{display:flex;padding:8px;align-items:center;gap:10px;border-radius:24px;background:var(--secondary-electric-violet-200, #C2C7FF);overflow:hidden;justify-content:center;width:20px;height:20px}.verified-custd-mdl-add-cosigner-body-text-label{width:76.1%;color:var(--Neutral-600, #5B5D6E);font-family:Roboto;font-size:10px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-body-text-label-bold{color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:10px;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-add-cosigner-buttons-cont{display:inline-flex;padding:10px;align-items:flex-start;gap:10px;background:transparent;display:flex;justify-content:space-between}.verified-custd-mdl-add-cosigner-button-neut{width:45%;display:flex;padding:14px;justify-content:center;align-items:center;gap:8px;background:transparent;border-radius:8px;border:1px solid var(--Neutral-950, #0C0C0E);color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:150%;cursor:pointer}.verified-custd-mdl-add-cosigner-button-action{width:45%;display:flex;padding:14px;justify-content:center;align-items:center;gap:8px;border-radius:8px;background:var(--primary-bitter-lemon-500, #CFE600);border:none;color:var(--Neutral-950, #0C0C0E);text-align:center;font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:150%;cursor:pointer}.verified-custd-mdl-add-cosigner-more-body{display:inline-flex;padding:15px;flex-direction:column;align-items:flex-start;gap:12px;border-radius:8px;background:var(--secondary-electric-violet-50, #ECEFFF)}.verified-custd-mdl-add-cosigner-more-header-cont{display:flex;flex-direction:column;align-items:flex-start;gap:32px}.verified-custd-mdl-add-cosigner-more-title-cont{display:flex;flex-direction:column;align-items:flex-start;gap:16px;align-self:stretch}.verified-custd-mdl-add-cosigner-header-text{align-self:stretch;color:var(--Neutral-600, #5B5D6E);font-family:Roboto;font-size:12px;font-style:normal;font-weight:400;line-height:150%;margin:0}.verified-custd-mdl-add-cosigner-more-title{color:var(--Neutral-950, #0C0C0E);font-family:Manrope;font-size:18px;font-style:normal;font-weight:700;line-height:120%;margin:0}.verified-custd-mdl-add-cosigner-more-label{color:var(--Neutral-700, #4A4A5A);font-family:Roboto;font-size:14px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-more-label-link{align-self:stretch;color:var(--secondary-electric-violet-700, #4E2BD7);font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:150%;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;cursor:pointer;margin:0}.verified-custd-mdl-add-cosigner-header-info-cont{display:flex;padding:10px;flex-direction:column;align-items:flex-start;gap:12px;align-self:stretch;border-radius:8px;background:var(--Accent-100, #FFF9C1)}.verified-custd-mdl-add-cosigner-header-info-text{color:var(--Accent-800, #89490A);font-family:Roboto;font-size:10px;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-add-cosigner-header-info-text-bold{color:var(--Accent-800, #89490A);font-family:Roboto;font-size:10px;font-style:normal;font-weight:700;line-height:140%}.verified-custd-mdl-add-cosigner-step2-body{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin-top:20px}.verified-custd-mdl-add-cosigner-step2-body-header{display:flex;width:100%;justify-content:space-between;align-items:center}.verified-custd-mdl-add-cosigner-step2-body-header-first-text{color:var(--Neutral-950, #0C0C0E);text-align:right;font-family:Roboto;font-size:.8rem;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-add-cosigner-step2-body-header-second-text{color:var(--Neutral-950, #0C0C0E);text-align:right;font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-add-cosigner-step2-body-content{display:flex;flex-direction:column;align-items:flex-start;gap:16px;width:100%}.verified-custd-mdl-add-cosigner-step2-body-content-header{display:flex;padding-top:14px;justify-content:center;align-items:center;position:relative;width:100%;flex-direction:column}.verified-custd-mdl-add-cosigner-step2-body-content-header-cont{display:flex;width:100%;padding:12px;flex-direction:column;align-items:flex-start;gap:16px}.verified-custd-mdl-add-cosigner-step2-body-content-header-label{display:flex;padding:4px 6px;align-items:flex-start;gap:10px;position:absolute;left:12px;top:-14px;border-radius:6px;background:var(--secondary-electric-violet-100, #DDE1FF)}.verified-custd-mdl-add-cosigner-step2-body-content-header-label-text{color:var(--secondary-electric-violet-900, #362689);font-family:Roboto;font-size:10px;font-style:normal;font-weight:500;line-height:140%;margin:0}.verified-custd-mdl-add-cosigner-step2-body-content-header-body{justify-content:space-between;align-self:stretch;border-radius:8px;border:1px solid var(--Neutral-100, #EEEEF0);background:var(--Neutral-50, #F7F7F8);position:relative;display:flex;padding:12px;align-items:flex-start;gap:16px}.verified-custd-mdl-a-c-2-b-content-header-body-header-cont{display:flex;align-items:center;gap:12px;width:100%}.verified-custd-mdl-a-c-2-b-content-header-body-header{display:flex;flex-direction:column;align-items:flex-start;gap:6px;width:100%}.verified-custd-mdl-a-c-2-b-content-header-body-title{color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:16px;font-style:normal;font-weight:500;line-height:150%;margin:0;max-width:150px;word-wrap:break-word;overflow-wrap:break-word}.verified-custd-mdl-a-c-2-b-content-header-body-label{color:var(--Neutral-400, #8F91A1);font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:140%;margin:0;max-width:200px;word-wrap:break-word;overflow-wrap:break-word}.verified-custd-mdl-a-c-2-b-content-header-body-button{display:flex;padding:5.5px 8px;justify-content:center;align-items:center;gap:10px;border-radius:6px;border:1px solid var(--secondary-electric-violet-600, #603FF4);background:var(--secondary-electric-violet-600, #603FF4);color:var(--secondary-electric-violet-50, #ECEFFF);text-align:right;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:140%}.verified-custd-mdl-add-cosigner-step2-body-content-footer{display:flex;align-items:center;gap:4px;cursor:pointer}.verified-custd-mdl-add-cosigner-step2-body-content-footer-text{color:var(--secondary-electric-violet-600, #603FF4);text-align:right;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-add-cosigner-step2-add-more-body{display:flex;padding:15px;flex-direction:column;align-items:flex-start;gap:16px;border-radius:8px;border:1px solid var(--Neutral-200, #D8D9DF);min-width:90%;margin-bottom:20px;width:100%}.verified-custd-mdl-add-cosigner-step2-add-more-first{display:flex;justify-content:space-between;align-items:center;align-self:stretch;width:100%}.verified-custd-mdl-add-cosigner-step2-add-more-first-header{display:flex;align-items:flex-end;gap:5px}.verified-custd-mdl-add-cosigner-step2-add-more-first-header-text{color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:.7rem;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-add-cosigner-step2-add-more-first-footer{display:flex;padding:4px 6px;align-items:flex-start;gap:10px;border-radius:6px;background:var(--secondary-electric-violet-100, #DDE1FF)}.verified-custd-mdl-add-cosigner-step2-add-more-first-footer-text{color:var(--secondary-electric-violet-900, #362689);font-family:Roboto;font-size:10px;font-style:normal;font-weight:500;line-height:140%;margin:0}.verified-custd-mdl-add-cosigner-step2-add-more-second{display:flex;flex-direction:column;align-items:flex-start;gap:4px;width:100%}.verified-custd-mdl-add-cosigner-step2-add-more-second-input{display:flex;padding:12px;align-items:center;gap:182px;align-self:stretch;border-radius:8px;background:var(--Neutral-50, #F7F7F8);color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:12px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-step2-add-more-third{display:flex;align-items:flex-start;gap:24px;width:100%}.verified-custd-mdl-add-cosigner-step2-add-more-third-cont{display:flex;align-items:center;gap:4px}.verified-custd-mdl-add-cosigner-step2-add-more-third-cont-text{color:var(--Neutral-900, #383842);font-family:Roboto;font-size:13px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-step2-add-more-buttons{display:flex;align-items:flex-start;gap:16px;align-self:stretch;width:100%;background:transparent}.verified-custd-mdl-add-cosigner-step2-add-more-buttons-neut{width:50%;display:flex;padding:7.5px 12px;justify-content:center;align-items:center;gap:10px;flex:1 0 0;border-radius:8px;border:1px solid var(--secondary-electric-violet-600, #603FF4);color:var(--secondary-electric-violet-600, #603FF4);text-align:right;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:140%;background:transparent;cursor:pointer}.verified-custd-mdl-add-cosigner-step2-add-more-buttons-action{width:50%;display:flex;padding:6px 8px;justify-content:center;align-items:center;gap:10px;flex:1 0 0;align-self:stretch;border-radius:8px;border:1px solid var(--secondary-electric-violet-600, #603FF4);background:var(--secondary-electric-violet-600, #603FF4);color:var(--secondary-electric-violet-50, #ECEFFF);text-align:right;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:140%;cursor:pointer}.verified-custd-mdl-add-cosigner-step2-add-more-second-input::placeholder{color:var(--Neutral-300, #B6B7C3);font-family:Roboto;font-size:12px;font-style:normal;font-weight:400;line-height:150%}.verified-custd-mdl-add-cosigner-confirm-body-content{display:flex;padding-top:20px;padding-bottom:20px;flex-direction:column;justify-content:flex-start;align-items:center;gap:61px;border-radius:8px 8px 0 0;background:var(--Neutral-White-100, #FFF);width:100%;max-height:62.7%}.verified-custd-mdl-add-cosigner-confirm-body-cont{display:flex;flex-direction:column;align-items:flex-start;gap:16px;width:90%}.verified-custd-mdl-add-cosigner-confirm-body-header{display:flex;flex-direction:column;align-items:center;gap:16px}.verified-custd-mdl-add-cosigner-confirm-body-title{color:var(--Neutral-950, #0C0C0E);font-family:Manrope;font-size:16px;font-style:normal;font-weight:700;line-height:150%;margin:0}.verified-custd-mdl-add-cosigner-confirm-body-label{color:var(--Neutral-600, #5B5D6E);font-family:Roboto;font-size:12px;font-style:normal;font-weight:400;line-height:150%;margin:0}.verified-custd-mdl-add-cosigner-confirm-body-footer{display:flex;width:90%;padding:15px 15px 5px;flex-direction:column;align-items:flex-start;gap:5px;border-radius:8px;border:1px solid var(--Neutral-100, #EEEEF0);background:var(--Neutral-White-100, #FFF)}.verified-custd-mdl-add-cosigner-confirm-body-footer-ind-cont{width:100%;flex-direction:row;background:transparent;display:flex;justify-content:space-between;align-items:center;margin-bottom:3px}.verified-custd-mdl-add-cosigner-confirm-body-footer-ind{display:flex;flex-direction:column;align-items:center;gap:-6px;border-radius:2px}.verified-custd-mdl-add-cosigner-confirm-body-footer-ind-text-cont{display:flex;padding:4px 12px;justify-content:center;align-items:center;gap:10px;border-radius:6px;background:var(--secondary-electric-violet-600, #603FF4)}.verified-custd-mdl-add-cosigner-confirm-body-footer-ind-text{color:var(--Neutral-White-100, #FFF);text-align:center;font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:140%;margin:0}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-cont{width:100%;height:51px}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-cont{width:98%;height:16px;flex-shrink:0}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider{width:100%;height:5px;flex-shrink:0;border-radius:10px;background:var(--Neutral-100, #EEEEF0)}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-ind{height:5px;flex-shrink:0;border-radius:10px;background:var(--secondary-electric-violet-600, #603FF4);position:relative}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-icon{flex-shrink:0;position:absolute;top:-5px;right:0}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-text-cont{display:flex;width:100%;padding:10px 0;justify-content:space-between;align-items:center}.verified-custd-mdl-add-cosigner-confirm-body-footer-label-text{color:var(--Neutral-950, #0C0C0E);font-family:Roboto;font-size:12px;font-style:normal;font-weight:500;line-height:140%;margin:0;cursor:pointer}.verified-custd-mdl-a-c-2-b-content-header-body-header-icons{display:flex;justify-content:flex-end;align-items:center;gap:16px;margin-top:10px}.verified-custd-mdl-add-cosigner-step2-body-content-footer-dis{display:flex;align-items:center;gap:4px;margin-bottom:18px}.verified-custd-mdl-add-cosigner-step2-body-content-footer-text-dis{color:var(--Neutral-300, #B6B7C3);text-align:right;font-family:Roboto;font-size:14px;font-style:normal;font-weight:500;line-height:150%}.verified-custd-mdl-startup-contact-content-heder-cont{width:100%;display:flex;justify-content:space-between;flex-direction:row}.verified-custd-mdl-add-cosigner-confirm-body-content-outter{background:#0006;z-index:5;position:absolute;width:100%;bottom:0;right:0;left:0;height:100%;display:flex;flex-direction:column-reverse}.verified-custd-mdl-portfolio-page-content-header-button{display:flex;padding:6px 12px;align-items:center;gap:4px;border-radius:32px;background:var(--secondary-electric-violet-900, #362689);cursor:pointer;color:var(--Neutral-White-100, var(--common-white_states-main, #fff));border:none;width:fit-content;max-width:150px;font-family:Roboto;font-size:.65rem;font-style:normal;font-weight:400;line-height:140%;word-wrap:break-word;height:30px}.verified-custd-mdl-portfolio-page-content-header-button-cont{width:fit-content;height:fit-content;display:flex;flex-direction:column;gap:4px;justify-content:flex-start;position:relative}.verified-custd-mdl-portfolio-page-content-header-button-body{height:fit-content;width:fit-content;display:flex;flex-direction:column;gap:4px;border:none;border-radius:10px;background:var(--Neutral-50, #f7f7f8);padding:10px;position:absolute;top:33px;right:0}.verified-custd-mdl-portfolio-page-content-header-button-body-cont{background:none;cursor:pointer;border:1px solid transparent;padding:5px}.verified-custd-mdl-portfolio-page-content-header-button-body-cont:hover{border:1px solid #362689;background:transparent}.verified-custd-mdl-portfolio-page-content-header-button-body-text{width:110px;font-family:Roboto;font-size:.65rem;font-style:normal;font-weight:400;line-height:140%;word-wrap:break-word}.verified-custd-mdl-profile-popup-content-third{display:flex;padding:12px;flex-direction:column;align-items:flex-start;gap:12px;align-self:stretch;border-radius:var(--space-8px, 8px);background:var(--common-white_states-main, #fff);box-shadow:0 0 16px #0000001f}.verified-custd-mdl-profile-popup-content-third-container{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:12px;align-self:stretch}.verified-custd-mdl-profile-popup-content-third-content,.verified-custd-mdl-profile-popup-content-third-content-tkn{display:flex;padding:4px var(--space-0, 0px);justify-content:space-between;align-items:center;align-self:stretch;border-radius:var(--space-8px, 8px);cursor:pointer}.verified-custd-mdl-profile-popup-content-third-content-text-container{display:flex;align-items:center;gap:var(--space-8px, 8px)}.verified-custd-mdl-profile-popup-content-third-content-text{color:var(--Neutral-900, #383842);font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:400;line-height:150%;max-width:170px;word-wrap:break-word}.verified-custd-mdl-profile-popup-content-third-content-line{width:100%;height:1px;background:#eeeef0}.verified-custd-mdl-profile-popup-content-third-content-tkn:hover{border:#362689 1px solid}.verified-custd-mdl-profile-popup-content{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:16px;align-self:stretch}.verified-custd-mdl-asset-layout-content{display:inline-flex;padding:0 20px 155px;flex-direction:column;align-items:flex-start;gap:20px;border-radius:8px;background:var(--Neutral-White-100, #fff);width:100%;height:100%}.verified-custd-mdl-profile-popup-content-second{display:flex;padding:12px;flex-direction:column;align-items:flex-start;gap:12px;align-self:stretch;border-radius:var(--space-8px, 8px);background:var(--common-white_states-main, #fff);box-shadow:0 0 16px #0000001f}.verified-custd-mdl-profile-popup-content-second-text{color:var(--Neutral-900, #383842);text-align:center;font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:700;line-height:150%}.verified-custd-mdl-profile-popup-content-second-container{display:flex;justify-content:space-between;align-items:center;align-self:stretch}.verified-custd-mdl-profile-popup-content-second-content{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:var(--space-8px, 8px);border-radius:24px;cursor:pointer}.verified-custd-mdl-profile-popup-content-second-content-icon{display:flex;padding:12px;flex-direction:column;align-items:center;gap:var(--space-8px, 8px);border-radius:4px;background:var(--secondary-electric-violet-50, #ecefff)}.verified-custd-mdl-profile-popup-content-second-content-text{color:#000;text-align:center;font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:400;line-height:1.125rem;text-transform:capitalize;width:fit-content;max-width:60px;height:36px}.verified-custd-mdl-profile-popup-content-third-button{display:flex;width:100px;padding:6px 14px;justify-content:center;align-items:center;gap:10px;border-radius:100px;border:1px solid var(--secondary-electric-violet-700, #4e2bd7)}.verified-custd-mdl-profile-popup-content-third-button-text{color:var(--secondary-electric-violet-600, #603ff4);text-align:center;font-family:Roboto;font-size:.875rem;font-style:normal;font-weight:600;line-height:125%}.verified-custd-mdl-offer-security-popup-info-content{display:flex;padding:6px 12px;justify-content:center;align-items:center;gap:10px;background:var(--common-white_states-main, #fff);position:absolute;top:-1;left:4px;width:230px;border-radius:2px;z-index:3;box-shadow:0 0 16px #0000001f}.verified-custd-mdl-offer-security-popup-info-content-text{color:var(--Neutral-900, #383842);width:auto;max-width:300px;height:fit-content;word-wrap:break-word;overflow-wrap:break-word;font-family:Roboto;font-size:.75rem;font-style:normal;font-weight:400;line-height:140%}\\n\");","if (\r\n typeof window !== \"undefined\" &&\r\n typeof (window as any).chrome === \"undefined\"\r\n) {\r\n (window as any).chrome = {};\r\n}\r\n","if (\r\n typeof global !== \"undefined\" &&\r\n typeof global.crypto === \"undefined\" &&\r\n typeof navigator !== \"undefined\" &&\r\n navigator.product === \"ReactNative\"\r\n) {\r\n try {\r\n require(\"react-native-get-random-values\");\r\n } catch (err) {\r\n console.warn(\"react native [polyfillCrypto] Failed to load polyfill:\", err);\r\n }\r\n}\r\n","// platform.ts\r\nimport React, { forwardRef } from \"react\";\r\nimport { imageAssets } from \"../utils/constants\";\r\nimport { globalStyles } from \"./globalStyle\";\r\n\r\nlet isReactNative = false;\r\nlet isInitialized = false;\r\n\r\nlet View: any,\r\n Text: any,\r\n Image: any,\r\n ScrollView: any,\r\n StyleSheet: any,\r\n TextInput: any,\r\n TouchableOpacity: any,\r\n ActivityIndicator: any,\r\n Font: any,\r\n AsyncStorage: any,\r\n EventEmitter: any,\r\n styles: any,\r\n rnPasskey: any;\r\n\r\nconst initPlatform = async () => {\r\n if (isInitialized) return;\r\n\r\n const isRunningInReactNative =\r\n typeof navigator !== \"undefined\" && navigator.product === \"ReactNative\";\r\n\r\n if (isRunningInReactNative) {\r\n console.log(\"Initializing React Native platform...\");\r\n const RN = await import(\"react-native\");\r\n const events = await import(\"events\");\r\n const font = await import(\"expo-font\");\r\n Font = font.default; //expo pick the required fonts automatically???\r\n const reactStorage = await import(\r\n \"@react-native-async-storage/async-storage\"\r\n );\r\n const passKey = await import(\"react-native-passkey\");\r\n rnPasskey = await passKey.Passkey;\r\n AsyncStorage = reactStorage.default;\r\n EventEmitter = events.EventEmitter;\r\n\r\n const filterPropsRN = ({ className, id, ...rest }: any) => rest;\r\n\r\n const wrapRNTags = (Component: any) => (props: any) =>\r\n <Component {...filterPropsRN(props)} />;\r\n\r\n View = wrapRNTags(RN.View);\r\n Text = wrapRNTags(RN.Text);\r\n Image = wrapRNTags(RN.Image);\r\n ScrollView = wrapRNTags(RN.ScrollView);\r\n StyleSheet = RN.StyleSheet;\r\n TextInput = wrapRNTags(RN.TextInput);\r\n TouchableOpacity = wrapRNTags(RN.TouchableOpacity);\r\n ActivityIndicator = wrapRNTags(RN.ActivityIndicator);\r\n styles = RN.StyleSheet.create(globalStyles);\r\n isReactNative = true;\r\n console.log(\"React Native platform initialized.\");\r\n } else {\r\n console.log(\"Initializing Web platform...\");\r\n const { motion } = await import(\"framer-motion\");\r\n\r\n View = ({ onPress, ...rest }: any) => <div onClick={onPress} {...rest} />;\r\n Text = ({ onPress, ...rest }: any) => <span onClick={onPress} {...rest} />;\r\n Image = ({ onPress, source, ...rest }: any) => (\r\n <img onClick={onPress} {...rest} src={source?.uri} />\r\n );\r\n ScrollView = (props: any) => (\r\n <div style={{ overflowY: \"auto\", ...props.style }}>{props.children}</div>\r\n );\r\n StyleSheet = {\r\n create: (styles: any) => styles,\r\n };\r\n styles = {};\r\n TextInput = forwardRef(\r\n (\r\n {\r\n onChangeText,\r\n onInput,\r\n onKeyDown,\r\n onKeyPress,\r\n value,\r\n keyboardType,\r\n secureTextEntry,\r\n onSubmitEditing,\r\n blurOnSubmit,\r\n placeholderTextColor,\r\n ...rest\r\n }: any,\r\n ref\r\n ) => (\r\n <input\r\n {...rest}\r\n ref={ref}\r\n value={value}\r\n onInput={(e: any) => {\r\n onInput?.(e);\r\n onChangeText?.(e.target.value);\r\n }}\r\n onKeyDown={(e: any) => {\r\n if (e.key === \"Enter\") {\r\n e.preventDefault();\r\n onSubmitEditing?.(e);\r\n }\r\n onKeyDown?.(e);\r\n onKeyPress?.(e);\r\n }}\r\n type={\r\n secureTextEntry\r\n ? \"password\"\r\n : keyboardType === \"numeric\" || keyboardType === \"number-pad\"\r\n ? \"tel\"\r\n : \"text\"\r\n }\r\n onChange={() => {}}\r\n />\r\n )\r\n );\r\n\r\n TouchableOpacity = ({ onPress, style, ...rest }: any) => (\r\n <button\r\n style={{ outline: \"none\", border: \"none\", ...style }}\r\n onClick={onPress}\r\n {...rest}\r\n >\r\n {rest.children}\r\n </button>\r\n );\r\n\r\n ActivityIndicator = ({ color, size, ...rest }: any) => (\r\n <motion.img\r\n height=\"50px\"\r\n width=\"50px\"\r\n src={imageAssets.loadingIcon}\r\n alt=\"Loading...\"\r\n animate={{\r\n rotate: 360,\r\n scale: [1, 1.5, 1],\r\n }}\r\n transition={{\r\n duration: 2,\r\n repeat: Infinity,\r\n ease: \"linear\",\r\n }}\r\n {...rest}\r\n />\r\n );\r\n\r\n isReactNative = false;\r\n console.log(\"Web platform initialized.\");\r\n }\r\n\r\n isInitialized = true;\r\n};\r\n\r\nconst getPlatformComponents = () => {\r\n if (!isInitialized) {\r\n throw new Error(\r\n \"Platform not initialized. Call `await initPlatform()` first.\"\r\n );\r\n }\r\n\r\n return {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n StyleSheet,\r\n TextInput,\r\n TouchableOpacity,\r\n ActivityIndicator,\r\n Font,\r\n AsyncStorage,\r\n EventEmitter,\r\n styles,\r\n rnPasskey,\r\n };\r\n};\r\n\r\nexport { initPlatform, getPlatformComponents };\r\n","export const defaultChainId = 8453;\r\n\r\n//process.env.REACT_APP_NODE_ENV === \"production\" ? 8453 : 84532; //Base mainnet for production or Base Sepolia for developement\r\n\r\nexport const defaultVerifiedUrl =\r\n process.env.REACT_APP_NODE_ENV === \"production\"\r\n ? \"https://wallet.verified.network\"\r\n : \"https://veripay-bac0b.web.app\";\r\n\r\nexport const verifiedWebsiteUrls = [\r\n \"https://veripay-bac0b.web.app\",\r\n \"https://wallet.verified.network\",\r\n \"https://verified-l1.web.app\",\r\n \"https://invest.verified.network\",\r\n];\r\n\r\nexport const allGoogleFontUrls = [\r\n \"https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\",\r\n \"https://fonts.googleapis.com/css2?family=Manrope:wght@200..800&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\",\r\n \"https://fonts.googleapis.com/css2?family=Hind:wght@300;400;500;600;700&display=swap\",\r\n];\r\n\r\nexport const newTransactionEventHash =\r\n \"0x7f8d3f14b960b3bcf34baea4b46178e331b54a33e565d7d50d77cdfe9e926fe8\";\r\n\r\nexport const numberPositions = {\r\n 1: \"1st\",\r\n 2: \"2nd\",\r\n 3: \"3rd\",\r\n 4: \"4th\",\r\n 5: \"5th\",\r\n};\r\n\r\nexport const numberPositionsFmt = {\r\n 1: \"1 st\",\r\n 2: \"2 nd\",\r\n 3: \"3 rd\",\r\n 4: \"4 th\",\r\n 5: \"5 th\",\r\n};\r\n\r\nexport const actionTexts = {\r\n connect_wallet: \"connect your account\",\r\n eth_requestAccounts: \"connect your account\",\r\n getPk: \"recover your account details\",\r\n invitation: \"accept Co-Signer invitation\",\r\n signRecovery: \"sign account recovery\",\r\n completeRecovery: \"restore login access\",\r\n eth_sendTransaction: \"sign smart contract interaction\",\r\n};\r\n\r\nexport const imageAssets = {\r\n successIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/succes-page-icon.svg\",\r\n usaFlag:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/Flag-United-States-of-America%201.svg\",\r\n privacyTip:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/privacy_tip.svg\",\r\n addCoSignerIcon1:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/add-cosigner-icon-1.svg\",\r\n addCoSignerIcon2:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/add-cosigner-icon-2.svg\",\r\n addCoSignerIcon3:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/add-cosigner-icon-3.svg\",\r\n addCoSignerIcon4:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/add-cosigner-icon-4.svg\",\r\n pkicon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/pk-icon.svg\",\r\n encryptedIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/encrypted-icon.svg\",\r\n pinHide:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/pin-hide-icon.svg\",\r\n pinShow:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/pin-show-icon.svg\",\r\n arrowUp:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/contact-arrow-up.svg\",\r\n arrowDown:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/contact-dropdown.svg\",\r\n editBlue:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/edit.svg\",\r\n editBlack:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/edit-icon.svg\",\r\n search:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/search-icon.svg\",\r\n circleClicked:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/check-circle-icon.svg\",\r\n supervise:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/supervisor-icon.svg\",\r\n delete:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/delete-icon.svg\",\r\n pointer:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/pointer-icon.svg\",\r\n sliderDot:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/slider-icon.svg\",\r\n select:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/select-icon.svg\",\r\n selectClicked:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/select-clicked-icon.svg\",\r\n addIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/plus-circle-icon.svg\",\r\n addDisableIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/plus-circle-dis.svg\",\r\n errorAlert:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/error-icon.svg\",\r\n successAlert:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/success-icon.svg\",\r\n loadingIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/loading-icon.png\",\r\n checkCircle:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/check-circle.svg\",\r\n expandRight:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/chevron-right-icon.svg\",\r\n closeIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/close-icon.svg\",\r\n infoBlue:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/info-blue.svg\",\r\n profileEdit:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/profile-pic-edit.svg\",\r\n infoReference:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/quick_reference.svg\",\r\n profileQuestions:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/shield_question.svg\",\r\n verifiedCheckMark:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/verified-checkmark.svg\",\r\n friends:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/friends.svg\",\r\n baseIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/base-icon.svg\",\r\n ethereumIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/ethereum-icon.svg\",\r\n gnosisIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/gnois-icon.svg\",\r\n copyIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/copy_icon.svg\",\r\n errorIcon:\r\n \"https://raw.githubusercontent.com/kallolborah/verified-public-assets/main/error.svg\",\r\n};\r\n\r\nexport const countriesDetails = [\r\n {\r\n name: \"Afghanistan\",\r\n code: \"AF\",\r\n currency: \"AFN\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/af.webp\",\r\n phone_code: \"93\",\r\n },\r\n {\r\n name: \"Albania\",\r\n code: \"AL\",\r\n currency: \"ALL\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/al.webp\",\r\n phone_code: \"355\",\r\n },\r\n {\r\n name: \"Algeria\",\r\n code: \"DZ\",\r\n currency: \"DZD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/dz.webp\",\r\n phone_code: \"213\",\r\n },\r\n {\r\n name: \"American Samoa\",\r\n code: \"AS\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/as.webp\",\r\n phone_code: \"1-684\",\r\n },\r\n {\r\n name: \"Andorra\",\r\n code: \"AD\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ad.webp\",\r\n phone_code: \"376\",\r\n },\r\n {\r\n name: \"Angola\",\r\n code: \"AO\",\r\n currency: \"AOA\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ao.webp\",\r\n phone_code: \"244\",\r\n },\r\n {\r\n name: \"Anguilla\",\r\n code: \"AI\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ai.webp\",\r\n phone_code: \"1-264\",\r\n },\r\n {\r\n name: \"Antarctica\",\r\n code: \"AQ\",\r\n currency: \"N/A\",\r\n continent: \"Antarctica\",\r\n flag: \"https://flagpedia.net/data/flags/h80/aq.webp\",\r\n phone_code: \"N/A\",\r\n },\r\n {\r\n name: \"Antigua and Barbuda\",\r\n code: \"AG\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ag.webp\",\r\n phone_code: \"1-268\",\r\n },\r\n {\r\n name: \"Argentina\",\r\n code: \"AR\",\r\n currency: \"ARS\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ar.webp\",\r\n phone_code: \"54\",\r\n },\r\n {\r\n name: \"Armenia\",\r\n code: \"AM\",\r\n currency: \"AMD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/am.webp\",\r\n phone_code: \"374\",\r\n },\r\n {\r\n name: \"Aruba\",\r\n code: \"AW\",\r\n currency: \"AWG\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/aw.webp\",\r\n phone_code: \"297\",\r\n },\r\n {\r\n name: \"Australia\",\r\n code: \"AU\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/au.webp\",\r\n phone_code: \"61\",\r\n },\r\n {\r\n name: \"Austria\",\r\n code: \"AT\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/at.webp\",\r\n phone_code: \"43\",\r\n },\r\n {\r\n name: \"Azerbaijan\",\r\n code: \"AZ\",\r\n currency: \"AZN\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/az.webp\",\r\n phone_code: \"994\",\r\n },\r\n {\r\n name: \"Bahamas\",\r\n code: \"BS\",\r\n currency: \"BSD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bs.webp\",\r\n phone_code: \"1-242\",\r\n },\r\n {\r\n name: \"Bahrain\",\r\n code: \"BH\",\r\n currency: \"BHD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bh.webp\",\r\n phone_code: \"973\",\r\n },\r\n {\r\n name: \"Bangladesh\",\r\n code: \"BD\",\r\n currency: \"BDT\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bd.webp\",\r\n phone_code: \"880\",\r\n },\r\n {\r\n name: \"Barbados\",\r\n code: \"BB\",\r\n currency: \"BBD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bb.webp\",\r\n phone_code: \"1-246\",\r\n },\r\n {\r\n name: \"Belarus\",\r\n code: \"BY\",\r\n currency: \"BYR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/by.webp\",\r\n phone_code: \"375\",\r\n },\r\n {\r\n name: \"Belgium\",\r\n code: \"BE\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/be.webp\",\r\n phone_code: \"32\",\r\n },\r\n {\r\n name: \"Belize\",\r\n code: \"BZ\",\r\n currency: \"BZD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bz.webp\",\r\n phone_code: \"501\",\r\n },\r\n {\r\n name: \"Benin\",\r\n code: \"BJ\",\r\n currency: \"XOF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bj.webp\",\r\n phone_code: \"229\",\r\n },\r\n {\r\n name: \"Bermuda\",\r\n code: \"BM\",\r\n currency: \"BMD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bm.webp\",\r\n phone_code: \"1-441\",\r\n },\r\n {\r\n name: \"Bhutan\",\r\n code: \"BT\",\r\n currency: \"BTN\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bt.webp\",\r\n phone_code: \"975\",\r\n },\r\n {\r\n name: \"Bolivia\",\r\n code: \"BO\",\r\n currency: \"BOB\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bo.webp\",\r\n phone_code: \"591\",\r\n },\r\n {\r\n name: \"Bosnia and Herzegovina\",\r\n code: \"BA\",\r\n currency: \"BAM\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ba.webp\",\r\n phone_code: \"387\",\r\n },\r\n {\r\n name: \"Botswana\",\r\n code: \"BW\",\r\n currency: \"BWP\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bw.webp\",\r\n phone_code: \"267\",\r\n },\r\n {\r\n name: \"Brazil\",\r\n code: \"BR\",\r\n currency: \"BRL\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/br.webp\",\r\n phone_code: \"55\",\r\n },\r\n {\r\n name: \"British Indian Ocean Territory\",\r\n code: \"IO\",\r\n currency: \"USD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/io.webp\",\r\n phone_code: \"246\",\r\n },\r\n {\r\n name: \"Brunei Darussalam\",\r\n code: \"BN\",\r\n currency: \"BND\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bn.webp\",\r\n phone_code: \"673\",\r\n },\r\n {\r\n name: \"Bulgaria\",\r\n code: \"BG\",\r\n currency: \"BGN\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bg.webp\",\r\n phone_code: \"359\",\r\n },\r\n {\r\n name: \"Burkina Faso\",\r\n code: \"BF\",\r\n currency: \"XOF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bf.webp\",\r\n phone_code: \"226\",\r\n },\r\n {\r\n name: \"Burundi\",\r\n code: \"BI\",\r\n currency: \"BIF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bi.webp\",\r\n phone_code: \"257\",\r\n },\r\n {\r\n name: \"Cambodia\",\r\n code: \"KH\",\r\n currency: \"KHR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kh.webp\",\r\n phone_code: \"855\",\r\n },\r\n {\r\n name: \"Cameroon\",\r\n code: \"CM\",\r\n currency: \"CFA\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cm.webp\",\r\n phone_code: \"237\",\r\n },\r\n {\r\n name: \"Canada\",\r\n code: \"CA\",\r\n currency: \"CAD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ca.webp\",\r\n phone_code: \"1\",\r\n },\r\n {\r\n name: \"Cape Verde\",\r\n code: \"CV\",\r\n currency: \"CVE\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cv.webp\",\r\n phone_code: \"238\",\r\n },\r\n {\r\n name: \"Cayman Islands\",\r\n code: \"KY\",\r\n currency: \"KYD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ky.webp\",\r\n phone_code: \"1-345\",\r\n },\r\n {\r\n name: \"Central African Republic\",\r\n code: \"CF\",\r\n currency: \"XAF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cf.webp\",\r\n phone_code: \"236\",\r\n },\r\n {\r\n name: \"Chad\",\r\n code: \"TD\",\r\n currency: \"CDF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/td.webp\",\r\n phone_code: \"235\",\r\n },\r\n {\r\n name: \"Chile\",\r\n code: \"CL\",\r\n currency: \"CLP\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cl.webp\",\r\n phone_code: \"56\",\r\n },\r\n {\r\n name: \"China\",\r\n code: \"CN\",\r\n currency: \"CNY\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cn.webp\",\r\n phone_code: \"86\",\r\n },\r\n {\r\n name: \"Christmas Island\",\r\n code: \"CX\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cx.webp\",\r\n phone_code: \"61\",\r\n },\r\n {\r\n name: \"Cocos (Keeling) Islands\",\r\n code: \"CC\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cc.webp\",\r\n phone_code: \"61\",\r\n },\r\n {\r\n name: \"Colombia\",\r\n code: \"CO\",\r\n currency: \"COP\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/co.webp\",\r\n phone_code: \"57\",\r\n },\r\n {\r\n name: \"Comoros\",\r\n code: \"KM\",\r\n currency: \"KMF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/km.webp\",\r\n phone_code: \"269\",\r\n },\r\n {\r\n name: \"Congo (Congo-Brazzaville)\",\r\n code: \"CG\",\r\n currency: \"CDF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cg.webp\",\r\n phone_code: \"242\",\r\n },\r\n {\r\n name: \"Congo (Democratic Republic of the Congo)\",\r\n code: \"CD\",\r\n currency: \"CDF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cd.webp\",\r\n phone_code: \"243\",\r\n },\r\n {\r\n name: \"Cook Islands\",\r\n code: \"CK\",\r\n currency: \"NZD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ck.webp\",\r\n phone_code: \"682\",\r\n },\r\n {\r\n name: \"Costa Rica\",\r\n code: \"CR\",\r\n currency: \"CRC\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cr.webp\",\r\n phone_code: \"506\",\r\n },\r\n {\r\n name: \"Croatia\",\r\n code: \"HR\",\r\n currency: \"HRK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/hr.webp\",\r\n phone_code: \"385\",\r\n },\r\n {\r\n name: \"Cuba\",\r\n code: \"CU\",\r\n currency: \"CUP\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cu.webp\",\r\n phone_code: \"53\",\r\n },\r\n {\r\n name: \"Curaçao\",\r\n code: \"CW\",\r\n currency: \"AWG\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cw.webp\",\r\n phone_code: \"599\",\r\n },\r\n {\r\n name: \"Cyprus\",\r\n code: \"CY\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cy.webp\",\r\n phone_code: \"357\",\r\n },\r\n {\r\n name: \"Czech Republic\",\r\n code: \"CZ\",\r\n currency: \"CZK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/cz.webp\",\r\n phone_code: \"420\",\r\n },\r\n {\r\n name: \"Denmark\",\r\n code: \"DK\",\r\n currency: \"DKK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/dk.webp\",\r\n phone_code: \"45\",\r\n },\r\n {\r\n name: \"Djibouti\",\r\n code: \"DJ\",\r\n currency: \"DJF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/dj.webp\",\r\n phone_code: \"253\",\r\n },\r\n {\r\n name: \"Dominica\",\r\n code: \"DM\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/dm.webp\",\r\n phone_code: \"1-767\",\r\n },\r\n {\r\n name: \"Dominican Republic\",\r\n code: \"DO\",\r\n currency: \"DOP\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/do.webp\",\r\n phone_code: \"1-809\",\r\n },\r\n {\r\n name: \"Ecuador\",\r\n code: \"EC\",\r\n currency: \"USD\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ec.webp\",\r\n phone_code: \"593\",\r\n },\r\n {\r\n name: \"Egypt\",\r\n code: \"EG\",\r\n currency: \"EGP\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/eg.webp\",\r\n phone_code: \"20\",\r\n },\r\n {\r\n name: \"El Salvador\",\r\n code: \"SV\",\r\n currency: \"SVC\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sv.webp\",\r\n phone_code: \"503\",\r\n },\r\n {\r\n name: \"Equatorial Guinea\",\r\n code: \"GQ\",\r\n currency: \"GNF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gq.webp\",\r\n phone_code: \"240\",\r\n },\r\n {\r\n name: \"Eritrea\",\r\n code: \"ER\",\r\n currency: \"ERN\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/er.webp\",\r\n phone_code: \"291\",\r\n },\r\n {\r\n name: \"Estonia\",\r\n code: \"EE\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ee.webp\",\r\n phone_code: \"372\",\r\n },\r\n {\r\n name: \"Eswatini\",\r\n code: \"SZ\",\r\n currency: \"SZL\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sz.webp\",\r\n phone_code: \"268\",\r\n },\r\n {\r\n name: \"Ethiopia\",\r\n code: \"ET\",\r\n currency: \"ETB\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/et.webp\",\r\n phone_code: \"251\",\r\n },\r\n {\r\n name: \"Falkland Islands\",\r\n code: \"FK\",\r\n currency: \"FKP\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fk.webp\",\r\n phone_code: \"500\",\r\n },\r\n {\r\n name: \"Faroe Islands\",\r\n code: \"FO\",\r\n currency: \"DKK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fo.webp\",\r\n phone_code: \"298\",\r\n },\r\n {\r\n name: \"Fiji\",\r\n code: \"FJ\",\r\n currency: \"FJD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fj.webp\",\r\n phone_code: \"679\",\r\n },\r\n {\r\n name: \"Finland\",\r\n code: \"FI\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fi.webp\",\r\n phone_code: \"358\",\r\n },\r\n {\r\n name: \"France\",\r\n code: \"FR\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fr.webp\",\r\n phone_code: \"33\",\r\n },\r\n {\r\n name: \"Gabon\",\r\n code: \"GA\",\r\n currency: \"GAB\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ga.webp\",\r\n phone_code: \"241\",\r\n },\r\n {\r\n name: \"Gambia\",\r\n code: \"GM\",\r\n currency: \"GMD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gm.webp\",\r\n phone_code: \"220\",\r\n },\r\n {\r\n name: \"Georgia\",\r\n code: \"GE\",\r\n currency: \"GEL\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ge.webp\",\r\n phone_code: \"995\",\r\n },\r\n {\r\n name: \"Germany\",\r\n code: \"DE\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/de.webp\",\r\n phone_code: \"49\",\r\n },\r\n {\r\n name: \"Ghana\",\r\n code: \"GH\",\r\n currency: \"GHS\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gh.webp\",\r\n phone_code: \"233\",\r\n },\r\n {\r\n name: \"Greece\",\r\n code: \"GR\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gr.webp\",\r\n phone_code: \"30\",\r\n },\r\n {\r\n name: \"Greenland\",\r\n code: \"GL\",\r\n currency: \"DKK\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gl.webp\",\r\n phone_code: \"299\",\r\n },\r\n {\r\n name: \"Grenada\",\r\n code: \"GD\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gd.webp\",\r\n phone_code: \"1-473\",\r\n },\r\n {\r\n name: \"Guadeloupe\",\r\n code: \"GP\",\r\n currency: \"EUR\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gp.webp\",\r\n phone_code: \"590\",\r\n },\r\n {\r\n name: \"Guam\",\r\n code: \"GU\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gu.webp\",\r\n phone_code: \"1-671\",\r\n },\r\n {\r\n name: \"Guatemala\",\r\n code: \"GT\",\r\n currency: \"GTQ\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gt.webp\",\r\n phone_code: \"502\",\r\n },\r\n {\r\n name: \"Guinea\",\r\n code: \"GN\",\r\n currency: \"GNF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gn.webp\",\r\n phone_code: \"224\",\r\n },\r\n {\r\n name: \"Guinea-Bissau\",\r\n code: \"GW\",\r\n currency: \"GNF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gw.webp\",\r\n phone_code: \"245\",\r\n },\r\n {\r\n name: \"Guyana\",\r\n code: \"GY\",\r\n currency: \"GYD\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gy.webp\",\r\n phone_code: \"592\",\r\n },\r\n {\r\n name: \"Haiti\",\r\n code: \"HT\",\r\n currency: \"HTG\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ht.webp\",\r\n phone_code: \"509\",\r\n },\r\n {\r\n name: \"Heard Island and McDonald Islands\",\r\n code: \"HM\",\r\n currency: \"AUD\",\r\n continent: \"Australia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/hm.webp\",\r\n phone_code: \"61\",\r\n },\r\n {\r\n name: \"Honduras\",\r\n code: \"HN\",\r\n currency: \"HNL\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/hn.webp\",\r\n phone_code: \"504\",\r\n },\r\n {\r\n name: \"Hong Kong\",\r\n code: \"HK\",\r\n currency: \"HKD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/hk.webp\",\r\n phone_code: \"852\",\r\n },\r\n {\r\n name: \"Hungary\",\r\n code: \"HU\",\r\n currency: \"HUF\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/hu.webp\",\r\n phone_code: \"36\",\r\n },\r\n {\r\n name: \"Iceland\",\r\n code: \"IS\",\r\n currency: \"ISK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/is.webp\",\r\n phone_code: \"354\",\r\n },\r\n {\r\n name: \"India\",\r\n code: \"IN\",\r\n currency: \"INR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/in.webp\",\r\n phone_code: \"91\",\r\n },\r\n {\r\n name: \"Indonesia\",\r\n code: \"ID\",\r\n currency: \"IDR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/id.webp\",\r\n phone_code: \"62\",\r\n },\r\n {\r\n name: \"Iran\",\r\n code: \"IR\",\r\n currency: \"IRR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ir.webp\",\r\n phone_code: \"98\",\r\n },\r\n {\r\n name: \"Iraq\",\r\n code: \"IQ\",\r\n currency: \"IQD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/iq.webp\",\r\n phone_code: \"964\",\r\n },\r\n {\r\n name: \"Ireland\",\r\n code: \"IE\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ie.webp\",\r\n phone_code: \"353\",\r\n },\r\n {\r\n name: \"Israel\",\r\n code: \"IL\",\r\n currency: \"ILS\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/il.webp\",\r\n phone_code: \"972\",\r\n },\r\n {\r\n name: \"Italy\",\r\n code: \"IT\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/it.webp\",\r\n phone_code: \"39\",\r\n },\r\n {\r\n name: \"Jamaica\",\r\n code: \"JM\",\r\n currency: \"JMD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/jm.webp\",\r\n phone_code: \"1-876\",\r\n },\r\n {\r\n name: \"Japan\",\r\n code: \"JP\",\r\n currency: \"JPY\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/jp.webp\",\r\n phone_code: \"81\",\r\n },\r\n {\r\n name: \"Jordan\",\r\n code: \"JO\",\r\n currency: \"JOD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/jo.webp\",\r\n phone_code: \"962\",\r\n },\r\n {\r\n name: \"Kazakhstan\",\r\n code: \"KZ\",\r\n currency: \"KZT\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kz.webp\",\r\n phone_code: \"7\",\r\n },\r\n {\r\n name: \"Kenya\",\r\n code: \"KE\",\r\n currency: \"KES\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ke.webp\",\r\n phone_code: \"254\",\r\n },\r\n {\r\n name: \"Kiribati\",\r\n code: \"KI\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ki.webp\",\r\n phone_code: \"686\",\r\n },\r\n {\r\n name: \"Korea (North)\",\r\n code: \"KP\",\r\n currency: \"KPW\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kp.webp\",\r\n phone_code: \"850\",\r\n },\r\n {\r\n name: \"Korea (South)\",\r\n code: \"KR\",\r\n currency: \"KRW\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kr.webp\",\r\n phone_code: \"82\",\r\n },\r\n {\r\n name: \"Kuwait\",\r\n code: \"KW\",\r\n currency: \"KWD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kw.webp\",\r\n phone_code: \"965\",\r\n },\r\n {\r\n name: \"Kyrgyzstan\",\r\n code: \"KG\",\r\n currency: \"KGS\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kg.webp\",\r\n phone_code: \"996\",\r\n },\r\n {\r\n name: \"Laos\",\r\n code: \"LA\",\r\n currency: \"LAK\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/la.webp\",\r\n phone_code: \"856\",\r\n },\r\n {\r\n name: \"Latvia\",\r\n code: \"LV\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lv.webp\",\r\n phone_code: \"371\",\r\n },\r\n {\r\n name: \"Lebanon\",\r\n code: \"LB\",\r\n currency: \"LBP\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lb.webp\",\r\n phone_code: \"961\",\r\n },\r\n {\r\n name: \"Lesotho\",\r\n code: \"LS\",\r\n currency: \"LSL\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ls.webp\",\r\n phone_code: \"266\",\r\n },\r\n {\r\n name: \"Liberia\",\r\n code: \"LR\",\r\n currency: \"LRD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lr.webp\",\r\n phone_code: \"231\",\r\n },\r\n {\r\n name: \"Libya\",\r\n code: \"LY\",\r\n currency: \"LYD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ly.webp\",\r\n phone_code: \"218\",\r\n },\r\n {\r\n name: \"Liechtenstein\",\r\n code: \"LI\",\r\n currency: \"CHF\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/li.webp\",\r\n phone_code: \"423\",\r\n },\r\n {\r\n name: \"Lithuania\",\r\n code: \"LT\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lt.webp\",\r\n phone_code: \"370\",\r\n },\r\n {\r\n name: \"Luxembourg\",\r\n code: \"LU\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lu.webp\",\r\n phone_code: \"352\",\r\n },\r\n {\r\n name: \"Macau\",\r\n code: \"MO\",\r\n currency: \"MOP\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mo.webp\",\r\n phone_code: \"853\",\r\n },\r\n {\r\n name: \"Madagascar\",\r\n code: \"MG\",\r\n currency: \"MGA\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mg.webp\",\r\n phone_code: \"261\",\r\n },\r\n {\r\n name: \"Malawi\",\r\n code: \"MW\",\r\n currency: \"MWK\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mw.webp\",\r\n phone_code: \"265\",\r\n },\r\n {\r\n name: \"Malaysia\",\r\n code: \"MY\",\r\n currency: \"MYR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/my.webp\",\r\n phone_code: \"60\",\r\n },\r\n {\r\n name: \"Maldives\",\r\n code: \"MV\",\r\n currency: \"MVR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mv.webp\",\r\n phone_code: \"960\",\r\n },\r\n {\r\n name: \"Mali\",\r\n code: \"ML\",\r\n currency: \"XOF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ml.webp\",\r\n phone_code: \"223\",\r\n },\r\n {\r\n name: \"Malta\",\r\n code: \"MT\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mt.webp\",\r\n phone_code: \"356\",\r\n },\r\n {\r\n name: \"Marshall Islands\",\r\n code: \"MH\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mh.webp\",\r\n phone_code: \"692\",\r\n },\r\n {\r\n name: \"Martinique\",\r\n code: \"MQ\",\r\n currency: \"EUR\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mq.webp\",\r\n phone_code: \"596\",\r\n },\r\n {\r\n name: \"Mauritania\",\r\n code: \"MR\",\r\n currency: \"MRU\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mr.webp\",\r\n phone_code: \"222\",\r\n },\r\n {\r\n name: \"Mauritius\",\r\n code: \"MU\",\r\n currency: \"MUR\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mu.webp\",\r\n phone_code: \"230\",\r\n },\r\n {\r\n name: \"Mayotte\",\r\n code: \"YT\",\r\n currency: \"EUR\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/yt.webp\",\r\n phone_code: \"269\",\r\n },\r\n {\r\n name: \"Mexico\",\r\n code: \"MX\",\r\n currency: \"MXN\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mx.webp\",\r\n phone_code: \"52\",\r\n },\r\n {\r\n name: \"Micronesia\",\r\n code: \"FM\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/fm.webp\",\r\n phone_code: \"691\",\r\n },\r\n {\r\n name: \"Moldova\",\r\n code: \"MD\",\r\n currency: \"MDL\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/md.webp\",\r\n phone_code: \"373\",\r\n },\r\n {\r\n name: \"Monaco\",\r\n code: \"MC\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mc.webp\",\r\n phone_code: \"377\",\r\n },\r\n {\r\n name: \"Mongolia\",\r\n code: \"MN\",\r\n currency: \"MNT\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mn.webp\",\r\n phone_code: \"976\",\r\n },\r\n {\r\n name: \"Montenegro\",\r\n code: \"ME\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/me.webp\",\r\n phone_code: \"382\",\r\n },\r\n {\r\n name: \"Montserrat\",\r\n code: \"MS\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ms.webp\",\r\n phone_code: \"1-664\",\r\n },\r\n {\r\n name: \"Morocco\",\r\n code: \"MA\",\r\n currency: \"MAD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ma.webp\",\r\n phone_code: \"212\",\r\n },\r\n {\r\n name: \"Mozambique\",\r\n code: \"MZ\",\r\n currency: \"MZN\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mz.webp\",\r\n phone_code: \"258\",\r\n },\r\n {\r\n name: \"Myanmar\",\r\n code: \"MM\",\r\n currency: \"MMK\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mm.webp\",\r\n phone_code: \"95\",\r\n },\r\n {\r\n name: \"Namibia\",\r\n code: \"NA\",\r\n currency: \"NAD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/na.webp\",\r\n phone_code: \"264\",\r\n },\r\n {\r\n name: \"Nauru\",\r\n code: \"NR\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nr.webp\",\r\n phone_code: \"674\",\r\n },\r\n {\r\n name: \"Nepal\",\r\n code: \"NP\",\r\n currency: \"NPR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/np.webp\",\r\n phone_code: \"977\",\r\n },\r\n {\r\n name: \"Netherlands\",\r\n code: \"NL\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nl.webp\",\r\n phone_code: \"31\",\r\n },\r\n {\r\n name: \"New Caledonia\",\r\n code: \"NC\",\r\n currency: \"XPF\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nc.webp\",\r\n phone_code: \"687\",\r\n },\r\n {\r\n name: \"New Zealand\",\r\n code: \"NZ\",\r\n currency: \"NZD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nz.webp\",\r\n phone_code: \"64\",\r\n },\r\n {\r\n name: \"Nicaragua\",\r\n code: \"NI\",\r\n currency: \"NIO\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ni.webp\",\r\n phone_code: \"505\",\r\n },\r\n {\r\n name: \"Niger\",\r\n code: \"NE\",\r\n currency: \"NGN\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ne.webp\",\r\n phone_code: \"227\",\r\n },\r\n {\r\n name: \"Nigeria\",\r\n code: \"NG\",\r\n currency: \"NGN\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ng.webp\",\r\n phone_code: \"234\",\r\n },\r\n {\r\n name: \"Niue\",\r\n code: \"NU\",\r\n currency: \"NZD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nu.webp\",\r\n phone_code: \"683\",\r\n },\r\n {\r\n name: \"Norfolk Island\",\r\n code: \"NF\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/nf.webp\",\r\n phone_code: \"672\",\r\n },\r\n {\r\n name: \"North Macedonia\",\r\n code: \"MK\",\r\n currency: \"MKD\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mk.webp\",\r\n phone_code: \"389\",\r\n },\r\n {\r\n name: \"Northern Mariana Islands\",\r\n code: \"MP\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mp.webp\",\r\n phone_code: \"1-670\",\r\n },\r\n {\r\n name: \"Norway\",\r\n code: \"NO\",\r\n currency: \"NOK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/no.webp\",\r\n phone_code: \"47\",\r\n },\r\n {\r\n name: \"Oman\",\r\n code: \"OM\",\r\n currency: \"OMR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/om.webp\",\r\n phone_code: \"968\",\r\n },\r\n {\r\n name: \"Pakistan\",\r\n code: \"PK\",\r\n currency: \"PKR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pk.webp\",\r\n phone_code: \"92\",\r\n },\r\n {\r\n name: \"Palau\",\r\n code: \"PW\",\r\n currency: \"USD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pw.webp\",\r\n phone_code: \"680\",\r\n },\r\n {\r\n name: \"Panama\",\r\n code: \"PA\",\r\n currency: \"PAB\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pa.webp\",\r\n phone_code: \"507\",\r\n },\r\n {\r\n name: \"Papua New Guinea\",\r\n code: \"PG\",\r\n currency: \"PGK\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pg.webp\",\r\n phone_code: \"675\",\r\n },\r\n {\r\n name: \"Paraguay\",\r\n code: \"PY\",\r\n currency: \"PYG\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/py.webp\",\r\n phone_code: \"595\",\r\n },\r\n {\r\n name: \"Peru\",\r\n code: \"PE\",\r\n currency: \"PEN\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pe.webp\",\r\n phone_code: \"51\",\r\n },\r\n {\r\n name: \"Philippines\",\r\n code: \"PH\",\r\n currency: \"PHP\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ph.webp\",\r\n phone_code: \"63\",\r\n },\r\n {\r\n name: \"Pitcairn Islands\",\r\n code: \"PN\",\r\n currency: \"NZD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pn.webp\",\r\n phone_code: \"64\",\r\n },\r\n {\r\n name: \"Poland\",\r\n code: \"PL\",\r\n currency: \"PLN\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pl.webp\",\r\n phone_code: \"48\",\r\n },\r\n {\r\n name: \"Portugal\",\r\n code: \"PT\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pt.webp\",\r\n phone_code: \"351\",\r\n },\r\n {\r\n name: \"Puerto Rico\",\r\n code: \"PR\",\r\n currency: \"USD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pr.webp\",\r\n phone_code: \"1-787\",\r\n },\r\n {\r\n name: \"Qatar\",\r\n code: \"QA\",\r\n currency: \"QAR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/qa.webp\",\r\n phone_code: \"974\",\r\n },\r\n {\r\n name: \"Romania\",\r\n code: \"RO\",\r\n currency: \"RON\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ro.webp\",\r\n phone_code: \"40\",\r\n },\r\n {\r\n name: \"Russia\",\r\n code: \"RU\",\r\n currency: \"RUB\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ru.webp\",\r\n phone_code: \"7\",\r\n },\r\n {\r\n name: \"Rwanda\",\r\n code: \"RW\",\r\n currency: \"RWF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/rw.webp\",\r\n phone_code: \"250\",\r\n },\r\n {\r\n name: \"Saint Barthélemy\",\r\n code: \"BL\",\r\n currency: \"EUR\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/bl.webp\",\r\n phone_code: \"590\",\r\n },\r\n {\r\n name: \"Saint Helena\",\r\n code: \"SH\",\r\n currency: \"SHP\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sh.webp\",\r\n phone_code: \"290\",\r\n },\r\n {\r\n name: \"Saint Kitts and Nevis\",\r\n code: \"KN\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/kn.webp\",\r\n phone_code: \"1-869\",\r\n },\r\n {\r\n name: \"Saint Lucia\",\r\n code: \"LC\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lc.webp\",\r\n phone_code: \"1-758\",\r\n },\r\n {\r\n name: \"Saint Martin\",\r\n code: \"MF\",\r\n currency: \"EUR\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/mf.webp\",\r\n phone_code: \"590\",\r\n },\r\n {\r\n name: \"Saint Pierre and Miquelon\",\r\n code: \"PM\",\r\n currency: \"EUR\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/pm.webp\",\r\n phone_code: \"508\",\r\n },\r\n {\r\n name: \"Saint Vincent and the Grenadines\",\r\n code: \"VC\",\r\n currency: \"XCD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/vc.webp\",\r\n phone_code: \"1-784\",\r\n },\r\n {\r\n name: \"Samoa\",\r\n code: \"WS\",\r\n currency: \"WST\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ws.webp\",\r\n phone_code: \"685\",\r\n },\r\n {\r\n name: \"San Marino\",\r\n code: \"SM\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sm.webp\",\r\n phone_code: \"378\",\r\n },\r\n {\r\n name: \"Sao Tome and Principe\",\r\n code: \"ST\",\r\n currency: \"STN\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/st.webp\",\r\n phone_code: \"239\",\r\n },\r\n {\r\n name: \"Saudi Arabia\",\r\n code: \"SA\",\r\n currency: \"SAR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sa.webp\",\r\n phone_code: \"966\",\r\n },\r\n {\r\n name: \"Senegal\",\r\n code: \"SN\",\r\n currency: \"XOF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sn.webp\",\r\n phone_code: \"221\",\r\n },\r\n {\r\n name: \"Serbia\",\r\n code: \"RS\",\r\n currency: \"RSD\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/rs.webp\",\r\n phone_code: \"381\",\r\n },\r\n {\r\n name: \"Seychelles\",\r\n code: \"SC\",\r\n currency: \"SCR\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sc.webp\",\r\n phone_code: \"248\",\r\n },\r\n {\r\n name: \"Sierra Leone\",\r\n code: \"SL\",\r\n currency: \"SLL\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sl.webp\",\r\n phone_code: \"232\",\r\n },\r\n {\r\n name: \"Singapore\",\r\n code: \"SG\",\r\n currency: \"SGD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sg.webp\",\r\n phone_code: \"65\",\r\n },\r\n {\r\n name: \"Sint Eustatius\",\r\n code: \"SX\",\r\n currency: \"USD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sx.webp\",\r\n phone_code: \"599\",\r\n },\r\n {\r\n name: \"Sint Maarten\",\r\n code: \"SM\",\r\n currency: \"ANG\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sm.webp\",\r\n phone_code: \"1-721\",\r\n },\r\n {\r\n name: \"Slovakia\",\r\n code: \"SK\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sk.webp\",\r\n phone_code: \"421\",\r\n },\r\n {\r\n name: \"Slovenia\",\r\n code: \"SI\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/si.webp\",\r\n phone_code: \"386\",\r\n },\r\n {\r\n name: \"Solomon Islands\",\r\n code: \"SB\",\r\n currency: \"SBD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sb.webp\",\r\n phone_code: \"677\",\r\n },\r\n {\r\n name: \"Somalia\",\r\n code: \"SO\",\r\n currency: \"SOS\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/so.webp\",\r\n phone_code: \"252\",\r\n },\r\n {\r\n name: \"South Africa\",\r\n code: \"ZA\",\r\n currency: \"ZAR\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/za.webp\",\r\n phone_code: \"27\",\r\n },\r\n {\r\n name: \"South Georgia and the South Sandwich Islands\",\r\n code: \"GS\",\r\n currency: \"GBP\",\r\n continent: \"Antarctica\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gs.webp\",\r\n phone_code: \"500\",\r\n },\r\n {\r\n name: \"South Sudan\",\r\n code: \"SS\",\r\n currency: \"SSP\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ss.webp\",\r\n phone_code: \"211\",\r\n },\r\n {\r\n name: \"Spain\",\r\n code: \"ES\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/es.webp\",\r\n phone_code: \"34\",\r\n },\r\n {\r\n name: \"Sri Lanka\",\r\n code: \"LK\",\r\n currency: \"LKR\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/lk.webp\",\r\n phone_code: \"94\",\r\n },\r\n {\r\n name: \"Sudan\",\r\n code: \"SD\",\r\n currency: \"SDG\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sd.webp\",\r\n phone_code: \"249\",\r\n },\r\n {\r\n name: \"Suriname\",\r\n code: \"SR\",\r\n currency: \"SRD\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sr.webp\",\r\n phone_code: \"597\",\r\n },\r\n {\r\n name: \"Svalbard and Jan Mayen\",\r\n code: \"SJ\",\r\n currency: \"NOK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sj.webp\",\r\n phone_code: \"47\",\r\n },\r\n {\r\n name: \"Sweden\",\r\n code: \"SE\",\r\n currency: \"SEK\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/se.webp\",\r\n phone_code: \"46\",\r\n },\r\n {\r\n name: \"Switzerland\",\r\n code: \"CH\",\r\n currency: \"CHF\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ch.webp\",\r\n phone_code: \"41\",\r\n },\r\n {\r\n name: \"Syria\",\r\n code: \"SY\",\r\n currency: \"SYP\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/sy.webp\",\r\n phone_code: \"963\",\r\n },\r\n {\r\n name: \"Taiwan\",\r\n code: \"TW\",\r\n currency: \"TWD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tw.webp\",\r\n phone_code: \"886\",\r\n },\r\n {\r\n name: \"Tajikistan\",\r\n code: \"TJ\",\r\n currency: \"TJS\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tj.webp\",\r\n phone_code: \"992\",\r\n },\r\n {\r\n name: \"Tanzania\",\r\n code: \"TZ\",\r\n currency: \"TZS\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tz.webp\",\r\n phone_code: \"255\",\r\n },\r\n {\r\n name: \"Thailand\",\r\n code: \"TH\",\r\n currency: \"THB\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/th.webp\",\r\n phone_code: \"66\",\r\n },\r\n {\r\n name: \"Timor-Leste\",\r\n code: \"TL\",\r\n currency: \"USD\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tl.webp\",\r\n phone_code: \"670\",\r\n },\r\n {\r\n name: \"Togo\",\r\n code: \"TG\",\r\n currency: \"XOF\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tg.webp\",\r\n phone_code: \"228\",\r\n },\r\n {\r\n name: \"Tokelau\",\r\n code: \"TK\",\r\n currency: \"NZD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tk.webp\",\r\n phone_code: \"690\",\r\n },\r\n {\r\n name: \"Tonga\",\r\n code: \"TO\",\r\n currency: \"TOP\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/to.webp\",\r\n phone_code: \"676\",\r\n },\r\n {\r\n name: \"Trinidad and Tobago\",\r\n code: \"TT\",\r\n currency: \"TTD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tt.webp\",\r\n phone_code: \"1-868\",\r\n },\r\n {\r\n name: \"Tunisia\",\r\n code: \"TN\",\r\n currency: \"TND\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tn.webp\",\r\n phone_code: \"216\",\r\n },\r\n {\r\n name: \"Turkey\",\r\n code: \"TR\",\r\n currency: \"TRY\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tr.webp\",\r\n phone_code: \"90\",\r\n },\r\n {\r\n name: \"Turkmenistan\",\r\n code: \"TM\",\r\n currency: \"TMT\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tm.webp\",\r\n phone_code: \"993\",\r\n },\r\n {\r\n name: \"Tuvalu\",\r\n code: \"TV\",\r\n currency: \"AUD\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/tv.webp\",\r\n phone_code: \"688\",\r\n },\r\n {\r\n name: \"Uganda\",\r\n code: \"UG\",\r\n currency: \"UGX\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ug.webp\",\r\n phone_code: \"256\",\r\n },\r\n {\r\n name: \"Ukraine\",\r\n code: \"UA\",\r\n currency: \"UAH\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ua.webp\",\r\n phone_code: \"380\",\r\n },\r\n {\r\n name: \"United Arab Emirates\",\r\n code: \"AE\",\r\n currency: \"AED\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ae.webp\",\r\n phone_code: \"971\",\r\n },\r\n {\r\n name: \"United Kingdom\",\r\n code: \"GB\",\r\n currency: \"GBP\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/gb.webp\",\r\n phone_code: \"44\",\r\n },\r\n {\r\n name: \"United States\",\r\n code: \"US\",\r\n currency: \"USD\",\r\n continent: \"North America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/us.webp\",\r\n phone_code: \"1\",\r\n },\r\n {\r\n name: \"Uruguay\",\r\n code: \"UY\",\r\n currency: \"UYU\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/uy.webp\",\r\n phone_code: \"598\",\r\n },\r\n {\r\n name: \"Uzbekistan\",\r\n code: \"UZ\",\r\n currency: \"UZS\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/uz.webp\",\r\n phone_code: \"998\",\r\n },\r\n {\r\n name: \"Vanuatu\",\r\n code: \"VU\",\r\n currency: \"VUV\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/vu.webp\",\r\n phone_code: \"678\",\r\n },\r\n {\r\n name: \"Vatican City\",\r\n code: \"VA\",\r\n currency: \"EUR\",\r\n continent: \"Europe\",\r\n flag: \"https://flagpedia.net/data/flags/h80/va.webp\",\r\n phone_code: \"379\",\r\n },\r\n {\r\n name: \"Venezuela\",\r\n code: \"VE\",\r\n currency: \"VES\",\r\n continent: \"South America\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ve.webp\",\r\n phone_code: \"58\",\r\n },\r\n {\r\n name: \"Vietnam\",\r\n code: \"VN\",\r\n currency: \"VND\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/vn.webp\",\r\n phone_code: \"84\",\r\n },\r\n {\r\n name: \"Wallis and Futuna\",\r\n code: \"WF\",\r\n currency: \"XPF\",\r\n continent: \"Oceania\",\r\n flag: \"https://flagpedia.net/data/flags/h80/wf.webp\",\r\n phone_code: \"681\",\r\n },\r\n {\r\n name: \"Western Sahara\",\r\n code: \"EH\",\r\n currency: \"MAD\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/eh.webp\",\r\n phone_code: \"212\",\r\n },\r\n {\r\n name: \"Yemen\",\r\n code: \"YE\",\r\n currency: \"YER\",\r\n continent: \"Asia\",\r\n flag: \"https://flagpedia.net/data/flags/h80/ye.webp\",\r\n phone_code: \"967\",\r\n },\r\n {\r\n name: \"Zambia\",\r\n code: \"ZM\",\r\n currency: \"ZMW\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/zm.webp\",\r\n phone_code: \"260\",\r\n },\r\n {\r\n name: \"Zimbabwe\",\r\n code: \"ZW\",\r\n currency: \"ZWL\",\r\n continent: \"Africa\",\r\n flag: \"https://flagpedia.net/data/flags/h80/zw.webp\",\r\n phone_code: \"263\",\r\n },\r\n];\r\n","export const globalStyles: any = {\r\n verifiedCustdMdlContainer: {\r\n width: \"100%\",\r\n height: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n paddingBottom: 20,\r\n overflowY: \"scroll\",\r\n overflowX: \"hidden\",\r\n position: \"relative\",\r\n },\r\n\r\n verifiedCustdMdlStartupOutterGrad: {\r\n // <LinearGradient\r\n // colors={['#643fff', '#381ab7']}\r\n // start={{ x: 0.5, y: 0 }}\r\n // end={{ x: 0.5, y: 1 }}\r\n // style={styles.verifiedCustdMdlStartupOutterGrad}\r\n // >\r\n // {/* your content here */}\r\n // </LinearGradient>\r\n\r\n width: \"100%\",\r\n height: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n flexDirection: \"column\",\r\n overflowY: \"scroll\",\r\n overflowX: \"hidden\",\r\n // background is handled by LinearGradient above\r\n },\r\n\r\n verifiedCustdMdlStartupOutterNorm: {\r\n width: \"100%\",\r\n height: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n flexDirection: \"column\",\r\n overflowY: \"scroll\",\r\n overflowX: \"hidden\",\r\n backgroundColor: \"#ffffff\",\r\n },\r\n\r\n verifiedCustdMdlStartup: {\r\n width: 650,\r\n height: \"auto\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n flexDirection: \"column\",\r\n overflowX: \"hidden\",\r\n overflowY: \"scroll\",\r\n paddingBottom: 20,\r\n borderWidth: 1,\r\n borderColor: \"#0F122E\",\r\n borderRadius: 10,\r\n position: \"relative\",\r\n },\r\n\r\n verifiedCustdMdlLoadingScreen: {\r\n borderRadius: 10,\r\n width: \"100%\",\r\n flexShrink: 0,\r\n backgroundColor: \"rgba(0, 0, 0, 0.3)\",\r\n zIndex: 100,\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n overflow: \"scroll\",\r\n position: \"absolute\",\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n },\r\n\r\n verifiedCustdMdlStartupIconContainer: {\r\n width: \"76.119%\",\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n position: \"relative\",\r\n flexDirection: \"column\",\r\n height: 298,\r\n },\r\n\r\n verifiedCustdMdlStartupIconShadow: {\r\n position: \"absolute\",\r\n bottom: 10,\r\n right: 70,\r\n width: \"48.5%\",\r\n },\r\n\r\n verifiedCustdMdlStartupTextContainer: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 12,\r\n marginRight: 20,\r\n marginLeft: 20,\r\n },\r\n\r\n verifiedCustdMdlStartupTextHeader: {\r\n color: \"#ffffff\",\r\n fontFamily: \"Manrope\",\r\n fontSize: 33.6, // 2.1rem\r\n fontWeight: \"700\",\r\n lineHeight: 45,\r\n margin: 0,\r\n },\r\n\r\n verifiedCustdMdlStartupTextFooter: {\r\n color: \"#ffffff\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14.4, // 0.9rem\r\n fontWeight: \"400\",\r\n lineHeight: 24,\r\n opacity: 0.8,\r\n },\r\n\r\n verifiedCustdMdlFtuStartupButton: {\r\n display: \"flex\",\r\n padding: 14,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n borderRadius: 8,\r\n backgroundColor: \"#cfe600\",\r\n cursor: \"pointer\",\r\n userSelect: \"none\",\r\n color: \"#0C0C0E\",\r\n textAlign: \"center\",\r\n margin: 20,\r\n fontFamily: \"Roboto\",\r\n fontSize: 16,\r\n fontWeight: \"500\",\r\n lineHeight: 24,\r\n outline: \"none\",\r\n borderWidth: 0,\r\n },\r\n\r\n verifiedCustdMdlStartupLanguage: {\r\n backgroundColor: \"#ffffff\",\r\n height: \"100%\",\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlStartupLanguageContentContainer: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 32,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlStLanguageContent: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 20,\r\n alignSelf: \"stretch\",\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlStLanguageText: {\r\n color: \"#0c0c0e\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 24, // 1.5rem\r\n fontWeight: \"700\",\r\n lineHeight: 24,\r\n alignSelf: \"stretch\",\r\n },\r\n\r\n verifiedCustdMdlMsSearchContentHover: {\r\n borderRadius: 8,\r\n borderWidth: 1,\r\n borderColor: \"#9da3ff\",\r\n backgroundColor: \"#ecefff\",\r\n },\r\n\r\n verifiedCustdMdlStContactInput: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 14,\r\n width: \"90%\",\r\n },\r\n\r\n verifiedCustdMdlStContactContentContainer: {\r\n display: \"flex\",\r\n alignItems: \"flex-start\",\r\n gap: 8,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlStContactFirstSection: {\r\n display: \"flex\",\r\n width: 150,\r\n height: 44,\r\n paddingLeft: 6,\r\n alignItems: \"center\",\r\n borderRadius: 8,\r\n backgroundColor: \"#f7f7f8\",\r\n cursor: \"pointer\",\r\n userSelect: \"none\",\r\n },\r\n\r\n verifiedCustdMdlStContactSelectionIcon: {\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n flexShrink: 0,\r\n borderRadius: 24,\r\n cursor: \"pointer\",\r\n userSelect: \"none\",\r\n overflow: \"hidden\",\r\n width: 28,\r\n height: 28,\r\n },\r\n\r\n verifiedCustdMdlStContactSelectionText: {\r\n color: \"#0c0c0e\",\r\n textAlign: \"right\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 19.6, // 14 * 1.4\r\n width: 40,\r\n flexShrink: 0,\r\n },\r\n\r\n verifiedCustdMdlStContactDropdown: {},\r\n\r\n verifiedCustdMdlStContactFooterFirstSection: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n gap: 12,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlStContactFooterSecondSection: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n gap: 4,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlCustomBlankPage: {\r\n height: 0,\r\n },\r\n\r\n // verifiedCustdMdlStContactInputError: {\r\n // display: \"flex\",\r\n // alignItems: \"center\",\r\n // gap: 4,\r\n // },\r\n\r\n verifiedCustdMdlStartupOtpText: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 12,\r\n alignSelf: \"stretch\",\r\n },\r\n\r\n verifiedCustdMdlStartupOtpHeaderText: {\r\n alignSelf: \"stretch\",\r\n color: \"#5b5d6e\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 11.2,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 16.8, // 11.2 * 1.5\r\n maxWidth: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlOtpInputGroup: {\r\n display: \"flex\",\r\n width: \"100%\",\r\n flexDirection: \"row\",\r\n alignItems: \"flex-start\",\r\n gap: 8,\r\n },\r\n\r\n verifiedCustdMdlOtpInput: {\r\n display: \"flex\",\r\n paddingTop: 20,\r\n paddingBottom: 20,\r\n paddingLeft: 12,\r\n paddingRight: 12,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n flex: 1,\r\n alignSelf: \"stretch\",\r\n borderRadius: 8,\r\n backgroundColor: \"#f7f7f8\",\r\n width: \"25%\",\r\n textAlign: \"center\",\r\n color: \"#0C0C0E\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 19.6, // 14 * 1.4\r\n },\r\n\r\n verifiedCustdMdlOtpInputRed: {\r\n borderRadius: 8,\r\n borderWidth: 1,\r\n borderColor: \"#E23636\",\r\n backgroundColor: \"#F7F7F8\",\r\n display: \"flex\",\r\n paddingTop: 20,\r\n paddingBottom: 20,\r\n paddingLeft: 12,\r\n paddingRight: 12,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n flex: 1,\r\n alignSelf: \"stretch\",\r\n width: \"25%\",\r\n textAlign: \"center\",\r\n color: \"#0C0C0E\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 19.6, // 14 * 1.4\r\n },\r\n\r\n verifiedCustdMdlOtpIncorrectText: {\r\n color: \"#E23636\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 16.8, // 12 * 1.4\r\n maxWidth: 200,\r\n },\r\n\r\n verifiedCustdMdlOtpTimer: {\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n alignSelf: \"stretch\",\r\n flexDirection: \"row\",\r\n },\r\n\r\n verifiedCustdMdlOtpTimerText: {\r\n color: \"#0c0c0e\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 16.8, // 12 * 1.4\r\n },\r\n\r\n verifiedCustdMdlOtpTimerTextRed: {\r\n color: \"#e23636\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 16.8, // 12 * 1.4\r\n },\r\n\r\n verifiedCustdMdlOtpResendText: {\r\n color: \"#b6b7c3\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 16.8, // 12 * 1.4\r\n },\r\n\r\n verifiedCustdMdlOtpResendTextActive: {\r\n color: \"#603ff4\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 16.8, // 12 * 1.4\r\n },\r\n\r\n verifiedCustdMdlStOtpIcon: {},\r\n\r\n verifiedCustdMdlStartupButton: {\r\n display: \"flex\",\r\n padding: 14,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n borderRadius: 8,\r\n backgroundColor: \"#cfe600\",\r\n color: \"#0C0C0E\",\r\n textAlign: \"center\",\r\n opacity: 0.5,\r\n fontFamily: \"Roboto\",\r\n fontSize: 16,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 24, // 16 * 1.5\r\n width: \"90%\",\r\n maxWidth: 500,\r\n },\r\n\r\n verifiedCustdMdlStartupButtonActive: {\r\n display: \"flex\",\r\n padding: 14,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n borderRadius: 8,\r\n backgroundColor: \"#cfe600\",\r\n color: \"#0C0C0E\",\r\n textAlign: \"center\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 16,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 24, // 16 * 1.5\r\n width: \"90%\",\r\n maxWidth: 500,\r\n },\r\n\r\n verifiedCustdMdlOtpInputPassword: {\r\n fontWeight: \"900\",\r\n },\r\n\r\n verifiedCustdMdlStartupButtonClick: {\r\n borderRadius: 8,\r\n borderWidth: 1,\r\n borderColor: \"#0c0c0e\",\r\n display: \"flex\",\r\n padding: 14,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n color: \"#0C0C0E\",\r\n textAlign: \"center\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 16,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 24, // 16 * 1.5\r\n width: \"90%\",\r\n backgroundColor: \"transparent\",\r\n maxWidth: 500,\r\n },\r\n\r\n verifiedCustdMdlPinInputContainerText: {\r\n color: \"#5B5D6E\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 21, // 14 * 1.5\r\n },\r\n\r\n verifiedCustdMdlStButtonText: {\r\n color: \"#0c0c0e\",\r\n textAlign: \"center\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 16,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 24, // 16 * 1.5\r\n },\r\n\r\n verifiedCustdMdlStartupSlider: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 12,\r\n borderRadius: 4,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlStartupSliderLine: {\r\n height: 4,\r\n flexShrink: 0,\r\n borderRadius: 8,\r\n backgroundColor: \"#eeeef0\",\r\n },\r\n\r\n verifiedCustdMdlStartupSliderLineActive: {\r\n height: 4,\r\n flex: 1,\r\n borderRadius: 8,\r\n backgroundColor: \"#603ff4\",\r\n },\r\n\r\n verifiedCustdMdlStartupContact: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 20,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlStartupContactContent: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 16,\r\n alignSelf: \"stretch\",\r\n },\r\n\r\n verifiedCustdMdlStartupContactText: {\r\n color: \"#0c0c0e\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 16,\r\n fontStyle: \"normal\",\r\n fontWeight: \"700\",\r\n lineHeight: 16, // 100%\r\n alignSelf: \"stretch\",\r\n maxWidth: \"100%\",\r\n },\r\n\r\n // verifiedCustdMdlStContactContentContainer: {\r\n // display: \"flex\",\r\n // alignItems: \"flex-start\",\r\n // gap: 8,\r\n // width: \"100%\",\r\n // },\r\n\r\n verifiedCustdMdlStContactSecondSection: {\r\n display: \"flex\",\r\n width: \"100%\",\r\n height: 44,\r\n paddingLeft: 6,\r\n alignItems: \"center\",\r\n borderRadius: 8,\r\n backgroundColor: \"#f7f7f8\",\r\n color: \"#0C0C0E\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 21, // 150%\r\n },\r\n\r\n verifiedCustdMdlStContactSecondSectionPlaceholder: {\r\n color: \"#b6b7c3\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 21, // 150%\r\n },\r\n\r\n verifiedCustdMdlStartupContactFooter: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n gap: 12,\r\n width: \"100%\",\r\n marginTop: 16,\r\n },\r\n\r\n // verifiedCustdMdlStContactFooterFirstSection: {\r\n // display: \"flex\",\r\n // flexDirection: \"column\",\r\n // alignItems: \"center\",\r\n // justifyContent: \"center\",\r\n // gap: 12,\r\n // width: \"100%\",\r\n // },\r\n\r\n // verifiedCustdMdlStContactFooterSecondSection: {\r\n // display: \"flex\",\r\n // alignItems: \"center\",\r\n // justifyContent: \"center\",\r\n // gap: 4,\r\n // width: \"100%\",\r\n // },\r\n\r\n verifiedCustdMdlStContactInputError: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 4,\r\n },\r\n\r\n verifiedCustdMdlInputErrorText: {\r\n color: \"#e23636\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 16.8, // 140%\r\n margin: 0,\r\n },\r\n\r\n verifiedCustdMdlMobileStartupSearchBoxContainer: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 6,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlMobileStartupSearchBox: {\r\n display: \"flex\",\r\n height: 40,\r\n alignItems: \"center\",\r\n gap: 6,\r\n borderRadius: 6,\r\n borderWidth: 1,\r\n borderColor: \"#d8d9df\",\r\n backgroundColor: \"#f7f7f8\",\r\n width: \"100%\",\r\n overflow: \"hidden\", // only works with ScrollView or certain View types\r\n },\r\n\r\n verifiedCustdMdlMsSearchBoxContent: {\r\n height: \"100%\",\r\n width: \"100%\",\r\n backgroundColor: \"transparent\",\r\n color: \"#0c0c0e\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 21, // 150%\r\n },\r\n\r\n verifiedCustdMdlMsSearchBoxContentPlaceholder: {\r\n color: \"#8f91a1\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 21, // 150%\r\n },\r\n\r\n verifiedCustdMdlMobileStartupSearchContent: {\r\n display: \"flex\",\r\n width: \"100%\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 16,\r\n borderRadius: 8,\r\n borderWidth: 1,\r\n borderColor: \"#f7f7f8\",\r\n backgroundColor: \"#ffffff\",\r\n },\r\n\r\n verifiedCustdMdlMsSearchContentContainer: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n alignSelf: \"stretch\",\r\n overflow: \"scroll\", // or use ScrollView for better scroll control\r\n },\r\n\r\n verifiedCustdMdlMsSearchContent: {\r\n display: \"flex\",\r\n padding: 8,\r\n alignItems: \"center\",\r\n gap: 19,\r\n alignSelf: \"stretch\",\r\n height: 34,\r\n marginBottom: 5,\r\n borderWidth: 1,\r\n borderColor: \"transparent\",\r\n },\r\n\r\n verifiedCustdMdlMsSearchContentActive: {\r\n display: \"flex\",\r\n padding: 8,\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n alignSelf: \"stretch\",\r\n borderRadius: 6,\r\n backgroundColor: \"#f1f8ed\",\r\n },\r\n\r\n verifiedCustdMdlMsSearchContentTextContainer: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 19,\r\n },\r\n\r\n verifiedCustdMdlMsSearchContentIcon: {\r\n display: \"flex\",\r\n width: 28,\r\n height: 28,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n borderRadius: 24,\r\n borderWidth: 1,\r\n borderColor: \"rgba(0, 0, 0, 0.05)\",\r\n backgroundColor: \"#fff\",\r\n shadowColor: \"#eee\",\r\n shadowOffset: { width: 0, height: 1 },\r\n shadowOpacity: 1,\r\n shadowRadius: 4,\r\n elevation: 3, // for Android shadow\r\n },\r\n\r\n verifiedCustdMdlMsSearchContentText: {\r\n color: \"#0c0c0e\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12.4, // 0.775rem\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 18.6, // 12.4 * 1.5\r\n },\r\n\r\n verifiedCustdMdlTermsAndCondition: {\r\n color: \"#8f91a1\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 11.2,\r\n fontStyle: \"normal\",\r\n fontWeight: \"450\",\r\n lineHeight: 15.68, // 11.2 * 1.4\r\n },\r\n\r\n verifiedCustdMdlPrivacy: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: 4,\r\n marginBottom: 20,\r\n },\r\n\r\n verifiedCustdMdlPrivacyText: {\r\n color: \"#40414c\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 8,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 20,\r\n letterSpacing: 0.25,\r\n },\r\n\r\n verifiedCustdMdlPPPaymentPortalAmountInfoSeparator: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: 6,\r\n alignSelf: \"stretch\",\r\n justifyContent: \"center\",\r\n },\r\n\r\n verifiedCustdMdlPPPaymentPortalLine: {\r\n width: \"50%\",\r\n height: 1,\r\n backgroundColor: \"#eeeef0\",\r\n },\r\n\r\n verifiedCustdMdlPPaymentPortalSeparatorText: {\r\n color: \"#4a4a5a\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 16.8, // 140%\r\n opacity: 0.6,\r\n },\r\n\r\n verifiedCustdMdlStartupOtpFooter: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: 4,\r\n width: \"100%\",\r\n overflow: \"hidden\",\r\n },\r\n\r\n verifiedCustdMdlStartupOtpFooterText: {\r\n color: \"#0c0c0e\",\r\n fontFamily: \"Manrope\",\r\n fontSize: 12.8,\r\n fontStyle: \"normal\",\r\n fontWeight: \"600\",\r\n lineHeight: 12.8, // 100%\r\n maxWidth: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlOtpInputContainer: {\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 6,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlGeneralWebToastError: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: 12,\r\n },\r\n\r\n verifiedCustdMdlGeneralWebToastErrorContainer: {\r\n width: \"100%\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 10,\r\n padding: 6,\r\n },\r\n\r\n verifiedCustdMdlGeneralWebToastErrorTitle: {\r\n margin: 0,\r\n color: \"#0c0c0e\",\r\n fontFamily: \"Manrope\",\r\n fontSize: 16,\r\n fontStyle: \"normal\",\r\n fontWeight: \"600\",\r\n lineHeight: 16, // 100%\r\n alignSelf: \"stretch\",\r\n },\r\n\r\n verifiedCustdMdlGeneralWebToastErrorLabel: {\r\n alignSelf: \"stretch\",\r\n color: \"#8f91a1\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 21, // 150%\r\n margin: 0,\r\n },\r\n\r\n verifiedCustdMdlGeneralWebToastSuccess: {\r\n padding: 12,\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n alignSelf: \"stretch\",\r\n borderRadius: 8,\r\n backgroundColor: \"#f1f8ed\",\r\n width: \"100%\",\r\n height: 55,\r\n maxHeight: 55,\r\n flexDirection: \"row\",\r\n },\r\n\r\n verifiedCustdMdlGeneralWebToastSuccessCont: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: 12,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlGeneralWebToastSuccessContainer: {\r\n width: \"100%\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 10,\r\n padding: 6,\r\n },\r\n\r\n verifiedCustdMdlGeneralWebToastSuccessLink: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n },\r\n\r\n verifiedCustdMdlGeneralWebToastSuccessLinkText: {\r\n color: \"#603ff4\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"700\",\r\n lineHeight: 21, // 150%\r\n textDecorationLine: \"underline\",\r\n },\r\n\r\n verifiedCustdMdlSuccessPopupContentContainer: {\r\n width: \"28.4375%\",\r\n padding: 24,\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n backgroundColor: \"#fff\",\r\n shadowColor: \"#000\",\r\n shadowOffset: { width: 0, height: 4 },\r\n shadowOpacity: 0.12,\r\n shadowRadius: 19,\r\n elevation: 5,\r\n height: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlSuccessPopupContent: {\r\n width: \"100%\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n gap: 32,\r\n },\r\n\r\n verifiedCustdMdlSuccessPopupContentText: {\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n gap: 12,\r\n alignSelf: \"stretch\",\r\n },\r\n\r\n verifiedCustdMdlSuccessPopupContentTextHeader: {\r\n color: \"#0c0c0e\",\r\n textAlign: \"center\",\r\n fontFamily: \"Manrope\",\r\n fontSize: 24,\r\n fontStyle: \"normal\",\r\n fontWeight: \"800\",\r\n lineHeight: 33.6, // 140%\r\n },\r\n\r\n verifiedCustdMdlSuccessPopupContentTextFooter: {\r\n color: \"#5b5d6e\",\r\n textAlign: \"center\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 16,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 24, // 150%\r\n },\r\n\r\n verifiedCustdMdlAddCosignerBodyIcon: {\r\n width: \"90%\",\r\n maxWidth: \"90%\",\r\n height: 250,\r\n maxHeight: 250,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerBody: {\r\n padding: 10,\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 12,\r\n borderRadius: 8,\r\n backgroundColor: \"#ECEFFF\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerBodyTextCont: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: 10,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerBodyTextIcon: {\r\n padding: 8,\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n gap: 10,\r\n borderRadius: 24,\r\n backgroundColor: \"#C2C7FF\",\r\n width: 20,\r\n height: 20,\r\n overflow: \"hidden\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerBodyTextLabel: {\r\n width: \"76.1%\",\r\n color: \"#5B5D6E\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 10,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 15, // 150%\r\n },\r\n\r\n verifiedCustdMdlAddCosignerBodyTextLabelBold: {\r\n color: \"#0C0C0E\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 10,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 14, // 140%\r\n },\r\n\r\n verifiedCustdMdlAddCosignerButtonsCont: {\r\n padding: 10,\r\n flexDirection: \"row\",\r\n alignItems: \"flex-start\",\r\n justifyContent: \"space-between\",\r\n gap: 10,\r\n backgroundColor: \"transparent\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerButtonNeut: {\r\n width: \"45%\",\r\n padding: 14,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n borderRadius: 8,\r\n backgroundColor: \"transparent\",\r\n borderWidth: 1,\r\n borderColor: \"#0C0C0E\",\r\n color: \"#0C0C0E\",\r\n textAlign: \"center\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 18, // 150%\r\n },\r\n\r\n verifiedCustdMdlAddCosignerButtonAction: {\r\n width: \"45%\",\r\n padding: 14,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n borderRadius: 8,\r\n backgroundColor: \"#CFE600\",\r\n borderWidth: 0,\r\n color: \"#0C0C0E\",\r\n textAlign: \"center\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 18, // 150%\r\n },\r\n\r\n verifiedCustdMdlAddCosignerMoreBody: {\r\n padding: 15,\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 12,\r\n borderRadius: 8,\r\n backgroundColor: \"#ECEFFF\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerMoreHeaderCont: {\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 32,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerMoreTitleCont: {\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 16,\r\n alignSelf: \"stretch\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerHeaderText: {\r\n alignSelf: \"stretch\",\r\n color: \"#5B5D6E\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 18, // 12 * 1.5\r\n margin: 0,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerMoreTitle: {\r\n color: \"#0C0C0E\",\r\n fontFamily: \"Manrope\",\r\n fontSize: 18,\r\n fontStyle: \"normal\",\r\n fontWeight: \"700\",\r\n lineHeight: 21.6, // 18 * 1.2\r\n margin: 0,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerMoreLabel: {\r\n color: \"#4A4A5A\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 21, // 14 * 1.5\r\n },\r\n\r\n verifiedCustdMdlAddCosignerMoreLabelLink: {\r\n alignSelf: \"stretch\",\r\n color: \"#4E2BD7\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 18, // 12 * 1.5\r\n textDecorationLine: \"underline\",\r\n // textDecorationStyle: \"solid\", // not supported\r\n // textDecorationThickness: \"auto\", // not supported\r\n // textDecorationSkipInk: \"none\", // not supported\r\n // textUnderlineOffset: \"auto\", // not supported\r\n // textUnderlinePosition: \"from-font\", // not supported\r\n // cursor: \"pointer\",\r\n margin: 0,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerHeaderInfoCont: {\r\n padding: 10,\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 12,\r\n alignSelf: \"stretch\",\r\n borderRadius: 8,\r\n backgroundColor: \"#FFF9C1\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerHeaderInfoText: {\r\n color: \"#89490A\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 10,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 15, // 10 * 1.5\r\n },\r\n\r\n verifiedCustdMdlAddCosignerHeaderInfoTextBold: {\r\n color: \"#89490A\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 10,\r\n fontStyle: \"normal\",\r\n fontWeight: \"700\",\r\n lineHeight: 14, // 10 * 1.4\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2Body: {\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 10,\r\n marginTop: 20,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyHeader: {\r\n width: \"100%\",\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyHeaderFirstText: {\r\n color: \"#0C0C0E\",\r\n textAlign: \"right\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12.8, // 0.8rem\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 19.2, // 12.8 * 1.5\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyHeaderSecondText: {\r\n color: \"#0C0C0E\",\r\n textAlign: \"right\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 16.8, // 12 * 1.4\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyContent: {\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 16,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyContentHeader: {\r\n paddingTop: 14,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n flexDirection: \"column\",\r\n position: \"relative\",\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyContentHeaderCont: {\r\n width: \"100%\",\r\n padding: 12,\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 16,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyContentHeaderLabel: {\r\n paddingVertical: 4,\r\n paddingHorizontal: 6,\r\n alignItems: \"flex-start\",\r\n gap: 10,\r\n position: \"absolute\",\r\n left: 12,\r\n top: -14,\r\n borderRadius: 6,\r\n backgroundColor: \"#DDE1FF\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyContentHeaderLabelText: {\r\n color: \"#362689\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 10,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 14, // 10 * 1.4\r\n margin: 0,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyContentHeaderBody: {\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n alignSelf: \"stretch\",\r\n borderRadius: 8,\r\n borderWidth: 1,\r\n borderColor: \"#EEEEF0\",\r\n backgroundColor: \"#F7F7F8\",\r\n padding: 12,\r\n alignItems: \"flex-start\",\r\n gap: 16,\r\n position: \"relative\",\r\n },\r\n\r\n verifiedCustdMdlAC2BContentHeaderBodyHeaderCont: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: 12,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlAC2BContentHeaderBodyHeader: {\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 6,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlAC2BContentHeaderBodyTitle: {\r\n color: \"#0C0C0E\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 16,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 24, // 16 * 1.5\r\n margin: 0,\r\n maxWidth: 150,\r\n // wordWrap: \"break-word\", // Not supported in React Native\r\n },\r\n\r\n verifiedCustdMdlAC2BContentHeaderBodyLabel: {\r\n color: \"#8F91A1\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 16.8, // 12 * 1.4\r\n margin: 0,\r\n maxWidth: 200,\r\n // wordWrap: \"break-word\",\r\n },\r\n\r\n verifiedCustdMdlAC2BContentHeaderBodyButton: {\r\n flexDirection: \"row\",\r\n paddingVertical: 5.5,\r\n paddingHorizontal: 8,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 10,\r\n borderRadius: 6,\r\n borderWidth: 1,\r\n borderColor: \"#603FF4\",\r\n backgroundColor: \"#603FF4\",\r\n color: \"#ECEFFF\",\r\n textAlign: \"right\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 19.6, // 14 * 1.4\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyContentFooter: {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n gap: 4,\r\n // cursor: \"pointer\" // Not supported\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyContentFooterText: {\r\n color: \"#603FF4\",\r\n textAlign: \"right\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 21, // 14 * 1.5\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2AddMoreBody: {\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n padding: 15,\r\n gap: 16,\r\n borderRadius: 8,\r\n borderWidth: 1,\r\n borderColor: \"#D8D9DF\",\r\n minWidth: \"90%\",\r\n marginBottom: 20,\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2AddMoreFirst: {\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n alignSelf: \"stretch\",\r\n width: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2AddMoreFirstHeader: {\r\n flexDirection: \"row\",\r\n alignItems: \"flex-end\",\r\n gap: 5,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2AddMoreFirstHeaderText: {\r\n color: \"#0C0C0E\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 11.2, // 0.7rem\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 16.8, // 11.2 * 1.5\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2AddMoreFirstFooter: {\r\n flexDirection: \"row\",\r\n paddingVertical: 4,\r\n paddingHorizontal: 6,\r\n alignItems: \"flex-start\",\r\n gap: 10,\r\n borderRadius: 6,\r\n backgroundColor: \"#DDE1FF\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2AddMoreFirstFooterText: {\r\n color: \"#362689\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 10,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 14, // 10 * 1.4\r\n margin: 0,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2AddMoreSecond: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 4,\r\n width: \"100%\",\r\n },\r\n verifiedCustdMdlAddCosignerStep2AddMoreSecondInput: {\r\n display: \"flex\",\r\n padding: 12,\r\n alignItems: \"center\",\r\n gap: 182,\r\n alignSelf: \"stretch\",\r\n borderRadius: 8,\r\n backgroundColor: \"#F7F7F8\", // var(--Neutral-50)\r\n color: \"#0C0C0E\", // var(--Neutral-950)\r\n\r\n // Paragraph 02/P1\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 18, // 150% of 12px ~ 18px\r\n },\r\n verifiedCustdMdlAddCosignerStep2AddMoreThird: {\r\n display: \"flex\",\r\n alignItems: \"flex-start\",\r\n gap: 24,\r\n width: \"100%\",\r\n },\r\n verifiedCustdMdlAddCosignerStep2AddMoreThirdCont: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 4,\r\n },\r\n verifiedCustdMdlAddCosignerStep2AddMoreThirdContText: {\r\n color: \"#383842\", // var(--Neutral-900)\r\n\r\n // Paragraph 02/P1\r\n fontFamily: \"Roboto\",\r\n fontSize: 13,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 20, // 150% of 13px ~ 19.5px\r\n },\r\n verifiedCustdMdlAddCosignerStep2AddMoreButtons: {\r\n display: \"flex\",\r\n alignItems: \"flex-start\",\r\n gap: 16,\r\n alignSelf: \"stretch\",\r\n width: \"100%\",\r\n backgroundColor: \"transparent\",\r\n },\r\n verifiedCustdMdlAddCosignerStep2AddMoreButtonsNeut: {\r\n width: \"50%\",\r\n display: \"flex\",\r\n paddingVertical: 7.5,\r\n paddingHorizontal: 12,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 10,\r\n flexGrow: 1,\r\n flexShrink: 0,\r\n flexBasis: 0,\r\n borderRadius: 8,\r\n borderWidth: 1,\r\n borderColor: \"#603FF4\", // var(--secondary-electric-violet-600)\r\n color: \"#603FF4\",\r\n textAlign: \"right\",\r\n\r\n // Paragraph 02/P2\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 20, // 140% of 14px ~ 19.6px\r\n backgroundColor: \"transparent\",\r\n cursor: \"pointer\",\r\n },\r\n verifiedCustdMdlAddCosignerStep2AddMoreButtonsAction: {\r\n width: \"50%\",\r\n display: \"flex\",\r\n paddingVertical: 6,\r\n paddingHorizontal: 8,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 10,\r\n flexGrow: 1,\r\n flexShrink: 0,\r\n flexBasis: 0,\r\n alignSelf: \"stretch\",\r\n borderRadius: 8,\r\n borderWidth: 1,\r\n borderColor: \"#603FF4\", // var(--secondary-electric-violet-600)\r\n backgroundColor: \"#603FF4\",\r\n color: \"#ECEFFF\", // var(--secondary-electric-violet-50)\r\n textAlign: \"right\",\r\n\r\n // Paragraph 02/P2\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 20, // 140% of 14px ~ 19.6px\r\n cursor: \"pointer\",\r\n },\r\n verifiedCustdMdlAddCosignerStep2AddMoreSecondInputPlaceholder: {\r\n color: \"#B6B7C3\", // var(--Neutral-300)\r\n\r\n // Paragraph 02/P1\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 18, // 150% of 12px\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyContent: {\r\n display: \"flex\",\r\n paddingTop: 20,\r\n paddingBottom: 20,\r\n flexDirection: \"column\",\r\n justifyContent: \"flex-start\",\r\n alignItems: \"center\",\r\n gap: 61,\r\n borderTopLeftRadius: 8,\r\n borderTopRightRadius: 8,\r\n backgroundColor: \"#FFFFFF\", // var(--Neutral-White-100)\r\n width: \"100%\",\r\n maxHeight: \"62.7%\",\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyCont: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 16,\r\n width: \"90%\",\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyHeader: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n gap: 16,\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyTitle: {\r\n color: \"#0C0C0E\", // var(--Neutral-950)\r\n fontFamily: \"Manrope\",\r\n fontSize: 16,\r\n fontStyle: \"normal\",\r\n fontWeight: \"700\",\r\n lineHeight: 24, // 150% of 16px\r\n margin: 0,\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyLabel: {\r\n color: \"#5B5D6E\", // var(--Neutral-600)\r\n\r\n // Paragraph 01/P1\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 18, // 150% of 12px\r\n margin: 0,\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooter: {\r\n display: \"flex\",\r\n width: \"90%\",\r\n paddingTop: 15,\r\n paddingBottom: 5,\r\n paddingHorizontal: 15,\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 5,\r\n borderRadius: 8,\r\n borderWidth: 1,\r\n borderColor: \"#EEEEF0\", // var(--Neutral-100)\r\n backgroundColor: \"#FFFFFF\", // var(--Neutral-White-100)\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterIndCont: {\r\n display: \"flex\",\r\n width: \"100%\",\r\n flexDirection: \"row\",\r\n backgroundColor: \"transparent\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n marginBottom: 3,\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterInd: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n gap: -6,\r\n borderRadius: 2,\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterIndTextCont: {\r\n display: \"flex\",\r\n paddingVertical: 4,\r\n paddingHorizontal: 12,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 10,\r\n borderRadius: 6,\r\n backgroundColor: \"#603FF4\", // var(--secondary-electric-violet-600)\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterIndText: {\r\n color: \"#FFFFFF\", // var(--Neutral-White-100)\r\n textAlign: \"center\",\r\n\r\n // Paragraph 03/P2\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 17, // 140% of 12px\r\n margin: 0,\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterIndIcon: {\r\n width: 12,\r\n height: 12,\r\n },\r\n\r\n verifiedCustdMdlPrivacyIcon: {\r\n width: 20,\r\n height: 20,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterLabelCont: {\r\n width: \"100%\",\r\n height: 51,\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSliderCont: {\r\n width: \"98%\",\r\n height: 16,\r\n flexShrink: 0,\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSlider: {\r\n width: \"100%\",\r\n height: 5,\r\n flexShrink: 0,\r\n borderRadius: 10,\r\n backgroundColor: \"#EEEEF0\", // var(--Neutral-100)\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSliderInd: {\r\n height: 5,\r\n flexShrink: 0,\r\n borderRadius: 10,\r\n backgroundColor: \"#603FF4\", // var(--secondary-electric-violet-600)\r\n position: \"relative\",\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSliderIcon: {\r\n flexShrink: 0,\r\n position: \"absolute\",\r\n top: -5,\r\n right: 0,\r\n width: 16,\r\n height: 16,\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterLabelTextCont: {\r\n display: \"flex\",\r\n width: \"100%\",\r\n paddingVertical: 10,\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n },\r\n verifiedCustdMdlAddCosignerConfirmBodyFooterLabelText: {\r\n color: \"#0C0C0E\", // var(--Neutral-950)\r\n\r\n // Paragraph 02/P2\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 17, // 140% of 12px\r\n margin: 0,\r\n cursor: \"pointer\",\r\n },\r\n verifiedCustdMdlAC2BContentHeaderBodyHeaderIcons: {\r\n display: \"flex\",\r\n justifyContent: \"flex-end\",\r\n alignItems: \"center\",\r\n gap: 16,\r\n marginTop: 10,\r\n },\r\n verifiedCustdMdlAddCosignerStep2BodyContentFooterDis: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 4,\r\n marginBottom: 18,\r\n },\r\n\r\n verifiedCustdMdlAddCosignerStep2BodyContentFooterTextDis: {\r\n color: \"#B6B7C3\",\r\n textAlign: \"right\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"500\",\r\n lineHeight: 21,\r\n },\r\n\r\n verifiedCustdMdlStartupContactContentHeaderCont: {\r\n width: \"100%\",\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n display: \"flex\",\r\n },\r\n\r\n verifiedCustdMdlAddCosignerConfirmBodyContentOutter: {\r\n backgroundColor: \"rgba(0, 0, 0, 0.40)\",\r\n zIndex: 5,\r\n position: \"absolute\",\r\n width: \"100%\",\r\n bottom: 0,\r\n right: 0,\r\n left: 0,\r\n height: \"100%\",\r\n display: \"flex\",\r\n flexDirection: \"column-reverse\",\r\n },\r\n\r\n verifiedCustdMdlPortfolioPageContentHeaderButton: {\r\n display: \"flex\",\r\n paddingVertical: 6,\r\n paddingHorizontal: 12,\r\n alignItems: \"center\",\r\n gap: 4,\r\n borderRadius: 32,\r\n backgroundColor: \"#362689\", // Electric Violet 900\r\n cursor: \"pointer\",\r\n color: \"#FFFFFF\",\r\n borderWidth: 0,\r\n width: \"auto\",\r\n maxWidth: 150,\r\n fontFamily: \"Roboto\",\r\n fontSize: 10.4, // 0.65rem ≈ 10.4px\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 14.56, // 140%\r\n height: 30,\r\n flexWrap: \"wrap\",\r\n },\r\n\r\n verifiedCustdMdlPortfolioPageContentHeaderButtonCont: {\r\n width: \"auto\",\r\n height: \"auto\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n gap: 4,\r\n justifyContent: \"flex-start\",\r\n position: \"relative\",\r\n },\r\n\r\n verifiedCustdMdlPortfolioPageContentHeaderButtonBody: {\r\n height: \"auto\",\r\n width: \"auto\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n gap: 4,\r\n borderWidth: 0,\r\n borderRadius: 10,\r\n backgroundColor: \"#F7F7F8\",\r\n padding: 10,\r\n position: \"absolute\",\r\n top: 33,\r\n right: 0,\r\n },\r\n\r\n verifiedCustdMdlPortfolioPageContentHeaderButtonBodyCont: {\r\n backgroundColor: \"transparent\",\r\n cursor: \"pointer\",\r\n borderWidth: 1,\r\n borderColor: \"transparent\",\r\n padding: 5,\r\n },\r\n\r\n verifiedCustdMdlPortfolioPageContentHeaderButtonBodyText: {\r\n width: 110,\r\n fontFamily: \"Roboto\",\r\n fontSize: 10.4,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 14.56,\r\n flexWrap: \"wrap\",\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentThirdButton: {\r\n display: \"flex\",\r\n width: 100,\r\n paddingVertical: 6,\r\n paddingHorizontal: 14,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 10,\r\n borderRadius: 100,\r\n borderWidth: 1,\r\n borderColor: \"#4e2bd7\",\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentThirdButtonText: {\r\n color: \"#603ff4\",\r\n textAlign: \"center\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"600\",\r\n lineHeight: 17.5, // 125%\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentThird: {\r\n display: \"flex\",\r\n padding: 12,\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 12,\r\n alignSelf: \"stretch\",\r\n borderRadius: 8,\r\n backgroundColor: \"#FFFFFF\",\r\n // Shadow Nav 1\r\n shadowColor: \"#000\",\r\n shadowOffset: { width: 0, height: 0 },\r\n shadowOpacity: 0.12,\r\n shadowRadius: 16,\r\n elevation: 4,\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentThirdContainer: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"center\",\r\n alignItems: \"flex-start\",\r\n gap: 12,\r\n alignSelf: \"stretch\",\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentThirdContent: {\r\n display: \"flex\",\r\n paddingVertical: 4,\r\n paddingHorizontal: 0,\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n alignSelf: \"stretch\",\r\n borderRadius: 8,\r\n cursor: \"pointer\",\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentThirdContentTextContainer: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentThirdContentText: {\r\n color: \"#383842\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 21, // 150%\r\n maxWidth: 170,\r\n flexWrap: \"wrap\",\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentThirdContentLine: {\r\n width: \"100%\",\r\n height: 1,\r\n backgroundColor: \"#EEEEF0\",\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContent: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"center\",\r\n alignItems: \"flex-start\",\r\n gap: 16,\r\n alignSelf: \"stretch\",\r\n },\r\n\r\n verifiedCustdMdlAssetLayoutContent: {\r\n display: \"flex\",\r\n paddingTop: 0,\r\n paddingBottom: 155,\r\n paddingHorizontal: 20,\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 20,\r\n borderRadius: 8,\r\n backgroundColor: \"#FFFFFF\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentSecond: {\r\n display: \"flex\",\r\n padding: 12,\r\n flexDirection: \"column\",\r\n alignItems: \"flex-start\",\r\n gap: 12,\r\n alignSelf: \"stretch\",\r\n borderRadius: 8,\r\n backgroundColor: \"#FFFFFF\",\r\n shadowColor: \"#000\",\r\n shadowOffset: { width: 0, height: 0 },\r\n shadowOpacity: 0.12,\r\n shadowRadius: 16,\r\n elevation: 4,\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentSecondText: {\r\n color: \"#383842\",\r\n textAlign: \"center\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 14,\r\n fontStyle: \"normal\",\r\n fontWeight: \"700\",\r\n lineHeight: 21,\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentSecondContainer: {\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n alignSelf: \"stretch\",\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentSecondContent: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n borderRadius: 24,\r\n cursor: \"pointer\",\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentSecondContentIcon: {\r\n display: \"flex\",\r\n padding: 12,\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n borderRadius: 4,\r\n backgroundColor: \"#ECEFFF\",\r\n },\r\n\r\n verifiedCustdMdlProfilePopupContentSecondContentText: {\r\n color: \"#000000\",\r\n textAlign: \"center\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 18,\r\n textTransform: \"capitalize\",\r\n width: \"auto\",\r\n maxWidth: 60,\r\n height: 36,\r\n },\r\n\r\n VerifiedCustdMdlOfferSecurityPopupInfoContentGrad: {\r\n display: \"flex\",\r\n paddingVertical: 6,\r\n paddingHorizontal: 12,\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n gap: 10,\r\n backgroundColor: \"#FFFFFF\",\r\n position: \"absolute\",\r\n top: -1,\r\n left: 4,\r\n width: 230,\r\n borderRadius: 2,\r\n zIndex: 3,\r\n // <LinearGradient> equivalent gradient can go here\r\n shadowColor: \"#000\",\r\n shadowOffset: { width: 0, height: 0 },\r\n shadowOpacity: 0.12,\r\n shadowRadius: 16,\r\n elevation: 4,\r\n },\r\n\r\n verifiedCustdMdlOfferSecurityPopupInfoContentText: {\r\n color: \"#383842\",\r\n width: \"auto\",\r\n maxWidth: 300,\r\n height: \"auto\",\r\n flexWrap: \"wrap\",\r\n fontFamily: \"Roboto\",\r\n fontSize: 12,\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n lineHeight: 16.8,\r\n },\r\n};\r\n","import { initPlatform, getPlatformComponents } from \"./platform\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { VaultContextProvider } from \"../services/store\";\r\nimport { VerifiedCustodyProps, VerifiedWalletVault } from \"../utils/types\";\r\nimport FTUPage from \"./ftu\";\r\nimport EnterPinPage from \"./enterPin\";\r\nimport {\r\n hashTheString,\r\n initWalletAndContract,\r\n loadAllGoogleFonts,\r\n loadAllGoogleFontsRN,\r\n} from \"../utils/helpers\";\r\nimport { actionTexts, countriesDetails, imageAssets } from \"../utils/constants\";\r\nimport AddCosignersPage from \"./addCosigners\";\r\nimport Success from \"../components/success\";\r\nimport CreatePinPage from \"./createPin\";\r\n\r\nconst VerifiedCustody = (props: VerifiedCustodyProps) => {\r\n const [ready, setReady] = useState<boolean>(false);\r\n const [platformComponents, setPlatformComponents] = useState<any>({});\r\n const [fontsLoaded, setFontsLoaded] = useState<boolean>(false);\r\n const [isOnboard, setisOnboard] = useState<boolean | null>(null);\r\n const [vaultData, setVaultData] = useState<VerifiedWalletVault>({});\r\n const [_vaultData, _setVaultData] = useState<any>({});\r\n const [isLoading, setIsLoading] = useState<boolean>(false);\r\n const [showDashboard, setShowDasboard] = useState<boolean>(false);\r\n const [showCompleteVault, setShowCompleteVault] = useState<boolean>(false);\r\n const [showResetPin, setShowResetPin] = useState<boolean>(false);\r\n const [action, setAction] = useState<string>(\"\");\r\n const [allCountries, setAllCountries] = useState([]);\r\n const [step, setStep] = useState<string>(\"\");\r\n const [selectedCountry, setSelectedCountry] = useState(\r\n props.defaultCountry || {\r\n area: \"1\",\r\n flag: imageAssets.usaFlag,\r\n name: \"United States\",\r\n }\r\n );\r\n const [userNumberFmt, setUserNumberFmt] = useState<string>(\"\");\r\n const [userEmail, setUserEmail] = useState<string>(\"\");\r\n\r\n useEffect(() => {\r\n const loadModule = async () => {\r\n await initPlatform();\r\n const components = getPlatformComponents();\r\n if (components) {\r\n setPlatformComponents(components);\r\n setReady(true);\r\n }\r\n };\r\n loadModule();\r\n }, []);\r\n\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Font,\r\n AsyncStorage,\r\n ActivityIndicator,\r\n styles,\r\n } = platformComponents;\r\n\r\n useEffect(() => {\r\n const PreloadGoogleFonts = async () => {\r\n if (!isReactNative) {\r\n // Only load Google fonts on web\r\n const isFontsLoaded = loadAllGoogleFonts(document);\r\n setFontsLoaded(isFontsLoaded);\r\n } else if (Font) {\r\n //load fonts with expo-font for react native.\r\n await loadAllGoogleFontsRN(Font);\r\n setFontsLoaded(true);\r\n } else {\r\n setFontsLoaded(true);\r\n }\r\n };\r\n if (!fontsLoaded && ready) {\r\n PreloadGoogleFonts();\r\n }\r\n }, [ready, fontsLoaded]);\r\n\r\n useEffect(() => {\r\n const checkUserOnboardingStatus = async () => {\r\n if (!isReactNative) {\r\n // On web we use chrome extension storage or localStorage\r\n if (chrome?.storage?.local) {\r\n chrome.storage.local.get(\"myVault\", (res) => {\r\n if (res.myVault && JSON.parse(res.myVault)?.vaultId) {\r\n setVaultData(JSON.parse(res.myVault));\r\n setisOnboard(true);\r\n } else {\r\n setisOnboard(false);\r\n }\r\n });\r\n } else if (localStorage) {\r\n const myVault = JSON.parse(localStorage.getItem(\"myVault\"));\r\n if (myVault && myVault?.vaultId) {\r\n setVaultData(myVault);\r\n setisOnboard(true);\r\n } else setisOnboard(false);\r\n } else {\r\n setisOnboard(false);\r\n }\r\n } else if (AsyncStorage) {\r\n try {\r\n // On react native we use react-native-async-storage\r\n const storedVault = await AsyncStorage.getItem(\"myVault\");\r\n if (storedVault) {\r\n const myVault = JSON.parse(storedVault);\r\n if (myVault?.vaultId) {\r\n setVaultData(myVault);\r\n setisOnboard(true);\r\n return;\r\n }\r\n }\r\n setisOnboard(false);\r\n } catch (err) {\r\n console.error(\"Error reading vault data on react:\", err);\r\n setisOnboard(false);\r\n }\r\n }\r\n };\r\n\r\n if (ready) {\r\n checkUserOnboardingStatus();\r\n }\r\n }, [ready]);\r\n\r\n useEffect(() => {\r\n const getAndFormatAllCountries = () => {\r\n const fmtCountries = countriesDetails //use api instead???\r\n .map((cnt) => {\r\n if (cnt) {\r\n return {\r\n name: cnt?.name,\r\n countryName: cnt?.name,\r\n officialName: cnt?.name,\r\n currencySymbol: cnt?.currency,\r\n currencyName: cnt?.currency,\r\n officialCurrencySymbol: cnt?.currency,\r\n countryCode: cnt?.code,\r\n flag: cnt?.flag,\r\n continent: cnt?.continent,\r\n phone_code: cnt?.phone_code,\r\n code: cnt?.code,\r\n };\r\n }\r\n return null;\r\n })\r\n .filter((cnt) => cnt !== undefined && cnt !== null);\r\n setAllCountries(fmtCountries);\r\n };\r\n getAndFormatAllCountries();\r\n }, []);\r\n\r\n return (\r\n <React.Fragment>\r\n {ready && (\r\n <React.Fragment>\r\n {fontsLoaded && (\r\n <VaultContextProvider>\r\n {isLoading && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlLoadingScreen,\r\n height: \"100vh\",\r\n }\r\n : { height: \"100vh\" }\r\n }\r\n className=\"verified-custd-mdl-loading-screen\"\r\n >\r\n <ActivityIndicator size=\"large\" color=\"blue\" />\r\n </View>\r\n )}\r\n <View\r\n id=\"verified-custd-out-cont\"\r\n className=\"verified-custd-mdl-container\"\r\n style={\r\n isReactNative ? { ...styles.verifiedCustdMdlContainer } : {}\r\n }\r\n >\r\n {isOnboard === null && props.delayPageElement && (\r\n <React.Fragment>{props.delayPageElement}</React.Fragment>\r\n )}\r\n\r\n {isOnboard === null && !props.delayPageElement && (\r\n <View\r\n style={\r\n props.delayPageStyle\r\n ? props.delayPageStyle\r\n : {\r\n width: \"100%\",\r\n height: \"100%\",\r\n background: \"transparent\",\r\n border: \"none\",\r\n }\r\n }\r\n >\r\n {\" \"}\r\n </View>\r\n )}\r\n\r\n {isOnboard !== null && (\r\n <React.Fragment>\r\n {!isOnboard && (\r\n <FTUPage\r\n platform={platformComponents}\r\n fontsLoaded={fontsLoaded}\r\n helperFunctions={props.helperFunctions}\r\n popupView={props.popupView}\r\n action={props.action ? props.action : \"getPk\"}\r\n vaultData={\r\n props.reqVaultData\r\n ? {\r\n vaultId: decodeURIComponent(\r\n props.reqVaultData?.vId ||\r\n props.reqVaultData?.vaultId\r\n ),\r\n hashedVaultId: hashTheString(\r\n decodeURIComponent(\r\n props.reqVaultData?.vId ||\r\n props.reqVaultData?.vaultId\r\n )\r\n ),\r\n hashedVaultPin: decodeURIComponent(\r\n props.reqVaultData?.vPh ||\r\n props.reqVaultData?.hashedVaultPin\r\n ),\r\n coSignerId: decodeURIComponent(\r\n props.reqVaultData?.cId\r\n ),\r\n }\r\n : null\r\n }\r\n txData={\r\n props.txData\r\n ? Object.values(props.txData)[\r\n Object.keys(props.txData).length - 1\r\n ]\r\n : null\r\n }\r\n showLogoPage={props.showLogoPage}\r\n logoPageElement={props.logoPageElement}\r\n logoTimeoutTime={props.logoTimeoutTime}\r\n defaultCountry={props.defaultCountry}\r\n setisOnboard={setisOnboard}\r\n setIsLoading={setIsLoading}\r\n dashbordElement={props.dashbordElement}\r\n chainId={Number(props.chainId)}\r\n enablePhone={props.enablePhone}\r\n setShowDashboard={setShowDasboard}\r\n />\r\n )}\r\n\r\n {isOnboard && !showDashboard && !showCompleteVault && (\r\n <EnterPinPage\r\n platform={platformComponents}\r\n fontsLoaded={fontsLoaded}\r\n setisOnboard={setisOnboard}\r\n vaultId={vaultData?.vaultId}\r\n hashedVaultId={vaultData?.hashedVaultId}\r\n encrptedPk={vaultData?.pk}\r\n vaultAddress={vaultData?.address}\r\n vaultChannel={vaultData?.channel}\r\n regAddress={vaultData?.regAddress}\r\n origin={props.origin}\r\n title={props.title}\r\n actionText={\r\n props.actionText || actionTexts[props.action]\r\n }\r\n setIsLoading={setIsLoading}\r\n newChainId={Number(props.chainId)}\r\n action={props.action || \"\"}\r\n reqVaultData={\r\n props.reqVaultData\r\n ? {\r\n vaultId: decodeURIComponent(\r\n props.reqVaultData?.vId ||\r\n props.reqVaultData?.vaultId\r\n ),\r\n hashedVaultId: hashTheString(\r\n decodeURIComponent(\r\n props.reqVaultData?.vId ||\r\n props.reqVaultData?.vaultId\r\n )\r\n ),\r\n hashedVaultPin: decodeURIComponent(\r\n props.reqVaultData?.vPh ||\r\n props.reqVaultData?.hashedVaultPin\r\n ),\r\n coSignerId: decodeURIComponent(\r\n props.reqVaultData?.cId\r\n ),\r\n }\r\n : null\r\n }\r\n reqTxData={\r\n props.txData\r\n ? Object.values(props.txData)[\r\n Object.keys(props.txData).length - 1\r\n ]\r\n : null\r\n }\r\n txToSign={props.txToSign || null}\r\n signTxElement={props.signTxElement}\r\n helperFunctions={props.helperFunctions}\r\n setShowDashboard={setShowDasboard}\r\n setShowCompleteVault={setShowCompleteVault}\r\n setUserEmail={setUserEmail}\r\n setUserNumberFmt={setUserNumberFmt}\r\n setSelectedCountry={setSelectedCountry}\r\n enablePhone={props.enablePhone}\r\n />\r\n )}\r\n\r\n {isOnboard && showDashboard && showCompleteVault && (\r\n <EnterPinPage\r\n platform={platformComponents}\r\n fontsLoaded={fontsLoaded}\r\n setisOnboard={setisOnboard}\r\n vaultId={vaultData?.vaultId}\r\n hashedVaultId={vaultData?.hashedVaultId}\r\n encrptedPk={vaultData?.pk}\r\n vaultAddress={vaultData?.address}\r\n regAddress={vaultData?.regAddress}\r\n vaultChannel={vaultData?.channel}\r\n origin={props.origin}\r\n title={props.title}\r\n actionText={\r\n props.actionText || actionTexts[props.action]\r\n }\r\n setIsLoading={setIsLoading}\r\n newChainId={Number(props.chainId)}\r\n action={props.action || \"\"}\r\n reqVaultData={\r\n props.reqVaultData\r\n ? {\r\n vaultId: decodeURIComponent(\r\n props.reqVaultData?.vId ||\r\n props.reqVaultData?.vaultId\r\n ),\r\n hashedVaultId: hashTheString(\r\n decodeURIComponent(\r\n props.reqVaultData?.vId ||\r\n props.reqVaultData?.vaultId\r\n )\r\n ),\r\n hashedVaultPin: decodeURIComponent(\r\n props.reqVaultData?.vPh ||\r\n props.reqVaultData?.hashedVaultPin\r\n ),\r\n coSignerId: decodeURIComponent(\r\n props.reqVaultData?.cId\r\n ),\r\n }\r\n : null\r\n }\r\n reqTxData={\r\n props.txData\r\n ? Object.values(props.txData)[\r\n Object.keys(props.txData).length - 1\r\n ]\r\n : null\r\n }\r\n txToSign={props.txToSign || null}\r\n signTxElement={props.signTxElement}\r\n helperFunctions={props.helperFunctions}\r\n setShowDashboard={setShowDasboard}\r\n setShowCompleteVault={setShowCompleteVault}\r\n setUserEmail={setUserEmail}\r\n setUserNumberFmt={setUserNumberFmt}\r\n setSelectedCountry={setSelectedCountry}\r\n enablePhone={props.enablePhone}\r\n />\r\n )}\r\n\r\n {isOnboard &&\r\n !showDashboard &&\r\n showCompleteVault &&\r\n step === \"\" && (\r\n <View\r\n style={{\r\n width: \"100%\",\r\n heigth: \"100%\",\r\n padding: \"20px\",\r\n }}\r\n >\r\n <AddCosignersPage\r\n platform={platformComponents}\r\n fontsLoaded={fontsLoaded}\r\n setStep={setStep}\r\n setIsLoading={setIsLoading}\r\n userNumberFmt={userNumberFmt}\r\n userEmail={userEmail}\r\n selectedCountry={selectedCountry}\r\n allCountries={allCountries}\r\n helperFunctions={props.helperFunctions}\r\n enablePhone={props.enablePhone}\r\n />\r\n </View>\r\n )}\r\n\r\n {isOnboard &&\r\n !showDashboard &&\r\n showCompleteVault &&\r\n step === \"7\" && (\r\n <Success\r\n platform={platformComponents}\r\n action={props.action}\r\n setStep={setStep}\r\n stepToSet=\"8\"\r\n customTextHeader=\"Successful\"\r\n customTextFooter=\"Congratulations! You have successfully added Co-signers to your account.\"\r\n />\r\n )}\r\n\r\n {isOnboard &&\r\n !showDashboard &&\r\n showCompleteVault &&\r\n step === \"8\" &&\r\n props.dashbordElement && (\r\n <props.dashbordElement setIsLoading={setIsLoading} />\r\n )}\r\n\r\n {isOnboard &&\r\n !showDashboard &&\r\n showCompleteVault &&\r\n step === \"8\" &&\r\n !props.dashbordElement && (\r\n <React.Fragment></React.Fragment>\r\n )}\r\n\r\n {isOnboard &&\r\n !showCompleteVault &&\r\n showDashboard &&\r\n !showResetPin &&\r\n props.dashbordElement && (\r\n <props.dashbordElement\r\n setIsLoading={setIsLoading}\r\n setShowResetPin={setShowResetPin}\r\n setAction={setAction}\r\n setUserNumberFmt={setUserNumberFmt}\r\n setUserEmail={setUserEmail}\r\n setSelectedCountry={setSelectedCountry}\r\n setVaultData={_setVaultData}\r\n initWalletAndContract={initWalletAndContract}\r\n />\r\n )}\r\n\r\n {isOnboard &&\r\n !showCompleteVault &&\r\n showDashboard &&\r\n !showResetPin &&\r\n !props.dashbordElement && (\r\n <React.Fragment></React.Fragment>\r\n )}\r\n\r\n {isOnboard &&\r\n !showCompleteVault &&\r\n showDashboard &&\r\n showResetPin && (\r\n <View\r\n style={{\r\n width: \"100%\",\r\n heigth: \"100%\",\r\n padding: \"20px\",\r\n }}\r\n >\r\n <CreatePinPage\r\n platform={platformComponents}\r\n fontsLoaded={fontsLoaded}\r\n action=\"reset-pin\"\r\n setStep={setStep}\r\n setIsLoading={setIsLoading}\r\n userNumberFmt={userNumberFmt}\r\n userEmail={userEmail}\r\n vaultData={vaultData}\r\n selectedCountry={selectedCountry}\r\n helperFunctions={props.helperFunctions}\r\n />\r\n </View>\r\n )}\r\n </React.Fragment>\r\n )}\r\n </View>\r\n </VaultContextProvider>\r\n )}\r\n\r\n {!fontsLoaded && <Text>Loading Module Fonts...</Text>}\r\n </React.Fragment>\r\n )}\r\n {!ready &&\r\n typeof navigator !== \"undefined\" &&\r\n navigator.product !== \"ReactNative\" && (\r\n <React.Fragment>Preparing Module...</React.Fragment>\r\n )}\r\n </React.Fragment>\r\n );\r\n};\r\n\r\nexport default VerifiedCustody;\r\n","import React, { createContext, useContext, useState } from \"react\";\r\n\r\ninterface VaultStore {\r\n chainId: number | null;\r\n pk: string | null;\r\n address: string | null;\r\n signer: any;\r\n provider: any;\r\n vaultContract: any;\r\n vaultData: any;\r\n setChainId: (chainId: number | null) => void;\r\n setPk: (pk: string | null) => void;\r\n setAddress: (address: string | null) => void;\r\n setSigner: (signer: any) => void;\r\n setProvider: (provider: any) => void;\r\n setVaultContract: (vaultContract: any) => void;\r\n setVaultData: (vaultData: any) => void;\r\n}\r\n\r\nconst VaultStoreContext = createContext<VaultStore | undefined>(undefined);\r\n\r\nexport const VaultContextProvider = ({ children }: { children: any }) => {\r\n const [chainId, setChainId] = useState<number | null>(null);\r\n const [pk, setPk] = useState<string | null>(null);\r\n const [address, setAddress] = useState<string | null>(null);\r\n const [signer, setSigner] = useState<any>(null);\r\n const [provider, setProvider] = useState<any>(null);\r\n const [vaultContract, setVaultContract] = useState<any>(null);\r\n const [vaultData, setVaultData] = useState<any>(null);\r\n\r\n return (\r\n <VaultStoreContext.Provider\r\n value={{\r\n chainId,\r\n pk,\r\n address,\r\n signer,\r\n provider,\r\n vaultContract,\r\n vaultData,\r\n setChainId,\r\n setPk,\r\n setAddress,\r\n setSigner,\r\n setProvider,\r\n setVaultContract,\r\n setVaultData,\r\n }}\r\n >\r\n {children}\r\n </VaultStoreContext.Provider>\r\n );\r\n};\r\n\r\nexport const useVaultStore = () => {\r\n const context = useContext(VaultStoreContext);\r\n if (!context) {\r\n throw new Error(\"useVaultStore must be used within VaultContextProvider\");\r\n }\r\n return context;\r\n};\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { debounce } from \"lodash\";\r\nimport { actionTexts, countriesDetails, imageAssets } from \"../utils/constants\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport {\r\n initWalletAndContract,\r\n loadAllGoogleFonts,\r\n loadAllGoogleFontsRN,\r\n} from \"../utils/helpers\";\r\nimport ContactPage from \"./contact\";\r\nimport OTPPage from \"./otp\";\r\nimport CreatePinPage from \"./createPin\";\r\nimport Success from \"../components/success\";\r\nimport AddCosignersPage from \"./addCosigners\";\r\nimport EnterPinPage from \"./enterPin\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\n\r\nconst FTUPage = (props: {\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n rnPasskey: any;\r\n };\r\n fontsLoaded?: boolean;\r\n popupView?: boolean;\r\n action?: string;\r\n vaultData?: any;\r\n txData?: any;\r\n chainId?: number;\r\n defaultCountry?: {\r\n area: string;\r\n flag: string;\r\n name: string;\r\n };\r\n showLogoPage?: boolean;\r\n logoPageElement?: React.JSX.Element;\r\n logoTimeoutTime?: number;\r\n showStartupPage?: boolean;\r\n startupPageElement?: React.JSX.Element;\r\n enablePhone?: boolean;\r\n setisOnboard?: (isOnboard: boolean) => void;\r\n helperFunctions?: VerifiedCustodyHelpers;\r\n setIsLoading?: (isLoading: boolean) => void;\r\n setShowDashboard?: (showDashboard: boolean) => void;\r\n dashbordElement?: React.ComponentType<{\r\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>;\r\n }>;\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n } = props?.platform;\r\n const [fontsLoaded, setFontsLoaded] = useState<boolean>(\r\n props.fontsLoaded || false\r\n );\r\n const [showLogo, setShowLogo] = useState<boolean>(\r\n props.showLogoPage || false\r\n );\r\n const [allCountries, setAllCountries] = useState<any[]>([]);\r\n const [step, setStep] = useState<string>(\"2\");\r\n\r\n const [selectedCountry, setSelectedCountry] = useState(\r\n props.defaultCountry || {\r\n area: \"1\",\r\n flag: imageAssets.usaFlag,\r\n name: \"United States\",\r\n }\r\n );\r\n\r\n const [userNumberFmt, setUserNumberFmt] = useState<string>(\"\");\r\n const [userEmail, setUserEmail] = useState<string>(\"\");\r\n const [showSuccessBtn, setShowSuccessBtn] = useState<boolean>(false);\r\n const [successBtnText, setSuccessBtnText] = useState<string>(\"\");\r\n const [successBtnNeutText, setSuccessBtnNeutText] = useState<string>(\"\");\r\n const [actionHeaderText, setActionHeaderText] = useState<string>(\"\");\r\n const [actionFooterText, setActionFooterText] = useState<string>(\"\");\r\n const [successBtnFunc, setSuccessBtnFunc] = useState<any>(null);\r\n const [successBtnNeutFunc, setSuccessBtnNeutFunc] = useState<any>(null);\r\n const [isExistingUser, setIsExistingUser] = useState<boolean>(false);\r\n\r\n const {\r\n setChainId,\r\n setAddress,\r\n setPk,\r\n setProvider,\r\n setSigner,\r\n setVaultContract,\r\n setVaultData,\r\n vaultData,\r\n chainId,\r\n vaultContract,\r\n } = useVaultStore();\r\n\r\n useEffect(() => {\r\n const PreloadGoogleFonts = async () => {\r\n if (!isReactNative) {\r\n // Only load Google fonts on web\r\n const isFontsLoaded = loadAllGoogleFonts(document);\r\n setFontsLoaded(isFontsLoaded);\r\n } else if (Font) {\r\n //load fonts with expo-font for react native.\r\n await loadAllGoogleFontsRN(Font);\r\n setFontsLoaded(true);\r\n } else {\r\n setFontsLoaded(true);\r\n }\r\n };\r\n if (!props.fontsLoaded) {\r\n PreloadGoogleFonts();\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n const initializeUserWalletAndContract = async () => {\r\n let lastPk: any;\r\n\r\n if (!isReactNative && chrome?.storage?.local) {\r\n lastPk = await new Promise((resolve) => {\r\n chrome.storage.local.get([\"lastPk\"], (result) => {\r\n resolve(result.lastPk);\r\n });\r\n });\r\n } else if (!isReactNative && localStorage) {\r\n lastPk = localStorage.getItem(\"lastPk\");\r\n } else if (isReactNative && AsyncStorage) {\r\n lastPk = AsyncStorage.getItem(\"lastPk\");\r\n }\r\n\r\n const walletAndContractDetails = await initWalletAndContract(\r\n props.chainId,\r\n lastPk && lastPk?.length > 0 ? lastPk : undefined\r\n );\r\n setChainId(walletAndContractDetails.chainId);\r\n setAddress(walletAndContractDetails.address);\r\n setPk(walletAndContractDetails.pk);\r\n setProvider(walletAndContractDetails.provider);\r\n setSigner(walletAndContractDetails.signer);\r\n setVaultData(walletAndContractDetails.vaultData);\r\n if (walletAndContractDetails.vaultContract?.contractAddress) {\r\n setVaultContract(walletAndContractDetails.vaultContract);\r\n } else {\r\n setVaultContract(undefined);\r\n }\r\n };\r\n if (!vaultContract?.contractAddress) {\r\n initializeUserWalletAndContract();\r\n }\r\n }, [vaultContract]);\r\n\r\n useEffect(() => {\r\n const handleLogoDisplay = debounce(() => {\r\n setShowLogo(false);\r\n }, props.logoTimeoutTime ?? 3000);\r\n handleLogoDisplay();\r\n }, []);\r\n\r\n useEffect(() => {\r\n const getAndFormatAllCountries = () => {\r\n const fmtCountries: any = countriesDetails\r\n .map((cnt: any) => {\r\n if (!cnt) return undefined;\r\n return {\r\n name: cnt.name,\r\n countryName: cnt.name,\r\n officialName: cnt.name,\r\n currencySymbol: cnt.currency,\r\n currencyName: cnt.currency,\r\n officialCurrencySymbol: cnt.currency,\r\n countryCode: cnt.code,\r\n flag: cnt.flag,\r\n continent: cnt.continent,\r\n phone_code: cnt.phone_code,\r\n code: cnt.code,\r\n };\r\n })\r\n .filter(Boolean);\r\n setAllCountries(fmtCountries);\r\n };\r\n getAndFormatAllCountries();\r\n }, []);\r\n\r\n return (\r\n <ScrollView style={{ padding: 20, width: \"100%\", heigth: \"100%\" }}>\r\n {fontsLoaded && showLogo && props.logoPageElement && (\r\n <View>{props.logoPageElement}</View>\r\n )}\r\n {fontsLoaded && !showLogo && (\r\n <View style={{ width: \"100%\", heigth: \"100%\" }}>\r\n {/* Render steps */}\r\n {step === \"2\" && (\r\n <ContactPage\r\n platform={props.platform}\r\n fontsLoaded={fontsLoaded}\r\n setStep={setStep}\r\n setIsLoading={props.setIsLoading}\r\n setUserNumberFmt={setUserNumberFmt}\r\n userNumberFmt={userNumberFmt}\r\n setUserEmail={setUserEmail}\r\n userEmail={userEmail}\r\n setSelectedCountry={setSelectedCountry}\r\n selectedCountry={selectedCountry}\r\n allCountries={allCountries}\r\n helperFunctions={props.helperFunctions}\r\n enablePhone={props.enablePhone}\r\n />\r\n )}\r\n {step === \"3\" && (\r\n <OTPPage\r\n platform={props.platform}\r\n fontsLoaded={fontsLoaded}\r\n setStep={setStep}\r\n setIsLoading={props.setIsLoading}\r\n userNumberFmt={userNumberFmt}\r\n setUserNumberFmt={setUserNumberFmt}\r\n setUserEmail={setUserEmail}\r\n userEmail={userEmail}\r\n selectedCountry={selectedCountry}\r\n helperFunctions={props.helperFunctions}\r\n setIsExistingUser={setIsExistingUser}\r\n />\r\n )}\r\n\r\n {step === \"4\" && (\r\n <CreatePinPage\r\n platform={props.platform}\r\n fontsLoaded={fontsLoaded}\r\n setStep={setStep}\r\n setIsLoading={props.setIsLoading}\r\n setShowSuccessBtn={setShowSuccessBtn}\r\n setSuccessBtnText={setSuccessBtnText}\r\n setSuccessBtnNeutText={setSuccessBtnNeutText}\r\n setSuccessBtnFunc={setSuccessBtnFunc}\r\n setSuccessBtnNeutFunc={setSuccessBtnNeutFunc}\r\n userNumberFmt={userNumberFmt}\r\n userEmail={userEmail}\r\n selectedCountry={selectedCountry}\r\n action={props.action}\r\n vaultData={props.vaultData}\r\n txData={props.txData}\r\n setActionHeaderText={setActionHeaderText}\r\n setActionFooterText={setActionFooterText}\r\n helperFunctions={props.helperFunctions}\r\n isExistingUser={isExistingUser}\r\n />\r\n )}\r\n\r\n {step === \"5\" && (\r\n <Success\r\n platform={props.platform}\r\n setStep={setStep}\r\n stepToSet=\"6\"\r\n customTextHeader=\"Successful\"\r\n customTextFooter=\"Congratulations! You have successfully created a PIN to protect your account.\"\r\n action={props.action}\r\n showButton={showSuccessBtn}\r\n buttonText={successBtnText}\r\n buttonNeutText={successBtnNeutText}\r\n buttonFunc={successBtnFunc}\r\n buttonNeutFunc={successBtnNeutFunc}\r\n actionHeaderText={actionHeaderText}\r\n actionFooterText={actionFooterText}\r\n />\r\n )}\r\n\r\n {step === \"6\" && (\r\n <AddCosignersPage\r\n platform={props.platform}\r\n fontsLoaded={fontsLoaded}\r\n setStep={setStep}\r\n setIsLoading={props.setIsLoading}\r\n userNumberFmt={userNumberFmt}\r\n userEmail={userEmail}\r\n selectedCountry={selectedCountry}\r\n allCountries={allCountries}\r\n helperFunctions={props.helperFunctions}\r\n enablePhone={props.enablePhone}\r\n />\r\n )}\r\n\r\n {step === \"7\" && props.action === \"\" && (\r\n <Success\r\n platform={props.platform}\r\n action={props.action}\r\n setStep={setStep}\r\n stepToSet=\"8\"\r\n customTextHeader=\"Successful\"\r\n customTextFooter=\"Congratulations! You have successfully added Co-signers to your account.\"\r\n />\r\n )}\r\n\r\n {step === \"7\" && props.action !== \"\" && (\r\n <Success\r\n platform={props.platform}\r\n action={props.action}\r\n messageTosend={\r\n props.action === \"signRecovery\"\r\n ? {\r\n type: \"signRecovery\",\r\n value: {\r\n vaultData: props.vaultData,\r\n txData: { newUser: true, ...props.txData },\r\n chainId: chainId,\r\n },\r\n }\r\n : { type: \"closePopup\", key: \"\", value: \"\" }\r\n }\r\n customTextHeader=\"Successful\"\r\n customTextFooter=\"Congratulations! You have successfully added Co-signers to your account.\"\r\n />\r\n )}\r\n\r\n {step === \"8\" && props.dashbordElement && (\r\n <props.dashbordElement setIsLoading={props.setIsLoading} />\r\n )}\r\n\r\n {step === \"8\" && !props.dashbordElement && (\r\n <React.Fragment></React.Fragment>\r\n )}\r\n\r\n {step === \"0\" && (\r\n <EnterPinPage\r\n platform={props.platform}\r\n fontsLoaded={fontsLoaded}\r\n vaultId={vaultData?.vaultId}\r\n setisOnboard={props.setisOnboard}\r\n hashedVaultId={vaultData?.hashedVaultId}\r\n encrptedPk={vaultData?.pk}\r\n vaultAddress={vaultData?.address}\r\n vaultChannel={vaultData?.channel}\r\n actionText={actionTexts[\"getPk\"]}\r\n setIsLoading={props.setIsLoading}\r\n newChainId={Number(chainId || props.chainId)}\r\n action={\"getPk\"}\r\n reqVaultData={vaultData}\r\n reqTxData={\r\n props.txData\r\n ? Object.keys(props.txData)?.map((ky) => {\r\n props.txData[ky] = decodeURIComponent(props.txData[ky]);\r\n return props.txData;\r\n })[Object.keys(props.txData)?.length - 1]\r\n : null\r\n }\r\n helperFunctions={props.helperFunctions}\r\n setUserEmail={setUserEmail}\r\n setUserNumberFmt={setUserNumberFmt}\r\n setSelectedCountry={setSelectedCountry}\r\n enablePhone={props.enablePhone}\r\n setShowDashboard={props.setShowDashboard}\r\n />\r\n )}\r\n </View>\r\n )}\r\n {!fontsLoaded && (\r\n <View style={{ padding: 20, width: \"100%\", heigth: \"100%\" }}>\r\n <Text>Loading Module Fonts...</Text>\r\n </View>\r\n )}\r\n </ScrollView>\r\n );\r\n};\r\n\r\nexport default FTUPage;\r\n","import {\r\n contractAddress,\r\n Custody,\r\n Provider,\r\n VerifiedWallet,\r\n} from \"@verified-network/verified-sdk\";\r\nimport { allGoogleFontUrls, defaultChainId, imageAssets } from \"./constants\";\r\nimport { ChainConfig } from \"./config\";\r\nimport { pbkdf2 } from \"@noble/hashes/pbkdf2\";\r\nimport { sha256 } from \"@noble/hashes/sha256\";\r\nimport { randomBytes, utf8ToBytes, bytesToUtf8 } from \"@noble/hashes/utils\";\r\nimport { gcm } from \"@noble/ciphers/aes\";\r\nimport crypt from \"crypto-js\";\r\nimport { toast } from \"react-toastify\";\r\nimport React from \"react\";\r\nimport {\r\n base,\r\n baseSepolia,\r\n gnosis,\r\n mainnet,\r\n polygon,\r\n sepolia,\r\n} from \"viem/chains\";\r\nimport { http } from \"viem\";\r\nimport { computeNexusAccount } from \"../lib/biconomyRNFix\";\r\n\r\n/**\r\n *\r\n * @param document Any web page loaded in the browser / Dom tree\r\n */\r\nexport const loadAllGoogleFonts = (document: Document) => {\r\n const apiExists = document.querySelector(\r\n `link[href=\"https://fonts.googleapis.com\"]`\r\n );\r\n if (!apiExists) {\r\n const apiLink = document.createElement(\"link\");\r\n apiLink.rel = \"preconnect\";\r\n apiLink.href = \"https://fonts.googleapis.com\";\r\n document.head.appendChild(apiLink);\r\n }\r\n const staticExists = document.querySelector(\r\n `link[href=\"https://fonts.gstatic.com\"]`\r\n );\r\n if (!staticExists) {\r\n const staticLink = document.createElement(\"link\");\r\n staticLink.rel = \"preconnect\";\r\n staticLink.href = \"https://fonts.gstatic.com\";\r\n document.head.appendChild(staticLink);\r\n }\r\n allGoogleFontUrls.map((fontUrl) => {\r\n const fontExists = document.querySelector(`link[href=\"${fontUrl}\"]`);\r\n if (!fontExists) {\r\n const fontLink = document.createElement(\"link\");\r\n fontLink.rel = \"stylesheet\";\r\n fontLink.href = fontUrl;\r\n document.head.appendChild(fontLink);\r\n }\r\n });\r\n return true;\r\n};\r\n\r\n/**\r\n *\r\n * @param expoFont default export from expo-font for react-native\r\n */\r\nexport const loadAllGoogleFontsRN = async (expoFont: any) => {\r\n await expoFont?.loadAsync({\r\n Roboto: require(\"../assets/reactNativeFonts/Roboto-Regular.ttf\"),\r\n Manrope: require(\"../assets/reactNativeFonts/Manrope-Regular.ttf\"),\r\n Hind: require(\"../assets/reactNativeFonts/Hind-Regular.ttf\"),\r\n });\r\n return true;\r\n};\r\n\r\n/**\r\n * initialize user's wallet and vault contract using existing private key or create a new wallet for user\r\n * unsupported/invalid chainId passed will automatically use default supported chainId\r\n * @param chainId\r\n * @param privateKey\r\n *\r\n */\r\nexport const initWalletAndContract = async (\r\n chainId?: number,\r\n privateKey?: string\r\n) => {\r\n try {\r\n let sender: VerifiedWallet;\r\n //import existing wallet or create new one.\r\n if (privateKey) {\r\n sender = new VerifiedWallet(privateKey);\r\n } else {\r\n const mnemonics = VerifiedWallet.generateMnemonic();\r\n sender = VerifiedWallet.importWallet(mnemonics);\r\n }\r\n\r\n //initialize provider, signer, privatekey and vault contract\r\n const cntAddresses: any = contractAddress;\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n const pk = sender.privateKey;\r\n const vaultContract = new Custody(signer, cntAddresses[_chainId]?.Custody);\r\n const _signer: any = signer;\r\n const chainToUse = [\r\n base,\r\n mainnet,\r\n gnosis,\r\n polygon,\r\n sepolia,\r\n baseSepolia,\r\n ].find((nt) => Number(nt?.id) === Number(_chainId));\r\n const address = await computeNexusAccount(chainToUse, http(), _signer);\r\n // console.log(\"address to send test ETH to: \", sender.address);\r\n\r\n //valid return\r\n return {\r\n chainId: _chainId,\r\n address,\r\n pk,\r\n signer,\r\n provider,\r\n vaultContract,\r\n vaultData: null,\r\n };\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\r\n \"Error while initializing user's wallet and contract: \",\r\n err\r\n );\r\n }\r\n //default return;\r\n return {\r\n chainId: null,\r\n address: null,\r\n pk: null,\r\n signer: null,\r\n provider: null,\r\n vaultContract: null,\r\n vaultData: null,\r\n };\r\n }\r\n};\r\n\r\nexport const hashTheString = (text: string): string => {\r\n const lower = text.toLowerCase();\r\n const hash = sha256(utf8ToBytes(lower));\r\n return (\r\n \"0x\" +\r\n Array.from(hash)\r\n .map((b) => b.toString(16).padStart(2, \"0\"))\r\n .join(\"\") //pure js for react native\r\n );\r\n};\r\n\r\nexport const hashTheBuffer = (buffer: ArrayBuffer | Uint8Array): string => {\r\n const bytes = buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer);\r\n const hash = sha256(bytes);\r\n return (\r\n \"0x\" +\r\n Array.from(hash)\r\n .map((b) => b.toString(16).padStart(2, \"0\"))\r\n .join(\"\")\r\n );\r\n};\r\n\r\nexport const encryptString = (text: string, secretKey: string) => {\r\n const encryptedAES = crypt.AES.encrypt(text, secretKey);\r\n return encryptedAES.toString();\r\n};\r\n\r\nexport const decryptString = (encryptedText: string, secretKey: string) => {\r\n var decryptedBytes = crypt.AES.decrypt(encryptedText, secretKey);\r\n var decryptedText = decryptedBytes.toString(crypt.enc.Utf8);\r\n return decryptedText;\r\n};\r\n\r\nexport const getErrorToastContent = (title: string, content: string) => {\r\n return (\r\n <div className=\"verified-custd-mdl-general-web-toast-error\">\r\n <img style={{ marginLeft: \"5px\" }} src={imageAssets.errorAlert} alt=\"\" />\r\n <div className=\"verified-custd-mdl-general-web-toast-error-container\">\r\n <p className=\"verified-custd-mdl-general-web-toast-error-title\">\r\n {title}\r\n </p>\r\n <p className=\"verified-custd-mdl-general-web-toast-error-label\">\r\n {content}\r\n </p>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport const getSuccessToastContent = (\r\n title: string,\r\n content: string,\r\n link: string\r\n) => {\r\n return (\r\n <div className=\"verified-custd-mdl-general-web-toast-success\">\r\n <div className=\"verified-custd-mdl-general-web-toast-success-cont\">\r\n <img\r\n style={{ marginLeft: \"5px\" }}\r\n src={imageAssets.successAlert}\r\n alt=\"\"\r\n />\r\n <div className=\"verified-custd-mdl-general-web-toast-success-container\">\r\n <p className=\"verified-custd-mdl-general-web-toast-error-title\">\r\n {title}\r\n </p>\r\n <p className=\"verified-custd-mdl-general-web-toast-error-label\">\r\n {content}\r\n </p>\r\n </div>\r\n </div>\r\n {link?.length > 0 && (\r\n <div className=\"verified-custd-mdl-general-web-toast-success-link\">\r\n <a\r\n className=\"verified-custd-mdl-general-web-toast-success-link-text\"\r\n href={link}\r\n target=\"_blank\"\r\n rel=\"noreferrer\"\r\n >\r\n Follow your transaction.\r\n </a>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport const errorToast = (title: string, content: string) => {\r\n toast.dismiss();\r\n return toast.error(getErrorToastContent(title, content), {\r\n closeButton: false,\r\n position: \"top-center\",\r\n autoClose: 3000,\r\n hideProgressBar: false,\r\n pauseOnHover: false,\r\n draggable: false,\r\n closeOnClick: false,\r\n style: {\r\n background: \"#fef2f2\",\r\n width: \"600px\",\r\n height: \"67px\",\r\n maxHeight: \"67px\",\r\n position: \"absolute\",\r\n top: \"5px\",\r\n right: \"5px\",\r\n borderRadius: \"8px\",\r\n },\r\n icon: false,\r\n });\r\n};\r\n\r\nexport const successToast = (title: string, content: string, link: string) => {\r\n toast.dismiss();\r\n return toast.success(getSuccessToastContent(title, content, link), {\r\n closeButton: false,\r\n position: \"top-center\",\r\n autoClose: 3000,\r\n hideProgressBar: false,\r\n pauseOnHover: false,\r\n draggable: false,\r\n closeOnClick: false,\r\n style: {\r\n background: \"var(--Success-50, #F1F8ED)\",\r\n\r\n width: \"600px\",\r\n height: \"67px\",\r\n maxHeight: \"67px\",\r\n position: \"absolute\",\r\n top: \"5px\",\r\n right: \"5px\",\r\n borderRadius: \"8px\",\r\n },\r\n icon: false,\r\n });\r\n};\r\n\r\nexport const resolveGlobalStyleUnit = (\r\n isReactNative: boolean,\r\n unitValueString: string,\r\n baseRem = 16\r\n) => {\r\n if (!isReactNative) {\r\n return unitValueString;\r\n }\r\n const value = parseFloat(unitValueString);\r\n\r\n if (unitValueString.endsWith(\"rem\")) {\r\n return value * baseRem;\r\n } else if (unitValueString.endsWith(\"px\")) {\r\n return value; // treat px as dp\r\n } else {\r\n return value; // unitless, just parse\r\n }\r\n};\r\n\r\nconst hexToBytes = (hex: string) => {\r\n // Remove 0x prefix if present\r\n const cleanHex =\r\n hex.startsWith(\"0x\") || hex.startsWith(\"0X\") ? hex.slice(2) : hex;\r\n\r\n if (cleanHex.length % 2 !== 0) {\r\n throw new Error(\"Invalid hex string: odd length\");\r\n }\r\n\r\n const byteLength = cleanHex.length / 2;\r\n const bytes = new Uint8Array(byteLength);\r\n for (let i = 0; i < byteLength; i++) {\r\n const byteHex = cleanHex.substr(i * 2, 2);\r\n bytes[i] = parseInt(byteHex, 16);\r\n }\r\n return bytes;\r\n};\r\n\r\nexport const publicKeyCredentialCreationOptions = (\r\n projectName: string,\r\n vaultId: string,\r\n hashedVaultId: string\r\n) => {\r\n const userId = hexToBytes(hashedVaultId);\r\n const credentials: any = {\r\n challenge: randomBytes(32),\r\n rp: {\r\n name: projectName,\r\n },\r\n user: {\r\n id: userId,\r\n name: vaultId,\r\n displayName: vaultId,\r\n },\r\n pubKeyCredParams: [\r\n { alg: -7, type: \"public-key\" }, // ES256\r\n { type: \"public-key\", alg: -257 }, // RS256\r\n ],\r\n authenticatorSelection: {\r\n userVerification: \"preferred\",\r\n residentKey: \"preferred\",\r\n },\r\n timeout: 60000,\r\n attestation: \"direct\",\r\n };\r\n\r\n return credentials;\r\n};\r\n\r\nexport const publicKeyCredentialRequestOptions = () => {\r\n const credential: any = {\r\n challenge: randomBytes(32),\r\n timeout: 60000,\r\n userVerification: \"preferred\",\r\n // allowCredentials: [\r\n // {\r\n // type: \"public-key\",\r\n // userHandle: userId,\r\n // },\r\n // ], //fetch all by default\r\n };\r\n\r\n return credential;\r\n};\r\n\r\n// Helpers for base64url encoding/decoding\r\nconst Uint8ArraytoBase64 = (buf: Uint8Array): string =>\r\n btoa(String.fromCharCode(...buf))\r\n .replace(/\\+/g, \"-\")\r\n .replace(/\\//g, \"_\")\r\n .replace(/=+$/, \"\");\r\n\r\n// Base64url decode to Uint8Array\r\nconst Base64URLtoUint8Array = (base64url: string): Uint8Array => {\r\n const base64 =\r\n base64url.replace(/-/g, \"+\").replace(/_/g, \"/\") +\r\n \"===\".slice((base64url.length + 3) % 4);\r\n const binary = atob(base64);\r\n return new Uint8Array([...binary].map((char) => char.charCodeAt(0)));\r\n};\r\n\r\nexport const encryptWithPasskey = async (\r\n plaintext: string,\r\n rawId: ArrayBuffer | Uint8Array, // allow both ArrayBuffer or Uint8Array\r\n rawIdString: string\r\n): Promise<string> => {\r\n // Convert rawId to Uint8Array if needed\r\n const rawIdBytes =\r\n rawId instanceof Uint8Array ? rawId : new Uint8Array(rawId);\r\n\r\n // Generate random 8 bytes for salt nonce\r\n const randomBytes8 = randomBytes(8);\r\n const randomHex = Array.from(randomBytes8)\r\n .map((b) => b.toString(16).padStart(2, \"0\"))\r\n .join(\"\");\r\n\r\n // Hash rawIdString + randomHex to create salt string\r\n const saltString = hashTheString(`${rawIdString}:${randomHex}`);\r\n const salt = utf8ToBytes(saltString);\r\n\r\n // Generate random 12-byte IV (nonce) for AES-GCM\r\n const iv = randomBytes(12);\r\n\r\n // Derive a 256-bit key using PBKDF2 with SHA-256 and 300k iterations\r\n const key = pbkdf2(sha256, rawIdBytes, salt, { c: 300_000, dkLen: 32 });\r\n\r\n // Encrypt plaintext using AES-GCM (noble's gcm)\r\n const cipher = gcm(key, iv);\r\n const ciphertext = cipher.encrypt(utf8ToBytes(plaintext));\r\n\r\n // Return combined base64url(salt) + \".\" + base64url(iv) + \".\" + base64url(ciphertext)\r\n return [\r\n Uint8ArraytoBase64(salt),\r\n Uint8ArraytoBase64(iv),\r\n Uint8ArraytoBase64(ciphertext),\r\n ].join(\".\");\r\n};\r\n\r\nexport const decryptWithPasskey = async (\r\n encryptedString: string,\r\n rawId: ArrayBuffer | Uint8Array // allow both ArrayBuffer or Uint8Array\r\n): Promise<string> => {\r\n const [saltB64, ivB64, ciphertextB64] = encryptedString.split(\".\");\r\n if (!saltB64 || !ivB64 || !ciphertextB64) {\r\n throw new Error(\"Invalid encrypted data format\");\r\n }\r\n\r\n // Convert rawId to Uint8Array if needed\r\n const rawIdBytes =\r\n rawId instanceof Uint8Array ? rawId : new Uint8Array(rawId);\r\n\r\n const salt = Base64URLtoUint8Array(saltB64);\r\n const iv = Base64URLtoUint8Array(ivB64);\r\n const ciphertext = Base64URLtoUint8Array(ciphertextB64);\r\n\r\n // Derive the same key with PBKDF2 (300k iterations)\r\n const key = pbkdf2(sha256, rawIdBytes, salt, { c: 300_000, dkLen: 32 });\r\n\r\n // Decrypt ciphertext using AES-GCM\r\n const cipher = gcm(key, iv);\r\n\r\n try {\r\n const plaintextBytes = cipher.decrypt(ciphertext);\r\n return bytesToUtf8(plaintextBytes);\r\n } catch {\r\n throw new Error(\"Decryption failed: invalid key or corrupted data\");\r\n }\r\n};\r\n","import { imageAssets } from \"../utils/constants\";\r\n\r\nexport const ChainConfig: any = {\r\n 1: {\r\n chainId: `0x${Number(1).toString(16)}`,\r\n chainName: \"Ethereum\",\r\n nativeCurrency: {\r\n name: \"ETH\",\r\n symbol: \"ETH\",\r\n decimals: 18,\r\n },\r\n rpcUrls: [\r\n \"https://eth-mainnet.g.alchemy.com/v2/82hkNrfu6ZZ8Wms2vr1U331ml3FtS7AZ\",\r\n ],\r\n blockExplorerUrls: [\"https://etherscan.io/\"],\r\n icon: imageAssets.ethereumIcon,\r\n },\r\n\r\n 8453: {\r\n chainId: `0x${Number(8453).toString(16)}`,\r\n chainName: \"Base Mainnet\",\r\n nativeCurrency: {\r\n name: \"ETH\",\r\n symbol: \"ETH\",\r\n decimals: 18,\r\n },\r\n rpcUrls: [\r\n \"https://base-mainnet.g.alchemy.com/v2/82hkNrfu6ZZ8Wms2vr1U331ml3FtS7AZ\",\r\n ],\r\n blockExplorerUrls: [\"https://basescan.org/\"],\r\n Icon: imageAssets.baseIcon,\r\n },\r\n\r\n 100: {\r\n chainId: `0x${Number(100).toString(16)}`,\r\n chainName: \"Gnosis\",\r\n nativeCurrency: {\r\n name: \"XDAI\",\r\n symbol: \"XDAI\",\r\n decimals: 18,\r\n },\r\n rpcUrls: [\"https://rpc.gnosischain.com/\"],\r\n blockExplorerUrls: [\"https://gnosisscan.io/\"],\r\n icon: imageAssets.gnosisIcon,\r\n },\r\n\r\n 11155111: {\r\n chainId: `0x${Number(11155111).toString(16)}`,\r\n chainName: \"Sepolia Test Network\",\r\n nativeCurrency: {\r\n name: \"ETH\",\r\n symbol: \"ETH\",\r\n decimals: 18,\r\n },\r\n rpcUrls: [\"https://eth-sepolia.public.blastapi.io\"],\r\n blockExplorerUrls: [\"https://sepolia.etherscan.io/\"],\r\n icon: imageAssets.ethereumIcon,\r\n },\r\n\r\n 84532: {\r\n chainId: `0x${Number(84532).toString(16)}`,\r\n chainName: \"Base Sepolia\",\r\n nativeCurrency: {\r\n name: \"ETH\",\r\n symbol: \"ETH\",\r\n decimals: 18,\r\n },\r\n rpcUrls: [\"https://sepolia.base.org\"],\r\n blockExplorerUrls: [\"https://sepolia.basescan.org/\"],\r\n icon: imageAssets.baseIcon,\r\n },\r\n};\r\n","import {\r\n createPublicClient,\r\n encodeAbiParameters,\r\n encodeFunctionData,\r\n pad,\r\n toHex,\r\n zeroAddress,\r\n zeroHash,\r\n} from \"viem\";\r\nimport BOOSTRAP from \"./abi/boostrap.json\";\r\nimport FACTORY from \"./abi/factory.json\";\r\n\r\nconst NEXUS_ACCOUNT_FACTORY_ADDRESS =\r\n \"0x000000001D1D5004a02bAfAb9de2D6CE5b7B13de\";\r\nconst NEXUS_BOOTSTRAP_ADDRESS = \"0x00000000D3254452a909E4eeD47455Af7E27C289\";\r\nconst DUMMY_SIGNATURE =\r\n \"0x81d4b4981670cb18f99f0b4a66446df1bf5b204d24cfcb659bf38ba27a4359b5711649ec2423c5e1247245eba2964679b6a1dbb85c992ae40b9b00c6935b02ff1b\";\r\nconst index = 0n;\r\n\r\nconst toInitData = (mod: any) => {\r\n const module = mod.module || mod.address;\r\n const data = mod.initData || mod.data;\r\n if (!module || !data) {\r\n throw new Error(\"Module or data is missing\");\r\n }\r\n return { module, data };\r\n};\r\n\r\nconst getInitData = (params: any) =>\r\n encodeAbiParameters(\r\n [\r\n { name: \"bootstrap\", type: \"address\" },\r\n { name: \"initData\", type: \"bytes\" },\r\n ],\r\n [\r\n params.bootStrapAddress,\r\n encodeFunctionData({\r\n abi: BOOSTRAP.abi,\r\n functionName: \"initNexusWithDefaultValidatorAndOtherModulesNoRegistry\",\r\n args: [\r\n params.defaultValidator.data,\r\n params.validators,\r\n params.executors,\r\n params.hook,\r\n params.fallbacks,\r\n params.prevalidationHooks,\r\n ],\r\n }),\r\n ]\r\n );\r\n\r\nconst toValidator = (parameters: any) => {\r\n const {\r\n deInitData = \"0x\",\r\n type = \"validator\",\r\n signer,\r\n data = \"0x\",\r\n module,\r\n ...rest\r\n } = parameters;\r\n return {\r\n deInitData,\r\n data,\r\n module,\r\n address: module,\r\n signer,\r\n type,\r\n getStubSignature: async () => DUMMY_SIGNATURE,\r\n signUserOpHash: async (userOpHash: any) =>\r\n await signer.signMessage({ message: { raw: userOpHash } }),\r\n signMessage: async (message: any) => await signer.signMessage({ message }),\r\n ...rest,\r\n };\r\n};\r\n\r\nconst toDefaultModule = (parameters: any) =>\r\n toValidator({\r\n initData: parameters.signer.address,\r\n data: parameters.signer.address,\r\n deInitData: \"0x\",\r\n ...parameters,\r\n address: zeroAddress,\r\n module: zeroAddress,\r\n type: \"validator\",\r\n getStubSignature: async () => DUMMY_SIGNATURE,\r\n });\r\n\r\nconst toEmptyHook = () => ({\r\n module: zeroAddress,\r\n data: zeroHash,\r\n});\r\n\r\nexport const computeNexusAccount = async (\r\n chain: any,\r\n transport: any,\r\n signer: any\r\n) => {\r\n const publicClient = createPublicClient({ chain, transport });\r\n\r\n const defaultValidator = toDefaultModule({ signer });\r\n const validators = [];\r\n const executors = [];\r\n const hook = toEmptyHook();\r\n const fallbacks = [];\r\n const registryAddress = zeroAddress;\r\n const factoryAddress = NEXUS_ACCOUNT_FACTORY_ADDRESS;\r\n const bootStrapAddress = NEXUS_BOOTSTRAP_ADDRESS;\r\n const prevalidationHooks = [];\r\n\r\n const initData = getInitData({\r\n defaultValidator: toInitData(defaultValidator),\r\n validators: validators.map(toInitData),\r\n executors: executors.map(toInitData),\r\n hook: toInitData(hook),\r\n fallbacks: fallbacks.map(toInitData),\r\n registryAddress,\r\n bootStrapAddress,\r\n prevalidationHooks,\r\n });\r\n\r\n const salt = pad(toHex(index), { size: 32 });\r\n const nexusAccount: any = await publicClient.readContract({\r\n address: factoryAddress,\r\n abi: FACTORY.abi,\r\n functionName: \"computeAccountAddress\",\r\n args: [initData, salt],\r\n });\r\n if (nexusAccount?.toLowerCase() !== zeroAddress?.toLowerCase()) {\r\n return nexusAccount;\r\n }\r\n return;\r\n};\r\n","{\r\n \"abi\": [\r\n {\r\n \"type\": \"constructor\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"defaultValidator\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"initData\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ],\r\n \"stateMutability\": \"nonpayable\"\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"CanNotRemoveLastValidator\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"DefaultValidatorAlreadyInstalled\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"EmergencyUninstallSigError\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"EnableModeSigError\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"FallbackAlreadyInstalledForSelector\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"selector\",\r\n \"type\": \"bytes4\",\r\n \"internalType\": \"bytes4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"FallbackCallTypeInvalid\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"FallbackHandlerUninstallFailed\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"FallbackNotInstalledForSelector\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"selector\",\r\n \"type\": \"bytes4\",\r\n \"internalType\": \"bytes4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"FallbackSelectorForbidden\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"HookAlreadyInstalled\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"currentHook\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"HookPostCheckFailed\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"InvalidInput\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"InvalidModule\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"InvalidModuleTypeId\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"moduleTypeId\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"InvalidNonce\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"LinkedList_AlreadyInitialized\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"LinkedList_EntryAlreadyInList\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"entry\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"LinkedList_InvalidEntry\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"entry\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"LinkedList_InvalidPage\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"MismatchModuleTypeId\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"MissingFallbackHandler\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"selector\",\r\n \"type\": \"bytes4\",\r\n \"internalType\": \"bytes4\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"ModuleAddressCanNotBeZero\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"ModuleAlreadyInstalled\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"moduleTypeId\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"ModuleNotInstalled\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"moduleTypeId\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"NoValidatorInstalled\",\r\n \"inputs\": []\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"PrevalidationHookAlreadyInstalled\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"currentPreValidationHook\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"UnauthorizedOperation\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"operator\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"UnsupportedCallType\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"callType\",\r\n \"type\": \"bytes1\",\r\n \"internalType\": \"CallType\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"error\",\r\n \"name\": \"ValidatorNotInstalled\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ]\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"ERC7484RegistryConfigured\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"registry\",\r\n \"type\": \"address\",\r\n \"indexed\": true,\r\n \"internalType\": \"contract IERC7484\"\r\n }\r\n ],\r\n \"anonymous\": false\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"ModuleInstalled\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"moduleTypeId\",\r\n \"type\": \"uint256\",\r\n \"indexed\": false,\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"indexed\": false,\r\n \"internalType\": \"address\"\r\n }\r\n ],\r\n \"anonymous\": false\r\n },\r\n {\r\n \"type\": \"event\",\r\n \"name\": \"ModuleUninstalled\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"moduleTypeId\",\r\n \"type\": \"uint256\",\r\n \"indexed\": false,\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"indexed\": false,\r\n \"internalType\": \"address\"\r\n }\r\n ],\r\n \"anonymous\": false\r\n },\r\n {\r\n \"type\": \"fallback\",\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"eip712Domain\",\r\n \"inputs\": [],\r\n \"outputs\": [\r\n {\r\n \"name\": \"fields\",\r\n \"type\": \"bytes1\",\r\n \"internalType\": \"bytes1\"\r\n },\r\n {\r\n \"name\": \"name\",\r\n \"type\": \"string\",\r\n \"internalType\": \"string\"\r\n },\r\n {\r\n \"name\": \"version\",\r\n \"type\": \"string\",\r\n \"internalType\": \"string\"\r\n },\r\n {\r\n \"name\": \"chainId\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"verifyingContract\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"salt\",\r\n \"type\": \"bytes32\",\r\n \"internalType\": \"bytes32\"\r\n },\r\n {\r\n \"name\": \"extensions\",\r\n \"type\": \"uint256[]\",\r\n \"internalType\": \"uint256[]\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"getActiveHook\",\r\n \"inputs\": [],\r\n \"outputs\": [\r\n {\r\n \"name\": \"hook\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"getExecutorsPaginated\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"cursor\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"size\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"array\",\r\n \"type\": \"address[]\",\r\n \"internalType\": \"address[]\"\r\n },\r\n {\r\n \"name\": \"next\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"getFallbackHandlerBySelector\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"selector\",\r\n \"type\": \"bytes4\",\r\n \"internalType\": \"bytes4\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"\",\r\n \"type\": \"bytes1\",\r\n \"internalType\": \"CallType\"\r\n },\r\n {\r\n \"name\": \"\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"getRegistry\",\r\n \"inputs\": [],\r\n \"outputs\": [\r\n {\r\n \"name\": \"\",\r\n \"type\": \"address\",\r\n \"internalType\": \"contract IERC7484\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"getValidatorsPaginated\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"cursor\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"size\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"array\",\r\n \"type\": \"address[]\",\r\n \"internalType\": \"address[]\"\r\n },\r\n {\r\n \"name\": \"next\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"initNexus\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"validators\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"executors\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"hook\",\r\n \"type\": \"tuple\",\r\n \"internalType\": \"struct BootstrapConfig\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"fallbacks\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"preValidationHooks\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapPreValidationHookConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"hookType\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"registryConfig\",\r\n \"type\": \"tuple\",\r\n \"internalType\": \"struct RegistryConfig\",\r\n \"components\": [\r\n {\r\n \"name\": \"registry\",\r\n \"type\": \"address\",\r\n \"internalType\": \"contract IERC7484\"\r\n },\r\n {\r\n \"name\": \"attesters\",\r\n \"type\": \"address[]\",\r\n \"internalType\": \"address[]\"\r\n },\r\n {\r\n \"name\": \"threshold\",\r\n \"type\": \"uint8\",\r\n \"internalType\": \"uint8\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"initNexusNoRegistry\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"validators\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"executors\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"hook\",\r\n \"type\": \"tuple\",\r\n \"internalType\": \"struct BootstrapConfig\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"fallbacks\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"preValidationHooks\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapPreValidationHookConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"hookType\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"initNexusScoped\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"validators\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"hook\",\r\n \"type\": \"tuple\",\r\n \"internalType\": \"struct BootstrapConfig\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"registryConfig\",\r\n \"type\": \"tuple\",\r\n \"internalType\": \"struct RegistryConfig\",\r\n \"components\": [\r\n {\r\n \"name\": \"registry\",\r\n \"type\": \"address\",\r\n \"internalType\": \"contract IERC7484\"\r\n },\r\n {\r\n \"name\": \"attesters\",\r\n \"type\": \"address[]\",\r\n \"internalType\": \"address[]\"\r\n },\r\n {\r\n \"name\": \"threshold\",\r\n \"type\": \"uint8\",\r\n \"internalType\": \"uint8\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"initNexusScopedNoRegistry\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"validators\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"hook\",\r\n \"type\": \"tuple\",\r\n \"internalType\": \"struct BootstrapConfig\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"initNexusWithDefaultValidator\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"initNexusWithDefaultValidatorAndOtherModules\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"defaultValidatorInitData\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n },\r\n {\r\n \"name\": \"executors\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"hook\",\r\n \"type\": \"tuple\",\r\n \"internalType\": \"struct BootstrapConfig\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"fallbacks\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"preValidationHooks\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapPreValidationHookConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"hookType\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"registryConfig\",\r\n \"type\": \"tuple\",\r\n \"internalType\": \"struct RegistryConfig\",\r\n \"components\": [\r\n {\r\n \"name\": \"registry\",\r\n \"type\": \"address\",\r\n \"internalType\": \"contract IERC7484\"\r\n },\r\n {\r\n \"name\": \"attesters\",\r\n \"type\": \"address[]\",\r\n \"internalType\": \"address[]\"\r\n },\r\n {\r\n \"name\": \"threshold\",\r\n \"type\": \"uint8\",\r\n \"internalType\": \"uint8\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"initNexusWithDefaultValidatorAndOtherModulesNoRegistry\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"defaultValidatorInitData\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n },\r\n {\r\n \"name\": \"validators\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"executors\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"hook\",\r\n \"type\": \"tuple\",\r\n \"internalType\": \"struct BootstrapConfig\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"fallbacks\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n },\r\n {\r\n \"name\": \"preValidationHooks\",\r\n \"type\": \"tuple[]\",\r\n \"internalType\": \"struct BootstrapPreValidationHookConfig[]\",\r\n \"components\": [\r\n {\r\n \"name\": \"hookType\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"initNexusWithSingleValidator\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"validator\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n },\r\n {\r\n \"name\": \"registryConfig\",\r\n \"type\": \"tuple\",\r\n \"internalType\": \"struct RegistryConfig\",\r\n \"components\": [\r\n {\r\n \"name\": \"registry\",\r\n \"type\": \"address\",\r\n \"internalType\": \"contract IERC7484\"\r\n },\r\n {\r\n \"name\": \"attesters\",\r\n \"type\": \"address[]\",\r\n \"internalType\": \"address[]\"\r\n },\r\n {\r\n \"name\": \"threshold\",\r\n \"type\": \"uint8\",\r\n \"internalType\": \"uint8\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"initNexusWithSingleValidatorNoRegistry\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"validator\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"data\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"installModule\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"moduleTypeId\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"initData\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"isModuleInstalled\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"moduleTypeId\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"additionalContext\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ],\r\n \"outputs\": [\r\n {\r\n \"name\": \"installed\",\r\n \"type\": \"bool\",\r\n \"internalType\": \"bool\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\"\r\n },\r\n {\r\n \"type\": \"function\",\r\n \"name\": \"uninstallModule\",\r\n \"inputs\": [\r\n {\r\n \"name\": \"moduleTypeId\",\r\n \"type\": \"uint256\",\r\n \"internalType\": \"uint256\"\r\n },\r\n {\r\n \"name\": \"module\",\r\n \"type\": \"address\",\r\n \"internalType\": \"address\"\r\n },\r\n {\r\n \"name\": \"deInitData\",\r\n \"type\": \"bytes\",\r\n \"internalType\": \"bytes\"\r\n }\r\n ],\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\"\r\n },\r\n {\r\n \"type\": \"receive\",\r\n \"stateMutability\": \"payable\"\r\n }\r\n ]\r\n}","{\r\n \"abi\": [\r\n {\r\n \"inputs\": [\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"implementation_\",\r\n \"type\": \"address\"\r\n },\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"owner_\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"stateMutability\": \"nonpayable\",\r\n \"type\": \"constructor\"\r\n },\r\n {\r\n \"inputs\": [\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"account\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"name\": \"AccountAlreadyDeployed\",\r\n \"type\": \"error\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"AlreadyInitialized\",\r\n \"type\": \"error\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"ImplementationAddressCanNotBeZero\",\r\n \"type\": \"error\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"InvalidEntryPointAddress\",\r\n \"type\": \"error\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"NewOwnerIsZeroAddress\",\r\n \"type\": \"error\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"NoHandoverRequest\",\r\n \"type\": \"error\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"Unauthorized\",\r\n \"type\": \"error\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"ZeroAddressNotAllowed\",\r\n \"type\": \"error\"\r\n },\r\n {\r\n \"anonymous\": false,\r\n \"inputs\": [\r\n {\r\n \"indexed\": true,\r\n \"internalType\": \"address\",\r\n \"name\": \"account\",\r\n \"type\": \"address\"\r\n },\r\n {\r\n \"indexed\": true,\r\n \"internalType\": \"bytes\",\r\n \"name\": \"initData\",\r\n \"type\": \"bytes\"\r\n },\r\n {\r\n \"indexed\": true,\r\n \"internalType\": \"bytes32\",\r\n \"name\": \"salt\",\r\n \"type\": \"bytes32\"\r\n }\r\n ],\r\n \"name\": \"AccountCreated\",\r\n \"type\": \"event\"\r\n },\r\n {\r\n \"anonymous\": false,\r\n \"inputs\": [\r\n {\r\n \"indexed\": true,\r\n \"internalType\": \"address\",\r\n \"name\": \"pendingOwner\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"name\": \"OwnershipHandoverCanceled\",\r\n \"type\": \"event\"\r\n },\r\n {\r\n \"anonymous\": false,\r\n \"inputs\": [\r\n {\r\n \"indexed\": true,\r\n \"internalType\": \"address\",\r\n \"name\": \"pendingOwner\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"name\": \"OwnershipHandoverRequested\",\r\n \"type\": \"event\"\r\n },\r\n {\r\n \"anonymous\": false,\r\n \"inputs\": [\r\n {\r\n \"indexed\": true,\r\n \"internalType\": \"address\",\r\n \"name\": \"oldOwner\",\r\n \"type\": \"address\"\r\n },\r\n {\r\n \"indexed\": true,\r\n \"internalType\": \"address\",\r\n \"name\": \"newOwner\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"name\": \"OwnershipTransferred\",\r\n \"type\": \"event\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"ACCOUNT_IMPLEMENTATION\",\r\n \"outputs\": [\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"epAddress\",\r\n \"type\": \"address\"\r\n },\r\n {\r\n \"internalType\": \"uint32\",\r\n \"name\": \"unstakeDelaySec\",\r\n \"type\": \"uint32\"\r\n }\r\n ],\r\n \"name\": \"addStake\",\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"cancelOwnershipHandover\",\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"pendingOwner\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"name\": \"completeOwnershipHandover\",\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [\r\n {\r\n \"internalType\": \"bytes\",\r\n \"name\": \"initData\",\r\n \"type\": \"bytes\"\r\n },\r\n {\r\n \"internalType\": \"bytes32\",\r\n \"name\": \"salt\",\r\n \"type\": \"bytes32\"\r\n }\r\n ],\r\n \"name\": \"computeAccountAddress\",\r\n \"outputs\": [\r\n {\r\n \"internalType\": \"address payable\",\r\n \"name\": \"expectedAddress\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [\r\n {\r\n \"internalType\": \"bytes\",\r\n \"name\": \"initData\",\r\n \"type\": \"bytes\"\r\n },\r\n {\r\n \"internalType\": \"bytes32\",\r\n \"name\": \"salt\",\r\n \"type\": \"bytes32\"\r\n }\r\n ],\r\n \"name\": \"createAccount\",\r\n \"outputs\": [\r\n {\r\n \"internalType\": \"address payable\",\r\n \"name\": \"\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"stateMutability\": \"payable\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"owner\",\r\n \"outputs\": [\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"result\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"pendingOwner\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"name\": \"ownershipHandoverExpiresAt\",\r\n \"outputs\": [\r\n {\r\n \"internalType\": \"uint256\",\r\n \"name\": \"result\",\r\n \"type\": \"uint256\"\r\n }\r\n ],\r\n \"stateMutability\": \"view\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"renounceOwnership\",\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [],\r\n \"name\": \"requestOwnershipHandover\",\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"newOwner\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"name\": \"transferOwnership\",\r\n \"outputs\": [],\r\n \"stateMutability\": \"payable\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"epAddress\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"name\": \"unlockStake\",\r\n \"outputs\": [],\r\n \"stateMutability\": \"nonpayable\",\r\n \"type\": \"function\"\r\n },\r\n {\r\n \"inputs\": [\r\n {\r\n \"internalType\": \"address\",\r\n \"name\": \"epAddress\",\r\n \"type\": \"address\"\r\n },\r\n {\r\n \"internalType\": \"address payable\",\r\n \"name\": \"withdrawAddress\",\r\n \"type\": \"address\"\r\n }\r\n ],\r\n \"name\": \"withdrawStake\",\r\n \"outputs\": [],\r\n \"stateMutability\": \"nonpayable\",\r\n \"type\": \"function\"\r\n }\r\n ]\r\n}","import React, { useEffect, useState } from \"react\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport {\r\n errorToast,\r\n loadAllGoogleFonts,\r\n loadAllGoogleFontsRN,\r\n} from \"../utils/helpers\";\r\nimport PageSlider from \"../components/slider\";\r\nimport SearchBox from \"../components/search\";\r\nimport { TermsAndConditionsOverlay } from \"../components/overlays\";\r\nimport { imageAssets } from \"../utils/constants\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\n\r\nconst ContactPage = (props: {\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n rnPasskey: any;\r\n };\r\n fontsLoaded?: boolean;\r\n setStep: (step: string) => void;\r\n setIsLoading: (isLoading: boolean) => void;\r\n setUserNumberFmt: (number: string) => void;\r\n userNumberFmt: string;\r\n setUserEmail: (email: string) => void;\r\n userEmail: string;\r\n setSelectedCountry: (country: {\r\n name: string;\r\n area: string;\r\n flag: string;\r\n }) => void;\r\n selectedCountry: { name: string; area: string; flag: string };\r\n allCountries: any;\r\n noContract?: boolean;\r\n helperFunctions?: VerifiedCustodyHelpers;\r\n enablePhone?: boolean;\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n styles,\r\n } = props.platform;\r\n const [fontsLoaded, setFontsLoaded] = useState<boolean>(\r\n props.fontsLoaded || false\r\n );\r\n const [userNumber, setUserNumber] = useState(\"\");\r\n const [userInput, setUserInput] = useState(\"\");\r\n const [searchActive, setSearchActive] = useState(false);\r\n const [sendOtpErrorText, setSendOtpErrorText] = useState(\"\");\r\n\r\n const [buttonActive, setButtonActive] = useState(false);\r\n const { pk, vaultContract, address } = useVaultStore();\r\n\r\n useEffect(() => {\r\n const PreloadGoogleFonts = async () => {\r\n if (!isReactNative) {\r\n // Only load Google fonts on web\r\n const isFontsLoaded = loadAllGoogleFonts(document);\r\n setFontsLoaded(isFontsLoaded);\r\n } else if (Font) {\r\n //load fonts with expo-font for react native.\r\n await loadAllGoogleFontsRN(Font);\r\n setFontsLoaded(true);\r\n } else {\r\n setFontsLoaded(true);\r\n }\r\n };\r\n if (!props.fontsLoaded) {\r\n PreloadGoogleFonts();\r\n }\r\n }, []);\r\n\r\n const handleButtonDisplay = () => {\r\n if (props.selectedCountry.area && userNumber.length === 10) {\r\n setSendOtpErrorText(\"\");\r\n setButtonActive(true);\r\n } else if (\r\n props.userEmail?.length > 0 &&\r\n isNaN(Number(props.userEmail)) &&\r\n props.userEmail.includes(\"@\")\r\n ) {\r\n setSendOtpErrorText(\"\");\r\n setButtonActive(true);\r\n } else {\r\n setSendOtpErrorText(\"\");\r\n setButtonActive(false);\r\n }\r\n };\r\n\r\n const handleSendOTP = async () => {\r\n if (props.userEmail === \"\" && userNumber === \"\") {\r\n setSendOtpErrorText(\"Invalid email or phone number. Try again later\");\r\n return;\r\n }\r\n if (!props.helperFunctions) {\r\n setSendOtpErrorText(\"No Helper Functions provided.\");\r\n return;\r\n }\r\n\r\n if (\r\n props.userEmail?.length > 0 &&\r\n !/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(props.userEmail)\r\n ) {\r\n setSendOtpErrorText(\"Invalid email format.\");\r\n return;\r\n }\r\n\r\n const vaultId =\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${props.selectedCountry.area}${userNumber}`;\r\n const channel = props.userEmail?.length > 0 ? \"email\" : \"sms\";\r\n\r\n if (\r\n (vaultId && channel && pk && vaultContract) ||\r\n (vaultId && channel && props.noContract)\r\n ) {\r\n props.setIsLoading(true);\r\n try {\r\n const res = await props.helperFunctions.sendOTPVerification(\r\n address,\r\n channel,\r\n vaultId\r\n );\r\n props.setIsLoading(false);\r\n if (res) {\r\n setSendOtpErrorText(\"\");\r\n props.setStep(\"3\");\r\n } else {\r\n setSendOtpErrorText(\r\n channel === \"email\"\r\n ? \"Error sending OTP to email. Try again.\"\r\n : \"Error sending OTP to phone. Try again.\"\r\n );\r\n errorToast(\r\n \"OTP Error\",\r\n channel === \"email\"\r\n ? \"Please enter a valid email.\"\r\n : \"Please enter a valid phone number.\"\r\n );\r\n }\r\n } catch (err) {\r\n props.setIsLoading(false);\r\n setSendOtpErrorText(\"Unexpected error. Try again.\");\r\n }\r\n } else {\r\n if (!props.noContract) {\r\n setSendOtpErrorText(\"Network error. Check your internet connection.\");\r\n }\r\n }\r\n };\r\n\r\n return (\r\n <ScrollView style={{ width: \"100%\", height: \"100%\" }}>\r\n {fontsLoaded && (\r\n <View\r\n style={\r\n isReactNative ? { ...styles.verifiedCustdMdlStartupLanguage } : {}\r\n }\r\n className=\"verified-custd-mdl-startup-language\"\r\n >\r\n <View\r\n style={\r\n isReactNative ? { ...styles.verifiedCustdMdlStartupContact } : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact\"\r\n >\r\n <PageSlider\r\n platform={props.platform}\r\n sliderCount={[1, 2, 3]}\r\n currentSlider=\"0\"\r\n />\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactContent }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-content\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n {props.enablePhone\r\n ? \"Enter your phone number\"\r\n : \"Enter your email address\"}\r\n </Text>\r\n\r\n {props.enablePhone && (\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStContactInput }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-input\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactContentContainer,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-content-container\"\r\n >\r\n <TouchableOpacity\r\n onPress={() => setSearchActive(!searchActive)}\r\n className=\"verified-custd-mdl-st-contact-first-section\"\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStContactFirstSection }\r\n : {}\r\n }\r\n >\r\n <Image\r\n source={{ uri: props.selectedCountry.flag }}\r\n alt=\"Country Flag\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactSelectionIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-selection-icon\"\r\n />\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactSelectionText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-selection-text\"\r\n >\r\n + {props.selectedCountry.area}\r\n </Text>\r\n <Image\r\n alt=\"Dropdown\"\r\n className=\"verified-custd-mdl-st-contact-dropdown\"\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStContactDropdown }\r\n : {}\r\n }\r\n source={\r\n searchActive\r\n ? { uri: imageAssets.arrowUp }\r\n : { uri: imageAssets.arrowDown }\r\n }\r\n />\r\n </TouchableOpacity>\r\n\r\n <TextInput\r\n className=\"verified-custd-mdl-st-contact-second-section\"\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStContactSecondSection }\r\n : {}\r\n }\r\n placeholder=\"Enter your phone number\"\r\n placeholderTextColor=\"#b6b7c3\"\r\n value={props.userNumberFmt}\r\n keyboardType=\"numeric\"\r\n onChangeText={(text: string) => {\r\n const numericInput = text.replace(/\\D/g, \"\");\r\n setUserInput(text);\r\n setUserNumber(numericInput);\r\n let formattedNumber = \"\";\r\n for (let i = 0; i < numericInput?.length; i++) {\r\n formattedNumber += numericInput[i];\r\n if (\r\n (i + 1) % 5 === 0 &&\r\n i + 1 < numericInput?.length\r\n ) {\r\n formattedNumber += \" \";\r\n }\r\n }\r\n props.setUserNumberFmt(formattedNumber);\r\n handleButtonDisplay();\r\n }}\r\n />\r\n </View>\r\n\r\n {searchActive && (\r\n <SearchBox\r\n platform={props.platform}\r\n pageName=\"ftu/contact\"\r\n searchContent={props.allCountries}\r\n type=\"area-code\"\r\n handleButtonDisplay={handleButtonDisplay}\r\n setSelected={props.setSelectedCountry}\r\n selected={props.selectedCountry}\r\n searchActive={searchActive}\r\n setSearchActive={setSearchActive}\r\n contentMaxHeight=\"300\"\r\n contentbottomMargin=\"300\"\r\n />\r\n )}\r\n\r\n {userNumber.length !== 10 &&\r\n userInput.length > 10 &&\r\n !sendOtpErrorText && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlInputErrorText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-input-error-text\"\r\n >\r\n Invalid input, please check your phone number\r\n </Text>\r\n )}\r\n </View>\r\n )}\r\n\r\n {!searchActive && (\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStContactInput }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-input\"\r\n >\r\n <TextInput\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStContactSecondSection }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-second-section\"\r\n placeholder=\"Enter your email address\"\r\n placeholderTextColor=\"#b6b7c3\"\r\n value={props.userEmail}\r\n onChangeText={(text: string) => {\r\n props.setUserEmail(text);\r\n props.setUserNumberFmt(\"\");\r\n setUserNumber(\"\");\r\n setUserInput(\"\");\r\n handleButtonDisplay();\r\n }}\r\n />\r\n {sendOtpErrorText && props.userEmail.length > 0 && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlInputErrorText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-input-error-text\"\r\n >\r\n {sendOtpErrorText}\r\n </Text>\r\n )}\r\n </View>\r\n )}\r\n </View>\r\n\r\n {!searchActive && <View style={{ height: \"80px\" }}></View>}\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactFooter }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-footer\"\r\n >\r\n <TermsAndConditionsOverlay platform={props.platform} />\r\n <TouchableOpacity\r\n style={\r\n isReactNative && buttonActive\r\n ? { ...styles.verifiedCustdMdlStartupButtonActive }\r\n : isReactNative && !buttonActive\r\n ? { ...styles.verifiedCustdMdlStartupButton }\r\n : {}\r\n }\r\n className={\r\n buttonActive\r\n ? \"verified-custd-mdl-startup-button-active\"\r\n : \"verified-custd-mdl-startup-button\"\r\n }\r\n onPress={handleSendOTP}\r\n >\r\n <Text>Get OTP</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n </View>\r\n )}\r\n\r\n {!fontsLoaded && <Text>Loading Module Fonts...</Text>}\r\n </ScrollView>\r\n );\r\n};\r\n\r\nexport default ContactPage;\r\n","import React from \"react\";\r\n\r\nconst PageSlider = (props: {\r\n sliderCount: number[];\r\n currentSlider: string;\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n };\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n styles,\r\n } = props.platform;\r\n const current = Number(props.currentSlider);\r\n const total = props.sliderCount?.length || 0;\r\n const widthPercent = total > 0 ? 100 / total : 0;\r\n\r\n return (\r\n <View\r\n className=\"verified-custd-mdl-startup-slider\"\r\n style={{ flexDirection: \"row\", height: 4, overflow: \"hidden\" }}\r\n >\r\n {props.sliderCount?.map((_, idx) => {\r\n const isActive = idx <= current;\r\n return (\r\n <View\r\n key={idx}\r\n className={\r\n isActive\r\n ? \"verified-custd-mdl-startup-slider-line-active\"\r\n : \"verified-custd-mdl-startup-slider-line\"\r\n }\r\n style={\r\n isReactNative && isActive\r\n ? {\r\n ...styles.verifiedCustdMdlStartupSliderLineActive,\r\n width: `${widthPercent}%`,\r\n }\r\n : isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupSliderLine,\r\n width: `${widthPercent}%`,\r\n }\r\n : !isReactNative && isActive\r\n ? {\r\n width: `${widthPercent}%`,\r\n }\r\n : { width: `${widthPercent}%` }\r\n }\r\n />\r\n );\r\n })}\r\n </View>\r\n );\r\n};\r\n\r\nexport default PageSlider;\r\n","import React, { useState } from \"react\";\r\nimport { imageAssets } from \"../utils/constants\";\r\n\r\nconst SearchBox = (props: any) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n styles,\r\n } = props.platform;\r\n const [newSearchContent, setNewSearchContent] = useState(null);\r\n\r\n const handleSearch = (value: string) => {\r\n if (value === \"\") {\r\n setNewSearchContent(null);\r\n return;\r\n }\r\n\r\n const filtered = props.searchContent.filter((src: any) => {\r\n const name = src?.name?.toLowerCase();\r\n const input = value.toLowerCase();\r\n\r\n if (name?.includes(input)) {\r\n src.searched = input;\r\n src.nameArray = src.name.split(\"\");\r\n return src;\r\n }\r\n });\r\n\r\n setNewSearchContent(filtered);\r\n props.handleButtonDisplay();\r\n };\r\n\r\n const handleSelect = (src: any, idx: number) => {\r\n if (props.type === \"area-code\") {\r\n props.setSelected({\r\n area: src.phone_code,\r\n flag: src.flag,\r\n name: src.name,\r\n });\r\n } else if (props.type === \"language\") {\r\n props.setSelected(src.name);\r\n }\r\n\r\n if (props.setSearchActive) {\r\n props.setSearchActive(false);\r\n }\r\n\r\n props.handleButtonDisplay();\r\n };\r\n\r\n const renderTextHighlight = (array: string[], search: string) =>\r\n array.map((char, idx) => {\r\n const isHighlighted = search.includes(char.toLowerCase());\r\n return (\r\n <Text\r\n key={idx}\r\n style={isHighlighted ? styles.boldText : styles.fadedText}\r\n >\r\n {char}\r\n </Text>\r\n );\r\n });\r\n\r\n const renderResults = (data: any[], isFiltered: boolean = false) => {\r\n return data.map((src, idx) => {\r\n const isActive = !isReactNative\r\n ? window?.location?.search === `?${idx}`\r\n : false;\r\n const isSelected = props.selected && props.selected.length > 0;\r\n\r\n const contentContainerClass =\r\n props.type === \"language\" && isActive\r\n ? \"verified-custd-mdl-ms-search-content-active\"\r\n : \"verified-custd-mdl-ms-search-content\";\r\n\r\n return (\r\n <TouchableOpacity\r\n key={idx}\r\n className={contentContainerClass}\r\n style={styles.resultItem}\r\n onPress={() => handleSelect(src, idx)}\r\n >\r\n <View style={styles.resultInner}>\r\n <Image\r\n source={{ uri: props.type === \"language\" ? src.icon : src.flag }}\r\n alt=\"Icon\"\r\n className=\"verified-custd-mdl-ms-search-content-icon\"\r\n style={styles.icon}\r\n />\r\n\r\n <Text\r\n className=\"verified-custd-mdl-ms-search-content-text\"\r\n style={styles.resultText}\r\n >\r\n {src.nameArray && src.searched\r\n ? renderTextHighlight(src.nameArray, src.searched)\r\n : src.name}\r\n {props.type === \"language\" && src.label && (\r\n <Text\r\n style={\r\n src.searched?.includes(src.label.toLowerCase())\r\n ? {}\r\n : styles.fadedText\r\n }\r\n >\r\n {` (${src.label})`}\r\n </Text>\r\n )}\r\n </Text>\r\n </View>\r\n\r\n {props.type === \"language\" && isSelected && isActive && (\r\n <Image\r\n source={{ uri: imageAssets.circleClicked }}\r\n alt=\"Clicked\"\r\n style={styles.selectedIcon}\r\n />\r\n )}\r\n </TouchableOpacity>\r\n );\r\n });\r\n };\r\n\r\n return (\r\n <View\r\n className=\"verified-custd-mdl-startup-language-content-container\"\r\n style={styles.container}\r\n >\r\n <View className=\"verified-custd-mdl-st-language-content\">\r\n {props.headerText && (\r\n <Text\r\n className=\"verified-custd-mdl-st-language-text\"\r\n style={styles.headerText}\r\n >\r\n {props.headerText}\r\n </Text>\r\n )}\r\n\r\n <View className=\"verified-custd-mdl-mobille-startup-search-box-container\">\r\n <View\r\n className=\"verified-custd-mdl-mobile-startup-search-box\"\r\n style={styles.searchBox}\r\n >\r\n <Image\r\n source={{ uri: imageAssets.search }}\r\n alt=\"Search\"\r\n className=\"verified-custd-mdl-mobile-search-icon\"\r\n style={styles.searchIcon}\r\n />\r\n <TextInput\r\n placeholder=\"Search\"\r\n className=\"verified-custd-mdl-ms-search-box-content\"\r\n style={styles.input}\r\n onChangeText={handleSearch}\r\n onFocus={() => props.type === \"language\" && props.setSelected(\"\")}\r\n />\r\n </View>\r\n\r\n <ScrollView\r\n className=\"verified-custd-mdl-mobile-startup-search-content\"\r\n style={{ maxHeight: props.contentMaxHeight || 300 }}\r\n >\r\n <View className=\"verified-custd-mdl-ms-search-content-container\">\r\n {(newSearchContent || props.searchContent)?.length > 0 &&\r\n renderResults(newSearchContent || props.searchContent)}\r\n </View>\r\n </ScrollView>\r\n </View>\r\n </View>\r\n </View>\r\n );\r\n};\r\n\r\n// const styles = StyleSheet?.create({\r\n// container: {\r\n// padding: 8,\r\n// },\r\n// headerText: {\r\n// fontSize: 14,\r\n// marginBottom: 8,\r\n// },\r\n// searchBox: {\r\n// flexDirection: \"row\",\r\n// alignItems: \"center\",\r\n// borderColor: \"#CCC\",\r\n// borderWidth: 1,\r\n// borderRadius: 6,\r\n// padding: 6,\r\n// marginBottom: 12,\r\n// },\r\n// searchIcon: {\r\n// width: 18,\r\n// height: 18,\r\n// marginRight: 6,\r\n// },\r\n// input: {\r\n// flex: 1,\r\n// fontSize: 14,\r\n// borderWidth: 0,\r\n// outlineStyle: \"none\",\r\n// },\r\n// resultItem: {\r\n// paddingVertical: 8,\r\n// paddingHorizontal: 10,\r\n// borderBottomWidth: 1,\r\n// borderBottomColor: \"#eee\",\r\n// flexDirection: \"row\",\r\n// alignItems: \"center\",\r\n// justifyContent: \"space-between\",\r\n// },\r\n// resultInner: {\r\n// flexDirection: \"row\",\r\n// alignItems: \"center\",\r\n// },\r\n// icon: {\r\n// width: 20,\r\n// height: 20,\r\n// marginRight: 10,\r\n// },\r\n// resultText: {\r\n// fontSize: 14,\r\n// flexWrap: \"wrap\",\r\n// },\r\n// fadedText: {\r\n// color: \"#B6B7C3\",\r\n// },\r\n// boldText: {\r\n// color: \"#000\",\r\n// },\r\n// selectedIcon: {\r\n// width: 16,\r\n// height: 16,\r\n// },\r\n// });\r\n\r\nexport default SearchBox;\r\n","import React from \"react\";\r\nimport { imageAssets } from \"../utils/constants\";\r\nimport { resolveGlobalStyleUnit } from \"../utils/helpers\";\r\n\r\nexport const TermsAndConditionsOverlay = (props: {\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n };\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n styles,\r\n } = props.platform;\r\n return (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlTermsAndCondition,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-terms-and-condition\"\r\n >\r\n By proceeding, you agree with Verified Wallet{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlTermsAndCondition,\r\n color: \"#603FF4\",\r\n cursor: \"pointer\",\r\n }\r\n : { color: \"#603FF4\", cursor: \"pointer\" }\r\n }\r\n className=\"verified-custd-mdl-terms-and-condition\"\r\n >\r\n T&C\r\n </Text>{\" \"}\r\n and{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlTermsAndCondition,\r\n color: \"#603FF4\",\r\n cursor: \"pointer\",\r\n }\r\n : { color: \"#603FF4\", cursor: \"pointer\" }\r\n }\r\n className=\"verified-custd-mdl-terms-and-condition\"\r\n >\r\n Privacy Policy.\r\n </Text>\r\n </Text>\r\n );\r\n};\r\n\r\nexport const LogoutOverlay = (props: {\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n };\r\n setIsLoading: (isLoading: boolean) => void;\r\n setisOnboard?: (isOnboard: boolean) => void;\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n styles,\r\n } = props.platform;\r\n const handleLogout = async () => {\r\n props.setIsLoading(true);\r\n try {\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n await chrome.storage.local.remove(\"lastPk\");\r\n } else if (!isReactNative && !chrome?.storage?.local && localStorage) {\r\n localStorage.removeItem(\"myVault\");\r\n localStorage.removeItem(\"lastPk\");\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.removeItem(\"myVault\");\r\n await AsyncStorage.removeItem(\"lastPk\");\r\n }\r\n\r\n if (props.setisOnboard) {\r\n props.setisOnboard(false);\r\n }\r\n } finally {\r\n props.setIsLoading(false);\r\n }\r\n };\r\n\r\n return (\r\n <Text\r\n className=\"verified-custd-mdl-terms-and-condition\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlTermsAndCondition,\r\n fontSize: resolveGlobalStyleUnit(isReactNative, \"0.7rem\"),\r\n }\r\n : { fontSize: resolveGlobalStyleUnit(isReactNative, \"0.7rem\") }\r\n }\r\n >\r\n Want to access a different account? Click{\" \"}\r\n <Text\r\n className=\"verified-custd-mdl-terms-and-condition\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlTermsAndCondition,\r\n color: \"#603FF4\",\r\n cursor: \"pointer\",\r\n }\r\n : { color: \"#603FF4\", cursor: \"pointer\" }\r\n }\r\n onPress={handleLogout}\r\n >\r\n Logout\r\n </Text>{\" \"}\r\n to logout and login/create another account\r\n </Text>\r\n );\r\n};\r\n\r\nexport const PrivacyOverlay = (props: {\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n };\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n styles,\r\n } = props.platform;\r\n return (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlPrivacy,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-privacy\"\r\n >\r\n <Image\r\n source={{ uri: imageAssets.privacyTip }}\r\n alt=\"Privacy Icon\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlPrivacyIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-privacy-icon\"\r\n />\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlPrivacyText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-privacy-text\"\r\n >\r\n Trusted by 10M+ Investors globally\r\n </Text>\r\n </View>\r\n );\r\n};\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport {\r\n errorToast,\r\n hashTheString,\r\n loadAllGoogleFonts,\r\n loadAllGoogleFontsRN,\r\n} from \"../utils/helpers\";\r\nimport PageSlider from \"../components/slider\";\r\nimport { imageAssets } from \"../utils/constants\";\r\nimport { checkIsExistingUser } from \"../services/contracts\";\r\n\r\nconst OTPPage = (props: {\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n rnPasskey: any;\r\n };\r\n fontsLoaded?: boolean;\r\n setStep: (step: string) => void;\r\n setIsLoading: (isLoading: boolean) => void;\r\n setUserNumberFmt: (number: string) => void;\r\n setUserEmail: (email: string) => void;\r\n setIsExistingUser?: (isExistingUser: boolean) => void;\r\n selectedCountry: { name: string; area: string; flag: string };\r\n userNumberFmt: string;\r\n userEmail: string;\r\n noContract?: boolean;\r\n helperFunctions?: any;\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n styles,\r\n } = props.platform;\r\n const [fontsLoaded, setFontsLoaded] = useState<boolean>(\r\n props.fontsLoaded || false\r\n );\r\n const inputsRef = useRef<Array<any>>([]);\r\n const [searchActive, setSearchActive] = useState(false);\r\n const [countdown, setCountdown] = useState(60);\r\n const [otp, setOtp] = useState([\"\", \"\", \"\", \"\"]);\r\n const [otpIncorrect, setOtpIncorrect] = useState(false);\r\n const [otherErrorText, setOtherErrorText] = useState(\"\");\r\n\r\n const { pk, vaultContract, address } = useVaultStore();\r\n\r\n useEffect(() => {\r\n const PreloadGoogleFonts = async () => {\r\n if (!isReactNative) {\r\n // Only load Google fonts on web\r\n const isFontsLoaded = loadAllGoogleFonts(document);\r\n setFontsLoaded(isFontsLoaded);\r\n } else if (Font) {\r\n //load fonts with expo-font for react native.\r\n await loadAllGoogleFontsRN(Font);\r\n setFontsLoaded(true);\r\n } else {\r\n setFontsLoaded(true);\r\n }\r\n };\r\n if (!props.fontsLoaded) {\r\n PreloadGoogleFonts();\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (countdown === 0) return;\r\n const timer = setInterval(() => setCountdown((c) => c - 1), 1000);\r\n return () => clearInterval(timer);\r\n }, [countdown]);\r\n\r\n const handleTextChange = (text: string, idx: number) => {\r\n if (text?.length > 1) {\r\n // Manually capture Paste\r\n const paste = text.replace(/\\D/g, \"\");\r\n const newOtp = [...otp];\r\n let pasteIndex = 0;\r\n\r\n for (let i = idx; i < otp.length && pasteIndex < paste.length; i++) {\r\n newOtp[i] = paste[pasteIndex];\r\n pasteIndex++;\r\n }\r\n setOtp(newOtp);\r\n\r\n // Focus next empty input if any\r\n const nextIndex = idx + paste.length;\r\n if (nextIndex < otp.length && inputsRef.current[nextIndex]) {\r\n inputsRef.current[nextIndex].focus();\r\n }\r\n setOtpIncorrect(false);\r\n } else {\r\n // Normal input\r\n const clean = text.replace(/\\D/g, \"\");\r\n const newOtp = [...otp];\r\n newOtp[idx] = clean;\r\n setOtp(newOtp);\r\n\r\n // Move focus to next input if available\r\n if (clean && inputsRef.current[idx + 1]) {\r\n inputsRef.current[idx + 1].focus();\r\n }\r\n setOtpIncorrect(false);\r\n }\r\n };\r\n\r\n const handleKeyPress = (_: any, idx: number, e: any) => {\r\n const key = e.nativeEvent.key;\r\n\r\n if (\r\n key === \"Backspace\" &&\r\n !otp[idx] &&\r\n idx > 0 &&\r\n inputsRef.current[idx - 1]\r\n ) {\r\n inputsRef.current[idx - 1].focus();\r\n }\r\n };\r\n\r\n const isFilled = otp.every((d) => d.length > 0);\r\n\r\n const getVaultId = () =>\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${props.selectedCountry.area}${props.userNumberFmt?.replace(\r\n \" \",\r\n \"\"\r\n )}`;\r\n\r\n const handleVerifyOtp = async () => {\r\n if (!isFilled || !props.helperFunctions) {\r\n setOtpIncorrect(true);\r\n setOtherErrorText(\"Please enter the complete OTP.\");\r\n return;\r\n }\r\n const vaultId = getVaultId();\r\n const fullOtp = otp.join(\"\");\r\n if ((!props.noContract && !pk) || (!props.noContract && !vaultContract))\r\n return;\r\n props.setIsLoading(true);\r\n try {\r\n const valid = await props.helperFunctions.checkOTPVerification(\r\n address,\r\n vaultId,\r\n fullOtp\r\n );\r\n\r\n if (!valid) {\r\n props.setIsLoading(false);\r\n setOtpIncorrect(true);\r\n return;\r\n }\r\n const hashed = hashTheString(vaultId);\r\n let exists = false;\r\n if (!props.noContract && vaultContract) {\r\n exists = await checkIsExistingUser(vaultContract, hashed);\r\n if (exists === null) {\r\n props.setIsLoading(false);\r\n setOtherErrorText(\"Unexpected error. Try again later.\");\r\n setOtpIncorrect(true);\r\n return;\r\n }\r\n }\r\n\r\n props.setIsExistingUser?.(exists);\r\n props.setIsLoading(false);\r\n props.setStep(\"4\");\r\n } catch (err: any) {\r\n props.setIsLoading(false);\r\n setOtherErrorText(\"Error verifying OTP. Try again.\");\r\n setOtpIncorrect(true);\r\n console.error(\"error: \", err);\r\n }\r\n };\r\n\r\n const handleResend = async () => {\r\n if (!props.helperFunctions) {\r\n setOtherErrorText(\"Helper functions missing.\");\r\n setOtpIncorrect(true);\r\n return;\r\n }\r\n const vaultId = getVaultId();\r\n const channel = props.userEmail ? \"email\" : \"sms\";\r\n props.setIsLoading(true);\r\n const res = await props.helperFunctions.sendOTPVerification(\r\n address,\r\n channel,\r\n vaultId\r\n );\r\n props.setIsLoading(false);\r\n if (res) {\r\n setOtp([\"\", \"\", \"\", \"\"]);\r\n setCountdown(60);\r\n setOtpIncorrect(false);\r\n setOtherErrorText(\"\");\r\n } else {\r\n errorToast(\"OTP resend failed\", \"Please try again later.\");\r\n }\r\n };\r\n\r\n return (\r\n <ScrollView>\r\n {fontsLoaded && (\r\n <View\r\n style={\r\n isReactNative ? { ...styles.verifiedCustdMdlStartupLanguage } : {}\r\n }\r\n className=\"verified-custd-mdl-startup-language\"\r\n >\r\n <View\r\n style={\r\n isReactNative ? { ...styles.verifiedCustdMdlStartupContact } : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact\"\r\n >\r\n <PageSlider\r\n platform={props.platform}\r\n sliderCount={[1, 2, 3]}\r\n currentSlider=\"0\"\r\n />\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactContent }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-content\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n Enter OTP\r\n </Text>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupOtpText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-text\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupOtpHeaderText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-header-text\"\r\n >\r\n Enter{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupOtpHeaderText,\r\n color: \"#0C0C0E\",\r\n }\r\n : { color: \"#0C0C0E\" }\r\n }\r\n className=\"verified-custd-mdl-startup-otp-header-text\"\r\n >\r\n 4-Digits OTP (One Time Password)\r\n </Text>{\" \"}\r\n sent to your{\" \"}\r\n {props.userNumberFmt ? \"phone number\" : \"email address\"}:\r\n </Text>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupOtpFooter }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-footer\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupOtpFooterText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-footer-text\"\r\n >\r\n {props.userNumberFmt && (\r\n <React.Fragment>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupOtpFooterText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-footer-text\"\r\n >{`(+${props.selectedCountry.area}) `}</Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupOtpFooterText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-footer-text\"\r\n >\r\n {props.userNumberFmt.split(\" \")[0]}{\" \"}\r\n </Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupOtpFooterText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-footer-text\"\r\n >\r\n {props.userNumberFmt.split(\" \")[1]}\r\n </Text>\r\n </React.Fragment>\r\n )}\r\n {props.userEmail && <Text>{props.userEmail}</Text>}\r\n </Text>\r\n <TouchableOpacity\r\n style={{ background: \"transparent\", width: 20, height: 20 }}\r\n onPress={() => {\r\n props.setUserNumberFmt(\"\");\r\n props.setUserEmail(\"\");\r\n props.setStep(\"2\");\r\n }}\r\n >\r\n <Image\r\n source={{ uri: imageAssets.editBlue }}\r\n alt=\"Edit\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStOtpIcon,\r\n width: 20,\r\n height: 20,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-otp-icon\"\r\n />\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpInputContainer }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-input-container\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpInputGroup }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-input-group\"\r\n >\r\n {otp.map((_, idx) => (\r\n <TextInput\r\n key={idx}\r\n ref={(el: any) => (inputsRef.current[idx] = el)}\r\n value={otp[idx]}\r\n onChangeText={(text: any) => handleTextChange(text, idx)}\r\n onKeyPress={(e: any) => handleKeyPress(e, idx, e)}\r\n keyboardType=\"number-pad\"\r\n maxLength={1}\r\n style={\r\n isReactNative && otpIncorrect\r\n ? { ...styles.verifiedCustdMdlOtpInputRed }\r\n : isReactNative && !otpIncorrect\r\n ? { ...styles.verifiedCustdMdlOtpInput }\r\n : {}\r\n }\r\n className={\r\n otpIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n />\r\n ))}\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative ? { ...styles.verifiedCustdMdlOtpTimer } : {}\r\n }\r\n className=\"verified-custd-mdl-otp-timer\"\r\n >\r\n {!otpIncorrect && countdown > 5 && otherErrorText === \"\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpTimerText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-timer-text\"\r\n >\r\n <Text style={{ color: \"#717286\", fontWeight: \"400\" }}>\r\n 00:\r\n </Text>\r\n {countdown}\r\n </Text>\r\n )}\r\n\r\n {!otpIncorrect &&\r\n countdown <= 5 &&\r\n countdown > 0 &&\r\n otherErrorText === \"\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpTimerTextRed }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-timer-text-red\"\r\n >\r\n <Text style={{ fontWeight: \"400\" }}>00:</Text>\r\n {countdown}\r\n </Text>\r\n )}\r\n\r\n {!otpIncorrect && countdown === 0 && otherErrorText === \"\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpResendText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-resend-text\"\r\n >\r\n Didn't receive an OTP ?\r\n </Text>\r\n )}\r\n\r\n {otpIncorrect && otherErrorText === \"\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpIncorrectText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n Please enter the correct OTP\r\n </Text>\r\n )}\r\n\r\n {otpIncorrect && otherErrorText?.length > 0 && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpIncorrectText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n {otherErrorText}\r\n </Text>\r\n )}\r\n\r\n {!otpIncorrect && countdown > 0 && otherErrorText === \"\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpResendText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-resend-text\"\r\n >\r\n Resend OTP\r\n </Text>\r\n )}\r\n\r\n {(!otpIncorrect && countdown === 0 && otherErrorText === \"\") ||\r\n (otpIncorrect && otherErrorText === \"\") ? (\r\n <TouchableOpacity\r\n style={{ background: \"transparent\" }}\r\n onPress={async () => {\r\n setOtp([\"\", \"\", \"\", \"\"]);\r\n await handleResend();\r\n }}\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpResendTextActive }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-resend-text-active\"\r\n >\r\n Resend OTP\r\n </Text>\r\n </TouchableOpacity>\r\n ) : null}\r\n </View>\r\n </View>\r\n\r\n {!searchActive && <View style={{ height: \"100px\" }}></View>}\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactFooter }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-footer\"\r\n >\r\n <TouchableOpacity\r\n className={\r\n isFilled && !otpIncorrect\r\n ? \"verified-custd-mdl-startup-button-active\"\r\n : \"verified-custd-mdl-startup-button\"\r\n }\r\n onPress={handleVerifyOtp}\r\n disabled={!isFilled || otpIncorrect}\r\n style={\r\n isFilled && !otpIncorrect\r\n ? { ...styles.verifiedCustdMdlStartupButtonActive }\r\n : { ...styles.verifiedCustdMdlStartupButton }\r\n }\r\n >\r\n <Text>Proceed</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n </View>\r\n )}\r\n\r\n {!fontsLoaded && <Text>Loading Module Fonts...</Text>}\r\n </ScrollView>\r\n );\r\n};\r\n\r\nexport default OTPPage;\r\n","import { AbiCoder, encodeBytes32String } from \"ethers\";\r\nimport { combine, split } from \"shamir-secret-sharing\";\r\nimport {\r\n contractAddress,\r\n Custody,\r\n Provider,\r\n VerifiedWallet,\r\n} from \"@verified-network/verified-sdk\";\r\nimport {\r\n decryptString,\r\n decryptWithPasskey,\r\n encryptString,\r\n encryptWithPasskey,\r\n errorToast,\r\n hashTheString,\r\n} from \"../utils/helpers\";\r\nimport {\r\n defaultChainId,\r\n newTransactionEventHash,\r\n numberPositions,\r\n} from \"../utils/constants\";\r\nimport { ChainConfig } from \"../utils/config\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\nimport {\r\n base,\r\n baseSepolia,\r\n gnosis,\r\n mainnet,\r\n polygon,\r\n sepolia,\r\n} from \"viem/chains\";\r\nimport { http } from \"viem\";\r\nimport { computeNexusAccount } from \"../lib/biconomyRNFix\";\r\n\r\nexport const checkIsExistingUser = async (\r\n vaultContract: any,\r\n hashedVaultId: string\r\n) => {\r\n try {\r\n return await vaultContract\r\n .getCreator(hashedVaultId)\r\n .then(async (res: any) => {\r\n if (res?.status === 0 && res?.response?.result[0] === true) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n });\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while checking if user exists: \", err);\r\n }\r\n return null;\r\n }\r\n};\r\n\r\nexport const checkOrResetOrCreateVault = async (\r\n isReactNative: boolean,\r\n AsyncStorage: any,\r\n EventEmitter: any,\r\n vaultId: string,\r\n hashedVaultId: string,\r\n vaultPin: string,\r\n hashedVaultPin: string,\r\n otpChannel: string,\r\n userPk: string,\r\n userAddress: string,\r\n vaultContract: any,\r\n action?: string,\r\n reqVaultData?: any,\r\n txData?: any,\r\n passKeyRawId?: any\r\n) => {\r\n try {\r\n const vaultData = {\r\n vaultId,\r\n hashedVaultId,\r\n vaultPin,\r\n hashedVaultPin,\r\n vaultContract,\r\n rawId: passKeyRawId,\r\n };\r\n return await vaultContract\r\n .getCreator(hashedVaultId)\r\n .then(async (res: any) => {\r\n if (res?.status === 0 && res?.response?.result[0] === true) {\r\n try {\r\n let encryptedPk: string;\r\n if (!passKeyRawId) {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n encryptedPk = encryptString(userPk, secretKey);\r\n } else {\r\n encryptedPk = await encryptWithPasskey(\r\n userPk,\r\n passKeyRawId,\r\n vaultPin\r\n );\r\n }\r\n\r\n let lastPk: any;\r\n if (chrome?.storage?.local) {\r\n lastPk = await new Promise((resolve) => {\r\n chrome.storage.local.get([\"lastPk\"], (result) => {\r\n resolve(result.lastPk);\r\n });\r\n });\r\n } else if (!chrome?.storage?.local && localStorage) {\r\n lastPk = localStorage.getItem(\"lastPk\");\r\n }\r\n\r\n if (lastPk && lastPk?.length > 0) {\r\n //existing PK means failed confirmParticipant, and since wallet exists??\r\n return await vaultContract\r\n .confirmParticipant(\r\n hashedVaultId,\r\n\r\n hashedVaultId,\r\n\r\n true\r\n )\r\n .then(async (cfrmRes: any) => {\r\n if (cfrmRes?.status === 0) {\r\n //delete saved pk if confirmParticipant is successful??\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"lastPk\");\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.removeItem(\"lastPk\");\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.removeItem(\"lastPk\");\r\n }\r\n try {\r\n const newSender = new VerifiedWallet(userPk);\r\n\r\n const userRegAddress = await newSender.getAddress();\r\n\r\n let encryptedPk: string;\r\n\r\n if (!passKeyRawId) {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n encryptedPk = encryptString(userPk, secretKey);\r\n } else {\r\n encryptedPk = await encryptWithPasskey(\r\n userPk,\r\n passKeyRawId,\r\n vaultPin\r\n );\r\n }\r\n\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.set({\r\n myVault: JSON.stringify({\r\n address: userAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n }),\r\n });\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n address: userAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n address: userAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n }\r\n\r\n return vaultData;\r\n } catch (err) {\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error saving new vault details. Try again later\"\r\n );\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"save vault failed: \", err);\r\n }\r\n\r\n return false;\r\n }\r\n } else {\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error creating pin for existing vault. Try again later\"\r\n );\r\n\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"confirm pin vault failed: \", cfrmRes);\r\n }\r\n return false;\r\n }\r\n });\r\n }\r\n\r\n if (action === \"invitation\") {\r\n return { isExisting: true, ...vaultData };\r\n } else {\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.set({\r\n myVault: JSON.stringify({\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n }),\r\n });\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n }\r\n const windowObj = !isReactNative ? window : null;\r\n if (!isReactNative && chrome?.runtime?.sendMessage) {\r\n chrome.runtime.sendMessage({\r\n type:\r\n action && action === \"connect_wallet\"\r\n ? \"getPk\"\r\n : action && action === \"eth_requestAccounts\"\r\n ? \"getPk\"\r\n : action && action !== \"connect_wallet\"\r\n ? action\r\n : \"getPk\",\r\n value: {\r\n vaultData:\r\n action && action === \"signRecovery\"\r\n ? reqVaultData\r\n : action && action === \"completeRecovery\"\r\n ? reqVaultData\r\n : { vaultId, hashedVaultId, hashedVaultPin },\r\n txData: txData,\r\n },\r\n });\r\n } else if (!isReactNative && !chrome?.runtime?.sendMessage) {\r\n const event = new CustomEvent(\r\n action && action === \"connect_wallet\"\r\n ? \"getPk\"\r\n : action && action === \"eth_requestAccounts\"\r\n ? \"getPk\"\r\n : action && action !== \"connect_wallet\"\r\n ? action\r\n : \"getPk\",\r\n {\r\n detail: {\r\n value: {\r\n vaultData:\r\n action && action === \"signRecovery\"\r\n ? reqVaultData\r\n : action && action === \"completeRecovery\"\r\n ? reqVaultData\r\n : { vaultId, hashedVaultId, hashedVaultPin },\r\n txData: txData,\r\n },\r\n },\r\n }\r\n );\r\n windowObj?.dispatchEvent(event);\r\n } else if (isReactNative && EventEmitter) {\r\n const vaultEventEmitter = new EventEmitter();\r\n const eventType =\r\n action && action === \"connect_wallet\"\r\n ? \"getPk\"\r\n : action && action === \"eth_requestAccounts\"\r\n ? \"getPk\"\r\n : action && action !== \"connect_wallet\"\r\n ? action\r\n : \"getPk\";\r\n\r\n const eventDetail = {\r\n vaultData:\r\n action && action === \"signRecovery\"\r\n ? reqVaultData\r\n : action && action === \"completeRecovery\"\r\n ? reqVaultData\r\n : { vaultId, hashedVaultId, hashedVaultPin },\r\n txData: txData,\r\n };\r\n\r\n vaultEventEmitter.emit(eventType, eventDetail);\r\n }\r\n }\r\n return action === \"getPk\"\r\n ? {\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n shouldStop: true,\r\n }\r\n : { shouldStop: true };\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error handling existing vault: \", err);\r\n }\r\n\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error fetching existing vault key(s). Try again later\"\r\n );\r\n return false;\r\n }\r\n }\r\n // else if (res?.reason?.toLowerCase() === \"invalid pin\") {\r\n // let lastPk: any;\r\n // if (chrome?.storage?.local) {\r\n // lastPk = await new Promise((resolve) => {\r\n // chrome.storage.local.get([\"lastPk\"], (result) => {\r\n // resolve(result.lastPk);\r\n // });\r\n // });\r\n // } else if (!chrome?.storage?.local && localStorage) {\r\n // lastPk = localStorage.getItem(\"lastPk\");\r\n // }\r\n // // if (\r\n // // action === \"reset-pin\" &&\r\n // // reqVaultData?.hashedOldPin &&\r\n // // reqVaultData?.vaultContract\r\n // // ) {\r\n // // return await resetVaultPin(\r\n // // hashedVaultId,\r\n // // reqVaultData?.vaultContract\r\n // // );\r\n // // } else\r\n // if (lastPk && lastPk?.length > 0) {\r\n // //existing PK means failed confirmParticipant, and since wallet exists??\r\n // return await vaultContract\r\n // .confirmParticipant(\r\n // hashedVaultId,\r\n\r\n // hashedVaultId,\r\n\r\n // true\r\n // )\r\n // .then(async (cfrmRes: any) => {\r\n // if (cfrmRes?.status === 0) {\r\n // //delete saved pk if confirmParticipant is successful??\r\n // if (!isReactNative && chrome?.storage?.local) {\r\n // await chrome.storage.local.remove(\"lastPk\");\r\n // } else if (\r\n // !isReactNative &&\r\n // !chrome?.storage?.local &&\r\n // localStorage\r\n // ) {\r\n // localStorage.removeItem(\"lastPk\");\r\n // } else if (isReactNative && AsyncStorage) {\r\n // await AsyncStorage.removeItem(\"lastPk\");\r\n // }\r\n // try {\r\n // const newSender = new VerifiedWallet(userPk);\r\n\r\n // const userRegAddress = await newSender.getAddress();\r\n\r\n // let encryptedPk: string;\r\n\r\n // if (!passKeyRawId) {\r\n // const secretKey = encodeBytes32String(vaultPin);\r\n\r\n // encryptedPk = encryptString(userPk, secretKey);\r\n // } else {\r\n // encryptedPk = await encryptWithPasskey(\r\n // userPk,\r\n // passKeyRawId,\r\n // vaultPin\r\n // );\r\n // }\r\n\r\n // if (!isReactNative && chrome?.storage?.local) {\r\n // await chrome.storage.local.set({\r\n // myVault: JSON.stringify({\r\n // address: userAddress,\r\n // regAddress: userRegAddress,\r\n // vaultId,\r\n // hashedVaultId: hashedVaultId,\r\n // pk: encryptedPk,\r\n // channel: otpChannel,\r\n // }),\r\n // });\r\n // } else if (\r\n // !isReactNative &&\r\n // !chrome?.storage?.local &&\r\n // localStorage\r\n // ) {\r\n // localStorage.setItem(\r\n // \"myVault\",\r\n // JSON.stringify({\r\n // address: userAddress,\r\n // regAddress: userRegAddress,\r\n // vaultId,\r\n // hashedVaultId: hashedVaultId,\r\n // pk: encryptedPk,\r\n // channel: otpChannel,\r\n // })\r\n // );\r\n // } else if (isReactNative && AsyncStorage) {\r\n // await AsyncStorage.setItem(\r\n // \"myVault\",\r\n // JSON.stringify({\r\n // address: userAddress,\r\n // regAddress: userRegAddress,\r\n // vaultId,\r\n // hashedVaultId: hashedVaultId,\r\n // pk: encryptedPk,\r\n // channel: otpChannel,\r\n // })\r\n // );\r\n // }\r\n\r\n // return vaultData;\r\n // } catch (err) {\r\n // errorToast(\r\n // \"Oops something went wrong\",\r\n // \"Error saving new vault details. Try again later\"\r\n // );\r\n // if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n // console.error(\"save vault failed: \", err);\r\n // }\r\n\r\n // return false;\r\n // }\r\n // } else {\r\n // errorToast(\r\n // \"Oops something went wrong\",\r\n // \"Error creating pin for existing vault. Try again later\"\r\n // );\r\n\r\n // if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n // console.error(\"confirm pin vault failed: \", cfrmRes);\r\n // }\r\n // return false;\r\n // }\r\n // });\r\n // } else {\r\n // return null;\r\n // }\r\n // }\r\n else if (res?.status === 0 && res?.response?.result[0] !== true) {\r\n return await vaultContract\r\n .createVault(hashedVaultId)\r\n .then(async (vultRes: any) => {\r\n if (vultRes?.status === 0) {\r\n //temporary save the last pk incase confirmParticipant fails??\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.set({\r\n lastPk: userPk,\r\n });\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.setItem(\"lastPk\", userPk);\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.setItem(\"lastPk\", userPk);\r\n }\r\n return await vaultContract\r\n .confirmParticipant(\r\n hashedVaultId,\r\n\r\n hashedVaultId,\r\n\r\n true\r\n )\r\n .then(async (cfrmRes: any) => {\r\n if (cfrmRes?.status === 0) {\r\n //delete saved pk if confirmParticipant is successful??\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"lastPk\");\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.removeItem(\"lastPk\");\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.removeItem(\"lastPk\");\r\n }\r\n try {\r\n const newSender = new VerifiedWallet(userPk);\r\n\r\n const userRegAddress = await newSender.getAddress();\r\n\r\n let encryptedPk: string;\r\n if (!passKeyRawId) {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n encryptedPk = encryptString(userPk, secretKey);\r\n } else {\r\n encryptedPk = await encryptWithPasskey(\r\n userPk,\r\n passKeyRawId,\r\n vaultPin\r\n );\r\n }\r\n\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.set({\r\n myVault: JSON.stringify({\r\n address: userAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n }),\r\n });\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n address: userAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n address: userAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: encryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n }\r\n\r\n return vaultData;\r\n } catch (err) {\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error saving new vault details. Try again later\"\r\n );\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"save vault failed: \", err);\r\n }\r\n\r\n return false;\r\n }\r\n } else {\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error creating pin for new vault. Try again later\"\r\n );\r\n\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"confirm pin vault failed: \", cfrmRes);\r\n }\r\n return false;\r\n }\r\n });\r\n } else {\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error creating new vault. Try again later\"\r\n );\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"create vault failed: \", vultRes);\r\n }\r\n\r\n return false;\r\n }\r\n });\r\n }\r\n });\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"unexpected error: \", err);\r\n }\r\n errorToast(\r\n \"Oops something went wrong\",\r\n \"Error while creating pin. Try again later\"\r\n );\r\n return false;\r\n }\r\n};\r\n\r\nexport const validateVaultPin = async (\r\n vaultId: string,\r\n hashedVaultId: string,\r\n vaultPin: string,\r\n hashedVaultPin: string,\r\n encryptedPk: any,\r\n userAddress: string,\r\n otpChannel: \"sms\" | \"email\",\r\n chainId?: number,\r\n includePk?: boolean,\r\n newChainId?: number,\r\n passKeyRawId?: any\r\n) => {\r\n try {\r\n let userPk: any;\r\n\r\n if (!passKeyRawId) {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n userPk = decryptString(encryptedPk, secretKey);\r\n } else {\r\n userPk = await decryptWithPasskey(encryptedPk, passKeyRawId);\r\n }\r\n\r\n if (userPk) {\r\n const cntAddresses: any = contractAddress;\r\n const sender = new VerifiedWallet(userPk);\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n\r\n const vaultContract = new Custody(signer, cntAddresses[_chainId].Custody);\r\n\r\n if (vaultContract) {\r\n return await vaultContract\r\n .getCreator(hashedVaultId)\r\n .then(async (res: any) => {\r\n if (res?.status === 0 && res?.response?.result[0] === true) {\r\n const quorumSet = await vaultContract.getQuorum(hashedVaultId);\r\n if (\r\n quorumSet?.status === 0 &&\r\n quorumSet?.response?.result?.length > 0\r\n ) {\r\n return includePk && Number(quorumSet?.response?.result[0]) > 0\r\n ? {\r\n address: userAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n channel: otpChannel,\r\n chainId: newChainId ? newChainId : _chainId,\r\n pin: vaultPin,\r\n rawId: passKeyRawId,\r\n pk: userPk,\r\n }\r\n : Number(quorumSet?.response?.result[0]) === 0\r\n ? {\r\n address: userAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n channel: otpChannel,\r\n chainId: newChainId ? newChainId : _chainId,\r\n pin: vaultPin,\r\n rawId: passKeyRawId,\r\n pk: userPk,\r\n inCompleteVault: true,\r\n }\r\n : {\r\n address: userAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n channel: otpChannel,\r\n chainId: newChainId ? newChainId : _chainId,\r\n pin: vaultPin,\r\n rawId: passKeyRawId,\r\n };\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"Invalid pin\");\r\n }\r\n return null;\r\n }\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"Account does not exist\");\r\n }\r\n return null;\r\n }\r\n });\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error getting vault contract\");\r\n }\r\n return null;\r\n }\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error decrypting pk\");\r\n }\r\n return null;\r\n }\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"unexpected error: \", err);\r\n }\r\n return null;\r\n }\r\n};\r\n\r\nexport const acceptOrRejectInvitation = async (\r\n sendCreatorAcceptance: VerifiedCustodyHelpers[\"sendCreatorAcceptance\"],\r\n sendCreatorRejection: VerifiedCustodyHelpers[\"sendCreatorRejection\"],\r\n channel: \"email\" | \"sms\",\r\n hashedCosignerId: string,\r\n hashedCosignerPin: string,\r\n hashedCreatorVaultId: string,\r\n hashedCreatorVaultPin: string,\r\n creatorVaultId: string,\r\n coSignerVaultId: string,\r\n accepted: boolean,\r\n vaultContract?: any,\r\n userPk?: string,\r\n chainId?: number\r\n) => {\r\n let contract: any;\r\n if (vaultContract) {\r\n contract = vaultContract;\r\n } else {\r\n const cntAddresses: any = contractAddress;\r\n const sender = new VerifiedWallet(userPk);\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n\r\n contract = new Custody(signer, cntAddresses[_chainId].Custody);\r\n }\r\n if (contract) {\r\n return await contract\r\n .confirmParticipant(hashedCreatorVaultId, hashedCosignerId, accepted)\r\n .then(async (res: any) => {\r\n if (res?.status === 0) {\r\n if (accepted) {\r\n await sendCreatorAcceptance(\r\n channel,\r\n creatorVaultId,\r\n coSignerVaultId\r\n );\r\n } else {\r\n await sendCreatorRejection(\r\n channel,\r\n creatorVaultId,\r\n coSignerVaultId\r\n );\r\n }\r\n\r\n return true;\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"Accept or reject invitation failed with\");\r\n }\r\n return false;\r\n }\r\n })\r\n .catch((err: any) => {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"Accept or reject invitation failed with error: \", err);\r\n }\r\n return false;\r\n });\r\n } else {\r\n return false;\r\n }\r\n};\r\n\r\n// const retryCompleteVault = async () => {\r\n// failedParticipants = [...new Set(failedParticipants)]\r\n// await Promise.all(\r\n// failedParticipants.map(async (participant, idx) => {\r\n// const retryAdd = await mainService.vault.addParticipant(\r\n// vaultInfo.hashedVaultId,\r\n// vaultInfo.hashedVaultPin,\r\n// participant.hashedCosigner,\r\n// participant.share\r\n// )\r\n\r\n// if (retryAdd.status) {\r\n// // failedParticipants.push({\r\n// // creatorVaultId: ,\r\n// // fcmToken,\r\n// // cosigner,\r\n// // share: sharesArrayAsString[idx],\r\n// // })\r\n// } else {\r\n// const filtered = failedParticipants.filter(\r\n// (part) => part.cosigner !== participant.cosigner\r\n// )\r\n// failedParticipants = [...new Set(filtered)]\r\n// await sendNotification({\r\n// creator: vaultInfo.vaultId,\r\n// hashedCreator: vaultInfo.hashedVaultId,\r\n// idType: participant.idType,\r\n// email: participant.cosigner,\r\n// phoneNumber: participant.cosigner,\r\n// })\r\n// }\r\n// })\r\n// )\r\n\r\n// if (failedParticipants.length > 0) {\r\n// setIsRetry(true)\r\n// setIsLoading(false)\r\n// return\r\n// }\r\n\r\n// const addQuorum = await mainService.vault.defineQuorum(\r\n// vaultInfo.hashedVaultId,\r\n// vaultInfo.hashedVaultPin,\r\n// threshold.toString() // coming from the slider\r\n// )\r\n\r\n// if (addQuorum.status) {\r\n// return false\r\n// }\r\n// return true\r\n// }\r\n\r\nexport const completeVaultCreation = async (\r\n sendCoSignerInvitation: (\r\n channel: \"sms\" | \"email\",\r\n cosigerId: string,\r\n cretorId: string,\r\n hashedCretorPin: string\r\n ) => Promise<boolean>,\r\n sendCreatorConfirmation: (\r\n channel: \"sms\" | \"email\",\r\n cretorId: string,\r\n cosigersList: [],\r\n requiredSigners: number\r\n ) => Promise<boolean>,\r\n keyHolders: any,\r\n coSigners: any,\r\n otpChannel: \"sms\" | \"email\",\r\n KeyThreshold: number,\r\n vaultId: string,\r\n hashedVaultId: string,\r\n vaultPin: string,\r\n hashedVaultPin: string,\r\n vaultContract: any,\r\n pk: string,\r\n passKeyRawId?: any\r\n) => {\r\n const keyShardsCount = Number(keyHolders.length);\r\n\r\n const privateKeySplits = await split(\r\n Uint8Array.from(pk.split(\"\").map((letter: string) => letter.charCodeAt(0))),\r\n Number(keyShardsCount),\r\n KeyThreshold\r\n );\r\n\r\n const sharesArrayAsString = privateKeySplits.map((share) => share.join(\",\"));\r\n\r\n const secretKey = !passKeyRawId ? encodeBytes32String(vaultPin) : \"\";\r\n\r\n let failedKeyHolders = [];\r\n let succesfulKeyHolders = [];\r\n\r\n for (let idx = 0; idx < keyHolders.length; idx++) {\r\n const participant = keyHolders[idx];\r\n const encryptedShard = passKeyRawId\r\n ? await encryptWithPasskey(\r\n sharesArrayAsString[idx],\r\n passKeyRawId,\r\n vaultPin\r\n )\r\n : encryptString(sharesArrayAsString[idx], secretKey);\r\n await vaultContract\r\n .addParticipant(\r\n hashedVaultId,\r\n hashTheString(participant.vaultId),\r\n encryptedShard\r\n )\r\n .then(async (res: any) => {\r\n const keyHolder = {\r\n creatorVaultId: vaultId,\r\n vaultPin: vaultPin,\r\n creatorHashedVaultId: hashedVaultId,\r\n creatorHashedVaultPin: hashedVaultPin,\r\n cosigner: participant.vaultId,\r\n hashedCosigner: hashTheString(participant.vaultId),\r\n cosignerVaultIdType:\r\n participant.otpChannel === \"sms\" ? \"PHONE\" : \"EMAIL\",\r\n cosignerVaultId: participant.vaultId,\r\n share: encryptedShard,\r\n ...participant,\r\n };\r\n if (res?.status === 0) {\r\n succesfulKeyHolders.push(keyHolder);\r\n if (participant.vaultId !== vaultId) {\r\n await sendCoSignerInvitation(\r\n participant.otpChannel,\r\n participant.vaultId,\r\n vaultId,\r\n hashedVaultPin\r\n ).then((res) => {\r\n if (!res) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while sending cosigner invite\");\r\n }\r\n // errorToast(\"Oops somethin went wrong\", \"error while sending cosigner invite\");\r\n }\r\n });\r\n }\r\n } else {\r\n failedKeyHolders.push(keyHolder);\r\n }\r\n });\r\n\r\n await new Promise((res) => setTimeout(res, 1000)); //1 second timeout to fix nonce error???\r\n }\r\n\r\n if (\r\n failedKeyHolders?.length > 0 ||\r\n succesfulKeyHolders?.length !== keyHolders?.length\r\n ) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while adding co-signers\");\r\n }\r\n errorToast(\"Oops somethin went wrong\", \"error while adding co-signers\");\r\n return false;\r\n }\r\n\r\n return await vaultContract\r\n .defineQuorum(hashedVaultId, KeyThreshold.toString())\r\n .then(async (res: any) => {\r\n if (res?.status === 0) {\r\n const cosignersList = coSigners?.map((cng: any) => {\r\n return {\r\n name: cng?.name,\r\n email: cng?.email,\r\n phoneNumber: cng?.phoneNumber,\r\n contactType: String(cng?.otpChannel)?.toUpperCase(),\r\n position: `${numberPositions[Number(cng?.position)]} Co-Signer`,\r\n };\r\n });\r\n await sendCreatorConfirmation(\r\n otpChannel,\r\n vaultId,\r\n cosignersList,\r\n Number(KeyThreshold)\r\n ).then((res) => {\r\n if (!res) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while sending creator's confirmation\");\r\n }\r\n // errorToast(\"Oops somethin went wrong\", \"error while sending creator's confirmation\");\r\n }\r\n });\r\n\r\n return true;\r\n } else {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while saving vault keys\");\r\n }\r\n errorToast(\"Oops somethin went wrong\", \"error while saving vault keys\");\r\n return false;\r\n }\r\n });\r\n};\r\n\r\nexport const initiateVaultRecovery = async (\r\n sendCreatorInitiation: (\r\n channel: \"sms\" | \"email\",\r\n cretorId: string,\r\n hashedCretorPin: string,\r\n txId: number,\r\n requiredSigners: number\r\n ) => Promise<boolean>,\r\n hashedVaultId: string,\r\n hashedVaultPin: string,\r\n vaultId: string,\r\n vaultPin: string,\r\n encryptedPk: string,\r\n vaultChannel: \"sms\" | \"email\",\r\n chainId?: number,\r\n passKeyRawId?: any\r\n) => {\r\n let userPk: any;\r\n\r\n if (!passKeyRawId) {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n userPk = decryptString(encryptedPk, secretKey);\r\n } else {\r\n userPk = await decryptWithPasskey(encryptedPk, passKeyRawId);\r\n }\r\n\r\n if (userPk) {\r\n const cntAddresses: any = contractAddress;\r\n const sender = new VerifiedWallet(userPk);\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n\r\n const vaultContract = new Custody(signer, cntAddresses[_chainId].Custody);\r\n\r\n if (vaultContract) {\r\n return await vaultContract\r\n .promptSignatures(hashedVaultId)\r\n .then(async (res: any) => {\r\n if (res?.status === 0 && res?.response?.result?.logs) {\r\n const abiCoder = new AbiCoder();\r\n const vaultLogs = res?.response?.result?.logs?.filter(\r\n (log: any) =>\r\n log?.address?.toLowerCase() ===\r\n cntAddresses[_chainId].Custody?.toLowerCase() &&\r\n log?.topics\r\n ?.map((tp: string) => tp?.toLowerCase())\r\n ?.includes(newTransactionEventHash?.toLowerCase())\r\n );\r\n const txData = vaultLogs[0]?.data;\r\n\r\n const decodedTxData = abiCoder\r\n .decode([\"bytes32\", \"bytes32\", \"uint256\"], txData)\r\n ?.map((val, idx) => (idx < 2 ? val : Number(val)))\r\n .flat();\r\n const txId = decodedTxData[decodedTxData?.length - 1];\r\n await sendCreatorInitiation(\r\n vaultChannel,\r\n vaultId,\r\n hashedVaultPin,\r\n Number(txId),\r\n Number(vaultLogs?.length)\r\n );\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((err: any) => {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while initiating vault recovery\", err);\r\n }\r\n return false;\r\n });\r\n }\r\n }\r\n};\r\n\r\nexport const signVaultRecovery = async (\r\n sendCreatorSigned: (\r\n channel: \"sms\" | \"email\",\r\n cretorId: string,\r\n coSignerId: string\r\n ) => Promise<boolean>,\r\n sendCreatorCompleted: (\r\n channel: \"sms\" | \"email\",\r\n cretorId: string,\r\n txId: number\r\n ) => Promise<boolean>,\r\n hashedVaultId: string,\r\n hashedVaultPin: string,\r\n vaultId: string,\r\n vaultPin: string,\r\n encryptedPk: string,\r\n reqVaultId: string,\r\n hashedReqId: string,\r\n hashedReqPin: string,\r\n reqTxId: string,\r\n chainId?: number,\r\n passKeyRawId?: any\r\n) => {\r\n let userPk: any;\r\n\r\n if (!passKeyRawId) {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n userPk = decryptString(encryptedPk, secretKey);\r\n } else {\r\n userPk = await decryptWithPasskey(encryptedPk, passKeyRawId);\r\n }\r\n\r\n if (userPk) {\r\n const cntAddresses: any = contractAddress;\r\n const sender = new VerifiedWallet(userPk);\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n\r\n const vaultContract = new Custody(signer, cntAddresses[_chainId].Custody);\r\n\r\n if (vaultContract) {\r\n return await vaultContract\r\n .signTransaction(hashedReqId, hashedVaultId, reqTxId)\r\n .then(async (res: any) => {\r\n if (res?.status === 0) {\r\n await sendCreatorSigned(\r\n /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(reqVaultId) ? \"email\" : \"sms\",\r\n reqVaultId,\r\n vaultId\r\n );\r\n return await vaultContract\r\n .checkQuorum(hashedReqId, reqTxId)\r\n .then(async (qRes: any) => {\r\n if (qRes?.status === 0 && qRes?.response?.result) {\r\n if (qRes?.response?.result[0] === true) {\r\n await sendCreatorCompleted(\r\n /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(reqVaultId)\r\n ? \"email\"\r\n : \"sms\",\r\n reqVaultId,\r\n Number(reqTxId)\r\n );\r\n }\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n });\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((err: any) => {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while signing vault recovery\", err);\r\n }\r\n return false;\r\n });\r\n }\r\n }\r\n};\r\n\r\nexport const restoreVaultLogin = async (\r\n isReactNative: boolean,\r\n AsyncStorage: any,\r\n hashedVaultId: string,\r\n hashedVaultPin: string,\r\n vaultId: string,\r\n vaultPin: string,\r\n encryptedPk: string,\r\n reqTxId: string,\r\n otpChannel: \"sms\" | \"email\",\r\n chainId?: number,\r\n passKeyRawId?: any\r\n) => {\r\n let userPk: any;\r\n\r\n if (!passKeyRawId) {\r\n const secretKey = encodeBytes32String(vaultPin);\r\n\r\n userPk = decryptString(encryptedPk, secretKey);\r\n } else {\r\n userPk = await decryptWithPasskey(encryptedPk, passKeyRawId);\r\n }\r\n\r\n if (userPk) {\r\n const cntAddresses: any = contractAddress;\r\n const sender = new VerifiedWallet(userPk);\r\n const _chainId =\r\n chainId &&\r\n cntAddresses[chainId]?.Custody &&\r\n ChainConfig[chainId]?.rpcUrls?.length > 0\r\n ? chainId\r\n : defaultChainId;\r\n const provider = ChainConfig[_chainId]?.rpcUrls[0];\r\n const signer = sender.setProvider(new Provider(provider));\r\n\r\n const vaultContract = new Custody(signer, cntAddresses[_chainId].Custody);\r\n\r\n if (vaultContract) {\r\n return await vaultContract\r\n .checkQuorum(hashedVaultId, reqTxId)\r\n .then(async (qRes: any) => {\r\n if (qRes?.status === 0 && qRes?.response?.result) {\r\n if (qRes?.response?.result[0] === true) {\r\n return await vaultContract\r\n .getShards(hashedVaultId, reqTxId)\r\n .then(async (res: any) => {\r\n if (res?.status === 0 && res?.response?.result) {\r\n const recoveredShrads = res?.response?.result.filter(\r\n (shrd: string) => shrd !== \"\"\r\n );\r\n if (recoveredShrads.length > 1) {\r\n //at least 2 shrads?? since minimum signers are 2??\r\n const secretKey = !passKeyRawId\r\n ? encodeBytes32String(vaultPin)\r\n : \"\";\r\n // const decryptedShares = recoveredShrads.map(\r\n // (shrd: string) => decryptString(shrd, secretKey)\r\n // );\r\n\r\n const decryptedShares = await Promise.all(\r\n recoveredShrads.map((shrd: string) =>\r\n passKeyRawId\r\n ? decryptWithPasskey(shrd, passKeyRawId)\r\n : decryptString(shrd, secretKey)\r\n )\r\n );\r\n\r\n const shares = decryptedShares.map(\r\n (shrd: string) =>\r\n new Uint8Array(shrd.split(\",\").map(Number))\r\n );\r\n\r\n const combinedShares = await combine(shares);\r\n\r\n const pk = new TextDecoder().decode(combinedShares);\r\n\r\n if (pk) {\r\n const secretKey = !passKeyRawId\r\n ? encodeBytes32String(vaultPin)\r\n : \"\";\r\n\r\n const newEncryptedPk = passKeyRawId\r\n ? await encryptWithPasskey(pk, passKeyRawId, vaultPin)\r\n : encryptString(pk, secretKey);\r\n\r\n const newSender = new VerifiedWallet(pk);\r\n\r\n const userRegAddress = await newSender.getAddress();\r\n\r\n const newSigner = newSender.setProvider(\r\n new Provider(provider)\r\n );\r\n\r\n const _newsigner: any = newSigner;\r\n const chainToUse = [\r\n base,\r\n mainnet,\r\n gnosis,\r\n polygon,\r\n sepolia,\r\n baseSepolia,\r\n ].find((nt) => Number(nt?.id) === Number(_chainId));\r\n const nexAddress = await computeNexusAccount(\r\n chainToUse,\r\n http(),\r\n _newsigner\r\n );\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.set({\r\n myVault: JSON.stringify({\r\n address: nexAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: newEncryptedPk,\r\n channel: otpChannel,\r\n }),\r\n });\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n address: nexAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: newEncryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.setItem(\r\n \"myVault\",\r\n JSON.stringify({\r\n address: nexAddress,\r\n regAddress: userRegAddress,\r\n vaultId,\r\n hashedVaultId: hashedVaultId,\r\n pk: newEncryptedPk,\r\n channel: otpChannel,\r\n })\r\n );\r\n }\r\n return true;\r\n }\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((err: any) => {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while restoring login access\", err);\r\n }\r\n return false;\r\n });\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n })\r\n .catch((err: any) => {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error while restoring login access\", err);\r\n }\r\n return false;\r\n });\r\n } else {\r\n return false;\r\n }\r\n }\r\n};\r\n\r\n// export const resetVaultPin = async (\r\n// hashedVaultId: string,\r\n// hashedOldPin: string,\r\n// hashedNewPin: string,\r\n// vaultContract: any\r\n// ) => {\r\n// return await vaultContract\r\n// .resetPin(hashedVaultId)\r\n// .then(async (res: any) => {\r\n// const trueAny: any = true;\r\n// if (res?.status === 0) {\r\n// return await vaultContract\r\n// .confirmParticipant(\r\n// hashedVaultId,\r\n// hashedNewPin,\r\n// hashedVaultId,\r\n// hashedNewPin,\r\n// trueAny\r\n// )\r\n// .then((cRes: any) => {\r\n// if (cRes?.status === 0) {\r\n// return {};\r\n// } else {\r\n// return null;\r\n// }\r\n// });\r\n// } else {\r\n// return null;\r\n// }\r\n// });\r\n// };\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport {\r\n hashTheBuffer,\r\n hashTheString,\r\n loadAllGoogleFonts,\r\n loadAllGoogleFontsRN,\r\n publicKeyCredentialCreationOptions,\r\n publicKeyCredentialRequestOptions,\r\n resolveGlobalStyleUnit,\r\n} from \"../utils/helpers\";\r\nimport {\r\n acceptOrRejectInvitation,\r\n checkOrResetOrCreateVault,\r\n} from \"../services/contracts\";\r\nimport PageSlider from \"../components/slider\";\r\nimport Success from \"../components/success\";\r\nimport { imageAssets } from \"../utils/constants\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\n\r\nconst CreatePinPage = (props: {\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n rnPasskey: any;\r\n };\r\n fontsLoaded?: boolean;\r\n setStep: (step: string) => void;\r\n setIsLoading: (isLoading: boolean) => void;\r\n setShowSuccessBtn?: (showSuccessBtn: boolean) => void;\r\n setSuccessBtnText?: (successBtnText: string) => void;\r\n setSuccessBtnNeutText?: (successBtnNeutText: string) => void;\r\n setSuccessBtnFunc?: (successBtnFunc: any) => void;\r\n setSuccessBtnNeutFunc?: (successBtnNeutFunc: any) => void;\r\n setActionHeaderText?: (actionHeaderText: string) => void;\r\n setActionFooterText?: (actionFooterText: string) => void;\r\n userNumberFmt: string;\r\n userEmail: string;\r\n selectedCountry: { name: string; area: string; flag: string };\r\n action?: string;\r\n vaultData?: any;\r\n txData?: any;\r\n helperFunctions?: VerifiedCustodyHelpers;\r\n isExistingUser?: boolean;\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n EventEmitter,\r\n styles,\r\n rnPasskey,\r\n } = props.platform;\r\n const [fontsLoaded, setFontsLoaded] = useState<boolean>(\r\n props.fontsLoaded || false\r\n );\r\n const [pinHide, setPinHide] = useState(true);\r\n const [pinIncorrect, setPinIncorrect] = useState(false);\r\n const [pinIncorrectText, setPinIncorrectText] = useState(\"\");\r\n const [showCustomSuccess, setShowCustomSuccess] = useState(false);\r\n const [showInvitation, setShowInvitation] = useState(false);\r\n const [showInvitationSuccess, setShowInvitationSuccess] = useState(false);\r\n const [showRejectInvitation, setShowRejectInvitation] = useState(false);\r\n const [customSuccessText, setCustomSuccessText] = useState(\"\");\r\n const [vaultPin, setVaultPin] = useState(\"\");\r\n const [vaultRawId, setVaultRawId] = useState(null);\r\n const [searchActive, setSearchActive] = useState(false);\r\n const [isPin, setIsPin] = useState(false);\r\n\r\n const { address, pk, vaultContract, setVaultData, setChainId, vaultData } =\r\n useVaultStore();\r\n\r\n const [pin, setPin] = useState([\"\", \"\", \"\", \"\"]);\r\n const [confirmPin, setConfirmPin] = useState([\"\", \"\", \"\", \"\"]);\r\n\r\n const pinRefs = useRef<Array<any>>([]);\r\n const confirmPinRefs = useRef<Array<any>>([]);\r\n\r\n useEffect(() => {\r\n const PreloadGoogleFonts = async () => {\r\n if (!isReactNative) {\r\n // Only load Google fonts on web\r\n const isFontsLoaded = loadAllGoogleFonts(document);\r\n setFontsLoaded(isFontsLoaded);\r\n } else if (Font) {\r\n //load fonts with expo-font for react native.\r\n await loadAllGoogleFontsRN(Font);\r\n setFontsLoaded(true);\r\n } else {\r\n setFontsLoaded(true);\r\n }\r\n };\r\n if (!props.fontsLoaded) {\r\n PreloadGoogleFonts();\r\n }\r\n }, []);\r\n\r\n const handleTextChange = (text: string, idx: number, isConfirm: boolean) => {\r\n setPinIncorrect(false);\r\n setPinIncorrectText(\"\");\r\n const clean = text.replace(/\\D/g, \"\");\r\n const newPin = isConfirm ? [...confirmPin] : [...pin];\r\n newPin[idx] = clean;\r\n if (isConfirm) {\r\n setConfirmPin(newPin);\r\n if (clean && confirmPinRefs.current[idx + 1]) {\r\n confirmPinRefs.current[idx + 1].focus();\r\n }\r\n\r\n if (\r\n idx < 3 &&\r\n newPin.every((digit) => digit !== \"\") &&\r\n pin.every((digit) => digit !== \"\") &&\r\n newPin.join(\"\") !== pin.join(\"\")\r\n ) {\r\n setPinIncorrect(true);\r\n setPinIncorrectText(\"Confirm Pin must match New Pin.\");\r\n }\r\n if (idx === 3 && pin.join(\"\") !== newPin.join(\"\")) {\r\n setPinIncorrect(true);\r\n setPinIncorrectText(\"Confirm Pin must match New Pin.\");\r\n }\r\n } else {\r\n setPin(newPin);\r\n if (clean && pinRefs.current[idx + 1]) {\r\n pinRefs.current[idx + 1].focus();\r\n }\r\n if (\r\n confirmPin.every((digit) => digit !== \"\") &&\r\n newPin.join(\"\") !== confirmPin.join(\"\")\r\n ) {\r\n setPinIncorrect(true);\r\n setPinIncorrectText(\"New Pin must match Confirm Pin.\");\r\n }\r\n }\r\n };\r\n\r\n const createPasskey = async () => {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n try {\r\n const vaultId =\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${props.selectedCountry.area}${props.userNumberFmt?.replace(\r\n \" \",\r\n \"\"\r\n )}`;\r\n const credential: any = isReactNative\r\n ? rnPasskey.create(\r\n publicKeyCredentialCreationOptions(\r\n \"Verified Wallet\",\r\n vaultId,\r\n hashTheString(vaultId)\r\n )\r\n )\r\n : await navigator?.credentials?.create({\r\n publicKey: publicKeyCredentialCreationOptions(\r\n \"Verified Wallet\",\r\n vaultId,\r\n hashTheString(vaultId)\r\n ),\r\n });\r\n const hashedId = hashTheBuffer(credential?.rawId);\r\n return {\r\n pinString: credential?.id,\r\n hashed: hashedId,\r\n rawId: credential?.rawId,\r\n };\r\n } catch (err) {\r\n setPinIncorrectText(\r\n `Passkey creation failed: ${err?.message?.replace(\r\n \"See: https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations-client.\",\r\n \"\"\r\n )} Try again later`\r\n );\r\n setPinIncorrect(true);\r\n return null;\r\n }\r\n };\r\n\r\n const requestPasskey = async () => {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n try {\r\n const credential: any = isReactNative\r\n ? await rnPasskey.get(publicKeyCredentialRequestOptions())\r\n : await navigator.credentials.get({\r\n publicKey: publicKeyCredentialRequestOptions(),\r\n });\r\n const hashedId = hashTheBuffer(credential?.rawId);\r\n return {\r\n pinString: credential?.id,\r\n hashed: hashedId,\r\n rawId: credential?.rawId,\r\n };\r\n } catch (err) {\r\n setPinIncorrectText(\r\n `Passkey authentication failed: ${err?.message?.replace(\r\n \"See: https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations-client.\",\r\n \"\"\r\n )} Try again later`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n };\r\n\r\n const handleKeyPress = (_: any, idx: number, e: any, isConfirm: boolean) => {\r\n const key = e.nativeEvent.key;\r\n\r\n if (\r\n !isConfirm &&\r\n key === \"Backspace\" &&\r\n !pin[idx] &&\r\n idx > 0 &&\r\n pinRefs.current[idx - 1]\r\n ) {\r\n pinRefs.current[idx - 1].focus();\r\n }\r\n\r\n if (\r\n isConfirm &&\r\n key === \"Backspace\" &&\r\n !confirmPin[idx] &&\r\n idx > 0 &&\r\n confirmPinRefs.current[idx - 1]\r\n ) {\r\n confirmPinRefs.current[idx - 1].focus();\r\n }\r\n };\r\n\r\n const isConfirmActive = () => {\r\n if (!isPin) {\r\n return true;\r\n }\r\n\r\n if (props.isExistingUser) {\r\n return pin.every((digit) => digit !== \"\");\r\n } else {\r\n return (\r\n pin.every((digit) => digit !== \"\") &&\r\n confirmPin.every(\r\n (digit) => digit !== \"\" && pin.join(\"\") === confirmPin.join(\"\")\r\n )\r\n );\r\n }\r\n };\r\n\r\n const handleVaultManagement = async (pinToUse?: {\r\n pinString: string;\r\n hashed: string;\r\n rawId: any;\r\n }) => {\r\n if (!props.helperFunctions) {\r\n setPinIncorrectText(\r\n \"No Helper Functions. Please include all helper functions in the CreatePinPage props.\"\r\n );\r\n setPinIncorrect(true);\r\n } else {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n\r\n const vaultId =\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${props.selectedCountry.area}${props.userNumberFmt?.replace(\r\n \" \",\r\n \"\"\r\n )}`;\r\n const channel = props.userEmail?.length > 0 ? \"email\" : \"sms\";\r\n\r\n if (\r\n (!props.isExistingUser &&\r\n isConfirmActive() &&\r\n vaultId &&\r\n channel &&\r\n pk &&\r\n address &&\r\n vaultContract) ||\r\n (!props.isExistingUser &&\r\n isConfirmActive() &&\r\n vaultId &&\r\n channel &&\r\n props.vaultData?.vaultContract &&\r\n props.vaultData?.hashedOldPin) ||\r\n (props.isExistingUser &&\r\n isConfirmActive() &&\r\n vaultId &&\r\n channel &&\r\n pk &&\r\n address &&\r\n vaultContract) ||\r\n (props.isExistingUser &&\r\n isConfirmActive() &&\r\n vaultId &&\r\n channel &&\r\n props.vaultData?.vaultContract &&\r\n props.vaultData?.hashedOldPin)\r\n ) {\r\n props.setIsLoading(true);\r\n const vaultPin = pinToUse?.pinString || pin.join(\"\");\r\n const hashedVaultId = hashTheString(vaultId);\r\n const hashedVaultPin = pinToUse?.hashed || hashTheString(vaultPin);\r\n\r\n await checkOrResetOrCreateVault(\r\n isReactNative,\r\n AsyncStorage,\r\n EventEmitter,\r\n vaultId,\r\n hashedVaultId,\r\n vaultPin,\r\n hashedVaultPin,\r\n channel,\r\n pk ? pk : props.vaultData?.pk,\r\n address ? address : props.vaultData?.address,\r\n vaultContract ? vaultContract : props.vaultData?.vaultContract,\r\n props.action,\r\n props.vaultData,\r\n props.txData,\r\n pinToUse?.rawId\r\n ).then(async (res: any) => {\r\n props.setIsLoading(false);\r\n if (res) {\r\n setVaultData(\r\n res?.shouldStop && res?.vaultId\r\n ? {\r\n vaultId: res?.vaultId,\r\n hashedVaultId: res?.hashedVaultId,\r\n pk: res?.pk,\r\n rawId: res?.rawId,\r\n channel: res?.channel,\r\n }\r\n : res?.shouldStop\r\n ? {}\r\n : res\r\n );\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n if (props.action === \"invitation\") {\r\n setVaultPin(vaultPin);\r\n setVaultRawId(pinToUse?.rawId);\r\n setShowInvitation(true);\r\n } else if (props.action === \"reset-pin\") {\r\n if (!isReactNative && chrome?.storage?.local) {\r\n chrome.storage.local.remove(\"myVault\");\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.removeItem(\"myVault\");\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.removeItem(\"myVault\");\r\n }\r\n setCustomSuccessText(\r\n `You have successfully reset your account ${\r\n isPin ? \"4-Digits PIN\" : \"Passkey\"\r\n }. Login with the new ${isPin ? \"4-Digits PIN\" : \"Passkey\"}`\r\n );\r\n setShowCustomSuccess(true);\r\n } else if (!res?.shouldStop) {\r\n props.setStep(\"5\");\r\n } else if (res?.shouldStop && props.action !== \"getPk\") {\r\n setCustomSuccessText(\"\");\r\n setShowCustomSuccess(true);\r\n } else if (res?.shouldStop && props.action === \"getPk\") {\r\n props.setStep(\"0\");\r\n }\r\n } else if (res === null) {\r\n if (props.action === \"reset-pin\") {\r\n setPinIncorrectText(\"Reset pin failed. Try again later.\");\r\n setPinIncorrect(true);\r\n } else {\r\n setPinIncorrectText(\r\n `You are an existing user. Please use the right ${\r\n isPin\r\n ? \"existing 4-Digits PIN\"\r\n : \"existing Passkey for\" + \" \" + vaultId\r\n } to recover your account login access on this device/browser`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n } else {\r\n setPinIncorrectText(\r\n \"Unexpected error while creating account. Please try again later.\"\r\n );\r\n setPinIncorrect(true);\r\n }\r\n });\r\n } else if (!isConfirmActive()) {\r\n setPinIncorrectText(\r\n props.isExistingUser\r\n ? \"Enter full pin.\"\r\n : \"New Pin must match Confirm Pin.\"\r\n );\r\n setPinIncorrect(true);\r\n }\r\n }\r\n };\r\n\r\n const handleAcceptAndRejectInvitation = async (accepted: boolean) => {\r\n const vaultId =\r\n props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${props.selectedCountry.area}${props.userNumberFmt?.replace(\r\n \" \",\r\n \"\"\r\n )}`;\r\n const channel = props.userEmail?.length > 0 ? \"email\" : \"sms\";\r\n if (\r\n vaultPin?.length === 4 &&\r\n props?.vaultData?.hashedVaultId &&\r\n props.vaultData?.hashedVaultPin &&\r\n vaultId\r\n ) {\r\n props.setIsLoading(true);\r\n const hashedVaultId = hashTheString(vaultId);\r\n const hashedVaultPin = isPin\r\n ? hashTheString(vaultPin)\r\n : hashTheBuffer(vaultRawId);\r\n await acceptOrRejectInvitation(\r\n props.helperFunctions.sendCreatorAcceptance,\r\n props.helperFunctions.sendCreatorRejection,\r\n channel,\r\n hashedVaultId,\r\n hashedVaultPin,\r\n props?.vaultData?.hashedVaultId,\r\n props.vaultData?.hashedVaultPin,\r\n props.vaultData?.vaultId,\r\n vaultId,\r\n accepted,\r\n vaultContract\r\n ).then((res) => {\r\n props.setIsLoading(false);\r\n if (\r\n res &&\r\n !vaultData?.isExisting &&\r\n props.setShowSuccessBtn &&\r\n props.setSuccessBtnText &&\r\n props.setSuccessBtnNeutText &&\r\n props.setActionHeaderText &&\r\n props.setActionFooterText\r\n ) {\r\n props.setShowSuccessBtn(true);\r\n props.setSuccessBtnText(\"Continue Setting Up Your Account\");\r\n props.setSuccessBtnNeutText(\"Do It Later\");\r\n props.setActionHeaderText(\"Successful\");\r\n props.setActionFooterText(\r\n accepted\r\n ? `You have been added as a Co-Signer for ${props.vaultData?.vaultId}`\r\n : `You rejected Co-signer reject from ${props.vaultData?.vaultId}`\r\n );\r\n props.setStep(\"5\");\r\n } else if (res && vaultData?.isExisting) {\r\n setShowInvitationSuccess(true);\r\n }\r\n });\r\n }\r\n };\r\n\r\n return (\r\n <ScrollView\r\n contentContainerStyle={{\r\n flexGrow: 1,\r\n padding: 16,\r\n backgroundColor: \"#fff\",\r\n }}\r\n >\r\n {fontsLoaded && (\r\n <React.Fragment>\r\n {!showCustomSuccess && !showInvitation && (\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupLanguage }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-language\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContact }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact\"\r\n >\r\n <PageSlider\r\n platform={props.platform}\r\n sliderCount={[1, 2, 3]}\r\n currentSlider=\"1\"\r\n />\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactContent }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-content\"\r\n >\r\n {!props.isExistingUser && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n {isPin\r\n ? \"Create PIN\"\r\n : \"Secure Your Account with a Passkey\"}\r\n </Text>\r\n )}\r\n {props.isExistingUser && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n {isPin ? \"Enter PIN\" : \"Sign-in with Existing Passkey\"}\r\n </Text>\r\n )}\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupOtpText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-text\"\r\n >\r\n {!props.isExistingUser && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupOtpHeaderText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-header-text\"\r\n >\r\n Protect your blockchain assets with{\" \"}\r\n {isPin ? \"PIN\" : \"Passkey\"}. This{\" \"}\r\n {isPin ? \"PIN\" : \"Passkey\"} will be required for all\r\n future transactions and logins.\r\n </Text>\r\n )}\r\n {props.isExistingUser && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupOtpHeaderText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-header-text\"\r\n >\r\n Welcome back, please login using{\" \"}\r\n <Text style={{ color: \"#0C0C0E\" }}>\r\n {isPin ? \"existing 4-Digits PIN\" : \"existing Passkey\"}\r\n </Text>{\" \"}\r\n for your{\" \"}\r\n <Text style={{ color: \"#0C0C0E\" }}>\r\n {props.userEmail?.length > 0\r\n ? props.userEmail\r\n : `+${\r\n props.selectedCountry.area\r\n }${props.userNumberFmt?.replace(\" \", \"\")}`}\r\n </Text>{\" \"}\r\n account.\r\n </Text>\r\n )}\r\n </View>\r\n </View>\r\n\r\n {!isPin && (\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlAddCosignerMoreBody }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitleCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title-cont\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitle,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"14px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"14px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title\"\r\n >\r\n What is a passkey?\r\n </Text>\r\n </View>\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n A passkey replaces passwords. Only your device can unlock\r\n it via PIN, Face/Voice/Fingerprint.\r\n </Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n Your passkey is stored in your cloud account such as Apple\r\n iCloud Keychain, Google Password Manager, or Microsoft\r\n Account and synchronized across all devices.\r\n </Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n In the event of device loss, as long as you have access to\r\n your cloud account, you can recover your passkey.\r\n </Text>\r\n {!props.isExistingUser && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n Click \"Create New Passkey\" button, passkey setup popup\r\n will appears to create new passkey and secure your\r\n account.\r\n </Text>\r\n )}\r\n {props.isExistingUser && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n Click \"Login With Passkey\" button, passkey popup will\r\n appears to login using the accoun't passkey.\r\n </Text>\r\n )}\r\n <TouchableOpacity\r\n style={{ background: \"transparent\" }}\r\n onPress={() => {\r\n if (!isReactNative) {\r\n window?.open(\r\n \"https://blog.google/inside-google/googlers/ask-a-techspert/how-passkeys-work\",\r\n \"_blank\"\r\n );\r\n }\r\n }}\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabelLink,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label-link\"\r\n >\r\n Learn More about Passkey\r\n </Text>\r\n </TouchableOpacity>\r\n </View>\r\n )}\r\n\r\n {isPin && (\r\n <React.Fragment>\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpInputContainer }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-input-container\"\r\n >\r\n {!props.isExistingUser && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlPinInputContainerText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-pin-input-container-text\"\r\n >\r\n New PIN\r\n </Text>\r\n )}\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpInputGroup }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-input-group\"\r\n >\r\n {pin.map((_, idx) => (\r\n <TextInput\r\n key={`pin-${idx}`}\r\n style={\r\n isReactNative && pinIncorrect\r\n ? { ...styles.verifiedCustdMdlOtpInputRed }\r\n : isReactNative && pinIncorrect\r\n ? { ...styles.verifiedCustdMdlOtpInput }\r\n : {}\r\n }\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n secureTextEntry={pinHide}\r\n keyboardType=\"number-pad\"\r\n maxLength={1}\r\n ref={(el: any) => (pinRefs.current[idx] = el)}\r\n value={pin[idx]}\r\n onChangeText={(text: any) =>\r\n handleTextChange(text, idx, false)\r\n }\r\n onKeyPress={(e: any) =>\r\n handleKeyPress(e, idx, e, false)\r\n }\r\n />\r\n ))}\r\n </View>\r\n\r\n {props.isExistingUser && (\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpTimer }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-timer\"\r\n >\r\n {!pinIncorrect && <Text></Text>}\r\n {pinIncorrect && pinIncorrectText === \"\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpIncorrectText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n Please enter the correct pin\r\n </Text>\r\n )}\r\n {pinIncorrect && pinIncorrectText?.length > 0 && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpIncorrectText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n {pinIncorrectText}\r\n </Text>\r\n )}\r\n {!pinHide && (\r\n <TouchableOpacity\r\n style={{\r\n background: \"transparent\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n onPress={() => setPinHide(true)}\r\n >\r\n <Image\r\n style={{\r\n cursor: \"pointer\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n source={{ uri: imageAssets.pinShow }}\r\n />\r\n </TouchableOpacity>\r\n )}\r\n {pinHide && (\r\n <TouchableOpacity\r\n style={{\r\n background: \"transparent\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n onPress={() => setPinHide(false)}\r\n >\r\n <Image\r\n style={{\r\n cursor: \"pointer\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n source={{ uri: imageAssets.pinHide }}\r\n />\r\n </TouchableOpacity>\r\n )}\r\n </View>\r\n )}\r\n </View>\r\n\r\n {!props.isExistingUser && (\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpInputContainer }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-input-container\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlPinInputContainerText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-pin-input-container-text\"\r\n >\r\n Confirm PIN\r\n </Text>\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpInputGroup }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-input-group\"\r\n >\r\n {confirmPin.map((_, idx) => (\r\n <TextInput\r\n key={`confirm-${idx}`}\r\n style={\r\n isReactNative && pinIncorrect\r\n ? { ...styles.verifiedCustdMdlOtpInputRed }\r\n : isReactNative && !pinIncorrect\r\n ? { ...styles.verifiedCustdMdlOtpInput }\r\n : {}\r\n }\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n secureTextEntry={pinHide}\r\n keyboardType=\"number-pad\"\r\n maxLength={1}\r\n ref={(el: any) =>\r\n (confirmPinRefs.current[idx] = el)\r\n }\r\n value={confirmPin[idx]}\r\n onChangeText={(text: any) =>\r\n handleTextChange(text, idx, true)\r\n }\r\n onKeyPress={(e: any) =>\r\n handleKeyPress(e, idx, e, true)\r\n }\r\n />\r\n ))}\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpTimer }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-timer\"\r\n >\r\n {!pinIncorrect && <Text></Text>}\r\n {pinIncorrect && pinIncorrectText === \"\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpIncorrectText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n Please enter the correct pin\r\n </Text>\r\n )}\r\n {pinIncorrect && pinIncorrectText?.length > 0 && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpIncorrectText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n {pinIncorrectText}\r\n </Text>\r\n )}\r\n {!pinHide && (\r\n <TouchableOpacity\r\n style={{\r\n background: \"transparent\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n onPress={() => setPinHide(true)}\r\n >\r\n <Image\r\n style={{\r\n cursor: \"pointer\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n source={{ uri: imageAssets.pinShow }}\r\n />\r\n </TouchableOpacity>\r\n )}\r\n {pinHide && (\r\n <TouchableOpacity\r\n style={{\r\n background: \"transparent\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n onPress={() => setPinHide(false)}\r\n >\r\n <Image\r\n style={{\r\n cursor: \"pointer\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n source={{ uri: imageAssets.pinHide }}\r\n />\r\n </TouchableOpacity>\r\n )}\r\n </View>\r\n </View>\r\n )}\r\n </React.Fragment>\r\n )}\r\n </View>\r\n\r\n {!searchActive && <View style={{ height: 20 }}></View>}\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactFooter }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-footer\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactFooterFirstSection,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-footer-first-section\"\r\n >\r\n {!isPin && (\r\n <React.Fragment>\r\n {pinIncorrect && pinIncorrectText?.length > 0 && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlOtpIncorrectText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n {pinIncorrectText}\r\n </Text>\r\n )}\r\n {props.isExistingUser && (\r\n <TouchableOpacity\r\n id=\"verified-custd-mdl-otp-button\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButtonActive,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-button-active\"\r\n onPress={async (e: any) => {\r\n const credentialIdHashed = await requestPasskey();\r\n\r\n if (credentialIdHashed) {\r\n await handleVaultManagement(credentialIdHashed);\r\n }\r\n }}\r\n >\r\n <Text>Login With Passkey</Text>\r\n </TouchableOpacity>\r\n )}\r\n\r\n {!props.isExistingUser && (\r\n <TouchableOpacity\r\n id=\"verified-custd-mdl-otp-button\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButtonActive,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-button-active\"\r\n onPress={async (e: any) => {\r\n const credentialIdHashed = await createPasskey();\r\n if (credentialIdHashed) {\r\n await handleVaultManagement(credentialIdHashed);\r\n }\r\n }}\r\n >\r\n <Text>Create New Passkey</Text>\r\n </TouchableOpacity>\r\n )}\r\n </React.Fragment>\r\n )}\r\n {isPin && (\r\n <TouchableOpacity\r\n id=\"verified-custd-mdl-otp-button\"\r\n style={\r\n isReactNative && isConfirmActive()\r\n ? { ...styles.verifiedCustdMdlStartupButtonActive }\r\n : isReactNative && !isConfirmActive()\r\n ? { ...styles.verifiedCustdMdlStartupButton }\r\n : {}\r\n }\r\n className={\r\n isConfirmActive()\r\n ? \"verified-custd-mdl-startup-button-active\"\r\n : \"verified-custd-mdl-startup-button\"\r\n }\r\n onPress={async (e: any) => {\r\n await handleVaultManagement();\r\n }}\r\n >\r\n <Text>Proceed</Text>\r\n </TouchableOpacity>\r\n )}\r\n </View>\r\n </View>\r\n </View>\r\n )}\r\n\r\n {!showCustomSuccess && showInvitation && (\r\n <>\r\n {!showInvitationSuccess && (\r\n <View\r\n className=\"verified-custd-mdl-startup-language\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupLanguage,\r\n padding: 0,\r\n position: \"relative\",\r\n }\r\n : { padding: 0, position: \"relative\" }\r\n }\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContact }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact\"\r\n >\r\n <PageSlider\r\n platform={props.platform}\r\n sliderCount={[1, 2, 3]}\r\n currentSlider=\"1\"\r\n />\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactContent }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-content\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n <Text style={{ fontWeight: \"bold\" }}>\r\n {props.vaultData?.vaultId}\r\n </Text>{\" \"}\r\n has requested you to be a Co-Signer\r\n </Text>\r\n </View>\r\n </View>\r\n <Image\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlAddCosignerBodyIcon }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n source={{ uri: imageAssets.addCoSignerIcon1 }}\r\n />\r\n {!showRejectInvitation && (\r\n <ScrollView>\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlAddCosignerMoreBody }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitleCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title-cont\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitle,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title\"\r\n >\r\n What is a Co-Signer?\r\n </Text>\r\n </View>\r\n </View>\r\n <Text\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n }\r\n : { fontSize: 12, color: \"#5B5D6E\" }\r\n }\r\n >\r\n A Co-Signer is a person who has the right given by you\r\n to generate a new pin on your behalf incase you forget\r\n it.\r\n </Text>\r\n\r\n <View className=\"verified-custd-mdl-add-cosigner-body-text-cont\">\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-icon\"\r\n >\r\n <Image source={{ uri: imageAssets.pkicon }} />\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label\"\r\n >\r\n As a Co Signer you can help{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabelBold,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\"\r\n >\r\n reset PIN\r\n </Text>\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-icon\"\r\n >\r\n <Image\r\n source={{ uri: imageAssets.encryptedIcon }}\r\n />\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label\"\r\n >\r\n Don’t worry, they{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabelBold,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\"\r\n >\r\n will not get access\r\n </Text>{\" \"}\r\n to your account in any way.\r\n </Text>\r\n </View>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonsCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-buttons-cont\"\r\n >\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonNeut,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n onPress={() => setShowRejectInvitation(true)}\r\n >\r\n <Text>Reject</Text>\r\n </TouchableOpacity>\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonAction,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n onPress={async () => {\r\n await handleAcceptAndRejectInvitation(true);\r\n }}\r\n >\r\n <Text>Accept</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </ScrollView>\r\n )}\r\n\r\n {showRejectInvitation && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyContentOutter,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-content-outter\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyContent,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-content\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyHeader,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-header\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyTitle,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-title\"\r\n >\r\n Are you sure you want to reject this request?\r\n </Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyLabel,\r\n fontSize: 12,\r\n color: \"#5B5D6E\",\r\n }\r\n : { fontSize: 12, color: \"#5B5D6E\" }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-label\"\r\n >\r\n Once you reject to be a co-signer for{\" \"}\r\n <Text style={{ fontWeight: \"bold\" }}>\r\n {props.vaultData?.vaultId}\r\n </Text>\r\n , you will not be able to reset the PIN for them.\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonsCont,\r\n width: \"90%\",\r\n }\r\n : { width: \"90%\" }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-buttons-cont\"\r\n >\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonAction,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n onPress={async () => {\r\n await handleAcceptAndRejectInvitation(false);\r\n }}\r\n >\r\n <Text>Yes</Text>\r\n </TouchableOpacity>\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonAction,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n onPress={() => setShowRejectInvitation(false)}\r\n >\r\n <Text>No</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n </View>\r\n </View>\r\n )}\r\n </View>\r\n )}\r\n {showInvitationSuccess && (\r\n <Success\r\n platform={props.platform}\r\n messageTosend={{ type: \"closePopup\", key: \"\", value: \"\" }}\r\n customTextHeader=\"Successful\"\r\n customTextFooter={\r\n !showRejectInvitation\r\n ? `You have been added as a Co-Signer for ${props.vaultData?.vaultId}`\r\n : `You rejected Co-signer request from ${props.vaultData?.vaultId}`\r\n }\r\n />\r\n )}\r\n </>\r\n )}\r\n\r\n {showCustomSuccess && (\r\n <Success\r\n platform={props.platform}\r\n messageTosend={{ type: \"closePopup\", key: \"\", value: \"\" }}\r\n customTextHeader=\"Successful\"\r\n customTextFooter={\r\n customSuccessText?.length > 0\r\n ? customSuccessText\r\n : \"You have successfully logged in your account.\"\r\n }\r\n />\r\n )}\r\n </React.Fragment>\r\n )}\r\n\r\n {!fontsLoaded && <Text>Loading Module Fonts...</Text>}\r\n </ScrollView>\r\n );\r\n};\r\n\r\nexport default CreatePinPage;\r\n","import React, { useEffect } from \"react\";\r\nimport { imageAssets } from \"../utils/constants\";\r\n\r\nconst Success = (props: {\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n };\r\n setStep?: (step: string) => void;\r\n setShowDasboard?: (showDashboard: boolean) => void;\r\n stepToSet?: string;\r\n messageTosend?: { type: string; key?: string; value?: any };\r\n customTextHeader: string;\r\n customTextFooter: string;\r\n showButton?: boolean;\r\n showText?: boolean;\r\n buttonText?: string;\r\n buttonNeutText?: string;\r\n buttonFunc?: any;\r\n buttonNeutFunc?: any;\r\n action?: string;\r\n actionHeaderText?: string;\r\n actionFooterText?: string;\r\n timeoutTime?: number;\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n styles,\r\n EventEmitter,\r\n } = props.platform;\r\n useEffect(() => {\r\n let timeoutId: any;\r\n if (!props.showButton) {\r\n timeoutId = setTimeout(() => {\r\n if (props.messageTosend) {\r\n try {\r\n const windowObj = !isReactNative ? window : null;\r\n if (!isReactNative && chrome?.runtime?.sendMessage) {\r\n chrome.runtime.sendMessage(props.messageTosend, (res) => {\r\n if (res && props.action !== \"signRecovery\") {\r\n windowObj?.close();\r\n }\r\n });\r\n } else if (!isReactNative && !chrome?.runtime?.sendMessage) {\r\n const event = new CustomEvent(props.messageTosend?.type, {\r\n detail: {\r\n value: props.messageTosend?.value,\r\n },\r\n });\r\n windowObj?.dispatchEvent(event);\r\n } else if (isReactNative && EventEmitter) {\r\n const vaultEventEmitter = new EventEmitter();\r\n vaultEventEmitter.emit(props.messageTosend?.type, {\r\n value: props.messageTosend?.value,\r\n });\r\n }\r\n } catch (err) {\r\n if (process.env.REACT_APP_NODE_ENV !== \"production\") {\r\n console.error(\"error sending message: \", err);\r\n }\r\n }\r\n }\r\n\r\n if (props.setStep && props.stepToSet) {\r\n props.setStep(props.stepToSet);\r\n }\r\n }, props.timeoutTime ?? 3000);\r\n }\r\n\r\n return () => {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n }\r\n };\r\n }, []);\r\n\r\n const handleContinue = () => {\r\n props.setStep?.(\"6\");\r\n };\r\n\r\n const handleClosePopup = () => {\r\n if (!isReactNative && chrome.runtime) {\r\n chrome.runtime.sendMessage({\r\n type: \"VW_REQ\",\r\n params: { method: \"closePopup\" },\r\n });\r\n }\r\n };\r\n\r\n const handleShowDashboard = () => {\r\n props.setShowDasboard?.(true);\r\n };\r\n\r\n return (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlSuccessPopupContentContainer,\r\n alignContent: \"center\",\r\n justifyContent: \"center\",\r\n height: \"100%\",\r\n width: \"100%\",\r\n overflow: \"hidden\",\r\n padding: 0,\r\n }\r\n : {\r\n alignContent: \"center\",\r\n justifyContent: \"center\",\r\n height: \"100%\",\r\n width: \"100%\",\r\n overflow: \"hidden\",\r\n padding: 0,\r\n }\r\n }\r\n className=\"verified-custd-mdl-success-popup-content-container\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlSuccessPopupContent,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-success-popup-content\"\r\n >\r\n <Image\r\n style={{ width: \"90%\" }}\r\n source={{ uri: imageAssets.successIcon }}\r\n alt=\"Success Icon\"\r\n />\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlSuccessPopupContentText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-success-popup-content-text\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlSuccessPopupContentTextHeader }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-success-popup-content-text-header\"\r\n >\r\n {!props?.showButton\r\n ? props.customTextHeader\r\n : props.actionHeaderText}\r\n </Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlSuccessPopupContentTextFooter }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-success-popup-content-text-footer\"\r\n >\r\n {!props?.showButton\r\n ? props.customTextFooter\r\n : props.actionFooterText}\r\n </Text>\r\n </View>\r\n </View>\r\n\r\n {props.showButton && props.buttonText?.length > 0 && (\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupButtonActive, marginTop: 10 }\r\n : { marginTop: 10 }\r\n }\r\n onPress={() => {\r\n if (props.action === \"invitation\") {\r\n handleContinue();\r\n } else if (props.action === \"completeRecovery\") {\r\n handleShowDashboard();\r\n } else {\r\n props.buttonFunc?.();\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button-active\"\r\n >\r\n <Text style={{ fontSize: 14 }}>{props.buttonText}</Text>\r\n </TouchableOpacity>\r\n )}\r\n\r\n {props.showButton && props.buttonNeutText?.length > 0 && (\r\n <TouchableOpacity\r\n onPress={() => {\r\n if (props.action === \"invitation\") {\r\n handleClosePopup();\r\n } else {\r\n props.buttonNeutFunc?.();\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button-click\"\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupButtonClick, marginTop: 10 }\r\n : { marginTop: 10 }\r\n }\r\n >\r\n <Text style={{ fontSize: 14 }}>{props.buttonNeutText}</Text>\r\n </TouchableOpacity>\r\n )}\r\n </View>\r\n );\r\n};\r\n\r\nexport default Success;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { imageAssets, numberPositionsFmt } from \"../utils/constants\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport { completeVaultCreation } from \"../services/contracts\";\r\nimport PageSlider from \"../components/slider\";\r\nimport SearchBox from \"../components/search\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\nimport { loadAllGoogleFonts, loadAllGoogleFontsRN } from \"../utils/helpers\";\r\n\r\nconst AddCosignersPage = (props: {\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n rnPasskey: any;\r\n };\r\n fontsLoaded?: boolean;\r\n setStep: (step: string) => void;\r\n setIsLoading: (isLoading: boolean) => void;\r\n userNumberFmt: string;\r\n userEmail: string;\r\n selectedCountry: { name: string; area: string; flag: string };\r\n allCountries: any;\r\n defaultCountry?: {\r\n area: string;\r\n flag: string;\r\n name: string;\r\n };\r\n helperFunctions?: VerifiedCustodyHelpers;\r\n enablePhone?: boolean;\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n styles,\r\n } = props.platform;\r\n const [fontsLoaded, setFontsLoaded] = useState<boolean>(\r\n props.fontsLoaded || false\r\n );\r\n const [showLearnMore, setShowLearnMore] = useState<boolean>(false);\r\n const [learnMoreStep, setLearnMoreStep] = useState<string>(\"1\");\r\n const [cosignerStep, setCosignerStep] = useState<string>(\"1\");\r\n const [showAddMore, setShowAddMore] = useState<boolean>(false);\r\n const [addChannel, setAddChannel] = useState<string>(\"email\");\r\n const [coSignerNumber, setCoSignerNumber] = useState<string>(\"\");\r\n const [coSignerNumberFmt, setCoSignerNumberFmt] = useState<string>(\"\");\r\n const [coSignerEmail, setCoSignerEmail] = useState<string>(\"\");\r\n const [coSignerName, setCoSignerName] = useState<string>(\"\");\r\n const [userInput, setUserInput] = useState<string>(\"\");\r\n const [searchActive, setSearchActive] = useState<boolean>(false);\r\n const [selectedCountry, setSelectedCountry] = useState(\r\n props.defaultCountry || {\r\n area: \"1\",\r\n flag: imageAssets.usaFlag,\r\n name: \"United States\",\r\n }\r\n );\r\n const [coSigners, setCosigners] = useState([]);\r\n const [showSetRule, setShowSetRule] = useState<boolean>(false);\r\n const [requiredSigners, setRequiredSigners] = useState<number>(2);\r\n const [errorText, setErrorText] = useState<string>(\"\");\r\n\r\n const { pk, vaultData, vaultContract } = useVaultStore();\r\n\r\n useEffect(() => {\r\n const PreloadGoogleFonts = async () => {\r\n if (!isReactNative) {\r\n // Only load Google fonts on web\r\n const isFontsLoaded = loadAllGoogleFonts(document);\r\n setFontsLoaded(isFontsLoaded);\r\n } else {\r\n //load fonts with expo-font for react native.\r\n try {\r\n const _ = await loadAllGoogleFontsRN(Font);\r\n setFontsLoaded(true);\r\n } catch (err) {\r\n setFontsLoaded(false);\r\n }\r\n }\r\n };\r\n if (!props.fontsLoaded) {\r\n PreloadGoogleFonts();\r\n }\r\n }, []);\r\n\r\n const handleButtonDisplay = () => {\r\n // const button = document.getElementById(\"add-cosigner-button\");\r\n // if (button && coSigners?.length > 0) {\r\n // button.className = \"startup-button-active\";\r\n // } else {\r\n // button!.className = \"startup-button\";\r\n // }\r\n };\r\n\r\n const handleAddCoSigner = () => {\r\n if (addChannel === \"sms\" && coSignerNumber?.length === 0) {\r\n setErrorText(\"Invalid input, please check the phone number\");\r\n return;\r\n } else if (addChannel === \"sms\" && coSignerNumber?.length !== 10) {\r\n setErrorText(\"Invalid input, please check the phone number\");\r\n return;\r\n } else if (addChannel === \"email\" && coSignerEmail?.length === 0) {\r\n setErrorText(\"Invalid input, please check the email\");\r\n return;\r\n } else if (\r\n addChannel === \"email\" &&\r\n !/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(coSignerEmail)\r\n ) {\r\n setErrorText(\"Invalid input, please check the email\");\r\n return;\r\n } else if (\r\n coSigners?.find((sig) =>\r\n sig?.otpChannel === \"sms\"\r\n ? sig?.phoneArea?.toLowerCase() + sig?.number?.toLowerCase() ===\r\n selectedCountry.area?.toLowerCase() +\r\n coSignerNumberFmt?.toLowerCase()\r\n : sig?.email?.toLowerCase() === coSignerEmail?.toLowerCase()\r\n )\r\n ) {\r\n setErrorText(\r\n addChannel === \"sms\"\r\n ? \"Invalid input, phone number is already a co-signer\"\r\n : \"Invalid input, email is already a co-signer\"\r\n );\r\n return;\r\n } else if (\r\n addChannel === \"sms\" &&\r\n selectedCountry?.area?.toLowerCase() +\r\n coSignerNumberFmt?.toLowerCase() ===\r\n props.selectedCountry.area?.toLowerCase() +\r\n props.userNumberFmt?.toLowerCase()\r\n ) {\r\n setErrorText(\"Invalid input, phone number is creator's phone number\");\r\n return;\r\n } else if (\r\n addChannel === \"email\" &&\r\n coSignerEmail?.toLowerCase() === props.userEmail?.toLowerCase()\r\n ) {\r\n setErrorText(\"Invalid input, email is creator's email\");\r\n return;\r\n }\r\n setErrorText(\"\");\r\n let coSignerLength = coSigners?.length;\r\n setCosigners((cngs) => [\r\n {\r\n name: coSignerName,\r\n email: coSignerEmail,\r\n number: coSignerNumberFmt,\r\n phoneNumber: `+${selectedCountry?.area}${coSignerNumber}`,\r\n otpChannel: addChannel,\r\n phoneArea: selectedCountry?.area,\r\n position: cngs?.length + 1,\r\n vaultId:\r\n addChannel === \"sms\"\r\n ? `+${selectedCountry?.area}${coSignerNumber}`\r\n : coSignerEmail,\r\n },\r\n ...cngs,\r\n ]);\r\n setCoSignerEmail(\"\");\r\n setCoSignerName(\"\");\r\n setCoSignerNumber(\"\");\r\n setCoSignerNumberFmt(\"\");\r\n setUserInput(\"\");\r\n if (coSignerLength + 1 === 4) {\r\n setShowAddMore(false);\r\n }\r\n };\r\n\r\n const handleCompleteVault = async () => {\r\n const keyHolders = [\r\n {\r\n otpChannel: props?.userEmail?.length > 0 ? \"email\" : \"sms\",\r\n email: props?.userEmail,\r\n phoneNumber: `+${\r\n props?.selectedCountry?.area\r\n }${props?.userNumberFmt?.replace(\" \", \"\")}`,\r\n vaultId: vaultData?.vaultId,\r\n },\r\n ...coSigners,\r\n ];\r\n\r\n if (\r\n keyHolders?.length > 0 &&\r\n coSigners?.length > 0 &&\r\n requiredSigners &&\r\n vaultData?.vaultId &&\r\n vaultData?.hashedVaultId &&\r\n vaultData?.vaultPin &&\r\n vaultData?.hashedVaultPin &&\r\n vaultContract &&\r\n pk &&\r\n props.helperFunctions?.sendCoSignerInvitation &&\r\n props.helperFunctions?.sendCreatorConfirmation\r\n ) {\r\n props.setIsLoading(true);\r\n await completeVaultCreation(\r\n props.helperFunctions.sendCoSignerInvitation,\r\n props.helperFunctions.sendCreatorConfirmation,\r\n keyHolders,\r\n coSigners,\r\n props?.userEmail?.length > 0 ? \"email\" : \"sms\",\r\n requiredSigners,\r\n vaultData.vaultId,\r\n vaultData.hashedVaultId,\r\n vaultData.vaultPin,\r\n vaultData.hashedVaultPin,\r\n vaultContract,\r\n pk,\r\n vaultData?.rawId\r\n ).then((res) => {\r\n props.setIsLoading(false);\r\n if (res) {\r\n props.setStep(\"7\");\r\n }\r\n });\r\n }\r\n };\r\n\r\n return (\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupLanguage, padding: \"0\" }\r\n : { padding: \"0\" }\r\n }\r\n className=\"verified-custd-mdl-startup-language\"\r\n >\r\n {fontsLoaded && (\r\n <React.Fragment>\r\n {!showLearnMore && (\r\n <React.Fragment>\r\n {cosignerStep === \"1\" && (\r\n <React.Fragment>\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContact }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact\"\r\n >\r\n <PageSlider\r\n platform={props.platform}\r\n sliderCount={[1, 2, 3]}\r\n currentSlider=\"2\"\r\n />\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactContent }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-content\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n We require you to add at least another Co-Signer.\r\n </Text>\r\n </View>\r\n </View>\r\n\r\n <Image\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlAddCosignerBodyIcon }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n source={{ uri: imageAssets.addCoSignerIcon1 }}\r\n alt=\"\"\r\n />\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlAddCosignerBody }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-icon\"\r\n >\r\n <Image\r\n source={{ uri: imageAssets.pkicon }}\r\n alt=\"icon\"\r\n />\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label\"\r\n >\r\n This is a blockchain based platform where{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabelBold,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\"\r\n >\r\n we do not store password keys.\r\n </Text>\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-icon\"\r\n >\r\n <Image\r\n source={{ uri: imageAssets.encryptedIcon }}\r\n alt=\"icon\"\r\n />\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label\"\r\n >\r\n Don’t worry, the{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabelBold,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\"\r\n >\r\n Co-Signer does not get access\r\n </Text>{\" \"}\r\n to your account in any way.\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-icon\"\r\n >\r\n <Image\r\n source={{ uri: imageAssets.supervise }}\r\n alt=\"icon\"\r\n />\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label\"\r\n >\r\n You can{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabelBold,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\"\r\n >\r\n be your own Co-Signer\r\n </Text>{\" \"}\r\n by adding a different contact number or Email ID. to\r\n your account in any way.\r\n </Text>\r\n </View>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlAddCosignerButtonsCont }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-buttons-cont\"\r\n >\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonNeut,\r\n border: \"1px solid #0C0C0E\",\r\n color: \"#0C0C0E\",\r\n }\r\n : {\r\n border: \"1px solid #0C0C0E\",\r\n color: \"#0C0C0E\",\r\n }\r\n }\r\n onPress={() => {\r\n setLearnMoreStep(\"1\");\r\n setShowLearnMore(true);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n <Text>Learn More</Text>\r\n </TouchableOpacity>\r\n\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonAction,\r\n width: \"50%\",\r\n }\r\n : {\r\n width: \"50%\",\r\n }\r\n }\r\n onPress={() => {\r\n setCosignerStep(\"2\");\r\n setShowAddMore(false);\r\n setShowLearnMore(false);\r\n }}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n <Text>Add Co-Signer</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </React.Fragment>\r\n )}\r\n\r\n {cosignerStep === \"2\" && (\r\n <React.Fragment>\r\n {\" \"}\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContact }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact\"\r\n >\r\n <PageSlider\r\n platform={props.platform}\r\n sliderCount={[1, 2, 3]}\r\n currentSlider=\"2\"\r\n />\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupContactContent,\r\n gap: 16,\r\n }\r\n : { gap: 16 }\r\n }\r\n className=\"verified-custd-mdl-startup-contact-content\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupContactText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n Add your Co-Signers\r\n </Text>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlStartupOtpText }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-text\"\r\n >\r\n {!showSetRule && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerHeaderText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-header-text\"\r\n >\r\n Add a phone number/an Email ID of Co-Signer to send\r\n them a request.\r\n </Text>\r\n )}\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerHeaderInfoCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-header-info-cont\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerHeaderInfoText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-header-info-text\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerHeaderInfoTextBold,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-header-info-text-bold\"\r\n >\r\n NOTE:\r\n </Text>{\" \"}\r\n You can add yourself as a Co-Signer and further add\r\n more Co-Signers to your account.\r\n </Text>\r\n </View>\r\n </View>\r\n </View>\r\n </View>\r\n <View\r\n style={\r\n isReactNative\r\n ? { ...styles.verifiedCustdMdlAddCosignerStep2Body }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyHeader,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-header\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyHeaderFirstText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-header-first-text\"\r\n >\r\n Add Co-Signers\r\n </Text>\r\n\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyHeaderSecondText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-header-second-text\"\r\n >\r\n ({coSigners?.length + 1 < 5 ? coSigners?.length + 1 : 5}\r\n /5)\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContent,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeader,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeaderBody,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeaderLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-label\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeaderLabelText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-label-text\"\r\n >\r\n Creator\r\n </Text>\r\n </View>\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyHeader,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-header\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyTitle,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-title\"\r\n >\r\n You\r\n </Text>\r\n\r\n {props.userEmail?.length > 0 && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-label\"\r\n >\r\n {props.userEmail}\r\n </Text>\r\n )}\r\n {props.userEmail?.length === 0 && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-label\"\r\n >\r\n (+{props.selectedCountry.area}){\" \"}\r\n {props.userNumberFmt}\r\n </Text>\r\n )}\r\n </View>\r\n </View>\r\n\r\n {/* <TouchableOpacity className=\"verified-custd-mdl-a-c-2-b-content-header-body-button\">\r\n <Text>Add Self</Text>\r\n </TouchableOpacity> */}\r\n </View>\r\n </View>\r\n\r\n {!showSetRule &&\r\n coSigners\r\n .sort((a, b) => a?.position - b?.position)\r\n .map((cng, idx) => (\r\n <View\r\n key={idx}\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeaderBody,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeaderLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-label\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentHeaderLabelText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-header-label-text\"\r\n >\r\n {\r\n numberPositionsFmt[\r\n cng?.position\r\n ]?.split(\" \")[0]\r\n }\r\n <Text>\r\n <Text style={{ fontSize: 10 }}>\r\n {/* sup replacement */}\r\n {\r\n numberPositionsFmt[\r\n cng?.position\r\n ]?.split(\" \")[1]\r\n }\r\n </Text>\r\n </Text>{\" \"}\r\n Co-Signer\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyHeader,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-header\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyTitle,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-title\"\r\n >\r\n {cng?.name}\r\n </Text>\r\n\r\n {cng.otpChannel === \"email\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-label\"\r\n >\r\n {cng.email}\r\n </Text>\r\n )}\r\n {cng.otpChannel === \"sms\" && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-label\"\r\n >\r\n (+{cng?.phoneArea}) {cng.number}\r\n </Text>\r\n )}\r\n </View>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAC2BContentHeaderBodyHeaderIcons,\r\n flexDirection: \"row\",\r\n }\r\n : { flexDirection: \"row\" }\r\n }\r\n className=\"verified-custd-mdl-a-c-2-b-content-header-body-header-icons\"\r\n >\r\n {/* <TouchableOpacity\r\n style={{ background: \"transparent\" }}\r\n >\r\n <Image\r\n style={{\r\n cursor: \"pointer\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n source={{ uri: imageAssets.editBlack }}\r\n />\r\n </TouchableOpacity> */}\r\n\r\n <TouchableOpacity\r\n style={{\r\n background: \"transparent\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n onPress={() => {\r\n setCosigners((cngs) =>\r\n cngs\r\n ?.filter((sig) =>\r\n sig?.otpChannel === \"sms\"\r\n ? sig?.phoneArea?.toLowerCase() +\r\n sig?.number?.toLowerCase() !==\r\n cng?.phoneArea?.toLowerCase() +\r\n cng?.number?.toLowerCase()\r\n : sig?.email?.toLowerCase() !==\r\n cng?.email?.toLowerCase()\r\n )\r\n ?.map((nSig, newId) => {\r\n nSig.position = newId + 1;\r\n return nSig;\r\n })\r\n );\r\n handleButtonDisplay();\r\n }}\r\n >\r\n <Image\r\n style={{\r\n cursor: \"pointer\",\r\n width: 24,\r\n height: 24,\r\n }}\r\n source={{ uri: imageAssets.delete }}\r\n />\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n </View>\r\n ))}\r\n </View>\r\n\r\n {showSetRule && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyContentOutter,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-content-outter\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyContent,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-content\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyHeader,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-header\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyTitle,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-title\"\r\n >\r\n Specify the number of Co-Signers you need to\r\n sign off for an approval\r\n </Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-label\"\r\n >\r\n By default we need 2, you can add up to 5\r\n Co-Signers as minimum sign off needed for\r\n approval.\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooter,\r\n width: \"100%\",\r\n }\r\n : { width: \"100%\" }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterIndCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-ind-cont\"\r\n >\r\n {new Array(coSigners?.length + 1)\r\n .fill(\"1\")\r\n .map((_, idx) => (\r\n <View\r\n key={idx}\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-ind\"\r\n style={\r\n idx + 1 === requiredSigners &&\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterInd,\r\n }\r\n : idx + 1 === requiredSigners &&\r\n !isReactNative\r\n ? {}\r\n : isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterInd,\r\n height: 0,\r\n width: 0,\r\n overflow: \"hidden\",\r\n }\r\n : {\r\n height: 0,\r\n width: 0,\r\n overflow: \"hidden\",\r\n }\r\n }\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterIndTextCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-ind-text-cont\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterIndText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-ind-text\"\r\n >\r\n {String(idx + 1)}\r\n </Text>\r\n </View>\r\n <Image\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterIndIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-ind-icon\"\r\n source={{ uri: imageAssets.pointer }}\r\n />\r\n </View>\r\n ))}\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSliderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSlider,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider\"\r\n >\r\n <View\r\n style={\r\n isReactNative &&\r\n coSigners?.length === 1\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSliderInd,\r\n width: `${\r\n 100 / coSigners?.length\r\n }%`,\r\n }\r\n : !isReactNative &&\r\n coSigners?.length === 1\r\n ? {\r\n width: `${\r\n 100 / coSigners?.length\r\n }%`,\r\n }\r\n : isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSliderInd,\r\n width: `${\r\n 100 / coSigners?.length + 5\r\n }%`,\r\n }\r\n : {\r\n width: `calc(${\r\n 100 / coSigners?.length\r\n }% + 12px)`,\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-ind\"\r\n >\r\n <Image\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelSliderIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-slider-icon\"\r\n source={{\r\n uri: imageAssets.sliderDot,\r\n }}\r\n />\r\n </View>\r\n </View>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelTextCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-text-cont\"\r\n >\r\n {new Array(coSigners?.length + 1)\r\n .fill(\"1\")\r\n .map((_, idx) => (\r\n <TouchableOpacity\r\n style={{ background: \"transparent\" }}\r\n key={idx}\r\n onPress={() => {\r\n if (idx + 1 > 1) {\r\n setRequiredSigners(idx + 1);\r\n }\r\n }}\r\n >\r\n <Text\r\n style={\r\n isReactNative &&\r\n idx === coSigners?.length\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelText,\r\n paddingRight: 12,\r\n }\r\n : isReactNative && idx === 0\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyFooterLabelText,\r\n paddingLeft: 12,\r\n }\r\n : !isReactNative && idx === 0\r\n ? { paddingLeft: 12 }\r\n : !isReactNative &&\r\n idx === coSigners?.length\r\n ? { paddingRight: 12 }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-footer-label-text\"\r\n >\r\n {String(idx + 1)}\r\n </Text>\r\n </TouchableOpacity>\r\n ))}\r\n </View>\r\n </View>\r\n </View>\r\n\r\n <TouchableOpacity\r\n id=\"confirm-cosigner-button\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButtonActive,\r\n marginBottom: 10,\r\n width: \"100%\",\r\n }\r\n : { marginBottom: 10, width: \"100%\" }\r\n }\r\n className=\"verified-custd-mdl-startup-button-active\"\r\n onPress={async () => {\r\n await handleCompleteVault();\r\n }}\r\n >\r\n <Text>Confirm</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n </View>\r\n )}\r\n\r\n {showAddMore && coSigners?.length < 4 && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreBody,\r\n width: \"90%\",\r\n }\r\n : { width: \"90%\" }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreFirst,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-first\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreFirstHeader,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-first-header\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreFirstHeaderText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-first-header-text\"\r\n >\r\n Add Details\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreFirstFooter,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-first-footer\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreFirstFooterText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-first-footer-text\"\r\n >\r\n {\r\n numberPositionsFmt[\r\n coSigners?.length + 1\r\n ]?.split(\" \")[0]\r\n }\r\n <Text style={{ fontSize: 10 }}>\r\n {\r\n numberPositionsFmt[\r\n coSigners?.length + 1\r\n ]?.split(\" \")[1]\r\n }\r\n </Text>{\" \"}\r\n Co-Signer\r\n </Text>\r\n </View>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreSecond,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-second\"\r\n >\r\n <TextInput\r\n onChangeText={setCoSignerName}\r\n value={coSignerName}\r\n placeholder=\"Enter Co-signer name\"\r\n placeholderTextColor=\"#B6B7C3\"\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-second-input\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreSecondInput,\r\n }\r\n : {}\r\n }\r\n />\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreThird,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-third\"\r\n >\r\n {props.enablePhone && (\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreThirdCont,\r\n background: \"transparent\",\r\n width: 24,\r\n height: 24,\r\n }\r\n : { background: \"transparent\" }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-third-cont\"\r\n onPress={() => {\r\n setAddChannel(\"sms\");\r\n setErrorText(\"\");\r\n setCoSignerEmail(\"\");\r\n }}\r\n >\r\n <Image\r\n source={{\r\n uri:\r\n addChannel === \"sms\"\r\n ? imageAssets.selectClicked\r\n : imageAssets.select,\r\n }}\r\n style={{ width: 24, height: 24 }}\r\n />\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreThirdContText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-third-cont-text\"\r\n >\r\n Phone number\r\n </Text>\r\n </TouchableOpacity>\r\n )}\r\n\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreThirdCont,\r\n background: \"transparent\",\r\n width: 24,\r\n height: 24,\r\n }\r\n : { background: \"transparent\" }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-third-cont\"\r\n onPress={() => {\r\n setAddChannel(\"email\");\r\n setErrorText(\"\");\r\n setCoSignerNumber(\"\");\r\n setCoSignerNumberFmt(\"\");\r\n setUserInput(\"\");\r\n }}\r\n >\r\n <Image\r\n source={{\r\n uri:\r\n addChannel === \"email\"\r\n ? imageAssets.selectClicked\r\n : imageAssets.select,\r\n }}\r\n style={{ width: 24, height: 24 }}\r\n />\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreThirdContText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-third-cont-text\"\r\n >\r\n Email\r\n </Text>\r\n </TouchableOpacity>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreThird,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-third\"\r\n >\r\n {addChannel === \"sms\" && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactInput,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-input\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactContentContainer,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-content-container\"\r\n >\r\n <TouchableOpacity\r\n onPress={() =>\r\n setSearchActive(!searchActive)\r\n }\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactFirstSection,\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n }\r\n : {\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n }\r\n }\r\n className=\"verified-custd-mdl-st-contact-first-section\"\r\n >\r\n <Image\r\n source={{ uri: selectedCountry.flag }}\r\n style={{ width: 24, height: 16 }}\r\n alt=\"Country Flag\"\r\n />\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactSelectionText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-selection-text\"\r\n >\r\n + {selectedCountry.area}\r\n </Text>\r\n\r\n {searchActive ? (\r\n <Image\r\n source={{ uri: imageAssets.arrowUp }}\r\n style={{ width: 16, height: 16 }}\r\n alt=\"Dropdown Icon\"\r\n />\r\n ) : (\r\n <Image\r\n source={{ uri: imageAssets.arrowDown }}\r\n style={{ width: 16, height: 16 }}\r\n alt=\"Dropdown Icon\"\r\n />\r\n )}\r\n </TouchableOpacity>\r\n\r\n <TextInput\r\n onChangeText={(text) => {\r\n if (text === \"\") {\r\n setUserInput(userInput + \" \");\r\n } else {\r\n setUserInput(text);\r\n }\r\n const numericInput = text.replace(\r\n /\\D/g,\r\n \"\"\r\n );\r\n setCoSignerNumber(numericInput);\r\n let formattedNumber = \"\";\r\n for (\r\n let i = 0;\r\n i < numericInput.length;\r\n i++\r\n ) {\r\n formattedNumber += numericInput[i];\r\n if (\r\n (i + 1) % 5 === 0 &&\r\n i + 1 < numericInput.length\r\n ) {\r\n formattedNumber += \" \";\r\n }\r\n }\r\n setCoSignerNumberFmt(formattedNumber);\r\n setErrorText(\"\");\r\n }}\r\n onBlur={handleButtonDisplay}\r\n value={coSignerNumberFmt}\r\n placeholder=\"Enter phone number\"\r\n placeholderTextColor=\"#b6b7c3\"\r\n keyboardType=\"phone-pad\"\r\n className=\"verified-custd-mdl-st-contact-second-section\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactSecondSection,\r\n }\r\n : {}\r\n }\r\n />\r\n </View>\r\n\r\n {searchActive && (\r\n <SearchBox\r\n platform={props.platform}\r\n pageName=\"ftu/contact\"\r\n searchContent={props.allCountries}\r\n type=\"area-code\"\r\n handleButtonDisplay={handleButtonDisplay}\r\n setSelected={setSelectedCountry}\r\n selected={selectedCountry}\r\n searchActive={searchActive}\r\n setSearchActive={setSearchActive}\r\n contentMaxHeight={300}\r\n contentbottomMargin={300}\r\n />\r\n )}\r\n\r\n {errorText === \"\" &&\r\n coSignerNumber.length !== 10 &&\r\n userInput.length > 10 && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactInputError,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-input-error\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlInputErrorText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-input-error-text\"\r\n >\r\n Invalid input, please check the phone\r\n number\r\n </Text>\r\n </View>\r\n )}\r\n\r\n {errorText !== \"\" && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactInputError,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-input-error\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlInputErrorText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-input-error-text\"\r\n >\r\n {errorText}\r\n </Text>\r\n </View>\r\n )}\r\n </View>\r\n )}\r\n\r\n {addChannel === \"email\" && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactInput,\r\n width: \"100%\",\r\n }\r\n : { width: \"100%\" }\r\n }\r\n className=\"verified-custd-mdl-st-contact-input\"\r\n >\r\n <TextInput\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactSecondSection,\r\n width: \"100%\",\r\n }\r\n : { width: \"100%\" }\r\n }\r\n onChangeText={(text: string) => {\r\n setCoSignerEmail(text);\r\n setErrorText(\"\");\r\n }}\r\n onBlur={handleButtonDisplay}\r\n value={coSignerEmail}\r\n placeholder=\"Enter email\"\r\n placeholderTextColor=\"#b6b7c3\"\r\n keyboardType=\"email-address\"\r\n autoCapitalize=\"none\"\r\n className=\"verified-custd-mdl-st-contact-second-section\"\r\n />\r\n {errorText !== \"\" && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactInputError,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-input-error\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlInputErrorText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-input-error-text\"\r\n >\r\n {errorText}\r\n </Text>\r\n </View>\r\n )}\r\n </View>\r\n )}\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreButtons,\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n }\r\n : {\r\n flexDirection: \"row\",\r\n justifyContent: \"space-between\",\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-buttons\"\r\n >\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreButtonsNeut,\r\n flex: 1,\r\n marginRight: 8,\r\n border: \"1px solid #603FF4\",\r\n color: \"#603FF4\",\r\n }\r\n : {\r\n flex: 1,\r\n marginRight: 8,\r\n border:\r\n \"1px solid var(--secondary-electric-violet-600, #603FF4)\",\r\n color:\r\n \"var(--secondary-electric-violet-600, #603FF4)\",\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-buttons-neut\"\r\n onPress={() => setShowAddMore(false)}\r\n >\r\n <Text>Cancel</Text>\r\n </TouchableOpacity>\r\n\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2AddMoreButtonsAction,\r\n flex: 1,\r\n marginLeft: 8,\r\n }\r\n : { flex: 1, marginLeft: 8 }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-add-more-buttons-action\"\r\n onPress={() => {\r\n handleAddCoSigner();\r\n handleButtonDisplay();\r\n }}\r\n >\r\n <Text>Add</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n )}\r\n\r\n {!showAddMore &&\r\n !showSetRule &&\r\n coSigners?.length < 4 && (\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentFooter,\r\n background: \"transparent\",\r\n width: 20,\r\n height: 20,\r\n }\r\n : { background: \"transparent\" }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-footer\"\r\n onPress={() => setShowAddMore(true)}\r\n >\r\n <Image\r\n source={{ uri: imageAssets.addIcon }}\r\n style={{ width: 20, height: 20 }}\r\n />\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentFooterText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-footer-text\"\r\n >\r\n Add another Co-Signer\r\n </Text>\r\n </TouchableOpacity>\r\n )}\r\n\r\n {!showAddMore &&\r\n !showSetRule &&\r\n coSigners?.length === 4 && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentFooterDis,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-footer-dis\"\r\n >\r\n <Image\r\n source={{ uri: imageAssets.addDisableIcon }}\r\n style={{ width: 20, height: 20 }}\r\n />\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerStep2BodyContentFooterTextDis,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-step2-body-content-footer-text-dis\"\r\n >\r\n Add another Co-Signer\r\n </Text>\r\n </View>\r\n )}\r\n </View>\r\n </View>\r\n {!showSetRule && (\r\n <TouchableOpacity\r\n className={\r\n coSigners?.length > 0\r\n ? \"verified-custd-mdl-startup-button-active\"\r\n : \"verified-custd-mdl-startup-button\"\r\n }\r\n style={\r\n isReactNative && coSigners?.length > 0\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButtonActive,\r\n marginBottom: \"20px\",\r\n width: \"100%\",\r\n }\r\n : isReactNative && coSigners?.length === 0\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButton,\r\n marginBottom: \"20px\",\r\n width: \"100%\",\r\n }\r\n : isReactNative &&\r\n coSigners?.length > 0 &&\r\n !showAddMore &&\r\n coSigners?.length < 4\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButtonActive,\r\n marginTop: \"50px\",\r\n marginBottom: \"20px\",\r\n width: \"100%\",\r\n }\r\n : isReactNative &&\r\n coSigners?.length === 0 &&\r\n !showAddMore &&\r\n coSigners?.length < 4\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButton,\r\n marginTop: \"50px\",\r\n marginBottom: \"20px\",\r\n width: \"100%\",\r\n }\r\n : !showAddMore && coSigners?.length < 4\r\n ? {\r\n marginTop: \"50px\",\r\n marginBottom: \"20px\",\r\n width: \"100%\",\r\n }\r\n : { marginBottom: \"20px\", width: \"100%\" }\r\n }\r\n onPress={() => {\r\n if (coSigners?.length > 0) {\r\n setRequiredSigners(2);\r\n setShowSetRule(true);\r\n setShowAddMore(false);\r\n }\r\n }}\r\n >\r\n <Text style={styles.buttonText}>Proceed</Text>\r\n </TouchableOpacity>\r\n )}\r\n </React.Fragment>\r\n )}\r\n </React.Fragment>\r\n )}\r\n\r\n {showLearnMore && (\r\n <React.Fragment>\r\n {learnMoreStep === \"1\" && (\r\n <React.Fragment>\r\n <Image\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n source={{ uri: imageAssets.addCoSignerIcon2 }}\r\n alt=\"\"\r\n />\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreBody,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitleCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title-cont\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitle,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title\"\r\n >\r\n What is a Co-Signer?\r\n </Text>\r\n </View>\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n A Co-Signer is a person who has the right given by you to\r\n generate a new pin on your behalf incase you forget it.\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonsCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-buttons-cont\"\r\n >\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonNeut,\r\n border: \"1px solid #0C0C0E\",\r\n color: \"#0C0C0E\",\r\n }\r\n : {\r\n border: \"1px solid var(--Neutral-950, #0C0C0E)\",\r\n color: \"var(--Neutral-950, #0C0C0E)\",\r\n }\r\n }\r\n onPress={() => setShowLearnMore(false)}\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n <Text>Back</Text>\r\n </TouchableOpacity>\r\n\r\n <TouchableOpacity\r\n onPress={() => setLearnMoreStep(\"2\")}\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonAction,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n <Text>Next</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </React.Fragment>\r\n )}\r\n\r\n {learnMoreStep === \"2\" && (\r\n <React.Fragment>\r\n <Image\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyIcon,\r\n }\r\n : {}\r\n }\r\n source={{ uri: imageAssets.addCoSignerIcon3 }}\r\n alt=\"\"\r\n />\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreBody,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreHeaderont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitleCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title-cont\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitle,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title\"\r\n >\r\n Why is it needed?\r\n </Text>\r\n </View>\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n In blockchain application, it is impossible to reset a key\r\n if the PIN is forgotten you can login with the help of\r\n Co-Signer\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonsCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-buttons-cont\"\r\n >\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonNeut,\r\n border: \"1px solid var(--Neutral-950, #0C0C0E)\",\r\n color: \"var(--Neutral-950, #0C0C0E)\",\r\n }\r\n : {\r\n border: \"1px solid var(--Neutral-950, #0C0C0E)\",\r\n color: \"var(--Neutral-950, #0C0C0E)\",\r\n }\r\n }\r\n onPress={() => setLearnMoreStep(\"1\")}\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n <Text>Back</Text>\r\n </TouchableOpacity>\r\n\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonAction,\r\n border: \"1px solid #0C0C0E\",\r\n color: \"#0C0C0E\",\r\n }\r\n : {\r\n border: \"1px solid var(--Neutral-950, #0C0C0E)\",\r\n color: \"var(--Neutral-950, #0C0C0E)\",\r\n }\r\n }\r\n onPress={() => setLearnMoreStep(\"3\")}\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n <Text>Next</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </React.Fragment>\r\n )}\r\n\r\n {learnMoreStep === \"3\" && (\r\n <React.Fragment>\r\n <Image\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-icon\"\r\n source={{ uri: imageAssets.addCoSignerIcon4 }}\r\n alt=\"\"\r\n />\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreBody,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitleCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title-cont\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitle,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title\"\r\n >\r\n Who can be my Co-Signer?\r\n </Text>\r\n </View>\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n You can nominate your trusted acquaintances, family\r\n members and even yourself as a co-signer.\r\n </Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabelLink,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label-link\"\r\n >\r\n Learn More in Details\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonsCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-buttons-cont\"\r\n >\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonNeut,\r\n border: \"1px solid #0C0C0E\",\r\n color: \"#0C0C0E\",\r\n }\r\n : {\r\n border: \"1px solid var(--Neutral-950, #0C0C0E)\",\r\n color: \"var(--Neutral-950, #0C0C0E)\",\r\n }\r\n }\r\n onPress={() => setLearnMoreStep(\"2\")}\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n <Text>Back</Text>\r\n </TouchableOpacity>\r\n\r\n <TouchableOpacity\r\n onPress={() => {\r\n setCosignerStep(\"2\");\r\n setShowAddMore(false);\r\n setShowLearnMore(false);\r\n setLearnMoreStep(\"1\");\r\n }}\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonAction,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n <Text>Start</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </React.Fragment>\r\n )}\r\n </React.Fragment>\r\n )}\r\n </React.Fragment>\r\n )}\r\n\r\n {!fontsLoaded && <Text>Loading Module Fonts...</Text>}\r\n </View>\r\n );\r\n};\r\n\r\nexport default AddCosignersPage;\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport {\r\n hashTheBuffer,\r\n hashTheString,\r\n initWalletAndContract,\r\n loadAllGoogleFonts,\r\n loadAllGoogleFontsRN,\r\n publicKeyCredentialRequestOptions,\r\n resolveGlobalStyleUnit,\r\n} from \"../utils/helpers\";\r\nimport {\r\n defaultChainId,\r\n imageAssets,\r\n verifiedWebsiteUrls,\r\n} from \"../utils/constants\";\r\nimport {\r\n acceptOrRejectInvitation,\r\n initiateVaultRecovery,\r\n restoreVaultLogin,\r\n signVaultRecovery,\r\n validateVaultPin,\r\n} from \"../services/contracts\";\r\nimport PageSlider from \"../components/slider\";\r\nimport { LogoutOverlay } from \"../components/overlays\";\r\nimport Success from \"../components/success\";\r\nimport { VerifiedCustodyHelpers } from \"../utils/types\";\r\nimport { useVaultStore } from \"../services/store\";\r\nimport { ethers } from \"ethers\";\r\n\r\nconst EnterPinPage = (props: {\r\n platform: {\r\n View: any;\r\n Text: any;\r\n Image: any;\r\n ScrollView: any;\r\n StyleSheet: any;\r\n TextInput: any;\r\n TouchableOpacity: any;\r\n ActivityIndicator: any;\r\n Font: any;\r\n AsyncStorage: any;\r\n EventEmitter: any;\r\n isReactNative: boolean;\r\n styles: any;\r\n rnPasskey: any;\r\n };\r\n fontsLoaded?: boolean;\r\n setisOnboard: (isOnboard: boolean) => void;\r\n vaultId: string;\r\n hashedVaultId: string;\r\n encrptedPk: string;\r\n vaultAddress: string;\r\n regAddress?: string;\r\n vaultChannel: \"sms\" | \"email\";\r\n actionText?: string;\r\n title?: string;\r\n origin?: string;\r\n chainId?: number;\r\n newChainId?: number;\r\n action?: string;\r\n reqVaultData?: any;\r\n reqTxData?: any;\r\n signTxElement?: any;\r\n txToSign?: any;\r\n setIsLoading: (isLoading: boolean) => void;\r\n setShowDashboard?: (showDashboard: boolean) => void;\r\n setShowCompleteVault?: (showDashboard: boolean) => void;\r\n setUserEmail?: (userEmail: string) => void;\r\n setUserNumberFmt?: (userNumberFmt: string) => void;\r\n setSelectedCountry?: (selectedCountry: {\r\n area: string;\r\n flag: string;\r\n name: string;\r\n }) => void;\r\n helperFunctions?: VerifiedCustodyHelpers;\r\n enablePhone?: boolean;\r\n}) => {\r\n const {\r\n isReactNative,\r\n View,\r\n Text,\r\n Image,\r\n ScrollView,\r\n TextInput,\r\n TouchableOpacity,\r\n StyleSheet,\r\n Font,\r\n AsyncStorage,\r\n styles,\r\n rnPasskey,\r\n } = props.platform;\r\n const [fontsLoaded, setFontsLoaded] = useState(props.fontsLoaded || false);\r\n const [pinIncorrect, setPinIncorrect] = useState(false);\r\n const [pinHide, setPinHide] = useState(true); //hide pin by default\r\n const [searchActive, setSearchActive] = useState(false);\r\n const [showSuccess, setShowSuccess] = useState(false);\r\n const [vaultData, _setVaultData] = useState(null);\r\n const [vaultDataRes, setVaultDataRes] = useState(null);\r\n const [chainId, _setChainId] = useState(props.newChainId || defaultChainId);\r\n const [showChains, setShowChains] = useState(false);\r\n const [showInvitation, setShowInvitation] = useState(false);\r\n const [showInvitationSuccess, setShowInvitationSuccess] = useState(false);\r\n const [showRejectInvitation, setShowRejectInvitation] = useState(false);\r\n const [isAccepted, setIsAccepted] = useState(false);\r\n const [pinIncorrectText, setPinIncorrectText] = useState(\"\");\r\n const [showTx, setShowTx] = useState(false);\r\n const [newTx, setNewTx] = useState({});\r\n const [pin, setPin] = useState([\"\", \"\", \"\", \"\"]);\r\n const inputsRef = useRef<Array<any>>([]);\r\n const [isPin, setIsPin] = useState(false);\r\n\r\n const {\r\n setChainId,\r\n setAddress,\r\n setPk,\r\n setProvider,\r\n setSigner,\r\n setVaultContract,\r\n setVaultData,\r\n } = useVaultStore();\r\n\r\n useEffect(() => {\r\n const PreloadGoogleFonts = async () => {\r\n if (!isReactNative) {\r\n // Only load Google fonts on web\r\n const isFontsLoaded = loadAllGoogleFonts(document);\r\n setFontsLoaded(isFontsLoaded);\r\n } else if (Font) {\r\n //load fonts with expo-font for react native.\r\n await loadAllGoogleFontsRN(Font);\r\n setFontsLoaded(true);\r\n } else {\r\n setFontsLoaded(true);\r\n }\r\n };\r\n if (!props.fontsLoaded) {\r\n PreloadGoogleFonts();\r\n }\r\n }, []);\r\n\r\n const handleTextChange = (text: string, idx: number) => {\r\n if (text.length > 1) {\r\n // Manually capture Paste\r\n const paste = text.replace(/\\D/g, \"\");\r\n const newPin = [...pin];\r\n let pasteIndex = 0;\r\n\r\n for (let i = idx; i < pin.length && pasteIndex < paste.length; i++) {\r\n newPin[i] = paste[pasteIndex];\r\n pasteIndex++;\r\n }\r\n setPin(newPin);\r\n\r\n // Focus next empty input if any\r\n const nextIndex = idx + paste.length;\r\n if (nextIndex < pin.length && inputsRef.current[nextIndex]) {\r\n inputsRef.current[nextIndex].focus();\r\n }\r\n setPinIncorrect(false);\r\n } else {\r\n // Normal input\r\n const clean = text.replace(/\\D/g, \"\");\r\n const newPin = [...pin];\r\n newPin[idx] = clean;\r\n setPin(newPin);\r\n\r\n // Move focus to next input if available\r\n if (clean && inputsRef.current[idx + 1]) {\r\n inputsRef.current[idx + 1].focus();\r\n }\r\n setPinIncorrect(false);\r\n }\r\n };\r\n\r\n const handleKeyPress = (_: any, idx: number, e: any) => {\r\n const key = e.nativeEvent.key;\r\n\r\n if (\r\n key === \"Backspace\" &&\r\n !pin[idx] &&\r\n idx > 0 &&\r\n inputsRef.current[idx - 1]\r\n ) {\r\n inputsRef.current[idx - 1].focus();\r\n }\r\n };\r\n\r\n const isFilled = pin.every((d) => d.length > 0);\r\n\r\n const handleVerifyPin = async (pinToUse?: {\r\n pinString: string;\r\n hashed: string;\r\n rawId: any;\r\n }) => {\r\n if (!props.helperFunctions) {\r\n setPinIncorrectText(\r\n \"No Helper Functions. Please include all helper functions in the EnterPinPage props.\"\r\n );\r\n setPinIncorrect(true);\r\n } else {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n\r\n if (\r\n (isPin && isFilled && props.hashedVaultId && props.encrptedPk) ||\r\n (!isPin && props.hashedVaultId && props.encrptedPk && pinToUse)\r\n ) {\r\n props.setIsLoading(true);\r\n const fullOtp = pinToUse?.pinString\r\n ? pinToUse?.pinString\r\n : pin.join(\"\");\r\n await validateVaultPin(\r\n props.vaultId,\r\n props.hashedVaultId,\r\n fullOtp,\r\n pinToUse?.hashed ? pinToUse?.hashed : hashTheString(fullOtp),\r\n props.encrptedPk,\r\n props.vaultAddress,\r\n props.vaultChannel,\r\n Number(chainId),\r\n verifiedWebsiteUrls?.includes(props.origin?.toLowerCase()),\r\n null,\r\n pinToUse?.rawId\r\n ).then(async (res) => {\r\n if (res && !res?.inCompleteVault) {\r\n props.setIsLoading(false);\r\n _setVaultData(res);\r\n setVaultDataRes(\r\n res?.pk && props.action !== \"eth_requestAccounts\"\r\n ? {\r\n address: res.address,\r\n channel: res.channel,\r\n chainId: res.chainId,\r\n pk: res?.pk,\r\n }\r\n : {\r\n address: props.regAddress,\r\n channel: res.channel,\r\n chainId: res.chainId,\r\n }\r\n );\r\n\r\n if (\r\n props.action === \"getPk\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() ===\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n props.setIsLoading(true);\r\n await initiateVaultRecovery(\r\n props.helperFunctions.sendCreatorInitiation,\r\n props.hashedVaultId,\r\n pinToUse?.hashed ? pinToUse?.hashed : hashTheString(fullOtp),\r\n props.vaultId,\r\n fullOtp,\r\n props.encrptedPk,\r\n props.vaultChannel,\r\n Number(chainId),\r\n pinToUse?.rawId\r\n ).then(async (res) => {\r\n props.setIsLoading(false);\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.removeItem(\"myVault\");\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.removeItem(\"myVault\");\r\n }\r\n if (res) {\r\n setShowSuccess(true);\r\n } else {\r\n setPinIncorrectText(\r\n `Account recovery failed. Verify you don't have pending account recovery process and Try again later`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n });\r\n } else if (props.action === \"signRecovery\") {\r\n props.setIsLoading(true);\r\n await signVaultRecovery(\r\n props.helperFunctions.sendCreatorSigned,\r\n props.helperFunctions.sendCreatorCompleted,\r\n props.hashedVaultId,\r\n pinToUse?.hashed ? pinToUse?.hashed : hashTheString(fullOtp),\r\n props.vaultId,\r\n fullOtp,\r\n props.encrptedPk,\r\n props.reqVaultData?.vaultId,\r\n props.reqVaultData?.hashedVaultId,\r\n props.reqVaultData?.hashedVaultPin,\r\n props.reqTxData?.id,\r\n Number(chainId),\r\n pinToUse?.rawId\r\n ).then(async (res) => {\r\n props.setIsLoading(false);\r\n if (\r\n !isReactNative &&\r\n !props.reqTxData?.newUser &&\r\n chrome?.storage?.local &&\r\n !props.vaultAddress\r\n ) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n } else if (\r\n !isReactNative &&\r\n !props.reqTxData?.newUser &&\r\n !chrome?.storage?.local &&\r\n !props.vaultAddress &&\r\n localStorage\r\n ) {\r\n localStorage.removeItem(\"myVault\");\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.removeItem(\"myVault\");\r\n }\r\n if (res) {\r\n setShowSuccess(true);\r\n } else {\r\n setPinIncorrectText(\r\n `Error while signing transaction; it's either you are not a valid co-signer or you had signed this particular transaction before. Verify and try again later.`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n });\r\n } else if (\r\n props.action === \"completeRecovery\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() ===\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n props.setIsLoading(true);\r\n await restoreVaultLogin(\r\n isReactNative,\r\n AsyncStorage,\r\n props.hashedVaultId,\r\n pinToUse?.hashed ? pinToUse?.hashed : hashTheString(fullOtp),\r\n props.vaultId,\r\n fullOtp,\r\n props.encrptedPk,\r\n props.reqTxData?.id,\r\n props.vaultChannel,\r\n Number(chainId),\r\n pinToUse?.rawId\r\n ).then(async (res) => {\r\n props.setIsLoading(false);\r\n if (res) {\r\n setShowSuccess(true);\r\n } else {\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.removeItem(\"myVault\");\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.removeItem(\"myVault\");\r\n }\r\n setPinIncorrectText(\r\n `Error while restoring login access. Verify all required co-signers had signed our account recovery and try again later.`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n });\r\n } else if (\r\n props.action === \"eth_sendTransaction\" &&\r\n props.encrptedPk?.length > 0 &&\r\n res?.pin?.length > 0 &&\r\n props.signTxElement\r\n ) {\r\n setNewTx({\r\n chainId,\r\n ky: isPin ? ethers.encodeBytes32String(res?.pin) : \"\",\r\n rawId: isPin ? \"\" : pinToUse?.rawId,\r\n ...props.txToSign, //overwrite chainId if exist\r\n });\r\n setShowInvitation(false);\r\n setShowTx(true);\r\n } else if (\r\n props.action === \"invitation\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() !==\r\n props.vaultId?.toLowerCase() &&\r\n props.reqVaultData?.coSignerId?.toLowerCase() ===\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n setShowInvitation(true);\r\n } else if (\r\n props.action === \"invitation\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() ===\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n setPinIncorrectText(\r\n `You cannot accept your own Co-Signer invitation. please logout and login to: ${props.reqVaultData?.coSignerId} account`\r\n );\r\n setPinIncorrect(true);\r\n } else if (\r\n props.action === \"invitation\" &&\r\n props.reqVaultData?.coSignerId?.toLowerCase() !==\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n setPinIncorrectText(\r\n `You cannot accept this Co-Signer invitation. please logout and login to: ${props.reqVaultData?.coSignerId} account`\r\n );\r\n setPinIncorrect(true);\r\n } else if (\r\n props.action === \"getPk\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() !==\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.removeItem(\"myVault\");\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.removeItem(\"myVault\");\r\n }\r\n setPinIncorrectText(\r\n `You are not authorized to fetch account details. please logout and login to: ${props.reqVaultData?.vaultId} account`\r\n );\r\n setPinIncorrect(true);\r\n } else if (\r\n props.action === \"completeRecovery\" &&\r\n props.reqVaultData?.vaultId?.toLowerCase() !==\r\n props.vaultId?.toLowerCase()\r\n ) {\r\n if (!isReactNative && chrome?.storage?.local) {\r\n await chrome.storage.local.remove(\"myVault\");\r\n } else if (\r\n !isReactNative &&\r\n !chrome?.storage?.local &&\r\n localStorage\r\n ) {\r\n localStorage.removeItem(\"myVault\");\r\n } else if (isReactNative && AsyncStorage) {\r\n await AsyncStorage.removeItem(\"myVault\");\r\n }\r\n setPinIncorrectText(\r\n `You are not authorized to restore login access for this account. please logout and login to: ${props.reqVaultData?.vaultId} account`\r\n );\r\n setPinIncorrect(true);\r\n } else if (\r\n (props.action === \"connect_wallet\" && !props?.vaultAddress) ||\r\n (props.action === \"eth_requestAccounts\" && !props?.vaultAddress)\r\n ) {\r\n setPinIncorrectText(\r\n `Incomplete account details received. This may be due to incomplete/unexpected error from last login. Please logout and login back to recover account details.`\r\n );\r\n setPinIncorrect(true);\r\n } else if (props.action === \"\" && props.vaultAddress) {\r\n props.setShowDashboard(true);\r\n } else if (props.action === \"\" && !props.vaultAddress) {\r\n setPinIncorrectText(\r\n \"Incomplete account login detected. Logout and try again later\"\r\n );\r\n setPinIncorrect(true);\r\n } else {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n setShowSuccess(true);\r\n }\r\n } else if (res && res?.inCompleteVault && res?.pk) {\r\n const walletAndContractDetails = await initWalletAndContract(\r\n Number(chainId),\r\n res?.pk\r\n );\r\n setChainId(walletAndContractDetails.chainId);\r\n setAddress(walletAndContractDetails.address);\r\n setPk(walletAndContractDetails.pk);\r\n setProvider(walletAndContractDetails.provider);\r\n setSigner(walletAndContractDetails.signer);\r\n setVaultContract(walletAndContractDetails.vaultContract);\r\n setVaultData({\r\n vaultId: res?.vaultId,\r\n hashedVaultId: res?.hashedVaultId,\r\n vaultPin: res?.pin,\r\n hashedVaultPin: isPin\r\n ? hashTheString(res?.pin)\r\n : hashTheBuffer(res?.rawId),\r\n vaultContract: walletAndContractDetails.vaultContract,\r\n rawId: res?.rawId,\r\n });\r\n if (res?.channel?.toLowerCase() === \"sms\") {\r\n const areaCode = res?.vaultId?.replace(\r\n res?.vaultId?.slice(-10),\r\n \"\"\r\n );\r\n const formattedNumber =\r\n res?.vaultId?.slice(-10)?.slice(0, 5) +\r\n \" \" +\r\n res?.vaultId?.slice(-10)?.slice(5);\r\n props.setSelectedCountry({\r\n area: areaCode?.replace(\"+\", \"\"),\r\n name: \"\",\r\n flag: \"\",\r\n });\r\n\r\n props.setUserNumberFmt(formattedNumber);\r\n props.setUserEmail(\"\");\r\n } else {\r\n props.setUserEmail(res?.vaultId);\r\n props.setUserNumberFmt(\"\");\r\n }\r\n props.setIsLoading(false);\r\n props.setShowCompleteVault(true);\r\n props.setShowDashboard(false);\r\n } else {\r\n setPinIncorrectText(\r\n isPin\r\n ? \"\"\r\n : `Incorrect Passkey. please chose the correct existing passkey for account: ${props.vaultId}`\r\n );\r\n setPinIncorrect(true);\r\n props.setIsLoading(false);\r\n }\r\n });\r\n } else {\r\n if (!isPin && !pinToUse) {\r\n setPinIncorrectText(\r\n \"Unexpected error with selected passkey. Try again later\"\r\n );\r\n setPinIncorrect(true);\r\n }\r\n\r\n if (isPin && !isFilled) {\r\n setPinIncorrectText(\"Input your 4-Digits PIN to login.\");\r\n setPinIncorrect(true);\r\n }\r\n }\r\n }\r\n };\r\n\r\n const handleAcceptAndRejectInvitation = async (accepted: boolean) => {\r\n const vaultId = props.vaultId;\r\n if (\r\n vaultData?.pin?.length > 0 &&\r\n vaultData?.pk?.length > 0 &&\r\n props?.reqVaultData?.hashedVaultId &&\r\n props.reqVaultData?.hashedVaultPin &&\r\n vaultId &&\r\n props.helperFunctions?.sendCreatorAcceptance &&\r\n props.helperFunctions?.sendCreatorRejection\r\n ) {\r\n props.setIsLoading(true);\r\n const vaultPin = vaultData.pin;\r\n const hashedVaultId = hashTheString(vaultId);\r\n const hashedVaultPin = isPin\r\n ? hashTheString(vaultPin)\r\n : hashTheBuffer(vaultData.rawId);\r\n await acceptOrRejectInvitation(\r\n props.helperFunctions.sendCreatorAcceptance,\r\n props.helperFunctions.sendCreatorRejection,\r\n props.vaultChannel,\r\n hashedVaultId,\r\n hashedVaultPin,\r\n props?.reqVaultData?.hashedVaultId,\r\n props.reqVaultData?.hashedVaultPin,\r\n props?.reqVaultData?.vaultId,\r\n vaultId,\r\n accepted,\r\n null,\r\n vaultData.pk,\r\n Number(chainId)\r\n ).then((res) => {\r\n props.setIsLoading(false);\r\n if (res) {\r\n setIsAccepted(accepted);\r\n setShowInvitationSuccess(true);\r\n }\r\n });\r\n }\r\n };\r\n\r\n const requestPasskey = async () => {\r\n setPinIncorrectText(\"\");\r\n setPinIncorrect(false);\r\n try {\r\n const credential: any = await navigator.credentials.get({\r\n publicKey: publicKeyCredentialRequestOptions(),\r\n });\r\n const hashedId = hashTheBuffer(credential?.rawId);\r\n return {\r\n pinString: credential?.id,\r\n hashed: hashedId,\r\n rawId: credential?.rawId,\r\n };\r\n } catch (err) {\r\n setPinIncorrectText(\r\n `Passkey authentication failed: ${err?.message?.replace(\r\n \"See: https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations-client.\",\r\n \"\"\r\n )} Try again later`\r\n );\r\n setPinIncorrect(true);\r\n }\r\n };\r\n\r\n return (\r\n <React.Fragment>\r\n {fontsLoaded && !showInvitation && !showTx && (\r\n <React.Fragment>\r\n {!showSuccess && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupLanguage,\r\n padding: \"20px\",\r\n }\r\n : { padding: \"20px\" }\r\n }\r\n className=\"verified-custd-mdl-startup-language\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupContact,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact\"\r\n >\r\n <PageSlider\r\n platform={props.platform}\r\n sliderCount={[1]}\r\n currentSlider=\"0\"\r\n />\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupContactContent,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-content\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupContactContentHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-content-heder-cont\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupContactText,\r\n alignSelf: \"center\",\r\n }\r\n : { alignSelf: \"center\" }\r\n }\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n {isPin ? \"Enter PIN\" : \"Sign-in with Existing Passkey\"}\r\n </Text>\r\n </View>\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupOtpText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-text\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupOtpHeaderText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-header-text\"\r\n >\r\n Welcome back, please login using{\" \"}\r\n <Text style={{ color: \"#0C0C0E\" }}>\r\n {isPin ? \"existing 4-Digits PIN\" : \"existing Passkey\"}\r\n </Text>{\" \"}\r\n for your{\" \"}\r\n <Text style={{ color: \"#0C0C0E\" }}>{props.vaultId}</Text>{\" \"}\r\n account.\r\n </Text>\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupOtpFooter,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-footer\"\r\n >\r\n {props.actionText && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupOtpFooterText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-otp-footer-text\"\r\n >\r\n {`To ${props.actionText} from origin: ${\r\n props.origin || props.title\r\n }`}\r\n </Text>\r\n )}\r\n </View>\r\n </View>\r\n </View>\r\n\r\n {isPin && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpInputContainer,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-input-container\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpInputGroup,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-input-group\"\r\n >\r\n {pin.map((_, idx) => (\r\n <TextInput\r\n key={idx}\r\n ref={(el: any) => (inputsRef.current[idx] = el)}\r\n className={\r\n pinIncorrect\r\n ? \"verified-custd-mdl-otp-input-red\"\r\n : \"verified-custd-mdl-otp-input\"\r\n }\r\n style={\r\n isReactNative && pinIncorrect\r\n ? {\r\n ...styles.verifiedCustdMdlOtpInputRed,\r\n }\r\n : isReactNative && !pinIncorrect\r\n ? { ...styles.verifiedCustdMdlOtpInput }\r\n : {}\r\n }\r\n secureTextEntry={pinHide}\r\n maxLength={1}\r\n value={pin[idx]}\r\n onChangeText={(text: any) =>\r\n handleTextChange(text, idx)\r\n }\r\n onKeyPress={(e: any) => handleKeyPress(e, idx, e)}\r\n keyboardType=\"number-pad\"\r\n id={`verified-custd-mdl-otp-input-${idx}`}\r\n />\r\n ))}\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpTimer,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-timer\"\r\n >\r\n {pinIncorrect && !pinIncorrectText && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpIncorrectText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n Please enter the correct pin\r\n </Text>\r\n )}\r\n {pinIncorrect && pinIncorrectText && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpIncorrectText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n {pinIncorrectText}\r\n </Text>\r\n )}\r\n {!pinIncorrect && <Text></Text>}\r\n\r\n {!pinHide ? (\r\n <TouchableOpacity\r\n onPress={() => setPinHide(true)}\r\n style={{ backgroundColor: \"transparent\" }}\r\n >\r\n <Image\r\n style={{ width: 24, height: 24 }}\r\n source={{ uri: imageAssets.pinShow }}\r\n />\r\n </TouchableOpacity>\r\n ) : (\r\n <TouchableOpacity\r\n onPress={() => setPinHide(false)}\r\n style={{ backgroundColor: \"transparent\" }}\r\n >\r\n <Image\r\n style={{ width: 24, height: 24 }}\r\n source={{ uri: imageAssets.pinHide }}\r\n />\r\n </TouchableOpacity>\r\n )}\r\n </View>\r\n </View>\r\n )}\r\n\r\n {!isPin && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreBody,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-header-cont\"\r\n >\r\n <View className=\"verified-custd-mdl-add-cosigner-more-title-cont\">\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitle,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"14px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"14px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title\"\r\n >\r\n What is a passkey?\r\n </Text>\r\n </View>\r\n </View>\r\n\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n Your passkey is stored in your cloud account such as Apple\r\n iCloud Keychain, Google Password Manager, or Microsoft\r\n Account and synchronized across all devices.\r\n </Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n In the event of device loss, as long as you have access to\r\n your cloud account, you can recover your passkey.\r\n </Text>\r\n\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n : {\r\n fontSize: resolveGlobalStyleUnit(\r\n isReactNative,\r\n \"12px\"\r\n ),\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n Click \"Login With Passkey\" button, passkey popup will\r\n appears to login using your existing passkey.\r\n </Text>\r\n <TouchableOpacity\r\n style={{ background: \"transparent\" }}\r\n onPress={() => {\r\n if (!isReactNative) {\r\n window?.open(\r\n \"https://blog.google/inside-google/googlers/ask-a-techspert/how-passkeys-work\",\r\n \"_blank\"\r\n );\r\n }\r\n }}\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabelLink,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label-link\"\r\n >\r\n Learn More about Passkey\r\n </Text>\r\n </TouchableOpacity>\r\n </View>\r\n )}\r\n </View>\r\n\r\n {!searchActive && <View style={{ height: 20 }} />}\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupContactFooter,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-footer\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStContactFooterFirstSection,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-st-contact-footer-first-section\"\r\n >\r\n <LogoutOverlay\r\n platform={props.platform}\r\n setisOnboard={props.setisOnboard}\r\n setIsLoading={props.setIsLoading}\r\n />\r\n {isPin && (\r\n <TouchableOpacity\r\n onPress={async () => await handleVerifyPin()}\r\n style={\r\n isReactNative && isFilled && !pinIncorrect\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButtonActive,\r\n }\r\n : isReactNative && isFilled && pinIncorrect\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButton,\r\n }\r\n : isReactNative && !isFilled && !pinIncorrect\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButton,\r\n }\r\n : isReactNative && !isFilled && pinIncorrect\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButton,\r\n }\r\n : {}\r\n }\r\n className={\r\n isFilled && !pinIncorrect\r\n ? \"verified-custd-mdl-startup-button-active\"\r\n : \"verified-custd-mdl-startup-button\"\r\n }\r\n >\r\n <Text>Proceed</Text>\r\n </TouchableOpacity>\r\n )}\r\n {!isPin && (\r\n <React.Fragment>\r\n {pinIncorrect && pinIncorrectText?.length > 0 && (\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlOtpIncorrectText,\r\n marginTop: \"3px\",\r\n width: \"100%\",\r\n }\r\n : { marginTop: \"3px\", width: \"100%\" }\r\n }\r\n className=\"verified-custd-mdl-otp-incorrect-text\"\r\n >\r\n {pinIncorrectText}\r\n </Text>\r\n )}\r\n <TouchableOpacity\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupButtonActive,\r\n marginBottom: \"20px\",\r\n }\r\n : { marginBottom: \"20px\" }\r\n }\r\n onPress={async () => {\r\n const pinToUse = await requestPasskey();\r\n if (pinToUse) {\r\n await handleVerifyPin(pinToUse);\r\n }\r\n }}\r\n className=\"verified-custd-mdl-startup-button-active\"\r\n >\r\n <Text>Login With Passkey</Text>\r\n </TouchableOpacity>\r\n </React.Fragment>\r\n )}\r\n </View>\r\n </View>\r\n </View>\r\n )}\r\n\r\n {showSuccess && (\r\n <Success\r\n platform={props.platform}\r\n messageTosend={\r\n props.action === \"getPk\" ||\r\n props.action === \"signRecovery\" ||\r\n props.action === \"completeRecovery\"\r\n ? { type: \"closePopup\", key: \"\", value: \"\" }\r\n : {\r\n type: \"vaultData\",\r\n key: \"vaultData\",\r\n value: vaultDataRes,\r\n }\r\n }\r\n customTextHeader=\"Successful\"\r\n customTextFooter={\r\n props.action === \"getPk\" && props.vaultChannel === \"email\"\r\n ? \"You have successfully initiated your account recovery process check your email for further instructions\"\r\n : props.action === \"getPk\" && props.vaultChannel === \"sms\"\r\n ? \"You have successfully initiated your account recovery process check your phone number messages for further instructions\"\r\n : props.action === \"signRecovery\"\r\n ? `Congratulations! You have successfully signed account recovery transaction for user: ${props.reqVaultData?.vaultId}`\r\n : props.action === \"completeRecovery\"\r\n ? `Congratulations! You have successfully restored login access for your ${props?.vaultId} account`\r\n : `Congratulations! You have successfully ${\r\n props.actionText || \"logged in to your account.\"\r\n }`\r\n }\r\n showButton={props.action === \"completeRecovery\"}\r\n buttonText={\r\n props.action === \"completeRecovery\" ? \"Go To Dashboard\" : \"\"\r\n }\r\n setShowDasboard={props.setShowDashboard}\r\n actionFooterText={\r\n props.action === \"completeRecovery\"\r\n ? `Congratulations! You have successfully restored login access for your ${props?.vaultId} account`\r\n : \"\"\r\n }\r\n />\r\n )}\r\n </React.Fragment>\r\n )}\r\n\r\n {fontsLoaded && showInvitation && !showTx && (\r\n <React.Fragment>\r\n {!showInvitationSuccess && (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupLanguage,\r\n padding: \"20px\",\r\n position: \"relative\",\r\n }\r\n : { padding: \"20px\", position: \"relative\" }\r\n }\r\n className=\"verified-custd-mdl-startup-language\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupContact,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact\"\r\n >\r\n <PageSlider\r\n platform={props.platform}\r\n sliderCount={[1, 2, 3]}\r\n currentSlider=\"1\"\r\n />\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupContactContent,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-content\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlStartupContactText,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-startup-contact-text\"\r\n >\r\n <Text style={{ fontWeight: \"bold\" }}>\r\n {props.reqVaultData?.vaultId}\r\n </Text>{\" \"}\r\n has requested you to be a Co‑Signer\r\n </Text>\r\n </View>\r\n </View>\r\n\r\n <TouchableOpacity\r\n style={{ backgroundColor: \"transparent\", width: \"100%\" }}\r\n >\r\n <Image\r\n style={{ height: 250, width: \"90%\" }}\r\n source={{ uri: imageAssets.addCoSignerIcon1 }}\r\n />\r\n </TouchableOpacity>\r\n\r\n {!showRejectInvitation ? (\r\n <React.Fragment>\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreBody,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-body\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreHeaderCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-header-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitleCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title-cont\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreTitle,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-title\"\r\n >\r\n What is a Co‑Signer?\r\n </Text>\r\n </View>\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerMoreLabel,\r\n fontSize: 12,\r\n color: \"#5B5D6E\",\r\n }\r\n : {\r\n fontSize: 12,\r\n color: \"var(--Neutral-600, #5B5D6E)\",\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-more-label\"\r\n >\r\n A Co‑Signer is a person who has the right given by you to\r\n generate a new pin on your behalf incase you forget it.\r\n </Text>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-icon\"\r\n >\r\n <Image source={{ uri: imageAssets.pkicon }} />\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label\"\r\n >\r\n As a Co Signer you can help{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabelBold,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\"\r\n >\r\n reset PIN\r\n </Text>\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextIcon,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-icon\"\r\n >\r\n <Image source={{ uri: imageAssets.encryptedIcon }} />\r\n </View>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabel,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label\"\r\n >\r\n Don’t worry, they{\" \"}\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerBodyTextLabelBold,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-body-text-label-bold\"\r\n >\r\n will not get access\r\n </Text>{\" \"}\r\n to your account in any way.\r\n </Text>\r\n </View>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonsCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-buttons-cont\"\r\n >\r\n <TouchableOpacity\r\n onPress={() => setShowRejectInvitation(true)}\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonNeut,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-button-neut\"\r\n >\r\n <Text>Reject</Text>\r\n </TouchableOpacity>\r\n\r\n <TouchableOpacity\r\n onPress={async () =>\r\n await handleAcceptAndRejectInvitation(true)\r\n }\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonAction,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n <Text>Accept</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </React.Fragment>\r\n ) : (\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyContentOutter,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-content-outter\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyContent,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-content\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyCont,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-cont\"\r\n >\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyHeader,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-header\"\r\n >\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyTitle,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-title\"\r\n >\r\n Are you sure you want to reject this request?\r\n </Text>\r\n <Text\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerConfirmBodyLabel,\r\n fontSize: 12,\r\n color: \"#5B5D6E\",\r\n }\r\n : {\r\n fontSize: 12,\r\n color: \"var(--Neutral-600, #5B5D6E)\",\r\n }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-confirm-body-label\"\r\n >\r\n Once you reject to be a co-signer for{\" \"}\r\n <Text style={{ fontWeight: \"bold\" }}>\r\n {props.reqVaultData?.vaultId}\r\n </Text>\r\n , you will not be able to reset the PIN for them.\r\n </Text>\r\n </View>\r\n\r\n <View\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonsCont,\r\n width: \"90%\",\r\n }\r\n : { width: \"90%\" }\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-buttons-cont\"\r\n >\r\n <TouchableOpacity\r\n onPress={async () =>\r\n await handleAcceptAndRejectInvitation(false)\r\n }\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonAction,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n <Text>Yes</Text>\r\n </TouchableOpacity>\r\n\r\n <TouchableOpacity\r\n onPress={() => setShowRejectInvitation(false)}\r\n style={\r\n isReactNative\r\n ? {\r\n ...styles.verifiedCustdMdlAddCosignerButtonAction,\r\n }\r\n : {}\r\n }\r\n className=\"verified-custd-mdl-add-cosigner-button-action\"\r\n >\r\n <Text>No</Text>\r\n </TouchableOpacity>\r\n </View>\r\n </View>\r\n </View>\r\n </View>\r\n )}\r\n </View>\r\n )}\r\n {showInvitationSuccess && (\r\n <Success\r\n platform={props.platform}\r\n messageTosend={{\r\n type: \"getPk\",\r\n key: \"vaultData\",\r\n value: vaultData,\r\n }}\r\n customTextHeader=\"Successful\"\r\n customTextFooter={\r\n isAccepted\r\n ? `You have been added as a Co-Signer for ${props.reqVaultData?.vaultId}`\r\n : `You rejected Co-signer request from ${props.reqVaultData?.vaultId}`\r\n }\r\n />\r\n )}\r\n </React.Fragment>\r\n )}\r\n\r\n {fontsLoaded && !showInvitation && showTx && (\r\n <props.signTxElement\r\n setIsLoading={props.setIsLoading}\r\n txToSign={newTx}\r\n />\r\n )}\r\n\r\n {!fontsLoaded && <Text>Loading Module Fonts...</Text>}\r\n </React.Fragment>\r\n );\r\n};\r\n\r\nexport default EnterPinPage;\r\n"],"mappings":"+zBAAA,IAAAA,GAAA,GAAAC,GAAAD,GAAA,sBAAAE,GAAA,gBAAAC,GAAA,kBAAAC,GAAA,iBAAAC,GAAA,YAAAC,GAAA,YAAAC,GAAA,yBAAAC,GAAA,oBAAAC,GAAA,kBAAAC,GAAA,uBAAAC,GAAA,kBAAAC,GAAA,uBAAAC,GAAA,0BAAAC,GAAA,kBAAAC,GAAA,iBAAAC,GAAA,uBAAAC,GAAA,yBAAAC,GAAA,sCAAAC,KAAA,eAAAC,GAAApB,ICCA,SAASqB,GAAYC,EAAK,CACxB,GAAI,CAACA,GAAO,OAAO,SAAa,IAAa,OAE7C,IAAMC,EAAO,SAAS,MAAQ,SAAS,qBAAqB,MAAM,EAAE,CAAC,EAC/DC,EAAQ,SAAS,cAAc,OAAO,EAC5CA,EAAM,KAAO,WAEVD,EAAK,WACNA,EAAK,aAAaC,EAAOD,EAAK,UAAU,EAExCA,EAAK,YAAYC,CAAK,EAGrBA,EAAM,WACPA,EAAM,WAAW,QAAUF,EAE3BE,EAAM,YAAY,SAAS,eAAeF,CAAG,CAAC,CAElD,CACAD,GAAY;AAAA,CAAmzmC,ECnB7zmC,OAAO,OAAW,KAClB,OAAQ,OAAe,OAAW,MAEjC,OAAe,OAAS,CAAC,GCJ5B,GACE,OAAO,OAAW,KAClB,OAAO,OAAO,OAAW,KACzB,OAAO,UAAc,KACrB,UAAU,UAAY,cAEtB,GAAI,CACF,QAAQ,gCAAgC,CAC1C,OAASI,EAAK,CACZ,QAAQ,KAAK,yDAA0DA,CAAG,CAC5E,CCTF,IAAAC,GAAkC,qBCG3B,IAAMC,GACX,QAAQ,IAAI,qBAAuB,aAC/B,kCACA,gCAEOC,GAAsB,CACjC,gCACA,kCACA,8BACA,iCACF,EAEaC,GAAoB,CAC/B,iJACA,8KACA,qFACF,EAEaC,GACX,qEAEWC,GAAkB,CAC7B,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,KACL,EAEaC,GAAqB,CAChC,EAAG,OACH,EAAG,OACH,EAAG,OACH,EAAG,OACH,EAAG,MACL,EAEaC,GAAc,CACzB,eAAgB,uBAChB,oBAAqB,uBACrB,MAAO,+BACP,WAAY,8BACZ,aAAc,wBACd,iBAAkB,uBAClB,oBAAqB,iCACvB,EAEaC,EAAc,CACzB,YACE,iGACF,QACE,kHACF,WACE,4FACF,iBACE,oGACF,iBACE,oGACF,iBACE,oGACF,iBACE,oGACF,OACE,wFACF,cACE,+FACF,QACE,8FACF,QACE,8FACF,QACE,iGACF,UACE,iGACF,SACE,qFACF,UACE,0FACF,OACE,4FACF,cACE,kGACF,UACE,gGACF,OACE,4FACF,QACE,6FACF,UACE,4FACF,OACE,4FACF,cACE,oGACF,QACE,iGACF,eACE,gGACF,WACE,2FACF,aACE,6FACF,YACE,6FACF,YACE,6FACF,YACE,mGACF,UACE,2FACF,SACE,0FACF,YACE,iGACF,cACE,gGACF,iBACE,gGACF,kBACE,mGACF,QACE,wFACF,SACE,0FACF,aACE,8FACF,WACE,2FACF,SACE,0FACF,UACE,qFACJ,EAEaC,GAAmB,CAC9B,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,aACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,sBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,yBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,iCACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,oBACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,GACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,2BACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,mBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,0BACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,4BACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,2CACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,qBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,oBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,mBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,oCACN,KAAM,KACN,SAAU,MACV,UAAW,YACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,GACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,mBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,kBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,2BACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,mBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,mBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,GACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,sBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,wBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,4BACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,mCACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,wBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,kBACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,+CACN,KAAM,KACN,SAAU,MACV,UAAW,aACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,yBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,WACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,cACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,OACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,QACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,sBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,OACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,SACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,uBACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,iBACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,gBACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,GACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,aACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,UACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,eACN,KAAM,KACN,SAAU,MACV,UAAW,SACX,KAAM,+CACN,WAAY,KACd,EACA,CACE,KAAM,YACN,KAAM,KACN,SAAU,MACV,UAAW,gBACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,UACN,KAAM,KACN,SAAU,MACV,UAAW,OACX,KAAM,+CACN,WAAY,IACd,EACA,CACE,KAAM,oBACN,KA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,IAAK,EAAE,CAAC,EAC9C,EAAQ,IAAI,UAEd,CAEJ,CACF,EAEC,CAACsC,GACA,EAAAmD,QAAA,cAACvF,EAAA,CACC,MACED,EACI,CAAE,GAAGW,EAAO,mCAAoC,EAChD,CAAC,EAEP,UAAU,6CAEV,EAAA6E,QAAA,cAACvF,EAAA,CACC,MACED,EACI,CACE,GAAGW,EAAO,yCACZ,EACA,CAAC,EAEP,UAAU,oDAEV,EAAA6E,QAAA,cAACvF,EAAA,CACC,MACED,EACI,CACE,GAAGW,EAAO,wCACZ,EACA,CAAC,EAEP,UAAU,mDAEV,EAAA6E,QAAA,cAACtF,EAAA,CACC,MACEF,EACI,CACE,GAAGW,EAAO,qCACV,SAAU+E,GACR1F,EACA,MACF,CACF,EACA,CACE,SAAU0F,GACR1F,EACA,MACF,CACF,EAEN,UAAU,8CACX,oBAED,CACF,CACF,EACA,EAAAwF,QAAA,cAACtF,EAAA,CACC,MACEF,EACI,CACE,GAAGW,EAAO,qCACV,SAAU+E,GACR1F,EACA,MACF,CACF,EACA,CACE,SAAU0F,GACR1F,EACA,MACF,CACF,EAEN,UAAU,8CACX,+FAGD,EACA,EAAAwF,QAAA,cAACtF,EAAA,CACC,MACEF,EACI,CACE,GAAGW,EAAO,qCACV,SAAU+E,GACR1F,EACA,MACF,CACF,EACA,CACE,SAAU0F,GACR1F,EACA,MACF,CACF,EAEN,UAAU,8CACX,gKAID,EACA,EAAAwF,QAAA,cAACtF,EAAA,CACC,MACEF,EACI,CACE,GAAGW,EAAO,qCACV,SAAU+E,GACR1F,EACA,MACF,CACF,EACA,CACE,SAAU0F,GACR1F,EACA,MACF,CACF,EAEN,UAAU,8CACX,8GAGD,EACC,CAACD,EAAM,gBACN,EAAAyF,QAAA,cAACtF,EAAA,CACC,MACEF,EACI,CACE,GAAGW,EAAO,qCACV,SAAU+E,GACR1F,EACA,MACF,CACF,EACA,CACE,SAAU0F,GACR1F,EACA,MACF,CACF,EAEN,UAAU,8CACX,oHAID,EAEDD,EAAM,gBACL,EAAAyF,QAAA,cAACtF,EAAA,CACC,MACEF,EACI,CACE,G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","names":["index_exports","__export","addCosigners_default","contact_default","createPin_default","enterPin_default","ftu_default","otp_default","VaultContextProvider","pages_default","decryptString","decryptWithPasskey","encryptString","encryptWithPasskey","getPlatformComponents","hashTheString","initPlatform","loadAllGoogleFonts","loadAllGoogleFontsRN","publicKeyCredentialRequestOptions","__toCommonJS","injectStyle","css","head","style","err","import_react","defaultVerifiedUrl","verifiedWebsiteUrls","allGoogleFontUrls","newTransactionEventHash","numberPositions","numberPositionsFmt","actionTexts","imageAssets","countriesDetails","globalStyles","isReactNative","isInitialized","View","Text","Image","ScrollView","StyleSheet","TextInput","TouchableOpacity","ActivityIndicator","Font","AsyncStorage","EventEmitter","styles","rnPasskey","initPlatform","RN","events","reactStorage","filterPropsRN","className","id","rest","wrapRNTags","Component","props","React","globalStyles","motion","onPress","source","onChangeText","onInput","onKeyDown","onKeyPress","value","keyboardType","secureTextEntry","onSubmitEditing","blurOnSubmit","placeholderTextColor","ref","e","style","color","size","imageAssets","getPlatformComponents","import_react","import_react","VaultStoreContext","VaultContextProvider","children","chainId","setChainId","pk","setPk","address","setAddress","signer","setSigner","provider","setProvider","vaultContract","setVaultContract","vaultData","setVaultData","React","useVaultStore","context","import_react","import_lodash","import_verified_sdk","ChainConfig","imageAssets","import_pbkdf2","import_sha256","import_utils","import_aes","import_crypto_js","import_react_toastify","import_react","import_chains","import_viem","import_viem","boostrap_default","factory_default","NEXUS_ACCOUNT_FACTORY_ADDRESS","NEXUS_BOOTSTRAP_ADDRESS","DUMMY_SIGNATURE","index","toInitData","mod","module","data","getInitData","params","boostrap_default","toValidator","parameters","deInitData","type","signer","rest","userOpHash","message","toDefaultModule","toEmptyHook","computeNexusAccount","chain","transport","publicClient","defaultValidator","validators","executors","hook","fallbacks","registryAddress","factoryAddress","bootStrapAddress","prevalidationHooks","initData","salt","nexusAccount","factory_default","loadAllGoogleFonts","document","apiLink","staticLink","allGoogleFontUrls","fontUrl","fontLink","loadAllGoogleFontsRN","expoFont","initWalletAndContract","chainId","privateKey","sender","mnemonics","cntAddresses","_chainId","ChainConfig","provider","signer","pk","vaultContract","_signer","chainToUse","nt","address","computeNexusAccount","err","hashTheString","text","lower","hash","b","hashTheBuffer","buffer","bytes","encryptString","secretKey","crypt","decryptString","encryptedText","decryptedBytes","decryptedText","getErrorToastContent","title","content","React","imageAssets","errorToast","title","content","getErrorToastContent","resolveGlobalStyleUnit","isReactNative","unitValueString","baseRem","value","hexToBytes","hex","cleanHex","byteLength","bytes","i","byteHex","publicKeyCredentialCreationOptions","projectName","vaultId","hashedVaultId","userId","publicKeyCredentialRequestOptions","Uint8ArraytoBase64","buf","Base64URLtoUint8Array","base64url","base64","binary","char","encryptWithPasskey","plaintext","rawId","rawIdString","rawIdBytes","randomBytes8","randomHex","b","saltString","hashTheString","salt","iv","key","ciphertext","decryptWithPasskey","encryptedString","saltB64","ivB64","ciphertextB64","cipher","plaintextBytes","import_react","import_react","PageSlider","props","isReactNative","View","Text","Image","ScrollView","TextInput","TouchableOpacity","StyleSheet","Font","AsyncStorage","styles","current","total","widthPercent","React","_","idx","isActive","slider_default","import_react","SearchBox","props","isReactNative","View","Text","Image","ScrollView","TextInput","TouchableOpacity","StyleSheet","Font","AsyncStorage","styles","newSearchContent","setNewSearchContent","handleSearch","value","filtered","src","name","input","handleSelect","idx","renderTextHighlight","array","search","char","isHighlighted","React","renderResults","data","isFiltered","isActive","isSelected","contentContainerClass","imageAssets","search_default","import_react","TermsAndConditionsOverlay","props","isReactNative","View","Text","Image","ScrollView","TextInput","TouchableOpacity","StyleSheet","Font","AsyncStorage","styles","React","LogoutOverlay","handleLogout","resolveGlobalStyleUnit","ContactPage","props","isReactNative","View","Text","Image","ScrollView","TextInput","TouchableOpacity","StyleSheet","Font","AsyncStorage","styles","fontsLoaded","setFontsLoaded","userNumber","setUserNumber","userInput","setUserInput","searchActive","setSearchActive","sendOtpErrorText","setSendOtpErrorText","buttonActive","setButtonActive","pk","vaultContract","address","useVaultStore","PreloadGoogleFonts","loadAllGoogleFontsRN","isFontsLoaded","loadAllGoogleFonts","handleButtonDisplay","handleSendOTP","vaultId","channel","res","errorToast","React","slider_default","imageAssets","text","numericInput","formattedNumber","i","search_default","TermsAndConditionsOverlay","contact_default","import_react","import_ethers","import_shamir_secret_sharing","import_verified_sdk","import_chains","import_viem","checkIsExistingUser","vaultContract","hashedVaultId","res","err","checkOrResetOrCreateVault","isReactNative","AsyncStorage","EventEmitter","vaultId","vaultPin","hashedVaultPin","otpChannel","userPk","userAddress","action","reqVaultData","txData","passKeyRawId","vaultData","encryptedPk","encryptWithPasskey","secretKey","encryptString","lastPk","resolve","result","cfrmRes","userRegAddress","errorToast","windowObj","event","vaultEventEmitter","eventType","eventDetail","vultRes","validateVaultPin","chainId","includePk","newChainId","decryptWithPasskey","decryptString","cntAddresses","sender","_chainId","ChainConfig","provider","signer","quorumSet","acceptOrRejectInvitation","sendCreatorAcceptance","sendCreatorRejection","channel","hashedCosignerId","hashedCosignerPin","hashedCreatorVaultId","hashedCreatorVaultPin","creatorVaultId","coSignerVaultId","accepted","contract","completeVaultCreation","sendCoSignerInvitation","sendCreatorConfirmation","keyHolders","coSigners","KeyThreshold","pk","keyShardsCount","sharesArrayAsString","letter","share","failedKeyHolders","succesfulKeyHolders","idx","participant","encryptedShard","hashTheString","keyHolder","cosignersList","cng","numberPositions","initiateVaultRecovery","sendCreatorInitiation","vaultChannel","abiCoder","vaultLogs","log","tp","newTransactionEventHash","decodedTxData","val","txId","signVaultRecovery","sendCreatorSigned","sendCreatorCompleted","reqVaultId","hashedReqId","hashedReqPin","reqTxId","qRes","restoreVaultLogin","recoveredShrads","shrd","shares","combinedShares","newEncryptedPk","newSender","_newsigner","chainToUse","nt","nexAddress","computeNexusAccount","OTPPage","props","isReactNative","View","Text","Image","ScrollView","TextInput","TouchableOpacity","StyleSheet","Font","AsyncStorage","styles","fontsLoaded","setFontsLoaded","inputsRef","searchActive","setSearchActive","countdown","setCountdown","otp","setOtp","otpIncorrect","setOtpIncorrect","otherErrorText","setOtherErrorText","pk","vaultContract","address","useVaultStore","PreloadGoogleFonts","loadAllGoogleFontsRN","isFontsLoaded","loadAllGoogleFonts","timer","c","handleTextChange","text","idx","paste","newOtp","pasteIndex","i","nextIndex","clean","handleKeyPress","_","e","isFilled","d","getVaultId","handleVerifyOtp","vaultId","fullOtp","hashed","hashTheString","exists","checkIsExistingUser","err","handleResend","channel","res","errorToast","React","slider_default","imageAssets","el","otp_default","import_react","import_react","Success","props","isReactNative","View","Text","Image","ScrollView","TextInput","TouchableOpacity","StyleSheet","Font","AsyncStorage","styles","EventEmitter","timeoutId","windowObj","res","event","err","handleContinue","handleClosePopup","handleShowDashboard","React","imageAssets","success_default","CreatePinPage","props","isReactNative","View","Text","Image","ScrollView","TextInput","TouchableOpacity","StyleSheet","Font","AsyncStorage","EventEmitter","styles","rnPasskey","fontsLoaded","setFontsLoaded","pinHide","setPinHide","pinIncorrect","setPinIncorrect","pinIncorrectText","setPinIncorrectText","showCustomSuccess","setShowCustomSuccess","showInvitation","setShowInvitation","showInvitationSuccess","setShowInvitationSuccess","showRejectInvitation","setShowRejectInvitation","customSuccessText","setCustomSuccessText","vaultPin","setVaultPin","vaultRawId","setVaultRawId","searchActive","setSearchActive","isPin","setIsPin","address","pk","vaultContract","setVaultData","setChainId","vaultData","useVaultStore","pin","setPin","confirmPin","setConfirmPin","pinRefs","confirmPinRefs","PreloadGoogleFonts","loadAllGoogleFontsRN","isFontsLoaded","loadAllGoogleFonts","handleTextChange","text","idx","isConfirm","clean","newPin","digit","createPasskey","vaultId","credential","publicKeyCredentialCreationOptions","hashTheString","hashedId","hashTheBuffer","err","requestPasskey","publicKeyCredentialRequestOptions","handleKeyPress","_","e","key","isConfirmActive","handleVaultManagement","pinToUse","channel","hashedVaultId","hashedVaultPin","checkOrResetOrCreateVault","res","handleAcceptAndRejectInvitation","accepted","acceptOrRejectInvitation","React","slider_default","resolveGlobalStyleUnit","el","imageAssets","credentialIdHashed","success_default","createPin_default","import_react","AddCosignersPage","props","isReactNative","View","Text","Image","ScrollView","TextInput","TouchableOpacity","StyleSheet","Font","AsyncStorage","styles","fontsLoaded","setFontsLoaded","showLearnMore","setShowLearnMore","learnMoreStep","setLearnMoreStep","cosignerStep","setCosignerStep","showAddMore","setShowAddMore","addChannel","setAddChannel","coSignerNumber","setCoSignerNumber","coSignerNumberFmt","setCoSignerNumberFmt","coSignerEmail","setCoSignerEmail","coSignerName","setCoSignerName","userInput","setUserInput","searchActive","setSearchActive","selectedCountry","setSelectedCountry","imageAssets","coSigners","setCosigners","showSetRule","setShowSetRule","requiredSigners","setRequiredSigners","errorText","setErrorText","pk","vaultData","vaultContract","useVaultStore","PreloadGoogleFonts","_","loadAllGoogleFontsRN","isFontsLoaded","loadAllGoogleFonts","handleButtonDisplay","handleAddCoSigner","sig","coSignerLength","cngs","handleCompleteVault","keyHolders","completeVaultCreation","res","React","slider_default","a","b","cng","idx","numberPositionsFmt","nSig","newId","text","numericInput","formattedNumber","i","search_default","addCosigners_default","import_react","import_ethers","EnterPinPage","props","isReactNative","View","Text","Image","ScrollView","TextInput","TouchableOpacity","StyleSheet","Font","AsyncStorage","styles","rnPasskey","fontsLoaded","setFontsLoaded","pinIncorrect","setPinIncorrect","pinHide","setPinHide","searchActive","setSearchActive","showSuccess","setShowSuccess","vaultData","_setVaultData","vaultDataRes","setVaultDataRes","chainId","_setChainId","showChains","setShowChains","showInvitation","setShowInvitation","showInvitationSuccess","setShowInvitationSuccess","showRejectInvitation","setShowRejectInvitation","isAccepted","setIsAccepted","pinIncorrectText","setPinIncorrectText","showTx","setShowTx","newTx","setNewTx","pin","setPin","inputsRef","isPin","setIsPin","setChainId","setAddress","setPk","setProvider","setSigner","setVaultContract","setVaultData","useVaultStore","PreloadGoogleFonts","loadAllGoogleFontsRN","isFontsLoaded","loadAllGoogleFonts","handleTextChange","text","idx","paste","newPin","pasteIndex","i","nextIndex","clean","handleKeyPress","_","e","isFilled","d","handleVerifyPin","pinToUse","fullOtp","validateVaultPin","hashTheString","verifiedWebsiteUrls","res","initiateVaultRecovery","signVaultRecovery","restoreVaultLogin","walletAndContractDetails","initWalletAndContract","hashTheBuffer","areaCode","formattedNumber","handleAcceptAndRejectInvitation","accepted","vaultId","vaultPin","hashedVaultId","hashedVaultPin","acceptOrRejectInvitation","requestPasskey","credential","publicKeyCredentialRequestOptions","hashedId","err","React","slider_default","el","imageAssets","resolveGlobalStyleUnit","LogoutOverlay","success_default","enterPin_default","FTUPage","props","isReactNative","View","Text","Image","ScrollView","StyleSheet","Font","AsyncStorage","fontsLoaded","setFontsLoaded","showLogo","setShowLogo","allCountries","setAllCountries","step","setStep","selectedCountry","setSelectedCountry","imageAssets","userNumberFmt","setUserNumberFmt","userEmail","setUserEmail","showSuccessBtn","setShowSuccessBtn","successBtnText","setSuccessBtnText","successBtnNeutText","setSuccessBtnNeutText","actionHeaderText","setActionHeaderText","actionFooterText","setActionFooterText","successBtnFunc","setSuccessBtnFunc","successBtnNeutFunc","setSuccessBtnNeutFunc","isExistingUser","setIsExistingUser","setChainId","setAddress","setPk","setProvider","setSigner","setVaultContract","setVaultData","vaultData","chainId","vaultContract","useVaultStore","PreloadGoogleFonts","loadAllGoogleFontsRN","isFontsLoaded","loadAllGoogleFonts","initializeUserWalletAndContract","lastPk","resolve","result","walletAndContractDetails","initWalletAndContract","fmtCountries","countriesDetails","cnt","React","contact_default","otp_default","createPin_default","success_default","addCosigners_default","enterPin_default","actionTexts","ky","ftu_default","VerifiedCustody","props","ready","setReady","platformComponents","setPlatformComponents","fontsLoaded","setFontsLoaded","isOnboard","setisOnboard","vaultData","setVaultData","_vaultData","_setVaultData","isLoading","setIsLoading","showDashboard","setShowDasboard","showCompleteVault","setShowCompleteVault","showResetPin","setShowResetPin","action","setAction","allCountries","setAllCountries","step","setStep","selectedCountry","setSelectedCountry","imageAssets","userNumberFmt","setUserNumberFmt","userEmail","setUserEmail","initPlatform","components","getPlatformComponents","isReactNative","View","Text","Font","AsyncStorage","ActivityIndicator","styles","loadAllGoogleFontsRN","isFontsLoaded","loadAllGoogleFonts","storedVault","myVault","err","res","fmtCountries","countriesDetails","cnt","React","VaultContextProvider","ftu_default","hashTheString","enterPin_default","actionTexts","addCosigners_default","success_default","initWalletAndContract","createPin_default","pages_default"]}