@oxyhq/services 0.1.10 → 0.1.13

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/README.md CHANGED
@@ -274,31 +274,52 @@ export default App;
274
274
 
275
275
  MIT
276
276
 
277
- ## Authentication Changes (v0.1.10)
277
+ ## Authentication Changes (v0.1.12)
278
278
 
279
279
  ### Important Updates
280
280
 
281
- 1. **Fixed Authentication Token Storage**:
281
+ 1. **Robust Authentication State Management**:
282
+ - Changed `isAuthenticated` from a boolean state to an async function that checks for tokens in real-time
283
+ - Eliminates race conditions and ensures authentication state is always current
284
+ - Provides more reliable session handling across the entire application
285
+
286
+ 2. **Improved Session Persistence**:
287
+ - Authentication state now directly reflects the presence of valid tokens rather than a separate state
288
+ - More reliable initialization of user data when app is reloaded with existing tokens
289
+
290
+ 3. **Better Dependency Management**:
291
+ - Fixed circular dependencies in authentication-related functions
292
+ - Made hook dependencies more explicit and safer to prevent potential bugs
293
+
294
+ 4. **Consistent Token Storage Key Names**:
295
+ - Fixed critical bug where token storage keys were inconsistent between OxyContext and ApiClient
296
+ - Standardized all token keys to `oxy_access_token` and `oxy_refresh_token` across all components
297
+
298
+ 5. **Automatic User Profile Loading**:
299
+ - Added automatic user profile loading on initialization when a valid token exists
300
+ - Ensures the user profile is available as soon as possible after authentication
301
+
302
+ 6. **Cookie Storage Support**:
303
+ - Improved cookie-based token storage with proper implementation
304
+ - Added cookie expiration handling for improved security
305
+
306
+ 7. **Fixed Authentication Token Storage**:
282
307
  - Resolved issues with token storage and retrieval by making all token operations asynchronous
283
308
  - Added direct token storage via ApiClient during login/register for consistent token management
284
309
  - Properly implemented `/auth/me` endpoint in the API to fetch user profiles
285
310
 
286
- 2. **Enhanced Login/Register Response Handling**:
311
+ 8. **Enhanced Login/Register Response Handling**:
287
312
  - Both `login()` and `register()` functions now support receiving the user object directly in the API response
288
313
  - If the API returns a user object with the tokens, it will be stored automatically without making an extra `/auth/me` request
289
314
 
290
- 3. **Client-side Validation**:
315
+ 9. **Client-side Validation**:
291
316
  - Added input validation for login and registration requests
292
317
  - Provides detailed error feedback with field-specific error messages
293
318
  - Prevents unnecessary API calls when required fields are missing
294
319
 
295
- 4. **Async Authentication Methods**:
296
- - All authentication methods are now properly asynchronous and return Promises
297
- - Use `await auth.isAuthenticated()` to get the current authentication status
298
-
299
- 5. **Consistent Token Storage**:
300
- - Tokens are stored with consistent keys (`oxy_access_token` and `oxy_refresh_token`)
301
- - Token handling supports various storage mechanisms including local storage, session storage, and cookies
320
+ 10. **Async Authentication Methods**:
321
+ - All authentication methods are now properly asynchronous and return Promises
322
+ - Use `await auth.isAuthenticated()` to get the current authentication status
302
323
 
303
324
  ### Migration Guide
304
325
 
@@ -2,7 +2,7 @@ import React, { ReactNode } from 'react';
2
2
  interface OxyContextType {
3
3
  apiUrl: string;
4
4
  getToken: () => Promise<string | null>;
5
- isAuthenticated: boolean;
5
+ isAuthenticated: () => Promise<boolean>;
6
6
  setAuthTokens: (tokens: {
7
7
  accessToken: string;
8
8
  refreshToken: string;
@@ -12,6 +12,7 @@ export declare const useAuth: (options?: UseAuthOptions) => {
12
12
  register: (userData: UserRegistration) => Promise<ApiResponse<AuthTokens>>;
13
13
  logout: () => Promise<void>;
14
14
  isAuthenticated: () => Promise<boolean>;
15
+ authState: boolean;
15
16
  getCurrentUser: () => Promise<ApiResponse<UserProfile>>;
16
17
  refreshToken: () => Promise<ApiResponse<AuthTokens>>;
17
18
  getToken: () => Promise<string | null>;
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see index.js.LICENSE.txt */
2
- (()=>{"use strict";var e={20:(e,t,r)=>{var s=r(953),n=Symbol.for("react.element"),o=(Symbol.for("react.fragment"),Object.prototype.hasOwnProperty),a=s.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,i={key:!0,ref:!0,__self:!0,__source:!0};t.jsx=function(e,t,r){var s,c={},u=null,l=null;for(s in void 0!==r&&(u=""+r),void 0!==t.key&&(u=""+t.key),void 0!==t.ref&&(l=t.ref),t)o.call(t,s)&&!i.hasOwnProperty(s)&&(c[s]=t[s]);if(e&&e.defaultProps)for(s in t=e.defaultProps)void 0===c[s]&&(c[s]=t[s]);return{$$typeof:n,type:e,key:u,ref:l,props:c,_owner:a.current}}},848:(e,t,r)=>{e.exports=r(20)},953:e=>{e.exports=require("react")}},t={};function r(s){var n=t[s];if(void 0!==n)return n.exports;var o=t[s]={exports:{}};return e[s](o,o.exports,r),o.exports}r.d=(e,t)=>{for(var s in t)r.o(t,s)&&!r.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};r.r(s),r.d(s,{OxyAuthBackend:()=>bt,OxyKarmaBackend:()=>kt,OxyProvider:()=>At,OxyUsersBackend:()=>Tt,OxyWalletBackend:()=>St,useAuth:()=>Ct,useKarma:()=>xt,useOxyContext:()=>Rt,useUser:()=>_t,useWallet:()=>Pt});var n={};function o(e,t){return function(){return e.apply(t,arguments)}}r.r(n),r.d(n,{hasBrowserEnv:()=>de,hasStandardBrowserEnv:()=>he,hasStandardBrowserWebWorkerEnv:()=>pe,navigator:()=>fe,origin:()=>me});const{toString:a}=Object.prototype,{getPrototypeOf:i}=Object,c=(u=Object.create(null),e=>{const t=a.call(e);return u[t]||(u[t]=t.slice(8,-1).toLowerCase())});var u;const l=e=>(e=e.toLowerCase(),t=>c(t)===e),d=e=>t=>typeof t===e,{isArray:f}=Array,h=d("undefined"),p=l("ArrayBuffer"),m=d("string"),y=d("function"),g=d("number"),w=e=>null!==e&&"object"==typeof e,b=e=>{if("object"!==c(e))return!1;const t=i(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)},T=l("Date"),k=l("File"),S=l("Blob"),E=l("FileList"),v=l("URLSearchParams"),[O,R,A,C]=["ReadableStream","Request","Response","Headers"].map(l);function _(e,t,{allOwnKeys:r=!1}={}){if(null==e)return;let s,n;if("object"!=typeof e&&(e=[e]),f(e))for(s=0,n=e.length;s<n;s++)t.call(null,e[s],s,e);else{const n=r?Object.getOwnPropertyNames(e):Object.keys(e),o=n.length;let a;for(s=0;s<o;s++)a=n[s],t.call(null,e[a],a,e)}}function x(e,t){t=t.toLowerCase();const r=Object.keys(e);let s,n=r.length;for(;n-- >0;)if(s=r[n],t===s.toLowerCase())return s;return null}const P="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,U=e=>!h(e)&&e!==P,q=(F="undefined"!=typeof Uint8Array&&i(Uint8Array),e=>F&&e instanceof F);var F;const N=l("HTMLFormElement"),j=(({hasOwnProperty:e})=>(t,r)=>e.call(t,r))(Object.prototype),B=l("RegExp"),I=(e,t)=>{const r=Object.getOwnPropertyDescriptors(e),s={};_(r,((r,n)=>{let o;!1!==(o=t(r,n,e))&&(s[n]=o||r)})),Object.defineProperties(e,s)},L=l("AsyncFunction"),D=($="function"==typeof setImmediate,z=y(P.postMessage),$?setImmediate:z?(M=`axios@${Math.random()}`,K=[],P.addEventListener("message",(({source:e,data:t})=>{e===P&&t===M&&K.length&&K.shift()()}),!1),e=>{K.push(e),P.postMessage(M,"*")}):e=>setTimeout(e));var $,z,M,K;const G="undefined"!=typeof queueMicrotask?queueMicrotask.bind(P):"undefined"!=typeof process&&process.nextTick||D,H={isArray:f,isArrayBuffer:p,isBuffer:function(e){return null!==e&&!h(e)&&null!==e.constructor&&!h(e.constructor)&&y(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||y(e.append)&&("formdata"===(t=c(e))||"object"===t&&y(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&p(e.buffer),t},isString:m,isNumber:g,isBoolean:e=>!0===e||!1===e,isObject:w,isPlainObject:b,isReadableStream:O,isRequest:R,isResponse:A,isHeaders:C,isUndefined:h,isDate:T,isFile:k,isBlob:S,isRegExp:B,isFunction:y,isStream:e=>w(e)&&y(e.pipe),isURLSearchParams:v,isTypedArray:q,isFileList:E,forEach:_,merge:function e(){const{caseless:t}=U(this)&&this||{},r={},s=(s,n)=>{const o=t&&x(r,n)||n;b(r[o])&&b(s)?r[o]=e(r[o],s):b(s)?r[o]=e({},s):f(s)?r[o]=s.slice():r[o]=s};for(let e=0,t=arguments.length;e<t;e++)arguments[e]&&_(arguments[e],s);return r},extend:(e,t,r,{allOwnKeys:s}={})=>(_(t,((t,s)=>{r&&y(t)?e[s]=o(t,r):e[s]=t}),{allOwnKeys:s}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,r,s)=>{e.prototype=Object.create(t.prototype,s),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},toFlatObject:(e,t,r,s)=>{let n,o,a;const c={};if(t=t||{},null==e)return t;do{for(n=Object.getOwnPropertyNames(e),o=n.length;o-- >0;)a=n[o],s&&!s(a,e,t)||c[a]||(t[a]=e[a],c[a]=!0);e=!1!==r&&i(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:c,kindOfTest:l,endsWith:(e,t,r)=>{e=String(e),(void 0===r||r>e.length)&&(r=e.length),r-=t.length;const s=e.indexOf(t,r);return-1!==s&&s===r},toArray:e=>{if(!e)return null;if(f(e))return e;let t=e.length;if(!g(t))return null;const r=new Array(t);for(;t-- >0;)r[t]=e[t];return r},forEachEntry:(e,t)=>{const r=(e&&e[Symbol.iterator]).call(e);let s;for(;(s=r.next())&&!s.done;){const r=s.value;t.call(e,r[0],r[1])}},matchAll:(e,t)=>{let r;const s=[];for(;null!==(r=e.exec(t));)s.push(r);return s},isHTMLForm:N,hasOwnProperty:j,hasOwnProp:j,reduceDescriptors:I,freezeMethods:e=>{I(e,((t,r)=>{if(y(e)&&-1!==["arguments","caller","callee"].indexOf(r))return!1;const s=e[r];y(s)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")}))}))},toObjectSet:(e,t)=>{const r={},s=e=>{e.forEach((e=>{r[e]=!0}))};return f(e)?s(e):s(String(e).split(t)),r},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r})),noop:()=>{},toFiniteNumber:(e,t)=>null!=e&&Number.isFinite(e=+e)?e:t,findKey:x,global:P,isContextDefined:U,isSpecCompliantForm:function(e){return!!(e&&y(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:e=>{const t=new Array(10),r=(e,s)=>{if(w(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[s]=e;const n=f(e)?[]:{};return _(e,((e,t)=>{const o=r(e,s+1);!h(o)&&(n[t]=o)})),t[s]=void 0,n}}return e};return r(e,0)},isAsyncFn:L,isThenable:e=>e&&(w(e)||y(e))&&y(e.then)&&y(e.catch),setImmediate:D,asap:G};function W(e,t,r,s,n){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),s&&(this.request=s),n&&(this.response=n,this.status=n.status?n.status:null)}H.inherits(W,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:H.toJSONObject(this.config),code:this.code,status:this.status}}});const J=W.prototype,V={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{V[e]={value:e}})),Object.defineProperties(W,V),Object.defineProperty(J,"isAxiosError",{value:!0}),W.from=(e,t,r,s,n,o)=>{const a=Object.create(J);return H.toFlatObject(e,a,(function(e){return e!==Error.prototype}),(e=>"isAxiosError"!==e)),W.call(a,e.message,t,r,s,n),a.cause=e,a.name=e.name,o&&Object.assign(a,o),a};const X=W;function Q(e){return H.isPlainObject(e)||H.isArray(e)}function Y(e){return H.endsWith(e,"[]")?e.slice(0,-2):e}function Z(e,t,r){return e?e.concat(t).map((function(e,t){return e=Y(e),!r&&t?"["+e+"]":e})).join(r?".":""):t}const ee=H.toFlatObject(H,{},null,(function(e){return/^is[A-Z]/.test(e)})),te=function(e,t,r){if(!H.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const s=(r=H.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!H.isUndefined(t[e])}))).metaTokens,n=r.visitor||u,o=r.dots,a=r.indexes,i=(r.Blob||"undefined"!=typeof Blob&&Blob)&&H.isSpecCompliantForm(t);if(!H.isFunction(n))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if(H.isDate(e))return e.toISOString();if(!i&&H.isBlob(e))throw new X("Blob is not supported. Use a Buffer instead.");return H.isArrayBuffer(e)||H.isTypedArray(e)?i&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function u(e,r,n){let i=e;if(e&&!n&&"object"==typeof e)if(H.endsWith(r,"{}"))r=s?r:r.slice(0,-2),e=JSON.stringify(e);else if(H.isArray(e)&&function(e){return H.isArray(e)&&!e.some(Q)}(e)||(H.isFileList(e)||H.endsWith(r,"[]"))&&(i=H.toArray(e)))return r=Y(r),i.forEach((function(e,s){!H.isUndefined(e)&&null!==e&&t.append(!0===a?Z([r],s,o):null===a?r:r+"[]",c(e))})),!1;return!!Q(e)||(t.append(Z(n,r,o),c(e)),!1)}const l=[],d=Object.assign(ee,{defaultVisitor:u,convertValue:c,isVisitable:Q});if(!H.isObject(e))throw new TypeError("data must be an object");return function e(r,s){if(!H.isUndefined(r)){if(-1!==l.indexOf(r))throw Error("Circular reference detected in "+s.join("."));l.push(r),H.forEach(r,(function(r,o){!0===(!(H.isUndefined(r)||null===r)&&n.call(t,r,H.isString(o)?o.trim():o,s,d))&&e(r,s?s.concat(o):[o])})),l.pop()}}(e),t};function re(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function se(e,t){this._pairs=[],e&&te(e,this,t)}const ne=se.prototype;ne.append=function(e,t){this._pairs.push([e,t])},ne.toString=function(e){const t=e?function(t){return e.call(this,t,re)}:re;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};const oe=se;function ae(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function ie(e,t,r){if(!t)return e;const s=r&&r.encode||ae;H.isFunction(r)&&(r={serialize:r});const n=r&&r.serialize;let o;if(o=n?n(t,r):H.isURLSearchParams(t)?t.toString():new oe(t,r).toString(s),o){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+o}return e}const ce=class{constructor(){this.handlers=[]}use(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){H.forEach(this.handlers,(function(t){null!==t&&e(t)}))}},ue={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},le={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:oe,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},de="undefined"!=typeof window&&"undefined"!=typeof document,fe="object"==typeof navigator&&navigator||void 0,he=de&&(!fe||["ReactNative","NativeScript","NS"].indexOf(fe.product)<0),pe="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,me=de&&window.location.href||"http://localhost",ye={...n,...le},ge=function(e){function t(e,r,s,n){let o=e[n++];if("__proto__"===o)return!0;const a=Number.isFinite(+o),i=n>=e.length;return o=!o&&H.isArray(s)?s.length:o,i?(H.hasOwnProp(s,o)?s[o]=[s[o],r]:s[o]=r,!a):(s[o]&&H.isObject(s[o])||(s[o]=[]),t(e,r,s[o],n)&&H.isArray(s[o])&&(s[o]=function(e){const t={},r=Object.keys(e);let s;const n=r.length;let o;for(s=0;s<n;s++)o=r[s],t[o]=e[o];return t}(s[o])),!a)}if(H.isFormData(e)&&H.isFunction(e.entries)){const r={};return H.forEachEntry(e,((e,s)=>{t(function(e){return H.matchAll(/\w+|\[(\w*)]/g,e).map((e=>"[]"===e[0]?"":e[1]||e[0]))}(e),s,r,0)})),r}return null},we={transitional:ue,adapter:["xhr","http","fetch"],transformRequest:[function(e,t){const r=t.getContentType()||"",s=r.indexOf("application/json")>-1,n=H.isObject(e);if(n&&H.isHTMLForm(e)&&(e=new FormData(e)),H.isFormData(e))return s?JSON.stringify(ge(e)):e;if(H.isArrayBuffer(e)||H.isBuffer(e)||H.isStream(e)||H.isFile(e)||H.isBlob(e)||H.isReadableStream(e))return e;if(H.isArrayBufferView(e))return e.buffer;if(H.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let o;if(n){if(r.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return te(e,new ye.classes.URLSearchParams,Object.assign({visitor:function(e,t,r,s){return ye.isNode&&H.isBuffer(e)?(this.append(t,e.toString("base64")),!1):s.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((o=H.isFileList(e))||r.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return te(o?{"files[]":e}:e,t&&new t,this.formSerializer)}}return n||s?(t.setContentType("application/json",!1),function(e){if(H.isString(e))try{return(0,JSON.parse)(e),H.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(0,JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||we.transitional,r=t&&t.forcedJSONParsing,s="json"===this.responseType;if(H.isResponse(e)||H.isReadableStream(e))return e;if(e&&H.isString(e)&&(r&&!this.responseType||s)){const r=!(t&&t.silentJSONParsing)&&s;try{return JSON.parse(e)}catch(e){if(r){if("SyntaxError"===e.name)throw X.from(e,X.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:ye.classes.FormData,Blob:ye.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};H.forEach(["delete","get","head","post","put","patch"],(e=>{we.headers[e]={}}));const be=we,Te=H.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),ke=Symbol("internals");function Se(e){return e&&String(e).trim().toLowerCase()}function Ee(e){return!1===e||null==e?e:H.isArray(e)?e.map(Ee):String(e)}function ve(e,t,r,s,n){return H.isFunction(s)?s.call(this,t,r):(n&&(t=r),H.isString(t)?H.isString(s)?-1!==t.indexOf(s):H.isRegExp(s)?s.test(t):void 0:void 0)}class Oe{constructor(e){e&&this.set(e)}set(e,t,r){const s=this;function n(e,t,r){const n=Se(t);if(!n)throw new Error("header name must be a non-empty string");const o=H.findKey(s,n);(!o||void 0===s[o]||!0===r||void 0===r&&!1!==s[o])&&(s[o||t]=Ee(e))}const o=(e,t)=>H.forEach(e,((e,r)=>n(e,r,t)));if(H.isPlainObject(e)||e instanceof this.constructor)o(e,t);else if(H.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))o((e=>{const t={};let r,s,n;return e&&e.split("\n").forEach((function(e){n=e.indexOf(":"),r=e.substring(0,n).trim().toLowerCase(),s=e.substring(n+1).trim(),!r||t[r]&&Te[r]||("set-cookie"===r?t[r]?t[r].push(s):t[r]=[s]:t[r]=t[r]?t[r]+", "+s:s)})),t})(e),t);else if(H.isHeaders(e))for(const[t,s]of e.entries())n(s,t,r);else null!=e&&n(t,e,r);return this}get(e,t){if(e=Se(e)){const r=H.findKey(this,e);if(r){const e=this[r];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let s;for(;s=r.exec(e);)t[s[1]]=s[2];return t}(e);if(H.isFunction(t))return t.call(this,e,r);if(H.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=Se(e)){const r=H.findKey(this,e);return!(!r||void 0===this[r]||t&&!ve(0,this[r],r,t))}return!1}delete(e,t){const r=this;let s=!1;function n(e){if(e=Se(e)){const n=H.findKey(r,e);!n||t&&!ve(0,r[n],n,t)||(delete r[n],s=!0)}}return H.isArray(e)?e.forEach(n):n(e),s}clear(e){const t=Object.keys(this);let r=t.length,s=!1;for(;r--;){const n=t[r];e&&!ve(0,this[n],n,e,!0)||(delete this[n],s=!0)}return s}normalize(e){const t=this,r={};return H.forEach(this,((s,n)=>{const o=H.findKey(r,n);if(o)return t[o]=Ee(s),void delete t[n];const a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,r)=>t.toUpperCase()+r))}(n):String(n).trim();a!==n&&delete t[n],t[a]=Ee(s),r[a]=!0})),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return H.forEach(this,((r,s)=>{null!=r&&!1!==r&&(t[s]=e&&H.isArray(r)?r.join(", "):r)})),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const r=new this(e);return t.forEach((e=>r.set(e))),r}static accessor(e){const t=(this[ke]=this[ke]={accessors:{}}).accessors,r=this.prototype;function s(e){const s=Se(e);t[s]||(function(e,t){const r=H.toCamelCase(" "+t);["get","set","has"].forEach((s=>{Object.defineProperty(e,s+r,{value:function(e,r,n){return this[s].call(this,t,e,r,n)},configurable:!0})}))}(r,e),t[s]=!0)}return H.isArray(e)?e.forEach(s):s(e),this}}Oe.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),H.reduceDescriptors(Oe.prototype,(({value:e},t)=>{let r=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[r]=e}}})),H.freezeMethods(Oe);const Re=Oe;function Ae(e,t){const r=this||be,s=t||r,n=Re.from(s.headers);let o=s.data;return H.forEach(e,(function(e){o=e.call(r,o,n.normalize(),t?t.status:void 0)})),n.normalize(),o}function Ce(e){return!(!e||!e.__CANCEL__)}function _e(e,t,r){X.call(this,null==e?"canceled":e,X.ERR_CANCELED,t,r),this.name="CanceledError"}H.inherits(_e,X,{__CANCEL__:!0});const xe=_e;function Pe(e,t,r){const s=r.config.validateStatus;r.status&&s&&!s(r.status)?t(new X("Request failed with status code "+r.status,[X.ERR_BAD_REQUEST,X.ERR_BAD_RESPONSE][Math.floor(r.status/100)-4],r.config,r.request,r)):e(r)}const Ue=(e,t,r=3)=>{let s=0;const n=function(e,t){e=e||10;const r=new Array(e),s=new Array(e);let n,o=0,a=0;return t=void 0!==t?t:1e3,function(i){const c=Date.now(),u=s[a];n||(n=c),r[o]=i,s[o]=c;let l=a,d=0;for(;l!==o;)d+=r[l++],l%=e;if(o=(o+1)%e,o===a&&(a=(a+1)%e),c-n<t)return;const f=u&&c-u;return f?Math.round(1e3*d/f):void 0}}(50,250);return function(e,t){let r,s,n=0,o=1e3/t;const a=(t,o=Date.now())=>{n=o,r=null,s&&(clearTimeout(s),s=null),e.apply(null,t)};return[(...e)=>{const t=Date.now(),i=t-n;i>=o?a(e,t):(r=e,s||(s=setTimeout((()=>{s=null,a(r)}),o-i)))},()=>r&&a(r)]}((r=>{const o=r.loaded,a=r.lengthComputable?r.total:void 0,i=o-s,c=n(i);s=o,e({loaded:o,total:a,progress:a?o/a:void 0,bytes:i,rate:c||void 0,estimated:c&&a&&o<=a?(a-o)/c:void 0,event:r,lengthComputable:null!=a,[t?"download":"upload"]:!0})}),r)},qe=(e,t)=>{const r=null!=e;return[s=>t[0]({lengthComputable:r,total:e,loaded:s}),t[1]]},Fe=e=>(...t)=>H.asap((()=>e(...t))),Ne=ye.hasStandardBrowserEnv?((e,t)=>r=>(r=new URL(r,ye.origin),e.protocol===r.protocol&&e.host===r.host&&(t||e.port===r.port)))(new URL(ye.origin),ye.navigator&&/(msie|trident)/i.test(ye.navigator.userAgent)):()=>!0,je=ye.hasStandardBrowserEnv?{write(e,t,r,s,n,o){const a=[e+"="+encodeURIComponent(t)];H.isNumber(r)&&a.push("expires="+new Date(r).toGMTString()),H.isString(s)&&a.push("path="+s),H.isString(n)&&a.push("domain="+n),!0===o&&a.push("secure"),document.cookie=a.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};function Be(e,t,r){let s=!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t);return e&&s||0==r?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}const Ie=e=>e instanceof Re?{...e}:e;function Le(e,t){t=t||{};const r={};function s(e,t,r,s){return H.isPlainObject(e)&&H.isPlainObject(t)?H.merge.call({caseless:s},e,t):H.isPlainObject(t)?H.merge({},t):H.isArray(t)?t.slice():t}function n(e,t,r,n){return H.isUndefined(t)?H.isUndefined(e)?void 0:s(void 0,e,0,n):s(e,t,0,n)}function o(e,t){if(!H.isUndefined(t))return s(void 0,t)}function a(e,t){return H.isUndefined(t)?H.isUndefined(e)?void 0:s(void 0,e):s(void 0,t)}function i(r,n,o){return o in t?s(r,n):o in e?s(void 0,r):void 0}const c={url:o,method:o,data:o,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:i,headers:(e,t,r)=>n(Ie(e),Ie(t),0,!0)};return H.forEach(Object.keys(Object.assign({},e,t)),(function(s){const o=c[s]||n,a=o(e[s],t[s],s);H.isUndefined(a)&&o!==i||(r[s]=a)})),r}const De=e=>{const t=Le({},e);let r,{data:s,withXSRFToken:n,xsrfHeaderName:o,xsrfCookieName:a,headers:i,auth:c}=t;if(t.headers=i=Re.from(i),t.url=ie(Be(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),c&&i.set("Authorization","Basic "+btoa((c.username||"")+":"+(c.password?unescape(encodeURIComponent(c.password)):""))),H.isFormData(s))if(ye.hasStandardBrowserEnv||ye.hasStandardBrowserWebWorkerEnv)i.setContentType(void 0);else if(!1!==(r=i.getContentType())){const[e,...t]=r?r.split(";").map((e=>e.trim())).filter(Boolean):[];i.setContentType([e||"multipart/form-data",...t].join("; "))}if(ye.hasStandardBrowserEnv&&(n&&H.isFunction(n)&&(n=n(t)),n||!1!==n&&Ne(t.url))){const e=o&&a&&je.read(a);e&&i.set(o,e)}return t},$e="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise((function(t,r){const s=De(e);let n=s.data;const o=Re.from(s.headers).normalize();let a,i,c,u,l,{responseType:d,onUploadProgress:f,onDownloadProgress:h}=s;function p(){u&&u(),l&&l(),s.cancelToken&&s.cancelToken.unsubscribe(a),s.signal&&s.signal.removeEventListener("abort",a)}let m=new XMLHttpRequest;function y(){if(!m)return;const s=Re.from("getAllResponseHeaders"in m&&m.getAllResponseHeaders());Pe((function(e){t(e),p()}),(function(e){r(e),p()}),{data:d&&"text"!==d&&"json"!==d?m.response:m.responseText,status:m.status,statusText:m.statusText,headers:s,config:e,request:m}),m=null}m.open(s.method.toUpperCase(),s.url,!0),m.timeout=s.timeout,"onloadend"in m?m.onloadend=y:m.onreadystatechange=function(){m&&4===m.readyState&&(0!==m.status||m.responseURL&&0===m.responseURL.indexOf("file:"))&&setTimeout(y)},m.onabort=function(){m&&(r(new X("Request aborted",X.ECONNABORTED,e,m)),m=null)},m.onerror=function(){r(new X("Network Error",X.ERR_NETWORK,e,m)),m=null},m.ontimeout=function(){let t=s.timeout?"timeout of "+s.timeout+"ms exceeded":"timeout exceeded";const n=s.transitional||ue;s.timeoutErrorMessage&&(t=s.timeoutErrorMessage),r(new X(t,n.clarifyTimeoutError?X.ETIMEDOUT:X.ECONNABORTED,e,m)),m=null},void 0===n&&o.setContentType(null),"setRequestHeader"in m&&H.forEach(o.toJSON(),(function(e,t){m.setRequestHeader(t,e)})),H.isUndefined(s.withCredentials)||(m.withCredentials=!!s.withCredentials),d&&"json"!==d&&(m.responseType=s.responseType),h&&([c,l]=Ue(h,!0),m.addEventListener("progress",c)),f&&m.upload&&([i,u]=Ue(f),m.upload.addEventListener("progress",i),m.upload.addEventListener("loadend",u)),(s.cancelToken||s.signal)&&(a=t=>{m&&(r(!t||t.type?new xe(null,e,m):t),m.abort(),m=null)},s.cancelToken&&s.cancelToken.subscribe(a),s.signal&&(s.signal.aborted?a():s.signal.addEventListener("abort",a)));const g=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(s.url);g&&-1===ye.protocols.indexOf(g)?r(new X("Unsupported protocol "+g+":",X.ERR_BAD_REQUEST,e)):m.send(n||null)}))},ze=(e,t)=>{const{length:r}=e=e?e.filter(Boolean):[];if(t||r){let r,s=new AbortController;const n=function(e){if(!r){r=!0,a();const t=e instanceof Error?e:this.reason;s.abort(t instanceof X?t:new xe(t instanceof Error?t.message:t))}};let o=t&&setTimeout((()=>{o=null,n(new X(`timeout ${t} of ms exceeded`,X.ETIMEDOUT))}),t);const a=()=>{e&&(o&&clearTimeout(o),o=null,e.forEach((e=>{e.unsubscribe?e.unsubscribe(n):e.removeEventListener("abort",n)})),e=null)};e.forEach((e=>e.addEventListener("abort",n)));const{signal:i}=s;return i.unsubscribe=()=>H.asap(a),i}},Me=function*(e,t){let r=e.byteLength;if(!t||r<t)return void(yield e);let s,n=0;for(;n<r;)s=n+t,yield e.slice(n,s),n=s},Ke=(e,t,r,s)=>{const n=async function*(e,t){for await(const r of async function*(e){if(e[Symbol.asyncIterator])return void(yield*e);const t=e.getReader();try{for(;;){const{done:e,value:r}=await t.read();if(e)break;yield r}}finally{await t.cancel()}}(e))yield*Me(r,t)}(e,t);let o,a=0,i=e=>{o||(o=!0,s&&s(e))};return new ReadableStream({async pull(e){try{const{done:t,value:s}=await n.next();if(t)return i(),void e.close();let o=s.byteLength;if(r){let e=a+=o;r(e)}e.enqueue(new Uint8Array(s))}catch(e){throw i(e),e}},cancel:e=>(i(e),n.return())},{highWaterMark:2})},Ge="function"==typeof fetch&&"function"==typeof Request&&"function"==typeof Response,He=Ge&&"function"==typeof ReadableStream,We=Ge&&("function"==typeof TextEncoder?(Je=new TextEncoder,e=>Je.encode(e)):async e=>new Uint8Array(await new Response(e).arrayBuffer()));var Je;const Ve=(e,...t)=>{try{return!!e(...t)}catch(e){return!1}},Xe=He&&Ve((()=>{let e=!1;const t=new Request(ye.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t})),Qe=He&&Ve((()=>H.isReadableStream(new Response("").body))),Ye={stream:Qe&&(e=>e.body)};var Ze;Ge&&(Ze=new Response,["text","arrayBuffer","blob","formData","stream"].forEach((e=>{!Ye[e]&&(Ye[e]=H.isFunction(Ze[e])?t=>t[e]():(t,r)=>{throw new X(`Response type '${e}' is not supported`,X.ERR_NOT_SUPPORT,r)})})));const et={http:null,xhr:$e,fetch:Ge&&(async e=>{let{url:t,method:r,data:s,signal:n,cancelToken:o,timeout:a,onDownloadProgress:i,onUploadProgress:c,responseType:u,headers:l,withCredentials:d="same-origin",fetchOptions:f}=De(e);u=u?(u+"").toLowerCase():"text";let h,p=ze([n,o&&o.toAbortSignal()],a);const m=p&&p.unsubscribe&&(()=>{p.unsubscribe()});let y;try{if(c&&Xe&&"get"!==r&&"head"!==r&&0!==(y=await(async(e,t)=>{const r=H.toFiniteNumber(e.getContentLength());return null==r?(async e=>{if(null==e)return 0;if(H.isBlob(e))return e.size;if(H.isSpecCompliantForm(e)){const t=new Request(ye.origin,{method:"POST",body:e});return(await t.arrayBuffer()).byteLength}return H.isArrayBufferView(e)||H.isArrayBuffer(e)?e.byteLength:(H.isURLSearchParams(e)&&(e+=""),H.isString(e)?(await We(e)).byteLength:void 0)})(t):r})(l,s))){let e,r=new Request(t,{method:"POST",body:s,duplex:"half"});if(H.isFormData(s)&&(e=r.headers.get("content-type"))&&l.setContentType(e),r.body){const[e,t]=qe(y,Ue(Fe(c)));s=Ke(r.body,65536,e,t)}}H.isString(d)||(d=d?"include":"omit");const n="credentials"in Request.prototype;h=new Request(t,{...f,signal:p,method:r.toUpperCase(),headers:l.normalize().toJSON(),body:s,duplex:"half",credentials:n?d:void 0});let o=await fetch(h);const a=Qe&&("stream"===u||"response"===u);if(Qe&&(i||a&&m)){const e={};["status","statusText","headers"].forEach((t=>{e[t]=o[t]}));const t=H.toFiniteNumber(o.headers.get("content-length")),[r,s]=i&&qe(t,Ue(Fe(i),!0))||[];o=new Response(Ke(o.body,65536,r,(()=>{s&&s(),m&&m()})),e)}u=u||"text";let g=await Ye[H.findKey(Ye,u)||"text"](o,e);return!a&&m&&m(),await new Promise(((t,r)=>{Pe(t,r,{data:g,headers:Re.from(o.headers),status:o.status,statusText:o.statusText,config:e,request:h})}))}catch(t){if(m&&m(),t&&"TypeError"===t.name&&/fetch/i.test(t.message))throw Object.assign(new X("Network Error",X.ERR_NETWORK,e,h),{cause:t.cause||t});throw X.from(t,t&&t.code,e,h)}})};H.forEach(et,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}}));const tt=e=>`- ${e}`,rt=e=>H.isFunction(e)||null===e||!1===e,st=e=>{e=H.isArray(e)?e:[e];const{length:t}=e;let r,s;const n={};for(let o=0;o<t;o++){let t;if(r=e[o],s=r,!rt(r)&&(s=et[(t=String(r)).toLowerCase()],void 0===s))throw new X(`Unknown adapter '${t}'`);if(s)break;n[t||"#"+o]=s}if(!s){const e=Object.entries(n).map((([e,t])=>`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build")));let r=t?e.length>1?"since :\n"+e.map(tt).join("\n"):" "+tt(e[0]):"as no adapter specified";throw new X("There is no suitable adapter to dispatch the request "+r,"ERR_NOT_SUPPORT")}return s};function nt(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new xe(null,e)}function ot(e){return nt(e),e.headers=Re.from(e.headers),e.data=Ae.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),st(e.adapter||be.adapter)(e).then((function(t){return nt(e),t.data=Ae.call(e,e.transformResponse,t),t.headers=Re.from(t.headers),t}),(function(t){return Ce(t)||(nt(e),t&&t.response&&(t.response.data=Ae.call(e,e.transformResponse,t.response),t.response.headers=Re.from(t.response.headers))),Promise.reject(t)}))}const at={};["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{at[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}}));const it={};at.transitional=function(e,t,r){function s(e,t){return"[Axios v1.8.3] Transitional option '"+e+"'"+t+(r?". "+r:"")}return(r,n,o)=>{if(!1===e)throw new X(s(n," has been removed"+(t?" in "+t:"")),X.ERR_DEPRECATED);return t&&!it[n]&&(it[n]=!0,console.warn(s(n," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,n,o)}},at.spelling=function(e){return(t,r)=>(console.warn(`${r} is likely a misspelling of ${e}`),!0)};const ct={assertOptions:function(e,t,r){if("object"!=typeof e)throw new X("options must be an object",X.ERR_BAD_OPTION_VALUE);const s=Object.keys(e);let n=s.length;for(;n-- >0;){const o=s[n],a=t[o];if(a){const t=e[o],r=void 0===t||a(t,o,e);if(!0!==r)throw new X("option "+o+" must be "+r,X.ERR_BAD_OPTION_VALUE)}else if(!0!==r)throw new X("Unknown option "+o,X.ERR_BAD_OPTION)}},validators:at},ut=ct.validators;class lt{constructor(e){this.defaults=e,this.interceptors={request:new ce,response:new ce}}async request(e,t){try{return await this._request(e,t)}catch(e){if(e instanceof Error){let t={};Error.captureStackTrace?Error.captureStackTrace(t):t=new Error;const r=t.stack?t.stack.replace(/^.+\n/,""):"";try{e.stack?r&&!String(e.stack).endsWith(r.replace(/^.+\n.+\n/,""))&&(e.stack+="\n"+r):e.stack=r}catch(e){}}throw e}}_request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=Le(this.defaults,t);const{transitional:r,paramsSerializer:s,headers:n}=t;void 0!==r&&ct.assertOptions(r,{silentJSONParsing:ut.transitional(ut.boolean),forcedJSONParsing:ut.transitional(ut.boolean),clarifyTimeoutError:ut.transitional(ut.boolean)},!1),null!=s&&(H.isFunction(s)?t.paramsSerializer={serialize:s}:ct.assertOptions(s,{encode:ut.function,serialize:ut.function},!0)),void 0!==t.allowAbsoluteUrls||(void 0!==this.defaults.allowAbsoluteUrls?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),ct.assertOptions(t,{baseUrl:ut.spelling("baseURL"),withXsrfToken:ut.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();let o=n&&H.merge(n.common,n[t.method]);n&&H.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete n[e]})),t.headers=Re.concat(o,n);const a=[];let i=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(i=i&&e.synchronous,a.unshift(e.fulfilled,e.rejected))}));const c=[];let u;this.interceptors.response.forEach((function(e){c.push(e.fulfilled,e.rejected)}));let l,d=0;if(!i){const e=[ot.bind(this),void 0];for(e.unshift.apply(e,a),e.push.apply(e,c),l=e.length,u=Promise.resolve(t);d<l;)u=u.then(e[d++],e[d++]);return u}l=a.length;let f=t;for(d=0;d<l;){const e=a[d++],t=a[d++];try{f=e(f)}catch(e){t.call(this,e);break}}try{u=ot.call(this,f)}catch(e){return Promise.reject(e)}for(d=0,l=c.length;d<l;)u=u.then(c[d++],c[d++]);return u}getUri(e){return ie(Be((e=Le(this.defaults,e)).baseURL,e.url,e.allowAbsoluteUrls),e.params,e.paramsSerializer)}}H.forEach(["delete","get","head","options"],(function(e){lt.prototype[e]=function(t,r){return this.request(Le(r||{},{method:e,url:t,data:(r||{}).data}))}})),H.forEach(["post","put","patch"],(function(e){function t(t){return function(r,s,n){return this.request(Le(n||{},{method:e,headers:t?{"Content-Type":"multipart/form-data"}:{},url:r,data:s}))}}lt.prototype[e]=t(),lt.prototype[e+"Form"]=t(!0)}));const dt=lt;class ft{constructor(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");let t;this.promise=new Promise((function(e){t=e}));const r=this;this.promise.then((e=>{if(!r._listeners)return;let t=r._listeners.length;for(;t-- >0;)r._listeners[t](e);r._listeners=null})),this.promise.then=e=>{let t;const s=new Promise((e=>{r.subscribe(e),t=e})).then(e);return s.cancel=function(){r.unsubscribe(t)},s},e((function(e,s,n){r.reason||(r.reason=new xe(e,s,n),t(r.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}toAbortSignal(){const e=new AbortController,t=t=>{e.abort(t)};return this.subscribe(t),e.signal.unsubscribe=()=>this.unsubscribe(t),e.signal}static source(){let e;return{token:new ft((function(t){e=t})),cancel:e}}}const ht=ft,pt={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(pt).forEach((([e,t])=>{pt[t]=e}));const mt=pt,yt=function e(t){const r=new dt(t),s=o(dt.prototype.request,r);return H.extend(s,dt.prototype,r,{allOwnKeys:!0}),H.extend(s,r,null,{allOwnKeys:!0}),s.create=function(r){return e(Le(t,r))},s}(be);yt.Axios=dt,yt.CanceledError=xe,yt.CancelToken=ht,yt.isCancel=Ce,yt.VERSION="1.8.3",yt.toFormData=te,yt.AxiosError=X,yt.Cancel=yt.CanceledError,yt.all=function(e){return Promise.all(e)},yt.spread=function(e){return function(t){return e.apply(null,t)}},yt.isAxiosError=function(e){return H.isObject(e)&&!0===e.isAxiosError},yt.mergeConfig=Le,yt.AxiosHeaders=Re,yt.formToJSON=e=>ge(H.isHTMLForm(e)?new FormData(e):e),yt.getAdapter=st,yt.HttpStatusCode=mt,yt.default=yt;const gt=yt;class wt{constructor(e){this.config=e,this.axiosInstance=gt.create({baseURL:e.apiUrl,headers:{"Content-Type":"application/json"}}),this.axiosInstance.interceptors.request.use((async e=>{if(!e.url||!["/auth/login","/auth/register","/auth/refresh"].some((t=>{var r;return(null===(r=e.url)||void 0===r?void 0:r.includes(t))&&"post"===e.method}))){const t=await this.getAccessToken();t&&(e.headers.Authorization=`Bearer ${t}`)}return e}),(e=>Promise.reject(e))),this.axiosInstance.interceptors.response.use((e=>e),(async e=>{var t;const r=e.config;if(401===(null===(t=e.response)||void 0===t?void 0:t.status)&&!r._retry){r._retry=!0;try{const e=await this.refreshToken();if(e)return await this.storeTokens(e),r.headers.Authorization=`Bearer ${e.accessToken}`,this.axiosInstance(r)}catch(e){return await this.clearTokens(),Promise.reject(e)}}return Promise.reject(e)})),e.tokenRefreshInterval&&this.setupTokenRefresh(e.tokenRefreshInterval)}async request(e){var t;try{return(await this.axiosInstance.request(e)).data}catch(e){return(null===(t=e.response)||void 0===t?void 0:t.data)?e.response.data:{success:!1,error:e.message||"Network error"}}}async getAccessToken(){if("undefined"==typeof window||"none"===this.config.storage)return null;switch(this.config.storage){case"local":default:return localStorage.getItem("oxy_access_token");case"session":return sessionStorage.getItem("oxy_access_token");case"cookie":const e=document.cookie.match(/(^|;)\s*oxy_access_token=([^;]+)/);return e?e[2]:null}}async getRefreshToken(){if("undefined"==typeof window||"none"===this.config.storage)return null;switch(this.config.storage){case"local":default:return localStorage.getItem("oxy_refresh_token");case"session":return sessionStorage.getItem("oxy_refresh_token");case"cookie":const e=document.cookie.match(/(^|;)\s*oxy_refresh_token=([^;]+)/);return e?e[2]:null}}async storeTokens(e){if("undefined"!=typeof window&&"none"!==this.config.storage)switch(this.config.storage){case"local":default:localStorage.setItem("oxy_access_token",e.accessToken),localStorage.setItem("oxy_refresh_token",e.refreshToken);break;case"session":sessionStorage.setItem("oxy_access_token",e.accessToken),sessionStorage.setItem("oxy_refresh_token",e.refreshToken);break;case"cookie":document.cookie=`oxy_access_token=${e.accessToken}; path=/;`,document.cookie=`oxy_refresh_token=${e.refreshToken}; path=/;`}}async clearTokens(){if("undefined"!=typeof window&&"none"!==this.config.storage){switch(this.config.storage){case"local":default:localStorage.removeItem("oxy_access_token"),localStorage.removeItem("oxy_refresh_token");break;case"session":sessionStorage.removeItem("oxy_access_token"),sessionStorage.removeItem("oxy_refresh_token");break;case"cookie":document.cookie="oxy_access_token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;",document.cookie="oxy_refresh_token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;"}this.tokenRefreshTimeout&&(clearTimeout(this.tokenRefreshTimeout),this.tokenRefreshTimeout=void 0)}}async refreshToken(){const e=await this.getRefreshToken();if(!e)return null;try{const t=await gt.post(`${this.config.apiUrl}/auth/refresh`,{refreshToken:e});return t.data.success&&t.data.data?t.data.data:null}catch(e){return null}}setupTokenRefresh(e){"undefined"!=typeof window&&(this.tokenRefreshTimeout=setTimeout((async()=>{try{const e=await this.refreshToken();e&&await this.storeTokens(e)}finally{this.setupTokenRefresh(e)}}),e))}}class bt{constructor(e){this.apiClient=new wt({apiUrl:e})}async login(e){return this.apiClient.request({method:"POST",url:"/auth/login",data:e})}async register(e){return this.apiClient.request({method:"POST",url:"/auth/signup",data:e})}async refreshToken(e){return this.apiClient.request({method:"POST",url:"/auth/refresh-token",data:{refreshToken:e}})}async logout(e){return this.apiClient.request({method:"POST",url:"/auth/logout",data:{refreshToken:e}})}async validateToken(e){return this.apiClient.request({method:"POST",url:"/auth/validate-token",data:{token:e}})}async getCurrentUser(e){return this.apiClient.request({method:"GET",url:"/auth/me",headers:{Authorization:`Bearer ${e}`}})}async checkUsernameAvailability(e){return this.apiClient.request({method:"GET",url:`/auth/check-username/${e}`})}}class Tt{constructor(e){this.apiClient=new wt({apiUrl:e})}async getUserById(e){return this.apiClient.request({method:"GET",url:`/users/${e}`})}async getUserByUsername(e){return this.apiClient.request({method:"GET",url:`/users/username/${e}`})}async updateUserProfile(e,t){return this.apiClient.request({method:"PUT",url:`/users/${e}`,data:t})}async updatePrivacySettings(e,t){return this.apiClient.request({method:"PUT",url:`/users/${e}/privacy`,data:t})}async getPrivacySettings(e){return this.apiClient.request({method:"GET",url:`/users/${e}/privacy`})}async getUserIdFromUsername(e){return this.apiClient.request({method:"GET",url:`/users/resolve/${e}`})}async followUser(e,t){return this.apiClient.request({method:"POST",url:`/users/${e}/follow`,data:{targetUserId:t}})}async unfollowUser(e,t){return this.apiClient.request({method:"POST",url:`/users/${e}/unfollow`,data:{targetUserId:t}})}}class kt{constructor(e){this.apiClient=new wt({apiUrl:e})}async getUserKarma(e){return this.apiClient.request({method:"GET",url:`/karma/${e}/total`})}async getUserKarmaHistory(e,t,r){const s={};return void 0!==t&&(s.limit=t.toString()),void 0!==r&&(s.offset=r.toString()),this.apiClient.request({method:"GET",url:`/karma/${e}/history`,params:s})}async awardKarma(e){return this.apiClient.request({method:"POST",url:"/karma/award",data:e})}async deductKarma(e){return this.apiClient.request({method:"POST",url:"/karma/deduct",data:e})}async getKarmaLeaderboard(e=10,t=0){return this.apiClient.request({method:"GET",url:"/karma/leaderboard",params:{limit:e,offset:t}})}async getKarmaRules(){return this.apiClient.request({method:"GET",url:"/karma/rules"})}async createOrUpdateKarmaRule(e){return this.apiClient.request({method:"POST",url:"/karma/rules",data:e})}}class St{constructor(e){this.apiClient=new wt({apiUrl:e})}async getWallet(e){return this.apiClient.request({method:"GET",url:`/wallet/${e}`})}async getTransactionHistory(e,t=10,r=0){return this.apiClient.request({method:"GET",url:`/wallet/transactions/${e}`,params:{limit:t,offset:r}})}async transferFunds(e){return this.apiClient.request({method:"POST",url:"/wallet/transfer",data:e})}async processPurchase(e){return this.apiClient.request({method:"POST",url:"/wallet/purchase",data:e})}async requestWithdrawal(e){return this.apiClient.request({method:"POST",url:"/wallet/withdraw",data:e})}async getTransaction(e){return this.apiClient.request({method:"GET",url:`/wallet/transaction/${e}`})}}var Et=r(953),vt=r(848);const Ot=(0,Et.createContext)({apiUrl:"",getToken:async()=>null,isAuthenticated:!1,setAuthTokens:async()=>{},clearAuth:async()=>{}}),Rt=()=>(0,Et.useContext)(Ot),At=({children:e,apiUrl:t,storage:r="local",tokenRefreshInterval:s})=>{const[n,o]=(0,Et.useState)(!1),[a,i]=(0,Et.useState)({accessToken:null,refreshToken:null}),c=()=>"undefined"!=typeof window&&window.navigator&&"ReactNative"===window.navigator.product,u=async()=>{if(c())try{return await Promise.resolve().then((function(){var e=new Error("Cannot find module 'expo-secure-store'");throw e.code="MODULE_NOT_FOUND",e}))}catch(e){return console.warn("expo-secure-store is not available"),null}return null},l=async()=>{if(c())try{return await Promise.resolve().then((function(){var e=new Error("Cannot find module '@react-native-async-storage/async-storage'");throw e.code="MODULE_NOT_FOUND",e}))}catch(e){return console.warn("@react-native-async-storage/async-storage is not available"),null}return null};(0,Et.useEffect)((()=>{(async()=>{const e=await d();o(!!e)})()}),[]);const d=async()=>{try{if("local"===r&&"undefined"!=typeof localStorage)return localStorage.getItem("accessToken");if("session"===r&&"undefined"!=typeof sessionStorage)return sessionStorage.getItem("accessToken");if("secure-store"===r){const e=await u();if(e)return await e.getItemAsync("accessToken")}else if("async-storage"===r){const e=await l();if(e&&e.default)return await e.default.getItem("accessToken")}else if("memory"===r||"none"===r)return a.accessToken;return null}catch(e){return console.error("Error getting auth token:",e),null}},f={apiUrl:t,getToken:d,isAuthenticated:n,setAuthTokens:async e=>{try{if("local"===r&&"undefined"!=typeof localStorage)localStorage.setItem("accessToken",e.accessToken),localStorage.setItem("refreshToken",e.refreshToken);else if("session"===r&&"undefined"!=typeof sessionStorage)sessionStorage.setItem("accessToken",e.accessToken),sessionStorage.setItem("refreshToken",e.refreshToken);else if("secure-store"===r){const t=await u();t?(await t.setItemAsync("accessToken",e.accessToken),await t.setItemAsync("refreshToken",e.refreshToken)):i(e)}else if("async-storage"===r){const t=await l();t&&t.default?(await t.default.setItem("accessToken",e.accessToken),await t.default.setItem("refreshToken",e.refreshToken)):i(e)}else"memory"!==r&&"none"!==r||i(e);o(!0)}catch(e){console.error("Error storing auth tokens:",e)}},clearAuth:async()=>{try{if("local"===r&&"undefined"!=typeof localStorage)localStorage.removeItem("accessToken"),localStorage.removeItem("refreshToken");else if("session"===r&&"undefined"!=typeof sessionStorage)sessionStorage.removeItem("accessToken"),sessionStorage.removeItem("refreshToken");else if("secure-store"===r){const e=await u();e&&(await e.deleteItemAsync("accessToken"),await e.deleteItemAsync("refreshToken"))}else if("async-storage"===r){const e=await l();e&&e.default&&(await e.default.removeItem("accessToken"),await e.default.removeItem("refreshToken"))}else"memory"!==r&&"none"!==r||i({accessToken:null,refreshToken:null});o(!1)}catch(e){console.error("Error clearing auth tokens:",e)}}};return(0,vt.jsx)(Ot.Provider,{value:f,children:e})},Ct=e=>{const t=Rt(),r=(null==e?void 0:e.apiUrl)||t.apiUrl;if(!r)throw new Error("API URL is required. Provide it either through options or OxyProvider.");const[s]=(0,Et.useState)((()=>new wt({apiUrl:r}))),[n,o]=(0,Et.useState)(null),[a,i]=(0,Et.useState)(!1),[c,u]=(0,Et.useState)(null),l=(0,Et.useCallback)((async()=>(null==e?void 0:e.storage)?"local"===e.storage?localStorage.getItem("oxy_access_token"):"session"===e.storage?sessionStorage.getItem("oxy_access_token"):null:await t.getToken()),[t,null==e?void 0:e.storage]),d=(0,Et.useCallback)((async r=>{const s=(null==e?void 0:e.storage)||"local";(null==e?void 0:e.storage)||!t.setAuthTokens?"local"===s?(localStorage.setItem("oxy_access_token",r.accessToken),localStorage.setItem("oxy_refresh_token",r.refreshToken)):"session"===s&&(sessionStorage.setItem("oxy_access_token",r.accessToken),sessionStorage.setItem("oxy_refresh_token",r.refreshToken)):await t.setAuthTokens(r)}),[t,null==e?void 0:e.storage]),f=(0,Et.useCallback)((async()=>{const r=(null==e?void 0:e.storage)||"local";(null==e?void 0:e.storage)||!t.clearAuth?"local"===r?(localStorage.removeItem("oxy_access_token"),localStorage.removeItem("oxy_refresh_token")):"session"===r&&(sessionStorage.removeItem("oxy_access_token"),sessionStorage.removeItem("oxy_refresh_token")):await t.clearAuth()}),[t,null==e?void 0:e.storage]),h=(0,Et.useCallback)((async()=>{const e=await l();if(!e)return{success:!1,error:"Not authenticated"};i(!0);try{const t=await s.request({method:"GET",url:"/auth/me",headers:{Authorization:`Bearer ${e}`}});return t.success&&t.data&&o(t.data),i(!1),t}catch(e){return i(!1),{success:!1,error:e.message||"Failed to get user profile"}}}),[s,l]),p=(0,Et.useCallback)((async e=>{if(i(!0),u(null),!e.username&&!e.email)return i(!1),u("Username or email is required"),{success:!1,error:"Username or email is required",details:{username:"Username or email is required",password:null}};if(!e.password)return i(!1),u("Password is required"),{success:!1,error:"Password is required",details:{username:null,password:"Password is required"}};try{const t=await s.request({method:"POST",url:"/auth/login",data:e});if(t.success&&t.data){const e={accessToken:t.data.accessToken,refreshToken:t.data.refreshToken};await s.storeTokens(e),await d(e),t.data.user?o(t.data.user):await h()}else u(t.error||"Login failed");return i(!1),t}catch(e){return u(e.message||"Login failed"),i(!1),{success:!1,error:e.message||"Login failed"}}}),[s,d,h]),m=(0,Et.useCallback)((async e=>{if(i(!0),u(null),!e.username)return i(!1),u("Username is required"),{success:!1,error:"Username is required",details:{username:"Username is required",email:null,password:null}};if(!e.email)return i(!1),u("Email is required"),{success:!1,error:"Email is required",details:{username:null,email:"Email is required",password:null}};if(!e.password)return i(!1),u("Password is required"),{success:!1,error:"Password is required",details:{username:null,email:null,password:"Password is required"}};try{const t=await s.request({method:"POST",url:"/auth/register",data:e});if(t.success&&t.data){const e={accessToken:t.data.accessToken,refreshToken:t.data.refreshToken};await s.storeTokens(e),await d(e),t.data.user?o(t.data.user):await h()}else u(t.error||"Registration failed");return i(!1),t}catch(e){return u(e.message||"Registration failed"),i(!1),{success:!1,error:e.message||"Registration failed"}}}),[s,d,h]),y=(0,Et.useCallback)((async()=>{await f(),o(null)}),[f]),g=(0,Et.useCallback)((async()=>!!await l()),[l]),w=(0,Et.useCallback)((async()=>{const t=(null==e?void 0:e.storage)||"local";let r=null;if("local"===t?r=localStorage.getItem("oxy_refresh_token"):"session"===t&&(r=sessionStorage.getItem("oxy_refresh_token")),!r)return{success:!1,error:"No refresh token available"};try{const e=await s.request({method:"POST",url:"/auth/refresh",data:{refreshToken:r}});return e.success&&e.data&&d(e.data),e}catch(e){return{success:!1,error:e.message||"Failed to refresh token"}}}),[s,null==e?void 0:e.storage,d]);return{user:n,loading:a,error:c,login:p,register:m,logout:y,isAuthenticated:g,getCurrentUser:h,refreshToken:w,getToken:l}},_t=e=>{const t=Rt(),r=(null==e?void 0:e.apiUrl)||t.apiUrl,s=(null==e?void 0:e.getToken)||t.getToken;if(!r)throw new Error("API URL is required. Provide it either through options or OxyProvider.");const[n]=(0,Et.useState)((()=>new wt({apiUrl:r})));return{getUserById:(0,Et.useCallback)((async e=>{try{return await n.request({method:"GET",url:`/users/${e}`,headers:s?{Authorization:`Bearer ${s()||""}`}:void 0})}catch(e){return{success:!1,error:e.message||"Failed to get user profile"}}}),[n,s]),updateUserProfile:(0,Et.useCallback)((async(e,t)=>{try{return s?await n.request({method:"PATCH",url:`/users/${e}`,data:t,headers:{Authorization:`Bearer ${s()||""}`}}):{success:!1,error:"Authentication token is required"}}catch(e){return{success:!1,error:e.message||"Failed to update user profile"}}}),[n,s]),getPrivacySettings:(0,Et.useCallback)((async e=>{try{return s?await n.request({method:"GET",url:`/privacy/${e}`,headers:{Authorization:`Bearer ${s()||""}`}}):{success:!1,error:"Authentication token is required"}}catch(e){return{success:!1,error:e.message||"Failed to get privacy settings"}}}),[n,s]),updatePrivacySettings:(0,Et.useCallback)((async(e,t)=>{try{return s?await n.request({method:"PATCH",url:`/privacy/${e}`,data:t,headers:{Authorization:`Bearer ${s()||""}`}}):{success:!1,error:"Authentication token is required"}}catch(e){return{success:!1,error:e.message||"Failed to update privacy settings"}}}),[n,s]),searchUsers:(0,Et.useCallback)((async(e,t=10)=>{try{return await n.request({method:"GET",url:"/users/search",params:{query:e,limit:t},headers:s?{Authorization:`Bearer ${s()||""}`}:void 0})}catch(e){return{success:!1,error:e.message||"Failed to search users"}}}),[n,s])}},xt=e=>{const t=Rt(),r=(null==e?void 0:e.apiUrl)||t.apiUrl,s=(null==e?void 0:e.getToken)||t.getToken;if(!r)throw new Error("API URL is required. Provide it either through options or OxyProvider.");const[n]=(0,Et.useState)((()=>new wt({apiUrl:r})));return{getUserKarma:(0,Et.useCallback)((async e=>{try{return await n.request({method:"GET",url:`/karma/${e}/total`,headers:s?{Authorization:`Bearer ${s()||""}`}:void 0})}catch(e){return{success:!1,error:e.message||"Failed to get karma"}}}),[n,s]),getUserKarmaHistory:(0,Et.useCallback)((async(e,t,r)=>{try{if(!s)return{success:!1,error:"Authentication token is required"};const o={};return void 0!==t&&(o.limit=t.toString()),void 0!==r&&(o.offset=r.toString()),await n.request({method:"GET",url:`/karma/${e}/history`,params:o,headers:{Authorization:`Bearer ${s()||""}`}})}catch(e){return{success:!1,error:e.message||"Failed to get karma history"}}}),[n,s]),awardKarma:(0,Et.useCallback)((async e=>{try{return s?await n.request({method:"POST",url:"/karma/award",data:e,headers:{Authorization:`Bearer ${s()||""}`}}):{success:!1,error:"Authentication token is required"}}catch(e){return{success:!1,error:e.message||"Failed to award karma"}}}),[n,s]),deductKarma:(0,Et.useCallback)((async e=>{try{return s?await n.request({method:"POST",url:"/karma/deduct",data:e,headers:{Authorization:`Bearer ${s()||""}`}}):{success:!1,error:"Authentication token is required"}}catch(e){return{success:!1,error:e.message||"Failed to deduct karma"}}}),[n,s]),getKarmaLeaderboard:(0,Et.useCallback)((async(e=10,t=0)=>{try{return await n.request({method:"GET",url:"/karma/leaderboard",params:{limit:e,offset:t},headers:s?{Authorization:`Bearer ${s()||""}`}:void 0})}catch(e){return{success:!1,error:e.message||"Failed to get karma leaderboard"}}}),[n,s]),getKarmaRules:(0,Et.useCallback)((async()=>{try{return await n.request({method:"GET",url:"/karma/rules",headers:s?{Authorization:`Bearer ${s()||""}`}:void 0})}catch(e){return{success:!1,error:e.message||"Failed to get karma rules"}}}),[n,s]),createOrUpdateKarmaRule:(0,Et.useCallback)((async e=>{try{return s?await n.request({method:"POST",url:"/karma/rules",data:e,headers:{Authorization:`Bearer ${s()||""}`}}):{success:!1,error:"Authentication token is required"}}catch(e){return{success:!1,error:e.message||"Failed to create or update karma rule"}}}),[n,s])}},Pt=e=>{const t=Rt(),r=(null==e?void 0:e.apiUrl)||t.apiUrl,s=(null==e?void 0:e.getToken)||t.getToken;if(!r)throw new Error("API URL is required. Provide it either through options or OxyProvider.");const[n]=(0,Et.useState)((()=>new wt({apiUrl:r})));return{getWallet:(0,Et.useCallback)((async e=>{try{return s?await n.request({method:"GET",url:`/wallet/${e}`,headers:{Authorization:`Bearer ${s()||""}`}}):{success:!1,error:"Authentication token is required"}}catch(e){return{success:!1,error:e.message||"Failed to get wallet information"}}}),[n,s]),getTransactionHistory:(0,Et.useCallback)((async(e,t=10,r=0)=>{try{return s?await n.request({method:"GET",url:`/wallet/transactions/${e}`,params:{limit:t,offset:r},headers:{Authorization:`Bearer ${s()||""}`}}):{success:!1,error:"Authentication token is required"}}catch(e){return{success:!1,error:e.message||"Failed to get transaction history"}}}),[n,s]),transferFunds:(0,Et.useCallback)((async e=>{try{return s?await n.request({method:"POST",url:"/wallet/transfer",data:e,headers:{Authorization:`Bearer ${s()||""}`}}):{success:!1,error:"Authentication token is required"}}catch(e){return{success:!1,error:e.message||"Failed to transfer funds"}}}),[n,s]),processPurchase:(0,Et.useCallback)((async e=>{try{return s?await n.request({method:"POST",url:"/wallet/purchase",data:e,headers:{Authorization:`Bearer ${s()||""}`}}):{success:!1,error:"Authentication token is required"}}catch(e){return{success:!1,error:e.message||"Failed to process purchase"}}}),[n,s]),requestWithdrawal:(0,Et.useCallback)((async e=>{try{return s?await n.request({method:"POST",url:"/wallet/withdraw",data:e,headers:{Authorization:`Bearer ${s()||""}`}}):{success:!1,error:"Authentication token is required"}}catch(e){return{success:!1,error:e.message||"Failed to request withdrawal"}}}),[n,s]),getTransaction:(0,Et.useCallback)((async e=>{try{return s?await n.request({method:"GET",url:`/wallet/transaction/${e}`,headers:{Authorization:`Bearer ${s()||""}`}}):{success:!1,error:"Authentication token is required"}}catch(e){return{success:!1,error:e.message||"Failed to get transaction"}}}),[n,s])}};module.exports=s})();
2
+ (()=>{"use strict";var e={20:(e,t,r)=>{var s=r(953),o=Symbol.for("react.element"),n=(Symbol.for("react.fragment"),Object.prototype.hasOwnProperty),a=s.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,i={key:!0,ref:!0,__self:!0,__source:!0};t.jsx=function(e,t,r){var s,c={},l=null,u=null;for(s in void 0!==r&&(l=""+r),void 0!==t.key&&(l=""+t.key),void 0!==t.ref&&(u=t.ref),t)n.call(t,s)&&!i.hasOwnProperty(s)&&(c[s]=t[s]);if(e&&e.defaultProps)for(s in t=e.defaultProps)void 0===c[s]&&(c[s]=t[s]);return{$$typeof:o,type:e,key:l,ref:u,props:c,_owner:a.current}}},848:(e,t,r)=>{e.exports=r(20)},953:e=>{e.exports=require("react")}},t={};function r(s){var o=t[s];if(void 0!==o)return o.exports;var n=t[s]={exports:{}};return e[s](n,n.exports,r),n.exports}r.d=(e,t)=>{for(var s in t)r.o(t,s)&&!r.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};r.r(s),r.d(s,{OxyAuthBackend:()=>kt,OxyKarmaBackend:()=>Tt,OxyProvider:()=>Rt,OxyUsersBackend:()=>bt,OxyWalletBackend:()=>St,useAuth:()=>xt,useKarma:()=>Ct,useOxyContext:()=>Ot,useUser:()=>At,useWallet:()=>Ut});var o={};function n(e,t){return function(){return e.apply(t,arguments)}}r.r(o),r.d(o,{hasBrowserEnv:()=>de,hasStandardBrowserEnv:()=>he,hasStandardBrowserWebWorkerEnv:()=>pe,navigator:()=>fe,origin:()=>me});const{toString:a}=Object.prototype,{getPrototypeOf:i}=Object,c=(l=Object.create(null),e=>{const t=a.call(e);return l[t]||(l[t]=t.slice(8,-1).toLowerCase())});var l;const u=e=>(e=e.toLowerCase(),t=>c(t)===e),d=e=>t=>typeof t===e,{isArray:f}=Array,h=d("undefined"),p=u("ArrayBuffer"),m=d("string"),g=d("function"),y=d("number"),w=e=>null!==e&&"object"==typeof e,k=e=>{if("object"!==c(e))return!1;const t=i(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)},b=u("Date"),T=u("File"),S=u("Blob"),E=u("FileList"),v=u("URLSearchParams"),[_,O,R,x]=["ReadableStream","Request","Response","Headers"].map(u);function A(e,t,{allOwnKeys:r=!1}={}){if(null==e)return;let s,o;if("object"!=typeof e&&(e=[e]),f(e))for(s=0,o=e.length;s<o;s++)t.call(null,e[s],s,e);else{const o=r?Object.getOwnPropertyNames(e):Object.keys(e),n=o.length;let a;for(s=0;s<n;s++)a=o[s],t.call(null,e[a],a,e)}}function C(e,t){t=t.toLowerCase();const r=Object.keys(e);let s,o=r.length;for(;o-- >0;)if(s=r[o],t===s.toLowerCase())return s;return null}const U="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,P=e=>!h(e)&&e!==U,q=(N="undefined"!=typeof Uint8Array&&i(Uint8Array),e=>N&&e instanceof N);var N;const F=u("HTMLFormElement"),I=(({hasOwnProperty:e})=>(t,r)=>e.call(t,r))(Object.prototype),j=u("RegExp"),B=(e,t)=>{const r=Object.getOwnPropertyDescriptors(e),s={};A(r,((r,o)=>{let n;!1!==(n=t(r,o,e))&&(s[o]=n||r)})),Object.defineProperties(e,s)},L=u("AsyncFunction"),D=($="function"==typeof setImmediate,z=g(U.postMessage),$?setImmediate:z?(M=`axios@${Math.random()}`,K=[],U.addEventListener("message",(({source:e,data:t})=>{e===U&&t===M&&K.length&&K.shift()()}),!1),e=>{K.push(e),U.postMessage(M,"*")}):e=>setTimeout(e));var $,z,M,K;const G="undefined"!=typeof queueMicrotask?queueMicrotask.bind(U):"undefined"!=typeof process&&process.nextTick||D,H={isArray:f,isArrayBuffer:p,isBuffer:function(e){return null!==e&&!h(e)&&null!==e.constructor&&!h(e.constructor)&&g(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||g(e.append)&&("formdata"===(t=c(e))||"object"===t&&g(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&p(e.buffer),t},isString:m,isNumber:y,isBoolean:e=>!0===e||!1===e,isObject:w,isPlainObject:k,isReadableStream:_,isRequest:O,isResponse:R,isHeaders:x,isUndefined:h,isDate:b,isFile:T,isBlob:S,isRegExp:j,isFunction:g,isStream:e=>w(e)&&g(e.pipe),isURLSearchParams:v,isTypedArray:q,isFileList:E,forEach:A,merge:function e(){const{caseless:t}=P(this)&&this||{},r={},s=(s,o)=>{const n=t&&C(r,o)||o;k(r[n])&&k(s)?r[n]=e(r[n],s):k(s)?r[n]=e({},s):f(s)?r[n]=s.slice():r[n]=s};for(let e=0,t=arguments.length;e<t;e++)arguments[e]&&A(arguments[e],s);return r},extend:(e,t,r,{allOwnKeys:s}={})=>(A(t,((t,s)=>{r&&g(t)?e[s]=n(t,r):e[s]=t}),{allOwnKeys:s}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,r,s)=>{e.prototype=Object.create(t.prototype,s),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},toFlatObject:(e,t,r,s)=>{let o,n,a;const c={};if(t=t||{},null==e)return t;do{for(o=Object.getOwnPropertyNames(e),n=o.length;n-- >0;)a=o[n],s&&!s(a,e,t)||c[a]||(t[a]=e[a],c[a]=!0);e=!1!==r&&i(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:c,kindOfTest:u,endsWith:(e,t,r)=>{e=String(e),(void 0===r||r>e.length)&&(r=e.length),r-=t.length;const s=e.indexOf(t,r);return-1!==s&&s===r},toArray:e=>{if(!e)return null;if(f(e))return e;let t=e.length;if(!y(t))return null;const r=new Array(t);for(;t-- >0;)r[t]=e[t];return r},forEachEntry:(e,t)=>{const r=(e&&e[Symbol.iterator]).call(e);let s;for(;(s=r.next())&&!s.done;){const r=s.value;t.call(e,r[0],r[1])}},matchAll:(e,t)=>{let r;const s=[];for(;null!==(r=e.exec(t));)s.push(r);return s},isHTMLForm:F,hasOwnProperty:I,hasOwnProp:I,reduceDescriptors:B,freezeMethods:e=>{B(e,((t,r)=>{if(g(e)&&-1!==["arguments","caller","callee"].indexOf(r))return!1;const s=e[r];g(s)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")}))}))},toObjectSet:(e,t)=>{const r={},s=e=>{e.forEach((e=>{r[e]=!0}))};return f(e)?s(e):s(String(e).split(t)),r},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r})),noop:()=>{},toFiniteNumber:(e,t)=>null!=e&&Number.isFinite(e=+e)?e:t,findKey:C,global:U,isContextDefined:P,isSpecCompliantForm:function(e){return!!(e&&g(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:e=>{const t=new Array(10),r=(e,s)=>{if(w(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[s]=e;const o=f(e)?[]:{};return A(e,((e,t)=>{const n=r(e,s+1);!h(n)&&(o[t]=n)})),t[s]=void 0,o}}return e};return r(e,0)},isAsyncFn:L,isThenable:e=>e&&(w(e)||g(e))&&g(e.then)&&g(e.catch),setImmediate:D,asap:G};function W(e,t,r,s,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),s&&(this.request=s),o&&(this.response=o,this.status=o.status?o.status:null)}H.inherits(W,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:H.toJSONObject(this.config),code:this.code,status:this.status}}});const J=W.prototype,V={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{V[e]={value:e}})),Object.defineProperties(W,V),Object.defineProperty(J,"isAxiosError",{value:!0}),W.from=(e,t,r,s,o,n)=>{const a=Object.create(J);return H.toFlatObject(e,a,(function(e){return e!==Error.prototype}),(e=>"isAxiosError"!==e)),W.call(a,e.message,t,r,s,o),a.cause=e,a.name=e.name,n&&Object.assign(a,n),a};const X=W;function Q(e){return H.isPlainObject(e)||H.isArray(e)}function Y(e){return H.endsWith(e,"[]")?e.slice(0,-2):e}function Z(e,t,r){return e?e.concat(t).map((function(e,t){return e=Y(e),!r&&t?"["+e+"]":e})).join(r?".":""):t}const ee=H.toFlatObject(H,{},null,(function(e){return/^is[A-Z]/.test(e)})),te=function(e,t,r){if(!H.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const s=(r=H.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!H.isUndefined(t[e])}))).metaTokens,o=r.visitor||l,n=r.dots,a=r.indexes,i=(r.Blob||"undefined"!=typeof Blob&&Blob)&&H.isSpecCompliantForm(t);if(!H.isFunction(o))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if(H.isDate(e))return e.toISOString();if(!i&&H.isBlob(e))throw new X("Blob is not supported. Use a Buffer instead.");return H.isArrayBuffer(e)||H.isTypedArray(e)?i&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function l(e,r,o){let i=e;if(e&&!o&&"object"==typeof e)if(H.endsWith(r,"{}"))r=s?r:r.slice(0,-2),e=JSON.stringify(e);else if(H.isArray(e)&&function(e){return H.isArray(e)&&!e.some(Q)}(e)||(H.isFileList(e)||H.endsWith(r,"[]"))&&(i=H.toArray(e)))return r=Y(r),i.forEach((function(e,s){!H.isUndefined(e)&&null!==e&&t.append(!0===a?Z([r],s,n):null===a?r:r+"[]",c(e))})),!1;return!!Q(e)||(t.append(Z(o,r,n),c(e)),!1)}const u=[],d=Object.assign(ee,{defaultVisitor:l,convertValue:c,isVisitable:Q});if(!H.isObject(e))throw new TypeError("data must be an object");return function e(r,s){if(!H.isUndefined(r)){if(-1!==u.indexOf(r))throw Error("Circular reference detected in "+s.join("."));u.push(r),H.forEach(r,(function(r,n){!0===(!(H.isUndefined(r)||null===r)&&o.call(t,r,H.isString(n)?n.trim():n,s,d))&&e(r,s?s.concat(n):[n])})),u.pop()}}(e),t};function re(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function se(e,t){this._pairs=[],e&&te(e,this,t)}const oe=se.prototype;oe.append=function(e,t){this._pairs.push([e,t])},oe.toString=function(e){const t=e?function(t){return e.call(this,t,re)}:re;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};const ne=se;function ae(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function ie(e,t,r){if(!t)return e;const s=r&&r.encode||ae;H.isFunction(r)&&(r={serialize:r});const o=r&&r.serialize;let n;if(n=o?o(t,r):H.isURLSearchParams(t)?t.toString():new ne(t,r).toString(s),n){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+n}return e}const ce=class{constructor(){this.handlers=[]}use(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){H.forEach(this.handlers,(function(t){null!==t&&e(t)}))}},le={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},ue={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:ne,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},de="undefined"!=typeof window&&"undefined"!=typeof document,fe="object"==typeof navigator&&navigator||void 0,he=de&&(!fe||["ReactNative","NativeScript","NS"].indexOf(fe.product)<0),pe="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,me=de&&window.location.href||"http://localhost",ge={...o,...ue},ye=function(e){function t(e,r,s,o){let n=e[o++];if("__proto__"===n)return!0;const a=Number.isFinite(+n),i=o>=e.length;return n=!n&&H.isArray(s)?s.length:n,i?(H.hasOwnProp(s,n)?s[n]=[s[n],r]:s[n]=r,!a):(s[n]&&H.isObject(s[n])||(s[n]=[]),t(e,r,s[n],o)&&H.isArray(s[n])&&(s[n]=function(e){const t={},r=Object.keys(e);let s;const o=r.length;let n;for(s=0;s<o;s++)n=r[s],t[n]=e[n];return t}(s[n])),!a)}if(H.isFormData(e)&&H.isFunction(e.entries)){const r={};return H.forEachEntry(e,((e,s)=>{t(function(e){return H.matchAll(/\w+|\[(\w*)]/g,e).map((e=>"[]"===e[0]?"":e[1]||e[0]))}(e),s,r,0)})),r}return null},we={transitional:le,adapter:["xhr","http","fetch"],transformRequest:[function(e,t){const r=t.getContentType()||"",s=r.indexOf("application/json")>-1,o=H.isObject(e);if(o&&H.isHTMLForm(e)&&(e=new FormData(e)),H.isFormData(e))return s?JSON.stringify(ye(e)):e;if(H.isArrayBuffer(e)||H.isBuffer(e)||H.isStream(e)||H.isFile(e)||H.isBlob(e)||H.isReadableStream(e))return e;if(H.isArrayBufferView(e))return e.buffer;if(H.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let n;if(o){if(r.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return te(e,new ge.classes.URLSearchParams,Object.assign({visitor:function(e,t,r,s){return ge.isNode&&H.isBuffer(e)?(this.append(t,e.toString("base64")),!1):s.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((n=H.isFileList(e))||r.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return te(n?{"files[]":e}:e,t&&new t,this.formSerializer)}}return o||s?(t.setContentType("application/json",!1),function(e){if(H.isString(e))try{return(0,JSON.parse)(e),H.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(0,JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||we.transitional,r=t&&t.forcedJSONParsing,s="json"===this.responseType;if(H.isResponse(e)||H.isReadableStream(e))return e;if(e&&H.isString(e)&&(r&&!this.responseType||s)){const r=!(t&&t.silentJSONParsing)&&s;try{return JSON.parse(e)}catch(e){if(r){if("SyntaxError"===e.name)throw X.from(e,X.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:ge.classes.FormData,Blob:ge.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};H.forEach(["delete","get","head","post","put","patch"],(e=>{we.headers[e]={}}));const ke=we,be=H.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),Te=Symbol("internals");function Se(e){return e&&String(e).trim().toLowerCase()}function Ee(e){return!1===e||null==e?e:H.isArray(e)?e.map(Ee):String(e)}function ve(e,t,r,s,o){return H.isFunction(s)?s.call(this,t,r):(o&&(t=r),H.isString(t)?H.isString(s)?-1!==t.indexOf(s):H.isRegExp(s)?s.test(t):void 0:void 0)}class _e{constructor(e){e&&this.set(e)}set(e,t,r){const s=this;function o(e,t,r){const o=Se(t);if(!o)throw new Error("header name must be a non-empty string");const n=H.findKey(s,o);(!n||void 0===s[n]||!0===r||void 0===r&&!1!==s[n])&&(s[n||t]=Ee(e))}const n=(e,t)=>H.forEach(e,((e,r)=>o(e,r,t)));if(H.isPlainObject(e)||e instanceof this.constructor)n(e,t);else if(H.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))n((e=>{const t={};let r,s,o;return e&&e.split("\n").forEach((function(e){o=e.indexOf(":"),r=e.substring(0,o).trim().toLowerCase(),s=e.substring(o+1).trim(),!r||t[r]&&be[r]||("set-cookie"===r?t[r]?t[r].push(s):t[r]=[s]:t[r]=t[r]?t[r]+", "+s:s)})),t})(e),t);else if(H.isHeaders(e))for(const[t,s]of e.entries())o(s,t,r);else null!=e&&o(t,e,r);return this}get(e,t){if(e=Se(e)){const r=H.findKey(this,e);if(r){const e=this[r];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let s;for(;s=r.exec(e);)t[s[1]]=s[2];return t}(e);if(H.isFunction(t))return t.call(this,e,r);if(H.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=Se(e)){const r=H.findKey(this,e);return!(!r||void 0===this[r]||t&&!ve(0,this[r],r,t))}return!1}delete(e,t){const r=this;let s=!1;function o(e){if(e=Se(e)){const o=H.findKey(r,e);!o||t&&!ve(0,r[o],o,t)||(delete r[o],s=!0)}}return H.isArray(e)?e.forEach(o):o(e),s}clear(e){const t=Object.keys(this);let r=t.length,s=!1;for(;r--;){const o=t[r];e&&!ve(0,this[o],o,e,!0)||(delete this[o],s=!0)}return s}normalize(e){const t=this,r={};return H.forEach(this,((s,o)=>{const n=H.findKey(r,o);if(n)return t[n]=Ee(s),void delete t[o];const a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,r)=>t.toUpperCase()+r))}(o):String(o).trim();a!==o&&delete t[o],t[a]=Ee(s),r[a]=!0})),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return H.forEach(this,((r,s)=>{null!=r&&!1!==r&&(t[s]=e&&H.isArray(r)?r.join(", "):r)})),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const r=new this(e);return t.forEach((e=>r.set(e))),r}static accessor(e){const t=(this[Te]=this[Te]={accessors:{}}).accessors,r=this.prototype;function s(e){const s=Se(e);t[s]||(function(e,t){const r=H.toCamelCase(" "+t);["get","set","has"].forEach((s=>{Object.defineProperty(e,s+r,{value:function(e,r,o){return this[s].call(this,t,e,r,o)},configurable:!0})}))}(r,e),t[s]=!0)}return H.isArray(e)?e.forEach(s):s(e),this}}_e.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),H.reduceDescriptors(_e.prototype,(({value:e},t)=>{let r=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[r]=e}}})),H.freezeMethods(_e);const Oe=_e;function Re(e,t){const r=this||ke,s=t||r,o=Oe.from(s.headers);let n=s.data;return H.forEach(e,(function(e){n=e.call(r,n,o.normalize(),t?t.status:void 0)})),o.normalize(),n}function xe(e){return!(!e||!e.__CANCEL__)}function Ae(e,t,r){X.call(this,null==e?"canceled":e,X.ERR_CANCELED,t,r),this.name="CanceledError"}H.inherits(Ae,X,{__CANCEL__:!0});const Ce=Ae;function Ue(e,t,r){const s=r.config.validateStatus;r.status&&s&&!s(r.status)?t(new X("Request failed with status code "+r.status,[X.ERR_BAD_REQUEST,X.ERR_BAD_RESPONSE][Math.floor(r.status/100)-4],r.config,r.request,r)):e(r)}const Pe=(e,t,r=3)=>{let s=0;const o=function(e,t){e=e||10;const r=new Array(e),s=new Array(e);let o,n=0,a=0;return t=void 0!==t?t:1e3,function(i){const c=Date.now(),l=s[a];o||(o=c),r[n]=i,s[n]=c;let u=a,d=0;for(;u!==n;)d+=r[u++],u%=e;if(n=(n+1)%e,n===a&&(a=(a+1)%e),c-o<t)return;const f=l&&c-l;return f?Math.round(1e3*d/f):void 0}}(50,250);return function(e,t){let r,s,o=0,n=1e3/t;const a=(t,n=Date.now())=>{o=n,r=null,s&&(clearTimeout(s),s=null),e.apply(null,t)};return[(...e)=>{const t=Date.now(),i=t-o;i>=n?a(e,t):(r=e,s||(s=setTimeout((()=>{s=null,a(r)}),n-i)))},()=>r&&a(r)]}((r=>{const n=r.loaded,a=r.lengthComputable?r.total:void 0,i=n-s,c=o(i);s=n,e({loaded:n,total:a,progress:a?n/a:void 0,bytes:i,rate:c||void 0,estimated:c&&a&&n<=a?(a-n)/c:void 0,event:r,lengthComputable:null!=a,[t?"download":"upload"]:!0})}),r)},qe=(e,t)=>{const r=null!=e;return[s=>t[0]({lengthComputable:r,total:e,loaded:s}),t[1]]},Ne=e=>(...t)=>H.asap((()=>e(...t))),Fe=ge.hasStandardBrowserEnv?((e,t)=>r=>(r=new URL(r,ge.origin),e.protocol===r.protocol&&e.host===r.host&&(t||e.port===r.port)))(new URL(ge.origin),ge.navigator&&/(msie|trident)/i.test(ge.navigator.userAgent)):()=>!0,Ie=ge.hasStandardBrowserEnv?{write(e,t,r,s,o,n){const a=[e+"="+encodeURIComponent(t)];H.isNumber(r)&&a.push("expires="+new Date(r).toGMTString()),H.isString(s)&&a.push("path="+s),H.isString(o)&&a.push("domain="+o),!0===n&&a.push("secure"),document.cookie=a.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};function je(e,t,r){let s=!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t);return e&&s||0==r?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}const Be=e=>e instanceof Oe?{...e}:e;function Le(e,t){t=t||{};const r={};function s(e,t,r,s){return H.isPlainObject(e)&&H.isPlainObject(t)?H.merge.call({caseless:s},e,t):H.isPlainObject(t)?H.merge({},t):H.isArray(t)?t.slice():t}function o(e,t,r,o){return H.isUndefined(t)?H.isUndefined(e)?void 0:s(void 0,e,0,o):s(e,t,0,o)}function n(e,t){if(!H.isUndefined(t))return s(void 0,t)}function a(e,t){return H.isUndefined(t)?H.isUndefined(e)?void 0:s(void 0,e):s(void 0,t)}function i(r,o,n){return n in t?s(r,o):n in e?s(void 0,r):void 0}const c={url:n,method:n,data:n,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:i,headers:(e,t,r)=>o(Be(e),Be(t),0,!0)};return H.forEach(Object.keys(Object.assign({},e,t)),(function(s){const n=c[s]||o,a=n(e[s],t[s],s);H.isUndefined(a)&&n!==i||(r[s]=a)})),r}const De=e=>{const t=Le({},e);let r,{data:s,withXSRFToken:o,xsrfHeaderName:n,xsrfCookieName:a,headers:i,auth:c}=t;if(t.headers=i=Oe.from(i),t.url=ie(je(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),c&&i.set("Authorization","Basic "+btoa((c.username||"")+":"+(c.password?unescape(encodeURIComponent(c.password)):""))),H.isFormData(s))if(ge.hasStandardBrowserEnv||ge.hasStandardBrowserWebWorkerEnv)i.setContentType(void 0);else if(!1!==(r=i.getContentType())){const[e,...t]=r?r.split(";").map((e=>e.trim())).filter(Boolean):[];i.setContentType([e||"multipart/form-data",...t].join("; "))}if(ge.hasStandardBrowserEnv&&(o&&H.isFunction(o)&&(o=o(t)),o||!1!==o&&Fe(t.url))){const e=n&&a&&Ie.read(a);e&&i.set(n,e)}return t},$e="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise((function(t,r){const s=De(e);let o=s.data;const n=Oe.from(s.headers).normalize();let a,i,c,l,u,{responseType:d,onUploadProgress:f,onDownloadProgress:h}=s;function p(){l&&l(),u&&u(),s.cancelToken&&s.cancelToken.unsubscribe(a),s.signal&&s.signal.removeEventListener("abort",a)}let m=new XMLHttpRequest;function g(){if(!m)return;const s=Oe.from("getAllResponseHeaders"in m&&m.getAllResponseHeaders());Ue((function(e){t(e),p()}),(function(e){r(e),p()}),{data:d&&"text"!==d&&"json"!==d?m.response:m.responseText,status:m.status,statusText:m.statusText,headers:s,config:e,request:m}),m=null}m.open(s.method.toUpperCase(),s.url,!0),m.timeout=s.timeout,"onloadend"in m?m.onloadend=g:m.onreadystatechange=function(){m&&4===m.readyState&&(0!==m.status||m.responseURL&&0===m.responseURL.indexOf("file:"))&&setTimeout(g)},m.onabort=function(){m&&(r(new X("Request aborted",X.ECONNABORTED,e,m)),m=null)},m.onerror=function(){r(new X("Network Error",X.ERR_NETWORK,e,m)),m=null},m.ontimeout=function(){let t=s.timeout?"timeout of "+s.timeout+"ms exceeded":"timeout exceeded";const o=s.transitional||le;s.timeoutErrorMessage&&(t=s.timeoutErrorMessage),r(new X(t,o.clarifyTimeoutError?X.ETIMEDOUT:X.ECONNABORTED,e,m)),m=null},void 0===o&&n.setContentType(null),"setRequestHeader"in m&&H.forEach(n.toJSON(),(function(e,t){m.setRequestHeader(t,e)})),H.isUndefined(s.withCredentials)||(m.withCredentials=!!s.withCredentials),d&&"json"!==d&&(m.responseType=s.responseType),h&&([c,u]=Pe(h,!0),m.addEventListener("progress",c)),f&&m.upload&&([i,l]=Pe(f),m.upload.addEventListener("progress",i),m.upload.addEventListener("loadend",l)),(s.cancelToken||s.signal)&&(a=t=>{m&&(r(!t||t.type?new Ce(null,e,m):t),m.abort(),m=null)},s.cancelToken&&s.cancelToken.subscribe(a),s.signal&&(s.signal.aborted?a():s.signal.addEventListener("abort",a)));const y=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(s.url);y&&-1===ge.protocols.indexOf(y)?r(new X("Unsupported protocol "+y+":",X.ERR_BAD_REQUEST,e)):m.send(o||null)}))},ze=(e,t)=>{const{length:r}=e=e?e.filter(Boolean):[];if(t||r){let r,s=new AbortController;const o=function(e){if(!r){r=!0,a();const t=e instanceof Error?e:this.reason;s.abort(t instanceof X?t:new Ce(t instanceof Error?t.message:t))}};let n=t&&setTimeout((()=>{n=null,o(new X(`timeout ${t} of ms exceeded`,X.ETIMEDOUT))}),t);const a=()=>{e&&(n&&clearTimeout(n),n=null,e.forEach((e=>{e.unsubscribe?e.unsubscribe(o):e.removeEventListener("abort",o)})),e=null)};e.forEach((e=>e.addEventListener("abort",o)));const{signal:i}=s;return i.unsubscribe=()=>H.asap(a),i}},Me=function*(e,t){let r=e.byteLength;if(!t||r<t)return void(yield e);let s,o=0;for(;o<r;)s=o+t,yield e.slice(o,s),o=s},Ke=(e,t,r,s)=>{const o=async function*(e,t){for await(const r of async function*(e){if(e[Symbol.asyncIterator])return void(yield*e);const t=e.getReader();try{for(;;){const{done:e,value:r}=await t.read();if(e)break;yield r}}finally{await t.cancel()}}(e))yield*Me(r,t)}(e,t);let n,a=0,i=e=>{n||(n=!0,s&&s(e))};return new ReadableStream({async pull(e){try{const{done:t,value:s}=await o.next();if(t)return i(),void e.close();let n=s.byteLength;if(r){let e=a+=n;r(e)}e.enqueue(new Uint8Array(s))}catch(e){throw i(e),e}},cancel:e=>(i(e),o.return())},{highWaterMark:2})},Ge="function"==typeof fetch&&"function"==typeof Request&&"function"==typeof Response,He=Ge&&"function"==typeof ReadableStream,We=Ge&&("function"==typeof TextEncoder?(Je=new TextEncoder,e=>Je.encode(e)):async e=>new Uint8Array(await new Response(e).arrayBuffer()));var Je;const Ve=(e,...t)=>{try{return!!e(...t)}catch(e){return!1}},Xe=He&&Ve((()=>{let e=!1;const t=new Request(ge.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t})),Qe=He&&Ve((()=>H.isReadableStream(new Response("").body))),Ye={stream:Qe&&(e=>e.body)};var Ze;Ge&&(Ze=new Response,["text","arrayBuffer","blob","formData","stream"].forEach((e=>{!Ye[e]&&(Ye[e]=H.isFunction(Ze[e])?t=>t[e]():(t,r)=>{throw new X(`Response type '${e}' is not supported`,X.ERR_NOT_SUPPORT,r)})})));const et={http:null,xhr:$e,fetch:Ge&&(async e=>{let{url:t,method:r,data:s,signal:o,cancelToken:n,timeout:a,onDownloadProgress:i,onUploadProgress:c,responseType:l,headers:u,withCredentials:d="same-origin",fetchOptions:f}=De(e);l=l?(l+"").toLowerCase():"text";let h,p=ze([o,n&&n.toAbortSignal()],a);const m=p&&p.unsubscribe&&(()=>{p.unsubscribe()});let g;try{if(c&&Xe&&"get"!==r&&"head"!==r&&0!==(g=await(async(e,t)=>{const r=H.toFiniteNumber(e.getContentLength());return null==r?(async e=>{if(null==e)return 0;if(H.isBlob(e))return e.size;if(H.isSpecCompliantForm(e)){const t=new Request(ge.origin,{method:"POST",body:e});return(await t.arrayBuffer()).byteLength}return H.isArrayBufferView(e)||H.isArrayBuffer(e)?e.byteLength:(H.isURLSearchParams(e)&&(e+=""),H.isString(e)?(await We(e)).byteLength:void 0)})(t):r})(u,s))){let e,r=new Request(t,{method:"POST",body:s,duplex:"half"});if(H.isFormData(s)&&(e=r.headers.get("content-type"))&&u.setContentType(e),r.body){const[e,t]=qe(g,Pe(Ne(c)));s=Ke(r.body,65536,e,t)}}H.isString(d)||(d=d?"include":"omit");const o="credentials"in Request.prototype;h=new Request(t,{...f,signal:p,method:r.toUpperCase(),headers:u.normalize().toJSON(),body:s,duplex:"half",credentials:o?d:void 0});let n=await fetch(h);const a=Qe&&("stream"===l||"response"===l);if(Qe&&(i||a&&m)){const e={};["status","statusText","headers"].forEach((t=>{e[t]=n[t]}));const t=H.toFiniteNumber(n.headers.get("content-length")),[r,s]=i&&qe(t,Pe(Ne(i),!0))||[];n=new Response(Ke(n.body,65536,r,(()=>{s&&s(),m&&m()})),e)}l=l||"text";let y=await Ye[H.findKey(Ye,l)||"text"](n,e);return!a&&m&&m(),await new Promise(((t,r)=>{Ue(t,r,{data:y,headers:Oe.from(n.headers),status:n.status,statusText:n.statusText,config:e,request:h})}))}catch(t){if(m&&m(),t&&"TypeError"===t.name&&/fetch/i.test(t.message))throw Object.assign(new X("Network Error",X.ERR_NETWORK,e,h),{cause:t.cause||t});throw X.from(t,t&&t.code,e,h)}})};H.forEach(et,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}}));const tt=e=>`- ${e}`,rt=e=>H.isFunction(e)||null===e||!1===e,st=e=>{e=H.isArray(e)?e:[e];const{length:t}=e;let r,s;const o={};for(let n=0;n<t;n++){let t;if(r=e[n],s=r,!rt(r)&&(s=et[(t=String(r)).toLowerCase()],void 0===s))throw new X(`Unknown adapter '${t}'`);if(s)break;o[t||"#"+n]=s}if(!s){const e=Object.entries(o).map((([e,t])=>`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build")));let r=t?e.length>1?"since :\n"+e.map(tt).join("\n"):" "+tt(e[0]):"as no adapter specified";throw new X("There is no suitable adapter to dispatch the request "+r,"ERR_NOT_SUPPORT")}return s};function ot(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Ce(null,e)}function nt(e){return ot(e),e.headers=Oe.from(e.headers),e.data=Re.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),st(e.adapter||ke.adapter)(e).then((function(t){return ot(e),t.data=Re.call(e,e.transformResponse,t),t.headers=Oe.from(t.headers),t}),(function(t){return xe(t)||(ot(e),t&&t.response&&(t.response.data=Re.call(e,e.transformResponse,t.response),t.response.headers=Oe.from(t.response.headers))),Promise.reject(t)}))}const at={};["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{at[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}}));const it={};at.transitional=function(e,t,r){function s(e,t){return"[Axios v1.8.3] Transitional option '"+e+"'"+t+(r?". "+r:"")}return(r,o,n)=>{if(!1===e)throw new X(s(o," has been removed"+(t?" in "+t:"")),X.ERR_DEPRECATED);return t&&!it[o]&&(it[o]=!0,console.warn(s(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,o,n)}},at.spelling=function(e){return(t,r)=>(console.warn(`${r} is likely a misspelling of ${e}`),!0)};const ct={assertOptions:function(e,t,r){if("object"!=typeof e)throw new X("options must be an object",X.ERR_BAD_OPTION_VALUE);const s=Object.keys(e);let o=s.length;for(;o-- >0;){const n=s[o],a=t[n];if(a){const t=e[n],r=void 0===t||a(t,n,e);if(!0!==r)throw new X("option "+n+" must be "+r,X.ERR_BAD_OPTION_VALUE)}else if(!0!==r)throw new X("Unknown option "+n,X.ERR_BAD_OPTION)}},validators:at},lt=ct.validators;class ut{constructor(e){this.defaults=e,this.interceptors={request:new ce,response:new ce}}async request(e,t){try{return await this._request(e,t)}catch(e){if(e instanceof Error){let t={};Error.captureStackTrace?Error.captureStackTrace(t):t=new Error;const r=t.stack?t.stack.replace(/^.+\n/,""):"";try{e.stack?r&&!String(e.stack).endsWith(r.replace(/^.+\n.+\n/,""))&&(e.stack+="\n"+r):e.stack=r}catch(e){}}throw e}}_request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=Le(this.defaults,t);const{transitional:r,paramsSerializer:s,headers:o}=t;void 0!==r&&ct.assertOptions(r,{silentJSONParsing:lt.transitional(lt.boolean),forcedJSONParsing:lt.transitional(lt.boolean),clarifyTimeoutError:lt.transitional(lt.boolean)},!1),null!=s&&(H.isFunction(s)?t.paramsSerializer={serialize:s}:ct.assertOptions(s,{encode:lt.function,serialize:lt.function},!0)),void 0!==t.allowAbsoluteUrls||(void 0!==this.defaults.allowAbsoluteUrls?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),ct.assertOptions(t,{baseUrl:lt.spelling("baseURL"),withXsrfToken:lt.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();let n=o&&H.merge(o.common,o[t.method]);o&&H.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete o[e]})),t.headers=Oe.concat(n,o);const a=[];let i=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(i=i&&e.synchronous,a.unshift(e.fulfilled,e.rejected))}));const c=[];let l;this.interceptors.response.forEach((function(e){c.push(e.fulfilled,e.rejected)}));let u,d=0;if(!i){const e=[nt.bind(this),void 0];for(e.unshift.apply(e,a),e.push.apply(e,c),u=e.length,l=Promise.resolve(t);d<u;)l=l.then(e[d++],e[d++]);return l}u=a.length;let f=t;for(d=0;d<u;){const e=a[d++],t=a[d++];try{f=e(f)}catch(e){t.call(this,e);break}}try{l=nt.call(this,f)}catch(e){return Promise.reject(e)}for(d=0,u=c.length;d<u;)l=l.then(c[d++],c[d++]);return l}getUri(e){return ie(je((e=Le(this.defaults,e)).baseURL,e.url,e.allowAbsoluteUrls),e.params,e.paramsSerializer)}}H.forEach(["delete","get","head","options"],(function(e){ut.prototype[e]=function(t,r){return this.request(Le(r||{},{method:e,url:t,data:(r||{}).data}))}})),H.forEach(["post","put","patch"],(function(e){function t(t){return function(r,s,o){return this.request(Le(o||{},{method:e,headers:t?{"Content-Type":"multipart/form-data"}:{},url:r,data:s}))}}ut.prototype[e]=t(),ut.prototype[e+"Form"]=t(!0)}));const dt=ut;class ft{constructor(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");let t;this.promise=new Promise((function(e){t=e}));const r=this;this.promise.then((e=>{if(!r._listeners)return;let t=r._listeners.length;for(;t-- >0;)r._listeners[t](e);r._listeners=null})),this.promise.then=e=>{let t;const s=new Promise((e=>{r.subscribe(e),t=e})).then(e);return s.cancel=function(){r.unsubscribe(t)},s},e((function(e,s,o){r.reason||(r.reason=new Ce(e,s,o),t(r.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}toAbortSignal(){const e=new AbortController,t=t=>{e.abort(t)};return this.subscribe(t),e.signal.unsubscribe=()=>this.unsubscribe(t),e.signal}static source(){let e;return{token:new ft((function(t){e=t})),cancel:e}}}const ht=ft,pt={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(pt).forEach((([e,t])=>{pt[t]=e}));const mt=pt,gt=function e(t){const r=new dt(t),s=n(dt.prototype.request,r);return H.extend(s,dt.prototype,r,{allOwnKeys:!0}),H.extend(s,r,null,{allOwnKeys:!0}),s.create=function(r){return e(Le(t,r))},s}(ke);gt.Axios=dt,gt.CanceledError=Ce,gt.CancelToken=ht,gt.isCancel=xe,gt.VERSION="1.8.3",gt.toFormData=te,gt.AxiosError=X,gt.Cancel=gt.CanceledError,gt.all=function(e){return Promise.all(e)},gt.spread=function(e){return function(t){return e.apply(null,t)}},gt.isAxiosError=function(e){return H.isObject(e)&&!0===e.isAxiosError},gt.mergeConfig=Le,gt.AxiosHeaders=Oe,gt.formToJSON=e=>ye(H.isHTMLForm(e)?new FormData(e):e),gt.getAdapter=st,gt.HttpStatusCode=mt,gt.default=gt;const yt=gt;class wt{constructor(e){this.config=e,this.axiosInstance=yt.create({baseURL:e.apiUrl,headers:{"Content-Type":"application/json"}}),this.axiosInstance.interceptors.request.use((async e=>{const t=e.url&&["/auth/login","/auth/register","/auth/refresh"].some((t=>{var r;return(null===(r=e.url)||void 0===r?void 0:r.includes(t))&&"post"===e.method}));if(console.log(`Request to ${e.url}, auth endpoint: ${t}`),!t){const t=await this.getAccessToken();console.log("Adding token to request: "+(t?"Present (first 10 chars: "+t.substring(0,10)+"...)":"Not found")),t?e.headers.Authorization=`Bearer ${t}`:console.warn("No token available for authenticated request")}return e}),(e=>Promise.reject(e))),this.axiosInstance.interceptors.response.use((e=>e),(async e=>{var t;const r=e.config;if(401===(null===(t=e.response)||void 0===t?void 0:t.status)&&!r._retry){r._retry=!0;try{const e=await this.refreshToken();if(e)return await this.storeTokens(e),r.headers.Authorization=`Bearer ${e.accessToken}`,this.axiosInstance(r)}catch(e){return await this.clearTokens(),Promise.reject(e)}}return Promise.reject(e)})),e.tokenRefreshInterval&&this.setupTokenRefresh(e.tokenRefreshInterval)}async request(e){var t;try{return(await this.axiosInstance.request(e)).data}catch(e){return(null===(t=e.response)||void 0===t?void 0:t.data)?e.response.data:{success:!1,error:e.message||"Network error"}}}async getAccessToken(){if(console.log("ApiClient.getAccessToken called"),"undefined"==typeof window||"none"===this.config.storage)return console.log("No storage available, returning null"),null;try{let e=null;switch(this.config.storage){case"local":e=localStorage.getItem("oxy_access_token"),console.log("Token from localStorage: "+(e?"Found":"Not found"));break;case"session":e=sessionStorage.getItem("oxy_access_token"),console.log("Token from sessionStorage: "+(e?"Found":"Not found"));break;case"cookie":const t=document.cookie.match(/(^|;)\s*oxy_access_token=([^;]+)/);e=t?t[2]:null,console.log("Token from cookies: "+(e?"Found":"Not found"));break;default:e=localStorage.getItem("oxy_access_token"),console.log("Token from localStorage (default): "+(e?"Found":"Not found"))}return e}catch(e){return console.error("Error getting auth token:",e),null}}async getRefreshToken(){if("undefined"==typeof window||"none"===this.config.storage)return null;switch(this.config.storage){case"local":default:return localStorage.getItem("oxy_refresh_token");case"session":return sessionStorage.getItem("oxy_refresh_token");case"cookie":const e=document.cookie.match(/(^|;)\s*oxy_refresh_token=([^;]+)/);return e?e[2]:null}}async storeTokens(e){if(console.log("ApiClient.storeTokens called with tokens:",{accessToken:e.accessToken.substring(0,10)+"...",refreshToken:e.refreshToken.substring(0,10)+"..."}),"undefined"!=typeof window&&"none"!==this.config.storage)try{switch(this.config.storage){case"local":localStorage.setItem("oxy_access_token",e.accessToken),localStorage.setItem("oxy_refresh_token",e.refreshToken),console.log("Tokens stored in localStorage");break;case"session":sessionStorage.setItem("oxy_access_token",e.accessToken),sessionStorage.setItem("oxy_refresh_token",e.refreshToken),console.log("Tokens stored in sessionStorage");break;case"cookie":document.cookie=`oxy_access_token=${e.accessToken}; path=/;`,document.cookie=`oxy_refresh_token=${e.refreshToken}; path=/;`,console.log("Tokens stored in cookies");break;default:localStorage.setItem("oxy_access_token",e.accessToken),localStorage.setItem("oxy_refresh_token",e.refreshToken),console.log("Tokens stored in localStorage (default)")}if("local"===this.config.storage||void 0===this.config.storage){const e=localStorage.getItem("oxy_access_token");console.log("Verification - token in localStorage: "+(e?"Found":"Not found"))}}catch(e){console.error("Error storing auth tokens:",e)}else console.log("No storage available, returning")}async clearTokens(){if("undefined"!=typeof window&&"none"!==this.config.storage){switch(this.config.storage){case"local":default:localStorage.removeItem("oxy_access_token"),localStorage.removeItem("oxy_refresh_token");break;case"session":sessionStorage.removeItem("oxy_access_token"),sessionStorage.removeItem("oxy_refresh_token");break;case"cookie":document.cookie="oxy_access_token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;",document.cookie="oxy_refresh_token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;"}this.tokenRefreshTimeout&&(clearTimeout(this.tokenRefreshTimeout),this.tokenRefreshTimeout=void 0)}}async refreshToken(){const e=await this.getRefreshToken();if(!e)return null;try{const t=await yt.post(`${this.config.apiUrl}/auth/refresh`,{refreshToken:e});return t.data.success&&t.data.data?t.data.data:null}catch(e){return null}}setupTokenRefresh(e){"undefined"!=typeof window&&(this.tokenRefreshTimeout=setTimeout((async()=>{try{const e=await this.refreshToken();e&&await this.storeTokens(e)}finally{this.setupTokenRefresh(e)}}),e))}}class kt{constructor(e){this.apiClient=new wt({apiUrl:e})}async login(e){return this.apiClient.request({method:"POST",url:"/auth/login",data:e})}async register(e){return this.apiClient.request({method:"POST",url:"/auth/signup",data:e})}async refreshToken(e){return this.apiClient.request({method:"POST",url:"/auth/refresh-token",data:{refreshToken:e}})}async logout(e){return this.apiClient.request({method:"POST",url:"/auth/logout",data:{refreshToken:e}})}async validateToken(e){return this.apiClient.request({method:"POST",url:"/auth/validate-token",data:{token:e}})}async getCurrentUser(e){return this.apiClient.request({method:"GET",url:"/auth/me",headers:{Authorization:`Bearer ${e}`}})}async checkUsernameAvailability(e){return this.apiClient.request({method:"GET",url:`/auth/check-username/${e}`})}}class bt{constructor(e){this.apiClient=new wt({apiUrl:e})}async getUserById(e){return this.apiClient.request({method:"GET",url:`/users/${e}`})}async getUserByUsername(e){return this.apiClient.request({method:"GET",url:`/users/username/${e}`})}async updateUserProfile(e,t){return this.apiClient.request({method:"PUT",url:`/users/${e}`,data:t})}async updatePrivacySettings(e,t){return this.apiClient.request({method:"PUT",url:`/users/${e}/privacy`,data:t})}async getPrivacySettings(e){return this.apiClient.request({method:"GET",url:`/users/${e}/privacy`})}async getUserIdFromUsername(e){return this.apiClient.request({method:"GET",url:`/users/resolve/${e}`})}async followUser(e,t){return this.apiClient.request({method:"POST",url:`/users/${e}/follow`,data:{targetUserId:t}})}async unfollowUser(e,t){return this.apiClient.request({method:"POST",url:`/users/${e}/unfollow`,data:{targetUserId:t}})}}class Tt{constructor(e){this.apiClient=new wt({apiUrl:e})}async getUserKarma(e){return this.apiClient.request({method:"GET",url:`/karma/${e}/total`})}async getUserKarmaHistory(e,t,r){const s={};return void 0!==t&&(s.limit=t.toString()),void 0!==r&&(s.offset=r.toString()),this.apiClient.request({method:"GET",url:`/karma/${e}/history`,params:s})}async awardKarma(e){return this.apiClient.request({method:"POST",url:"/karma/award",data:e})}async deductKarma(e){return this.apiClient.request({method:"POST",url:"/karma/deduct",data:e})}async getKarmaLeaderboard(e=10,t=0){return this.apiClient.request({method:"GET",url:"/karma/leaderboard",params:{limit:e,offset:t}})}async getKarmaRules(){return this.apiClient.request({method:"GET",url:"/karma/rules"})}async createOrUpdateKarmaRule(e){return this.apiClient.request({method:"POST",url:"/karma/rules",data:e})}}class St{constructor(e){this.apiClient=new wt({apiUrl:e})}async getWallet(e){return this.apiClient.request({method:"GET",url:`/wallet/${e}`})}async getTransactionHistory(e,t=10,r=0){return this.apiClient.request({method:"GET",url:`/wallet/transactions/${e}`,params:{limit:t,offset:r}})}async transferFunds(e){return this.apiClient.request({method:"POST",url:"/wallet/transfer",data:e})}async processPurchase(e){return this.apiClient.request({method:"POST",url:"/wallet/purchase",data:e})}async requestWithdrawal(e){return this.apiClient.request({method:"POST",url:"/wallet/withdraw",data:e})}async getTransaction(e){return this.apiClient.request({method:"GET",url:`/wallet/transaction/${e}`})}}var Et=r(953),vt=r(848);const _t=(0,Et.createContext)({apiUrl:"",getToken:async()=>null,isAuthenticated:async()=>!1,setAuthTokens:async()=>{},clearAuth:async()=>{}}),Ot=()=>(0,Et.useContext)(_t),Rt=({children:e,apiUrl:t,storage:r="local",tokenRefreshInterval:s})=>{const[o,n]=(0,Et.useState)({accessToken:null,refreshToken:null}),a=()=>"undefined"!=typeof window&&window.navigator&&"ReactNative"===window.navigator.product,i=async()=>{if(a())try{return await Promise.resolve().then((function(){var e=new Error("Cannot find module 'expo-secure-store'");throw e.code="MODULE_NOT_FOUND",e}))}catch(e){return console.warn("expo-secure-store is not available"),null}return null},c=async()=>{if(a())try{return await Promise.resolve().then((function(){var e=new Error("Cannot find module '@react-native-async-storage/async-storage'");throw e.code="MODULE_NOT_FOUND",e}))}catch(e){return console.warn("@react-native-async-storage/async-storage is not available"),null}return null};(0,Et.useEffect)((()=>{(async()=>{await l()})()}),[]);const l=async()=>{try{if("local"===r&&"undefined"!=typeof localStorage)return localStorage.getItem("oxy_access_token");if("session"===r&&"undefined"!=typeof sessionStorage)return sessionStorage.getItem("oxy_access_token");if("secure-store"===r){const e=await i();if(e)return await e.getItemAsync("oxy_access_token")}else if("async-storage"===r){const e=await c();if(e&&e.default)return await e.default.getItem("oxy_access_token")}else{if("memory"===r||"none"===r)return o.accessToken;if("cookie"===r){const e=document.cookie.match(/(^|;)\s*oxy_access_token=([^;]+)/);return e?e[2]:null}}return null}catch(e){return console.error("Error getting auth token:",e),null}},u=(0,Et.useCallback)((async()=>!!await l()),[l]),d={apiUrl:t,getToken:l,isAuthenticated:u,setAuthTokens:async e=>{try{if("local"===r&&"undefined"!=typeof localStorage)localStorage.setItem("oxy_access_token",e.accessToken),localStorage.setItem("oxy_refresh_token",e.refreshToken);else if("session"===r&&"undefined"!=typeof sessionStorage)sessionStorage.setItem("oxy_access_token",e.accessToken),sessionStorage.setItem("oxy_refresh_token",e.refreshToken);else if("secure-store"===r){const t=await i();t?(await t.setItemAsync("oxy_access_token",e.accessToken),await t.setItemAsync("oxy_refresh_token",e.refreshToken)):n(e)}else if("async-storage"===r){const t=await c();t&&t.default?(await t.default.setItem("oxy_access_token",e.accessToken),await t.default.setItem("oxy_refresh_token",e.refreshToken)):n(e)}else"memory"===r||"none"===r?n(e):"cookie"===r&&(document.cookie=`oxy_access_token=${e.accessToken}; path=/;`,document.cookie=`oxy_refresh_token=${e.refreshToken}; path=/;`)}catch(e){console.error("Error storing auth tokens:",e)}},clearAuth:async()=>{try{if("local"===r&&"undefined"!=typeof localStorage)localStorage.removeItem("oxy_access_token"),localStorage.removeItem("oxy_refresh_token");else if("session"===r&&"undefined"!=typeof sessionStorage)sessionStorage.removeItem("oxy_access_token"),sessionStorage.removeItem("oxy_refresh_token");else if("secure-store"===r){const e=await i();e&&(await e.deleteItemAsync("oxy_access_token"),await e.deleteItemAsync("oxy_refresh_token"))}else if("async-storage"===r){const e=await c();e&&e.default&&(await e.default.removeItem("oxy_access_token"),await e.default.removeItem("oxy_refresh_token"))}else"memory"===r||"none"===r?n({accessToken:null,refreshToken:null}):"cookie"===r&&(document.cookie="oxy_access_token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;",document.cookie="oxy_refresh_token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;")}catch(e){console.error("Error clearing auth tokens:",e)}}};return(0,vt.jsx)(_t.Provider,{value:d,children:e})},xt=e=>{const t=Ot(),r=(null==e?void 0:e.apiUrl)||t.apiUrl;if(!r)throw new Error("API URL is required. Provide it either through options or OxyProvider.");const[s]=(0,Et.useState)((()=>new wt({apiUrl:r}))),[o,n]=(0,Et.useState)(null),[a,i]=(0,Et.useState)(!1),[c,l]=(0,Et.useState)(null),[u,d]=(0,Et.useState)(!1),f=(0,Et.useCallback)((async()=>(null==e?void 0:e.storage)?"local"===e.storage?localStorage.getItem("oxy_access_token"):"session"===e.storage?sessionStorage.getItem("oxy_access_token"):null:await t.getToken()),[t,null==e?void 0:e.storage]),h=(0,Et.useCallback)((async r=>{const s=(null==e?void 0:e.storage)||"local";(null==e?void 0:e.storage)||!t.setAuthTokens?"local"===s?(localStorage.setItem("oxy_access_token",r.accessToken),localStorage.setItem("oxy_refresh_token",r.refreshToken)):"session"===s&&(sessionStorage.setItem("oxy_access_token",r.accessToken),sessionStorage.setItem("oxy_refresh_token",r.refreshToken)):await t.setAuthTokens(r)}),[t,null==e?void 0:e.storage]),p=(0,Et.useCallback)((async()=>{const r=(null==e?void 0:e.storage)||"local";(null==e?void 0:e.storage)||!t.clearAuth?"local"===r?(localStorage.removeItem("oxy_access_token"),localStorage.removeItem("oxy_refresh_token")):"session"===r&&(sessionStorage.removeItem("oxy_access_token"),sessionStorage.removeItem("oxy_refresh_token")):await t.clearAuth()}),[t,null==e?void 0:e.storage]),m=(0,Et.useCallback)((async()=>(null==e?void 0:e.storage)||"function"!=typeof t.isAuthenticated?!!await f():await t.isAuthenticated()),[t,f,null==e?void 0:e.storage]),g=(0,Et.useCallback)((async()=>{const e=await f();if(!e)return{success:!1,error:"Not authenticated"};i(!0);try{const t=await s.request({method:"GET",url:"/auth/me",headers:{Authorization:`Bearer ${e}`}});return t.success&&t.data&&n(t.data),i(!1),t}catch(e){return i(!1),{success:!1,error:e.message||"Failed to get user profile"}}}),[s,f]);(0,Et.useEffect)((()=>{(async()=>{try{console.log("Initializing user profile, checking auth status...");const e=await f();console.log("Token check result:",!!e);const t=await m();console.log("Authentication status:",t),d(t),t&&!o&&(console.log("User is authenticated but no user data, fetching profile..."),await g())}catch(e){console.error("Error initializing user profile:",e)}})();const e=setInterval((async()=>{const e=await m();e!==u&&(console.log("Auth state changed from interval check:",{was:u,now:e}),d(e))}),5e3);return()=>clearInterval(e)}),[f,g,o,m,u]);const y=(0,Et.useCallback)((async e=>{var t,r;if(i(!0),l(null),!e.username&&!e.email)return i(!1),l("Username or email is required"),{success:!1,error:"Username or email is required",details:{username:"Username or email is required",password:null}};if(!e.password)return i(!1),l("Password is required"),{success:!1,error:"Password is required",details:{username:null,password:"Password is required"}};try{console.log("Making login request with credentials:",{username:e.username||e.email,hasPassword:!!e.password});const o=await s.request({method:"POST",url:"/auth/login",data:e});if(o.success&&o.data){console.log("Login successful, storing tokens");const e={accessToken:o.data.accessToken,refreshToken:o.data.refreshToken};if(await s.storeTokens(e),await h(e),console.log("Tokens stored, checking localStorage:",{accessToken:(null===(t=localStorage.getItem("oxy_access_token"))||void 0===t?void 0:t.substring(0,10))+"...",refreshToken:(null===(r=localStorage.getItem("oxy_refresh_token"))||void 0===r?void 0:r.substring(0,10))+"..."}),o.data.user)console.log("Setting user from login response"),n(o.data.user);else{console.log("No user in response, fetching user profile");const e=await g();console.log("User fetch response:",e)}const a=await m();console.log("Authentication status after login:",a)}else l(o.error||"Login failed");return i(!1),o}catch(e){return console.error("Login error:",e),l(e.message||"Login failed"),i(!1),{success:!1,error:e.message||"Login failed"}}}),[s,h,g,m]),w=(0,Et.useCallback)((async e=>{if(i(!0),l(null),!e.username)return i(!1),l("Username is required"),{success:!1,error:"Username is required",details:{username:"Username is required",email:null,password:null}};if(!e.email)return i(!1),l("Email is required"),{success:!1,error:"Email is required",details:{username:null,email:"Email is required",password:null}};if(!e.password)return i(!1),l("Password is required"),{success:!1,error:"Password is required",details:{username:null,email:null,password:"Password is required"}};try{const t=await s.request({method:"POST",url:"/auth/register",data:e});if(t.success&&t.data){const e={accessToken:t.data.accessToken,refreshToken:t.data.refreshToken};await s.storeTokens(e),await h(e),t.data.user?n(t.data.user):await g()}else l(t.error||"Registration failed");return i(!1),t}catch(e){return l(e.message||"Registration failed"),i(!1),{success:!1,error:e.message||"Registration failed"}}}),[s,h,g]),k=(0,Et.useCallback)((async()=>{await p(),n(null)}),[p]),b=(0,Et.useCallback)((async()=>{const t=(null==e?void 0:e.storage)||"local";let r=null;if("local"===t?r=localStorage.getItem("oxy_refresh_token"):"session"===t&&(r=sessionStorage.getItem("oxy_refresh_token")),!r)return{success:!1,error:"No refresh token available"};try{const e=await s.request({method:"POST",url:"/auth/refresh",data:{refreshToken:r}});return e.success&&e.data&&h(e.data),e}catch(e){return{success:!1,error:e.message||"Failed to refresh token"}}}),[s,null==e?void 0:e.storage,h]);return{user:o,loading:a,error:c,login:y,register:w,logout:k,isAuthenticated:m,authState:u,getCurrentUser:g,refreshToken:b,getToken:f}},At=e=>{const t=Ot(),r=(null==e?void 0:e.apiUrl)||t.apiUrl,s=(null==e?void 0:e.getToken)||t.getToken;if(!r)throw new Error("API URL is required. Provide it either through options or OxyProvider.");const[o]=(0,Et.useState)((()=>new wt({apiUrl:r})));return{getUserById:(0,Et.useCallback)((async e=>{try{return await o.request({method:"GET",url:`/users/${e}`,headers:s?{Authorization:`Bearer ${s()||""}`}:void 0})}catch(e){return{success:!1,error:e.message||"Failed to get user profile"}}}),[o,s]),updateUserProfile:(0,Et.useCallback)((async(e,t)=>{try{return s?await o.request({method:"PATCH",url:`/users/${e}`,data:t,headers:{Authorization:`Bearer ${s()||""}`}}):{success:!1,error:"Authentication token is required"}}catch(e){return{success:!1,error:e.message||"Failed to update user profile"}}}),[o,s]),getPrivacySettings:(0,Et.useCallback)((async e=>{try{return s?await o.request({method:"GET",url:`/privacy/${e}`,headers:{Authorization:`Bearer ${s()||""}`}}):{success:!1,error:"Authentication token is required"}}catch(e){return{success:!1,error:e.message||"Failed to get privacy settings"}}}),[o,s]),updatePrivacySettings:(0,Et.useCallback)((async(e,t)=>{try{return s?await o.request({method:"PATCH",url:`/privacy/${e}`,data:t,headers:{Authorization:`Bearer ${s()||""}`}}):{success:!1,error:"Authentication token is required"}}catch(e){return{success:!1,error:e.message||"Failed to update privacy settings"}}}),[o,s]),searchUsers:(0,Et.useCallback)((async(e,t=10)=>{try{return await o.request({method:"GET",url:"/users/search",params:{query:e,limit:t},headers:s?{Authorization:`Bearer ${s()||""}`}:void 0})}catch(e){return{success:!1,error:e.message||"Failed to search users"}}}),[o,s])}},Ct=e=>{const t=Ot(),r=(null==e?void 0:e.apiUrl)||t.apiUrl,s=(null==e?void 0:e.getToken)||t.getToken;if(!r)throw new Error("API URL is required. Provide it either through options or OxyProvider.");const[o]=(0,Et.useState)((()=>new wt({apiUrl:r})));return{getUserKarma:(0,Et.useCallback)((async e=>{try{return await o.request({method:"GET",url:`/karma/${e}/total`,headers:s?{Authorization:`Bearer ${s()||""}`}:void 0})}catch(e){return{success:!1,error:e.message||"Failed to get karma"}}}),[o,s]),getUserKarmaHistory:(0,Et.useCallback)((async(e,t,r)=>{try{if(!s)return{success:!1,error:"Authentication token is required"};const n={};return void 0!==t&&(n.limit=t.toString()),void 0!==r&&(n.offset=r.toString()),await o.request({method:"GET",url:`/karma/${e}/history`,params:n,headers:{Authorization:`Bearer ${s()||""}`}})}catch(e){return{success:!1,error:e.message||"Failed to get karma history"}}}),[o,s]),awardKarma:(0,Et.useCallback)((async e=>{try{return s?await o.request({method:"POST",url:"/karma/award",data:e,headers:{Authorization:`Bearer ${s()||""}`}}):{success:!1,error:"Authentication token is required"}}catch(e){return{success:!1,error:e.message||"Failed to award karma"}}}),[o,s]),deductKarma:(0,Et.useCallback)((async e=>{try{return s?await o.request({method:"POST",url:"/karma/deduct",data:e,headers:{Authorization:`Bearer ${s()||""}`}}):{success:!1,error:"Authentication token is required"}}catch(e){return{success:!1,error:e.message||"Failed to deduct karma"}}}),[o,s]),getKarmaLeaderboard:(0,Et.useCallback)((async(e=10,t=0)=>{try{return await o.request({method:"GET",url:"/karma/leaderboard",params:{limit:e,offset:t},headers:s?{Authorization:`Bearer ${s()||""}`}:void 0})}catch(e){return{success:!1,error:e.message||"Failed to get karma leaderboard"}}}),[o,s]),getKarmaRules:(0,Et.useCallback)((async()=>{try{return await o.request({method:"GET",url:"/karma/rules",headers:s?{Authorization:`Bearer ${s()||""}`}:void 0})}catch(e){return{success:!1,error:e.message||"Failed to get karma rules"}}}),[o,s]),createOrUpdateKarmaRule:(0,Et.useCallback)((async e=>{try{return s?await o.request({method:"POST",url:"/karma/rules",data:e,headers:{Authorization:`Bearer ${s()||""}`}}):{success:!1,error:"Authentication token is required"}}catch(e){return{success:!1,error:e.message||"Failed to create or update karma rule"}}}),[o,s])}},Ut=e=>{const t=Ot(),r=(null==e?void 0:e.apiUrl)||t.apiUrl,s=(null==e?void 0:e.getToken)||t.getToken;if(!r)throw new Error("API URL is required. Provide it either through options or OxyProvider.");const[o]=(0,Et.useState)((()=>new wt({apiUrl:r})));return{getWallet:(0,Et.useCallback)((async e=>{try{return s?await o.request({method:"GET",url:`/wallet/${e}`,headers:{Authorization:`Bearer ${s()||""}`}}):{success:!1,error:"Authentication token is required"}}catch(e){return{success:!1,error:e.message||"Failed to get wallet information"}}}),[o,s]),getTransactionHistory:(0,Et.useCallback)((async(e,t=10,r=0)=>{try{return s?await o.request({method:"GET",url:`/wallet/transactions/${e}`,params:{limit:t,offset:r},headers:{Authorization:`Bearer ${s()||""}`}}):{success:!1,error:"Authentication token is required"}}catch(e){return{success:!1,error:e.message||"Failed to get transaction history"}}}),[o,s]),transferFunds:(0,Et.useCallback)((async e=>{try{return s?await o.request({method:"POST",url:"/wallet/transfer",data:e,headers:{Authorization:`Bearer ${s()||""}`}}):{success:!1,error:"Authentication token is required"}}catch(e){return{success:!1,error:e.message||"Failed to transfer funds"}}}),[o,s]),processPurchase:(0,Et.useCallback)((async e=>{try{return s?await o.request({method:"POST",url:"/wallet/purchase",data:e,headers:{Authorization:`Bearer ${s()||""}`}}):{success:!1,error:"Authentication token is required"}}catch(e){return{success:!1,error:e.message||"Failed to process purchase"}}}),[o,s]),requestWithdrawal:(0,Et.useCallback)((async e=>{try{return s?await o.request({method:"POST",url:"/wallet/withdraw",data:e,headers:{Authorization:`Bearer ${s()||""}`}}):{success:!1,error:"Authentication token is required"}}catch(e){return{success:!1,error:e.message||"Failed to request withdrawal"}}}),[o,s]),getTransaction:(0,Et.useCallback)((async e=>{try{return s?await o.request({method:"GET",url:`/wallet/transaction/${e}`,headers:{Authorization:`Bearer ${s()||""}`}}):{success:!1,error:"Authentication token is required"}}catch(e){return{success:!1,error:e.message||"Failed to get transaction"}}}),[o,s])}};module.exports=s})();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxyhq/services",
3
- "version": "0.1.10",
3
+ "version": "0.1.13",
4
4
  "description": "Authentication, user management, and karma system for Oxy applications",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",