(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[177],{4925:(e,t,a)=>{Promise.resolve().then(a.bind(a,1069)),Promise.resolve().then(a.t.bind(a,5147,23)),Promise.resolve().then(a.t.bind(a,8918,23)),Promise.resolve().then(a.t.bind(a,3394,23)),Promise.resolve().then(a.t.bind(a,7440,23)),Promise.resolve().then(a.t.bind(a,4206,23)),Promise.resolve().then(a.t.bind(a,1258,23)),Promise.resolve().then(a.t.bind(a,1580,23)),Promise.resolve().then(a.t.bind(a,3154,23)),Promise.resolve().then(a.t.bind(a,9751,23)),Promise.resolve().then(a.t.bind(a,9324,23))},3745:(e,t,a)=>{"use strict";a.d(t,{FH:()=>d,UJ:()=>n,iD:()=>i,ki:()=>r});let s="https://api.aitrading.coach";class n extends Error{constructor(e,t){super((Array.isArray(t.message)?t.message.join("; "):t.message)||"HTTP ".concat(e)),this.status=e,this.body=t,this.name="ApiException"}}let o=null,l=null;function r(e){o=e}function i(){return o}async function u(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{method:a="GET",body:n,signal:l,noRefresh:r,authenticated:i=!0}=t,u={};void 0!==n&&(u["Content-Type"]="application/json"),i&&o&&(u.Authorization="Bearer ".concat(o));let d=await fetch("".concat(s).concat(e),{method:a,headers:u,body:void 0===n?void 0:JSON.stringify(n),credentials:"include",signal:l});if(401===d.status&&i&&!r){let t=await h();if(t)return u.Authorization="Bearer ".concat(t),c(await fetch("".concat(s).concat(e),{method:a,headers:u,body:void 0===n?void 0:JSON.stringify(n),credentials:"include",signal:l}))}return c(d)}async function c(e){let t=await e.text(),a=t?JSON.parse(t):null;if(!e.ok){var s;let o=null!==(s=null==a?void 0:a.error)&&void 0!==s?s:{code:"unknown",message:t||e.statusText,statusCode:e.status};throw new n(e.status,o)}return a}async function h(){return l||(l=(async()=>{try{let e=await u("/v1/auth/refresh",{method:"POST",noRefresh:!0,authenticated:!1});return o=e.accessToken,e.accessToken}catch(e){return o=null,null}finally{l=null}})())}let d={signup:e=>u("/v1/auth/signup",{method:"POST",body:e,authenticated:!1}),verifyEmail:e=>u("/v1/auth/verify-email",{method:"POST",body:e,authenticated:!1}),login:e=>u("/v1/auth/login",{method:"POST",body:e,authenticated:!1}),refresh:()=>u("/v1/auth/refresh",{method:"POST",noRefresh:!0,authenticated:!1}),logout:()=>u("/v1/auth/logout",{method:"POST",noRefresh:!0,authenticated:!1}),forgot:e=>u("/v1/auth/forgot",{method:"POST",body:e,authenticated:!1}),reset:e=>u("/v1/auth/reset",{method:"POST",body:e,authenticated:!1}),enroll2fa:()=>u("/v1/auth/2fa/enroll",{method:"POST"}),verify2fa:e=>u("/v1/auth/2fa/verify",{method:"POST",body:e}),me:()=>u("/v1/auth/me"),redeemHandover:e=>u("/v1/auth/handover/".concat(encodeURIComponent(e)),{method:"POST",authenticated:!1,noRefresh:!0}),googleSigninUrl:()=>"".concat(s,"/v1/auth/google"),health:()=>u("/v1/health",{authenticated:!1,noRefresh:!0})}},1069:(e,t,a)=>{"use strict";a.d(t,{A:()=>i,AuthProvider:()=>r});var s=a(5155),n=a(2115),o=a(3745);let l=(0,n.createContext)(null);function r(e){let{children:t}=e,[a,r]=(0,n.useState)({status:"loading",user:null}),i=(0,n.useCallback)(async()=>{try{let{accessToken:e}=await o.FH.refresh();(0,o.ki)(e);let t=await o.FH.me();r({status:"authenticated",user:t})}catch(e){(0,o.ki)(null),r({status:"anonymous",user:null})}},[]);(0,n.useEffect)(()=>{i()},[i]);let u=(0,n.useCallback)(async e=>{let t=await o.FH.login(e);if("requiresTwoFactor"in t&&t.requiresTwoFactor)return{requiresTwoFactor:!0};if(!("accessToken"in t))throw new o.UJ(500,{code:"unexpected",message:"Login response missing access token",statusCode:500});return(0,o.ki)(t.accessToken),r({status:"authenticated",user:await o.FH.me()}),{}},[]),c=(0,n.useCallback)(async e=>{await o.FH.signup(e),r({status:"anonymous",user:null})},[]),h=(0,n.useCallback)(async()=>{try{await o.FH.logout()}finally{(0,o.ki)(null),r({status:"anonymous",user:null})}},[]),d=(0,n.useMemo)(()=>({...a,login:u,signup:c,logout:h,refresh:i}),[a,u,c,h,i]);return(0,s.jsx)(l.Provider,{value:d,children:t})}function i(){let e=(0,n.useContext)(l);if(!e)throw Error("useAuth must be used inside ");return e}},9324:()=>{},1580:e=>{e.exports={style:{fontFamily:"'DM Mono', 'DM Mono Fallback'",fontStyle:"normal"},className:"__className_9ef920",variable:"__variable_9ef920"}},1258:e=>{e.exports={style:{fontFamily:"'DM Sans', 'DM Sans Fallback'",fontStyle:"normal"},className:"__className_e64f39",variable:"__variable_e64f39"}},4206:e=>{e.exports={style:{fontFamily:"'DM Serif Display', 'DM Serif Display Fallback'",fontWeight:400},className:"__className_d501d1",variable:"__variable_d501d1"}},5147:e=>{e.exports={style:{fontFamily:"'Fraunces', 'Fraunces Fallback'"},className:"__className_d991f5",variable:"__variable_d991f5"}},3154:e=>{e.exports={style:{fontFamily:"'Geist', 'Geist Fallback'",fontStyle:"normal"},className:"__className_755215",variable:"__variable_755215"}},9751:e=>{e.exports={style:{fontFamily:"'Geist Mono', 'Geist Mono Fallback'",fontStyle:"normal"},className:"__className_5a9483",variable:"__variable_5a9483"}},7440:e=>{e.exports={style:{fontFamily:"'Instrument Serif', 'Instrument Serif Fallback'",fontWeight:400},className:"__className_1f5468",variable:"__variable_1f5468"}},3394:e=>{e.exports={style:{fontFamily:"'JetBrains Mono', 'JetBrains Mono Fallback'",fontStyle:"normal"},className:"__className_e896d9",variable:"__variable_e896d9"}},8918:e=>{e.exports={style:{fontFamily:"'Manrope', 'Manrope Fallback'",fontStyle:"normal"},className:"__className_a05e8d",variable:"__variable_a05e8d"}}},e=>{var t=t=>e(e.s=t);e.O(0,[263,533,441,517,358],()=>t(4925)),_N_E=e.O()}]);