@idosgames/core 0.1.0
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/CHANGELOG.md +42 -0
- package/LICENSE +21 -0
- package/README.md +84 -0
- package/dist/chunk-QJVWT32O.js +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.d.cts +4143 -0
- package/dist/index.d.ts +4143 -0
- package/dist/index.js +2 -0
- package/dist/platform/index.cjs +1 -0
- package/dist/platform/index.d.cts +85 -0
- package/dist/platform/index.d.ts +85 -0
- package/dist/platform/index.js +1 -0
- package/package.json +58 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {e,d}from'./chunk-QJVWT32O.js';export{e as BrowserPlatformAdapter,a as BrowserStorage,b as MemoryStorage,f as NoopPlatformAdapter}from'./chunk-QJVWT32O.js';import {z}from'zod';import Mt from'decimal.js';var gt=class{listeners=new Map;on(e,t){let s=this.listeners.get(e);return s||(s=new Set,this.listeners.set(e,s)),s.add(t),()=>{this.off(e,t);}}once(e,t){let s=this.on(e,r=>{s(),t(r);});return s}off(e,t){let s=this.listeners.get(e);s&&(s.delete(t),s.size===0&&this.listeners.delete(e));}emit(e,t){let s=this.listeners.get(e);if(s)for(let r of [...s])r(t);}removeAllListeners(){this.listeners.clear();}};var vi="https://api.idosgames.com";function Ti(u){return {titleID:u.titleID,titleTemplateID:u.titleTemplateID??"default",buildKey:u.buildKey??"",baseUrl:(u.baseUrl??vi).replace(/\/+$/,""),devBuild:u.devBuild??false,debugLogging:u.debugLogging??false}}function Pi(u){return {ok:true,data:u}}function n(u,e){return {ok:false,reason:u,error:e}}function Wa(u){return u.ok}function Va(u){return !u.ok}var vt=class{constructor(e=600,t=()=>Date.now()){this.windowMs=e;this.now=t;}windowMs;now;last=new Map;tryAcquire(e){if(this.windowMs<=0)return true;let t=this.now(),s=this.last.get(e);return s!==void 0&&t-s<this.windowMs?false:(this.last.set(e,t),true)}reset(){this.last.clear();}};var Tt=class{set=new Set;add(e){return this.set.has(e)?false:(this.set.add(e),true)}remove(e){this.set.delete(e);}};function Ii(u){return u===429||u>=500&&u<=599}function vr(u,e=Math.random){let t=Math.min(500*Math.pow(2,u-1),4e3),s=t*.2*(e()*2-1);return Math.max(50,t+s)}function Tr(u){return new Promise(e=>setTimeout(e,u))}var Qa=12e3,Ha=z.object({Success:z.boolean(),Error:z.string().nullish(),Data:z.unknown()}).passthrough(),It=class{baseUrl;emitter;fetchImpl;debugLogging;throttler;inflight=new Tt;inFlightRequests=0;sessionRefreshHandler=null;constructor(e){this.baseUrl=e.baseUrl,this.emitter=e.emitter,this.fetchImpl=e.fetchImpl??globalThis.fetch.bind(globalThis),this.debugLogging=e.debugLogging??false,this.throttler=new vt(e.throttleMs);}setSessionRefreshHandler(e){this.sessionRefreshHandler=e;}async post(e,t,s,r={}){if(!this.throttler.tryAcquire(e))return n("throttled","Throttled");if(!this.inflight.add(e))return n("throttled","Duplicate request skipped");this.raiseBusy();try{let i=`${this.baseUrl}/${e}`,c=JSON.stringify(t),m=r.ticket??null,z=r.silent??!1,B=r.timeoutMs??Qa,G=r.autoRetry??!0,pe=!1,fe=0;for(;;){let Pe;try{Pe=await this.doFetch(i,c,m,B);}catch{if(G&&fe<3){fe++,await Tr(vr(fe));continue}return this.connectionFailure("Internet Connection Error",z)}let Ie=Pe.status;if(Ie>=200&&Ie<300)return await this.parseSuccess(Pe,s,z,e);if(Ie===401){if(!pe&&this.sessionRefreshHandler){pe=!0;let Ze=null;try{Ze=await this.sessionRefreshHandler();}catch{Ze=null;}if(Ze){m=Ze;continue}}return this.emitter.emit("auth:unauthorized",void 0),n("unauthorized","Unauthorized")}if(Ii(Ie)){if(G&&fe<3){fe++,await Tr(vr(fe));continue}return this.connectionFailure(`Server temporarily unavailable (HTTP ${Ie})`,z)}return await this.handleWebError(Pe,Ie,z)}}finally{this.inflight.remove(e),this.lowerBusy();}}async doFetch(e,t,s,r){let i=new AbortController,c=setTimeout(()=>{i.abort();},r);try{let m={"Content-Type":"application/json"};return s&&(m.Authorization=`Bearer ${s}`),await this.fetchImpl(e,{method:"POST",body:t,headers:m,signal:i.signal})}finally{clearTimeout(c);}}async parseSuccess(e,t,s,r){let i;try{i=await e.text();}catch{return this.globalError("Failed to read response body",s)}let c;try{c=JSON.parse(i);}catch{return this.globalError("JSON Parse Error",s)}let m=Ha.safeParse(c);if(!m.success)return this.globalError("Malformed response envelope",s);if(!m.data.Success){let B=m.data.Error??"Server returned Success=false";return s||this.emitter.emit("error:global",B),n("server",B)}let z=t.safeParse(m.data.Data);if(!z.success){let B=`Validation error (${r}): ${z.error.message}`;return this.debugLogging&&console.warn("[HttpTransport]",B),s||this.emitter.emit("error:global",B),n("validation",B)}return Pi(z.data)}async handleWebError(e,t,s){let r=`HTTP ${t}`;try{let i=await e.text();if(i)try{let m=JSON.parse(i).Error;r=typeof m=="string"&&m.length>0?`HTTP ${t}: ${m}`:`HTTP ${t}: ${i}`;}catch{r=`HTTP ${t}: ${i}`;}}catch{}return s||this.emitter.emit("error:global",r),n("server",r)}connectionFailure(e,t){return t||this.emitter.emit("error:connection",e),n("connection",e)}globalError(e,t){return t||this.emitter.emit("error:global",e),n("server",e)}raiseBusy(){this.inFlightRequests++,this.inFlightRequests===1&&this.emitter.emit("transport:busy",true);}lowerBusy(){this.inFlightRequests>0&&(this.inFlightRequests--,this.inFlightRequests===0&&this.emitter.emit("transport:busy",false));}};function nt(u){return (typeof u=="string"?u:u.toISOString()).slice(0,10)}function yt(u){return `${nt(u)}T00:00:00.000Z`}function ki(u){let e=new Date(u);return new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()+1)).toISOString()}function Ai(u,e){return new Date(u.getTime()+e*6e4).toISOString()}function Oi(u,e,t,s){let r={vcChanged:false,ccChanged:false,itemsChanged:false,tokensChanged:false};if(!e)return r;u.InventoryV2??={};let i=u.InventoryV2,c=s.toISOString(),m=new Map,z=new Map,B=new Map,G=new Map,pe=new Map,fe=new Map,Pe=new Map,Ie=new Map,Ze=e.Grant?.PremiumTiers??[],zt=Ze.length;for(let Y=0;;Y++){let ie,V;if(Y===0)ie=e.Grant?.Standard?.Entries,V=false;else if(Y-1<zt)ie=Ze[Y-1]?.Resources?.Entries,V=false;else if(Y===1+zt)ie=e.Consume?.Standard?.Entries,V=true;else break;if(ie)for(let N of ie){if(N.Type==null)continue;let _=Math.max(0,N.Amount??0);if(!(_<=0))switch(N.Type){case "VirtualCurrency":{if(!N.CurrencyID)continue;let W=V?z:m;W.set(N.CurrencyID,(W.get(N.CurrencyID)??0)+_);break}case "CryptoCurrency":{if(!N.CurrencyID)continue;let W=V?G:B;W.set(N.CurrencyID,(W.get(N.CurrencyID)??new Mt(0)).plus(_));break}case "Item":{if(!N.ItemID)continue;let W=Za(t,N.CatalogID,N.ItemID),J=(W?W.IsStackable??true:true)?V?fe:pe:V?Ie:Pe;J.set(N.ItemID,(J.get(N.ItemID)??0)+_);break}case "UsdCent":continue}}}if(r.vcChanged=m.size>0||z.size>0,r.vcChanged){i.VirtualCurrencies??={};for(let Y of new Set([...m.keys(),...z.keys()])){let ie=m.get(Y)??0,V=z.get(Y)??0,N=ie-V,_=i.VirtualCurrencies[Y];_?(_.Amount+=N,_.UpdatedAt=c,_.Daily&&nt(_.Daily.PeriodStartUtc)===nt(s)?(_.Daily.Earned+=ie,_.Daily.Spent+=V):_.Daily={PeriodStartUtc:yt(s),Earned:ie,Spent:V}):i.VirtualCurrencies[Y]={Amount:N,CreatedAt:c,UpdatedAt:c,Daily:{PeriodStartUtc:yt(s),Earned:ie,Spent:V}};}}if(r.ccChanged=B.size>0||G.size>0,r.ccChanged){i.CryptoCurrencies??={};for(let Y of new Set([...B.keys(),...G.keys()])){let ie=B.get(Y)??new Mt(0),V=G.get(Y)??new Mt(0),N=ie.minus(V),_=i.CryptoCurrencies[Y];_?(_.Amount=new Mt(_.Amount).plus(N).toString(),_.UpdatedAt=c):i.CryptoCurrencies[Y]={Amount:N.toString(),Frozen:"0",CreatedAt:c,UpdatedAt:c};}}if(r.itemsChanged=pe.size>0||fe.size>0||Pe.size>0||Ie.size>0,r.itemsChanged){i.Items??={},i.UnstackableItems??={};let Y=i.UnstackableItems,ie=new Set([...pe.keys(),...fe.keys(),...Pe.keys(),...Ie.keys()]);for(let V of ie){let N=(pe.get(V)??0)-(fe.get(V)??0),_=(Pe.get(V)??0)-(Ie.get(V)??0),W=N+_,Me=i.Items[V];Me?(N!==0&&(Me.StackableAmount+=N),_!==0&&(Me.UnstackableAmount+=_),W!==0&&(Me.TotalAmount+=W)):i.Items[V]={StackableAmount:Math.max(0,N),UnstackableAmount:Math.max(0,_),TotalAmount:Math.max(0,W)};}for(let[V,N]of Ie){if(N<=0)continue;let _=Object.values(Y).filter(W=>W.ItemID===V&&W.EquippedSlot==null&&(W.ExpiresAt==null||new Date(W.ExpiresAt)>s)).sort($a).slice(0,N).map(W=>W.ItemInstanceID);for(let W of _)delete Y[W];}for(let[V,N]of Pe){let _=Ka(t,V);for(let W=0;W<N;W++){let Me=d();Y[Me]={ItemInstanceID:Me,ItemID:V,CatalogID:_,RemainingUses:1,AcquiredAt:c};}}}u.EventToken??={};let Na=u.EventToken;for(let Y=0;;Y++){let ie,V;if(Y===0)ie=e.Grant?.Standard?.EventTokens,V=false;else if(Y-1<zt)ie=Ze[Y-1]?.Resources?.EventTokens,V=false;else if(Y===1+zt)ie=e.Consume?.Standard?.EventTokens,V=true;else break;if(!(!ie||ie.length===0))for(let N of ie){let _=N.Address;if(!_||_.Type==null)continue;let W=N.Amount??0;if(W<=0)continue;let Me=Ja(Na,_.Type);if(!Me)continue;let J=Me[_.EntityID];J||(J={},Me[_.EntityID]=J),J.Balance??={Current:0,TotalEarned:0,TotalSpent:0},J.Daily??={Date:yt(s),TotalEarned:0},J.Meta??={};let Rt=N.Source&&N.Source.length>0?N.Source:"CustomAction";V?(J.Balance.Current-=W,J.Balance.TotalSpent+=W):(J.Balance.Current+=W,J.Balance.TotalEarned+=W,nt(J.Daily.Date)!==nt(s)&&(J.Daily={Date:yt(s),TotalEarned:0}),J.Daily.TotalEarned+=W,J.Daily.EarnedBySource??={},J.Daily.EarnedBySource[Rt]=(J.Daily.EarnedBySource[Rt]??0)+W,J.Daily.TriggersBySource??={},J.Daily.TriggersBySource[Rt]=(J.Daily.TriggersBySource[Rt]??0)+1,J.Daily.LastTriggerBySource??={},J.Daily.LastTriggerBySource[Rt]=c,J.Meta.JoinedAtUtc||(J.Meta.JoinedAtUtc=c),J.Meta.LastEarnedAtUtc=c),r.tokensChanged=true;}}return r}function $a(u,e){return u.AcquiredAt!==e.AcquiredAt?u.AcquiredAt<e.AcquiredAt?-1:1:u.ItemInstanceID===e.ItemInstanceID?0:u.ItemInstanceID<e.ItemInstanceID?-1:1}function Za(u,e,t){let s=u?.Catalogs;if(s){if(e){let r=s[e]?.Items?.[t];if(r)return r}for(let r of Object.values(s)){let i=r.Items?.[t];if(i)return i}}}function Ka(u,e){let t=u?.Catalogs;if(t){for(let[s,r]of Object.entries(t))if(r.Items&&e in r.Items)return s}}function Ja(u,e){switch(e){case "TimedEvent":return u.TimedEvent??={};case "Quest":return u.Quest??={};case "Leaderboard":return u.Leaderboard??={};case "CoopEvent":return u.CoopEvent??={};case "Season":return u.Season??={};default:return null}}function Pr(u,e){return u===e||u.startsWith(`${e}:`)}var kt=class{constructor(e){this.emitter=e;}emitter;currentState={};activeEventsCache=null;get state(){return this.currentState}getCachedActiveEvents(){return this.activeEventsCache}clear(){this.currentState=null,this.emitter.emit("user:anyUpdated",void 0);}applyUserState(e){this.currentState=e,this.emitter.emit("user:stateUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}applyInventory(e){this.currentState??={},this.currentState.InventoryV2=e,this.emitter.emit("user:inventoryUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}applyVirtualCurrency(e){this.currentState??={},this.currentState.InventoryV2??={},this.currentState.InventoryV2.VirtualCurrencies=e,this.emitter.emit("user:virtualCurrencyUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}applyResourceOperation(e,t,s=new Date){if(!this.currentState)return;let r=Oi(this.currentState,e,t,s);r.vcChanged&&this.emitter.emit("user:virtualCurrencyUpdated",void 0),(r.vcChanged||r.ccChanged||r.itemsChanged)&&this.emitter.emit("user:inventoryUpdated",void 0),r.tokensChanged&&this.emitter.emit("user:eventTokenUpdated",void 0),(r.vcChanged||r.ccChanged||r.itemsChanged||r.tokensChanged)&&this.emitter.emit("user:anyUpdated",void 0);}patchCryptoCurrencyDelta(e,t,s){if(!e||!this.currentState)return;this.currentState.InventoryV2??={},this.currentState.InventoryV2.CryptoCurrencies??={};let r=this.currentState.InventoryV2.CryptoCurrencies,i=t instanceof Mt?t:new Mt(t),c=s??new Date().toISOString(),m=r[e];m?(m.Amount=new Mt(m.Amount).plus(i).toString(),m.UpdatedAt=c):r[e]={Amount:i.toString(),Frozen:"0",CreatedAt:c,UpdatedAt:c},this.emitter.emit("user:inventoryUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}applyStore(e){this.currentState??={},this.currentState.Store=e??{},this.emitter.emit("user:storeUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}patchStorePurchase(e,t,s){if(!e||t<1||!this.currentState)return;this.currentState.Store??={},this.currentState.Store.Purchases??={};let r=this.currentState.Store.Purchases,i=r[e];i||(i={OfferID:e,TotalPurchases:0,DailyPurchases:0,DailyResetUtc:"",LastPurchasedAt:""},r[e]=i),i.TotalPurchases+=t,i.LastPurchasedAt=s,s>=i.DailyResetUtc?(i.DailyPurchases=t,i.DailyResetUtc=ki(s)):i.DailyPurchases+=t,this.emitter.emit("user:storeUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}applyLootboxPityTriggers(e,t,s){if(!e||s<=0)return;this.currentState??={};let r=this.currentState.Lootbox??={};if(r.Pity??={},t){let i=new Date().toISOString();for(let c of t)c.RuleID&&(r.Pity[`${e}:${c.RuleID}`]={OpensSinceLastTrigger:0,LastTriggeredAtUtc:i});}this.emitter.emit("user:lootboxUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}applyReward(e){this.currentState??={},this.currentState.Reward=e??{},this.emitter.emit("user:rewardUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}patchDailyCalendarState(e,t){!e||!t||(this.currentState??={},this.currentState.Reward??={},this.currentState.Reward.DailyCalendars??={},this.currentState.Reward.DailyCalendars[e]=t,this.emitter.emit("user:rewardUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0));}patchIdleAccrualState(e,t){!e||!t||(this.currentState??={},this.currentState.Reward??={},this.currentState.Reward.IdleAccruals??={},this.currentState.Reward.IdleAccruals[e]=t,this.emitter.emit("user:rewardUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0));}patchComebackState(e,t){!e||!t||(this.currentState??={},this.currentState.Reward??={},this.currentState.Reward.Comebacks??={},this.currentState.Reward.Comebacks[e]=t,this.emitter.emit("user:rewardUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0));}patchClaimRewardState(e,t){!e||!t||(this.currentState??={},this.currentState.Reward??={},this.currentState.Reward.Claims??={},this.currentState.Reward.Claims[e]=t,this.emitter.emit("user:rewardUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0));}applyQuest(e){this.currentState??={},this.currentState.Quest=e??{},this.emitter.emit("user:questUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}patchQuestStatus(e,t,s){if(!e)return;this.currentState??={},this.currentState.Quest??={};let r=this.currentState.Quest;if(t){r.Cycles??={};let i=r.Cycles[t];if(!i)return;i.Quests??={};let c=i.Quests[e]??={QuestID:e,Status:s};c.Status=s,s==="Claimed"&&(c.ClaimedAtUtc??=new Date().toISOString());}else {r.PermanentQuests??={};let i=r.PermanentQuests[e]??={QuestID:e,Status:s};i.Status=s,s==="Claimed"&&(i.ClaimedAtUtc??=new Date().toISOString());}this.emitter.emit("user:questUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}patchMilestoneClaimed(e,t){if(!e||!t)return;let s=this.getQuestPointsProgress(e);s&&(s.Milestone??={},s.Milestone.ClaimedIDs??=[],s.Milestone.ClaimedIDs.includes(t)||s.Milestone.ClaimedIDs.push(t),this.emitter.emit("user:questUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0));}patchQuestPointsTracks(e){if(!e)return;this.currentState??={},this.currentState.EventToken??={},this.currentState.EventToken.Quest??={};let t=this.currentState.EventToken.Quest;for(let s of Object.values(e)){if(!s.CycleID)continue;let r=s.InstanceKey?`${s.CycleID}:${s.InstanceKey}`:s.CycleID,i=t[r]??={};i.Balance??={Current:0,TotalEarned:0,TotalSpent:0},i.Balance.Current=s.PointsCurrent??0,i.Balance.TotalEarned=s.PointsTotalEarned??0,i.Milestone??={},i.Milestone.ClaimedIDs=s.ClaimedPointMilestoneIDs??[];}this.emitter.emit("user:questUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}patchGroupCompletionClaimed(e,t){if(!e||!t)return;this.currentState??={},this.currentState.Quest??={},this.currentState.Quest.Cycles??={};let s=this.currentState.Quest.Cycles[e];s&&(s.ClaimedGroupCompletionIDs??=[],s.ClaimedGroupCompletionIDs.includes(t)||s.ClaimedGroupCompletionIDs.push(t),this.emitter.emit("user:questUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0));}patchQuestProgressUpdates(e){if(!e||e.length===0)return;this.currentState??={},this.currentState.Quest??={};let t=this.currentState.Quest;for(let s of e){if(!s.QuestID)continue;let r;if(!s.CycleID)t.PermanentQuests??={},r=t.PermanentQuests[s.QuestID]??={QuestID:s.QuestID,Status:s.Status};else {t.Cycles??={};let i=t.Cycles[s.CycleID];if(!i)continue;i.Quests??={},r=i.Quests[s.QuestID]??={QuestID:s.QuestID,Status:s.Status};}if(r.Status=s.Status,s.ObjectiveID){r.Objectives??={};let i=r.Objectives[s.ObjectiveID]??={ObjectiveID:s.ObjectiveID,CurrentValue:0,Completed:false};i.CurrentValue=s.NewValue??0,s.ObjectiveCompleted&&(i.Completed=true,i.CompletedAtUtc??=new Date().toISOString());}s.Status==="Completed"&&(r.CompletedAtUtc??=new Date().toISOString());}this.emitter.emit("user:questUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}getQuestPointsProgress(e){if(!e)return null;let t=this.currentState?.EventToken?.Quest;if(!t)return null;for(let[s,r]of Object.entries(t))if(Pr(s,e)&&r)return r;return null}applyActiveEvents(e){this.activeEventsCache=e??{},this.emitter.emit("user:timedEventUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}applyUserLteState(e){e&&(this.currentState??={},this.currentState.EventToken??={},this.currentState.EventToken.TimedEvent=e.Tokens??{},this.emitter.emit("user:timedEventUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0));}patchTimedEventMilestoneClaimed(e,t,s){if(!(!t||!s)){this.currentState??={},this.currentState.EventToken??={},this.currentState.EventToken.TimedEvent??={};for(let[r,i]of Object.entries(this.currentState.EventToken.TimedEvent))!Pr(r,t)||!i||this.markMilestoneClaimed(i.Milestone??(i.Milestone={}),s);this.patchActiveEventMilestoneClaimed(e,t,s),this.emitter.emit("user:timedEventUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}}patchActiveEventMilestoneClaimed(e,t,s){let r=this.activeEventsCache?.ActiveEvents;if(r)for(let i of r)i.Type!==e||i.TimedEventID!==t||(i.Progress??={},this.markMilestoneClaimed(i.Progress.Milestone??(i.Progress.Milestone={}),s));}markMilestoneClaimed(e,t){if(e.ClaimedIDs??=[],e.ClaimedIDs.includes(t)||e.ClaimedIDs.push(t),e.UnlockedIDs){let s=e.UnlockedIDs.indexOf(t);s>=0&&e.UnlockedIDs.splice(s,1);}}patchLeaderboardMyProgress(e,t){if(!e||!t)return;let s=this.ensureLeaderboardProgress(e);s.CurrentScore=t.CurrentScore??0,s.LastKnownRank=t.LastKnownRank??0,s.ScoreEarnedThisCycle=t.ScoreEarnedThisCycle??0,s.UnclaimedRewardCycleVersion=t.HasUnclaimedReward?Math.max(1,s.UnclaimedRewardCycleVersion??0):0,this.emitter.emit("user:leaderboardUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}patchLeaderboardScoreSubmitted(e,t,s,r){if(!e)return;let i=this.ensureLeaderboardProgress(e);(i.ScoreCycleVersion??0)<r&&(i.ScoreEarnedThisCycle=0,i.ClaimedMilestoneIDs=[],i.BracketID=null),i.CurrentScore=t,i.ScoreEarnedThisCycle=(i.ScoreEarnedThisCycle??0)+s,i.ScoreCycleVersion=r,i.LastScoreSubmitUtc=new Date().toISOString(),this.emitter.emit("user:leaderboardUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}patchLeaderboardCycleRewardClaimed(e){if(!e)return;let t=this.currentState?.Leaderboard?.ProgressByCycle?.[e];t&&(t.UnclaimedRewardCycleVersion=0,this.emitter.emit("user:leaderboardUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0));}patchLeaderboardMilestoneClaimed(e,t){if(!e||!t)return;let s=this.ensureLeaderboardProgress(e);s.ClaimedMilestoneIDs??=[],s.ClaimedMilestoneIDs.includes(t)||s.ClaimedMilestoneIDs.push(t),this.emitter.emit("user:leaderboardUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}ensureLeaderboardProgress(e){this.currentState??={},this.currentState.Leaderboard??={},this.currentState.Leaderboard.ProgressByCycle??={};let t=this.currentState.Leaderboard.ProgressByCycle,s=t[e];return s||(s={CurrentScore:0,ScoreEarnedThisCycle:0,ScoreCycleVersion:0,UnclaimedRewardCycleVersion:0,LastKnownRank:0},t[e]=s),s}applySeasonsState(e){this.currentState??={},this.currentState.Season=e??{},this.emitter.emit("user:seasonUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}patchSeasonState(e,t){!e||!t||(this.currentState??={},this.currentState.Season??={},this.currentState.Season.States??={},this.currentState.Season.States[e]=t,this.emitter.emit("user:seasonUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0));}patchSeasonCurrentTier(e,t){if(!e)return;let s=this.ensureSeasonState(e);s.CurrentTier=t,this.emitter.emit("user:seasonUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}patchSeasonClaimedTier(e,t){if(!e)return;let s=this.ensureSeasonState(e);s.ClaimedTierRewards??=[],s.ClaimedTierRewards.includes(t)||s.ClaimedTierRewards.push(t),this.emitter.emit("user:seasonUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}ensureSeasonState(e){this.currentState??={},this.currentState.Season??={},this.currentState.Season.States??={};let t=this.currentState.Season.States,s=t[e];return s||(s={SeasonChainID:e},t[e]=s),s}applyPremium(e){this.currentState??={},this.currentState.Premium=e??{},this.emitter.emit("user:premiumUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}applyCharacter(e){this.currentState??={},this.currentState.Character??={},this.currentState.Character.Characters=e??{},this.emitter.emit("user:characterUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}patchCharacter(e,t){if(!e)return;this.currentState??={},this.currentState.Character??={},this.currentState.Character.Characters??={};let s=this.currentState.Character.Characters,r=s[e];r||(r={CharacterID:e},s[e]=r),t(r),this.emitter.emit("user:characterUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}patchCharacterEquipment(e,t,s){if(!e||!t)return;let r=this.currentState?.Character?.Characters?.[e];r&&(r.Equipment??={},s===null?delete r.Equipment[t]:r.Equipment[t]=s,this.emitter.emit("user:characterUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0));}applyInventoryDelta(e){if(!e)return;this.currentState??={},this.currentState.InventoryV2??={},this.currentState.InventoryV2.UnstackableItems??={};let t=this.currentState.InventoryV2.UnstackableItems,s=false;for(let[r,i]of Object.entries(e.ChangedInstances??{}))t[r]=i,s=true;for(let r of e.RemovedInstanceIDs??[])r in t&&(delete t[r],s=true);s&&(this.emitter.emit("user:inventoryUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0));}applyMatch(e){this.currentState??={},this.currentState.Match=e??{},this.emitter.emit("user:matchUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}patchMatchStrategy(e){e&&(this.currentState??={},this.currentState.Match??={},this.currentState.Match.PvPBattleStrategy=e,this.emitter.emit("user:matchUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0));}applyCollection(e){this.currentState??={},this.currentState.Collection=e??{},this.emitter.emit("user:collectionUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}applyCoopEvent(e){this.currentState??={},this.currentState.CoopEvent=e??{MyObjectIndex:-1},this.emitter.emit("user:coopEventUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}patchCoopEventActiveGroup(e,t,s){this.currentState??={};let r=this.currentState.CoopEvent??={MyObjectIndex:-1};r.ActiveGroupID=e,r.ActiveCoopEventID=t,r.MyObjectIndex=s,this.emitter.emit("user:coopEventUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}applyDealOffer(e){this.currentState??={},this.currentState.DealOffer=e??{},this.emitter.emit("user:dealOfferUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}applyReferral(e){this.currentState??={},this.currentState.Referral=e??{},this.emitter.emit("user:referralUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}patchReferralSubscription(e){e&&(this.currentState??={},this.currentState.Referral??={},this.currentState.Referral.SubscribedToUserID=e,this.currentState.Referral.UpdatedAt=new Date().toISOString(),this.emitter.emit("user:referralUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0));}patchReferralInviteRewardClaimed(e){e&&(this.currentState??={},this.currentState.Referral??={},this.currentState.Referral.InviteRewardStates??={},this.currentState.Referral.InviteRewardStates[e]={RewardID:e,IsClaimed:true,ClaimedAt:new Date().toISOString()},this.emitter.emit("user:referralUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0));}applySocialFriendsList(e){this.currentState??={},this.currentState.Social??={},this.currentState.Social.Accepted=(e??[]).map(t=>t.UserID),this.emitter.emit("user:socialUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}applySocialIncomingRequests(e){this.currentState??={},this.currentState.Social??={},this.currentState.Social.IncomingRequests=(e??[]).map(t=>t.UserID),this.emitter.emit("user:socialUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}applySocialTimeline(e){this.currentState??={},this.currentState.Social??={},this.currentState.Social.Timeline=e??[],this.emitter.emit("user:socialUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}patchSocialAddOutgoingRequest(e){if(!e)return;let t=this.ensureSocial();t.OutgoingRequests??=[],t.OutgoingRequests.includes(e)||t.OutgoingRequests.push(e),this.emitter.emit("user:socialUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}patchSocialAcceptFriend(e){if(!e)return;let t=this.ensureSocial();t.IncomingRequests=(t.IncomingRequests??[]).filter(s=>s!==e),t.Accepted??=[],t.Accepted.includes(e)||t.Accepted.push(e),this.emitter.emit("user:socialUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}patchSocialRemoveIncomingRequest(e){if(!e)return;let t=this.ensureSocial();t.IncomingRequests=(t.IncomingRequests??[]).filter(s=>s!==e),this.emitter.emit("user:socialUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}patchSocialRemoveFriend(e){if(!e)return;let t=this.ensureSocial();t.Accepted=(t.Accepted??[]).filter(s=>s!==e),this.emitter.emit("user:socialUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}ensureSocial(){return this.currentState??={},this.currentState.Social??={},this.currentState.Social}applyTimedBoost(e){this.currentState??={},this.currentState.TimedBoost=e??{},this.emitter.emit("user:timedBoostUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}patchActiveTimedBoost(e,t){this.currentState??={},this.currentState.TimedBoost??={},this.currentState.TimedBoost.Active??={};let s=this.currentState.TimedBoost.Active;if(t==="Replace"||t==="KeepBest")for(let r of Object.keys(s)){let i=s[r];i&&i.BoostID===e.BoostID&&r!==e.InstanceID&&delete s[r];}s[e.InstanceID]=e,this.emitter.emit("user:timedBoostUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}applyUserCustomData(e){this.currentState??={},this.currentState.CustomData??={};let t=this.currentState.CustomData;t.Version=e.Version??0,t.Private=e.Private??{},t.Public=e.Public??{},t.ReadOnly=e.ReadOnly??{},this.emitter.emit("user:customDataUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}patchUserCustomDataKey(e,t,s,r,i){if(!t)return;this.currentState??={},this.currentState.CustomData??={};let c=this.currentState.CustomData,m={Value:s,UpdatedAt:new Date().toISOString(),Version:r,LastWriter:"Client",ExpiresAt:i??null};if(e==="Private")c.Private??={},c.Private[t]=m;else if(e==="Public")c.Public??={},c.Public[t]=m;else return;c.Version=(c.Version??0)+1,this.emitter.emit("user:customDataUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}removeUserCustomDataKey(e,t){if(!t||!this.currentState?.CustomData)return;let s=this.currentState.CustomData;if(e==="Private")s.Private&&delete s.Private[t];else if(e==="Public")s.Public&&delete s.Public[t];else return;this.emitter.emit("user:customDataUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}applyBoardState(e){this.currentState??={},this.currentState.GameLoop??={},this.currentState.GameLoop.Board=e??{},this.emitter.emit("user:gameLoopUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}applyCommunityChestUserState(e){this.currentState??={},this.currentState.GameLoop??={},this.currentState.GameLoop.CommunityChest=e??{},this.emitter.emit("user:gameLoopUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}patchBoardState(e){let t=this.ensureBoard();e(t),this.emitter.emit("user:gameLoopUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}patchBoardBuilding(e,t){if(e<0)return;let s=this.ensureBoard();s.BuildingStates??=[];let r=s.BuildingStates.find(i=>i.SlotIndex===e);r||(r={SlotIndex:e},s.BuildingStates.push(r)),t(r),this.emitter.emit("user:gameLoopUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}patchBoardPendingRaidLayout(e,t){let r=this.ensureBoard().Pending;r&&(e&&(r.RaidLayout=e),t>=0&&(r.OpenedIndices??=[],r.OpenedIndices.includes(t)||r.OpenedIndices.push(t)),this.emitter.emit("user:gameLoopUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0));}patchBoardSpecialPending(e){let s=this.ensureBoard().Pending;!s||s.Type.toUpperCase()!=="SPECIAL"||(s.Special??={},e(s.Special),this.emitter.emit("user:gameLoopUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0));}clearBoardPending(){let e=this.currentState?.GameLoop?.Board;!e||!e.Pending||(e.Pending=null,this.emitter.emit("user:gameLoopUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0));}ensureBoard(){return this.currentState??={},this.currentState.GameLoop??={},this.currentState.GameLoop.Board??={},this.currentState.GameLoop.Board}applyBlockchainState(e,t){this.currentState??={},this.currentState.Blockchain=e??{},t&&(this.currentState.InventoryV2??={},this.currentState.InventoryV2.CryptoCurrencies=t),this.emitter.emit("user:blockchainUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}applyMarketplaceState(e){this.currentState??={},this.currentState.Marketplace=e??{},this.emitter.emit("user:marketplaceUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}getVirtualCurrencyAmount(e){return this.currentState?.InventoryV2?.VirtualCurrencies?.[e]?.Amount??0}getCryptoCurrencyAmount(e){return this.currentState?.InventoryV2?.CryptoCurrencies?.[e]?.Amount??"0"}};var At=class{config=null;sections=new Map;itemDefs;currencyDefs;get titlePublicConfiguration(){return this.config}patchSection(e,t){this.sections.set(e,t);}getSection(e){return this.sections.get(e)}applyTitlePublicConfiguration(e){this.config=e&&typeof e=="object"?e:null;}get itemDefinitions(){return this.itemDefs??this.config?.Item??void 0}applyItemDefinitions(e){this.itemDefs=e;}get currencyDefinitions(){return this.currencyDefs??this.config?.Currency??void 0}applyCurrencyDefinitions(e){this.currencyDefs=e;}};var Ot=class{user;config;constructor(e){this.user=new kt(e),this.config=new At;}reset(){this.user.clear(),this.config.applyTitlePublicConfiguration(null);}};var Be={Virtual:"Virtual",Crypto:"Crypto"},ot=z.enum(["Virtual","Crypto"]),Ya={Item:"Item",VirtualCurrency:"VirtualCurrency",CryptoCurrency:"CryptoCurrency",UsdCent:"UsdCent"},Bt=z.enum(["Item","VirtualCurrency","CryptoCurrency","UsdCent"]),Xa={TimedEvent:"TimedEvent",Quest:"Quest",Leaderboard:"Leaderboard",CoopEvent:"CoopEvent",Season:"Season"},wt=z.enum(["TimedEvent","Quest","Leaderboard","CoopEvent","Season"]),el={Cyclic:"Cyclic",Scheduled:"Scheduled",Chained:"Chained"},Ct=z.enum(["Cyclic","Scheduled","Chained"]),de={None:"None",Device:"Device",Email:"Email",iDosGames:"iDosGames",Facebook:"Facebook",Google:"Google",GooglePlay:"GooglePlay",Telegram:"Telegram",Wallet:"Wallet"};var qt=class{constructor(e,t){this.storage=e;this.authTypeKey=`Saved_AuthType_${t}`,this.emailKey=`Saved_Auth_Email_${t}`,this.passwordKey=`Saved_Auth_Password_${t}`;}storage;authTypeKey;emailKey;passwordKey;get lastAuthType(){let e=this.storage.getString(this.authTypeKey);return tl(e)?e:de.None}saveAuthType(e){this.storage.setString(this.authTypeKey,e);}get savedEmail(){return this.storage.getString(this.emailKey)??""}get savedPassword(){return this.storage.getString(this.passwordKey)??""}saveEmailAndPassword(e,t){this.storage.setString(this.emailKey,e),this.storage.setString(this.passwordKey,t);}clear(){this.storage.remove(this.authTypeKey),this.storage.remove(this.emailKey),this.storage.remove(this.passwordKey);}};function tl(u){return u!==null&&Object.values(de).includes(u)}var sl=8,rl=100,il=/^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/i,Ui=["GameLoop"],Et=class{constructor(e){this.ctx=e;}ctx;authContext=null;refreshing=false;get context(){return this.authContext}get isLoggedIn(){return this.authContext!==null&&this.authContext.userID.length>0&&this.authContext.clientSessionTicket.length>0}get lastAuthType(){return this.ctx.authStore.lastAuthType}baseRequest(){return {BuildKey:this.ctx.settings.buildKey,WebAppLink:this.ctx.platform.getFullURL()}}async loginWithDeviceID(){this.ctx.emitter.emit("auth:requestSent",void 0);let e=this.baseRequest();e.DeviceID=this.ctx.platform.getDeviceID(),e.Device=this.ctx.platform.getDeviceModel(),e.Platform=this.ctx.platform.getPlatform();let t=await this.ctx.api.authentication.loginWithDeviceID(e);return t.ok?(this.applyAuthContext(t.data),this.fetchAndApplyClientState(de.Device)):t}async loginWithTelegram(){this.ctx.emitter.emit("auth:requestSent",void 0);let e=this.ctx.platform.getTelegramInitDataRaw();if(!e)return n("client","Telegram initData is not available.");let t=this.baseRequest();t.TelegramInitData=e;let s=await this.ctx.api.authentication.loginWithTelegram(t);return s.ok?(this.applyAuthContext(s.data),this.fetchAndApplyClientState(de.Telegram)):s}async loginWithEmail(e,t){this.ctx.emitter.emit("auth:requestSent",void 0);let s=this.baseRequest();s.Email=e,s.Password=t;let r=await this.ctx.api.authentication.loginWithEmail(s);if(!r.ok)return r;this.applyAuthContext(r.data);let i=await this.fetchAndApplyClientState(de.Email);return i.ok&&this.ctx.authStore.saveEmailAndPassword(e,t),i}async registerWithEmail(e,t){this.ctx.emitter.emit("auth:requestSent",void 0);let s=this.baseRequest();s.Email=e,s.Password=t,s.DeviceID=this.ctx.platform.getDeviceID(),s.Device=this.ctx.platform.getDeviceModel(),s.Platform=this.ctx.platform.getPlatform();let r=await this.ctx.api.authentication.registerWithEmail(s);if(!r.ok)return r;this.applyAuthContext(r.data);let i=await this.fetchAndApplyClientState(de.Email);return i.ok&&this.ctx.authStore.saveEmailAndPassword(e,t),i}async loginWithGoogle(e){this.ctx.emitter.emit("auth:requestSent",void 0);let t=this.baseRequest();t.GoogleIDToken=e;let s=await this.ctx.api.authentication.loginWithGoogle(t);return s.ok?(this.applyAuthContext(s.data),this.fetchAndApplyClientState(de.Google)):s}async requestWalletChallenge(e,t){this.ctx.emitter.emit("auth:requestSent",void 0);let s=this.baseRequest();return s.WalletAddress=e,s.NetworkID=t,this.ctx.api.authentication.requestWalletChallenge(s)}async loginWithWallet(e,t,s){this.ctx.emitter.emit("auth:requestSent",void 0);let r=this.baseRequest();r.WalletAddress=e,r.NetworkID=t,r.WalletSignature=s,r.Platform=this.ctx.platform.getPlatform(),r.Device=this.ctx.platform.getDeviceModel(),r.DeviceID=this.ctx.platform.getDeviceID();let i=await this.ctx.api.authentication.loginWithWallet(r);return i.ok?(this.applyAuthContext(i.data),this.fetchAndApplyClientState(de.Wallet)):i}async loginWithPlatformToken(e){if(!e)return n("client","AuthToken is null or empty.");this.ctx.emitter.emit("auth:requestSent",void 0);let t=this.baseRequest();t.PlatformAuthToken=e,t.DeviceID=this.ctx.platform.getDeviceID(),t.Device=this.ctx.platform.getDeviceModel(),t.Platform=this.ctx.platform.getPlatform();let s=await this.ctx.api.authentication.loginWithPlatformToken(t);return s.ok?(this.applyAuthContext(s.data),this.fetchAndApplyClientState(de.iDosGames)):s}async forgotPassword(e){this.ctx.emitter.emit("auth:requestSent",void 0);let t=this.baseRequest();return t.Email=e,this.ctx.api.authentication.forgotPassword(t)}async resetPassword(e,t,s){this.ctx.emitter.emit("auth:requestSent",void 0);let r=this.baseRequest();return r.Email=e,r.ResetToken=t,r.Password=s,this.ctx.api.authentication.resetPassword(r)}autoLogin(){switch(this.lastAuthType){case de.Email:return this.loginWithEmail(this.ctx.authStore.savedEmail,this.ctx.authStore.savedPassword);case de.Device:case de.None:return this.loginWithDeviceID();case de.Telegram:return this.loginWithTelegram();default:return Promise.resolve(n("client",`Cannot auto-login: last session used "${this.lastAuthType}", which requires a fresh token from the platform SDK. Obtain a new token and call the matching login method (e.g. loginWithGoogle) instead of autoLogin().`))}}async refreshSession(){if(this.refreshing||this.lastAuthType===de.None)return null;this.refreshing=true;try{return (await this.autoLogin()).ok&&this.authContext?this.authContext.clientSessionTicket:null}catch{return null}finally{this.refreshing=false;}}logout(){this.authContext=null,this.ctx.data.reset(),this.ctx.emitter.emit("auth:loggedOut",void 0);}static isValidEmail(e){return e.length>0&&il.test(e)}static isValidPasswordLength(e){return e.length>=sl&&e.length<=rl}applyAuthContext(e){this.authContext={userID:e.TitleUserID,clientSessionTicket:e.TitleClientSessionTicket,clientSessionTicketExpiration:e.TitleClientSessionTicketExpiration,platformUserID:e.PlatformUserID??void 0,platformAuthToken:e.PlatformAuthToken??void 0,platformAuthTokenExpiration:e.PlatformAuthTokenExpiration??void 0};}async fetchAndApplyClientState(e){let t=await this.ctx.userService.getClientStateExcept(Ui,Ui);return t.ok&&(this.ctx.authStore.saveAuthType(e),this.ctx.emitter.emit("auth:loggedIn",void 0)),t}};var Lt=class{constructor(e){this.ctx=e;}ctx;baseRequest(){let e=this.ctx.auth.context;return e?{UserID:e.userID,ClientSessionTicket:e.clientSessionTicket,BuildKey:this.ctx.settings.buildKey,WebAppLink:this.ctx.platform.getFullURL(),RelatedEntityID:d()}:null}async getClientState(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.user.getClientState(e);return t.ok&&this.applyClientState(t.data),t}async getClientStateExcept(e,t){let s=this.baseRequest();if(!s)return n("unauthorized","Not logged in.");s.ExcludeFields=e,s.ExcludeTitleFields=t;let r=await this.ctx.api.user.getClientStateExcept(s);return r.ok&&this.applyClientState(r.data,e,t),r}async getUserInventory(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.user.getInventory(e);return t.ok&&(this.ctx.data.user.applyInventory(t.data),this.ctx.emitter.emit("user:inventoryReceived",t.data)),t}async getEventTokens(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.user.getEventTokens(e);return t.ok&&this.ctx.emitter.emit("user:eventTokensReceived",t.data),t}async getUsageTime(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.user.getUsageTime(e);return t.ok&&this.ctx.emitter.emit("user:usageTimeReceived",t.data),t}async addUsageTime(e,t,s){let r=this.baseRequest();if(!r)return n("unauthorized","Not logged in.");r.UsageTime=e,r.IsNewSession=t,r.SessionDurationSeconds=s;let i=await this.ctx.api.user.addUsageTime(r);return i.ok&&this.ctx.emitter.emit("user:usageTimeAdded",i.data),i}async deleteUserAccount(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.user.deleteUserAccount(e);return t.ok&&this.ctx.emitter.emit("user:accountDeleted",t.data),t}async changeUsername(e){let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.Username=e;let s=await this.ctx.api.user.changeUsername(t);return s.ok&&this.ctx.emitter.emit("user:usernameChanged",s.data),s}applyClientState(e,t,s){let r=t?.includes("GameLoop")===true,i=s?.includes("GameLoop")===true,c=r?this.ctx.data.user.state?.GameLoop:void 0,m=i?this.ctx.data.config.titlePublicConfiguration?.GameLoop:void 0;this.ctx.data.config.applyTitlePublicConfiguration(e.Title),this.ctx.data.user.applyUserState(e.User??{});let z=this.ctx.data.user.state;r&&z&&z.GameLoop==null&&(z.GameLoop=c);let B=this.ctx.data.config.titlePublicConfiguration;i&&B&&B.GameLoop==null&&(B.GameLoop=m),this.ctx.emitter.emit("user:clientStateReceived",e);}};var Nt=class{constructor(e){this.ctx=e;}ctx;async convert(e,t,s,r,i,c){if(!t)return n("client","SourceID is required.");if(!r)return n("client","TargetID is required.");if(i<=0)return n("client","Amount must be positive.");if(e===s&&t===r)return n("client","Source and target must differ.");if(e===Be.Crypto||s===Be.Crypto)return n("client","Convert supports VC\u2194VC only. Use cryptoConvert for crypto.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let m={...this.ctx.buildAuthedBaseRequest(),SourceType:e,SourceID:t,TargetType:s,TargetID:r,SourceAmount:String(Math.trunc(i)),TransactionID:c&&c.length>0?c:`convert_${e}_${t}_to_${s}_${r}_${d()}`},z=await this.ctx.api.currency.convert(m);if(z.ok){let B=z.data,G={Consume:{Standard:{Entries:[{Type:"VirtualCurrency",CurrencyID:B.SourceID,Amount:B.SourceSpent}]}},Grant:{Standard:{Entries:[{Type:"VirtualCurrency",CurrencyID:B.TargetID,Amount:B.TargetCredited}]}}};this.ctx.data.user.applyResourceOperation(G,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("currency:converted",B);}return z}async cryptoConvert(e,t,s,r,i,c){let m=i instanceof Mt?i:new Mt(i);if(!t)return n("client","SourceID is required.");if(!r)return n("client","TargetID is required.");if(m.lte(0))return n("client","SourceAmount must be a positive decimal.");if(e===s&&t===r)return n("client","Source and target must differ.");if(e===Be.Virtual&&s===Be.Virtual)return n("client","cryptoConvert requires at least one crypto side. Use convert for VC\u2194VC.");if(e===Be.Virtual&&!m.isInteger())return n("client","Virtual currency source amount must be integer.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let z={...this.ctx.buildAuthedBaseRequest(),SourceType:e,SourceID:t,TargetType:s,TargetID:r,SourceAmount:m.toString(),TransactionID:c&&c.length>0?c:`crypto_convert_${e}_${t}_to_${s}_${r}_${d()}`},B=await this.ctx.api.currency.cryptoConvert(z);if(B.ok){let G=B.data,pe=[],fe=[];if(G.SourceType===Be.Virtual&&pe.push({Type:"VirtualCurrency",CurrencyID:G.SourceID,Amount:Math.trunc(Number(G.SourceSpent))}),G.TargetType===Be.Virtual&&fe.push({Type:"VirtualCurrency",CurrencyID:G.TargetID,Amount:Math.trunc(Number(G.TargetCredited))}),pe.length>0||fe.length>0){let Pe={Consume:pe.length>0?{Standard:{Entries:pe}}:null,Grant:fe.length>0?{Standard:{Entries:fe}}:null};this.ctx.data.user.applyResourceOperation(Pe,this.ctx.data.config.itemDefinitions);}G.SourceType===Be.Crypto&&this.ctx.data.user.patchCryptoCurrencyDelta(G.SourceID,new Mt(G.SourceSpent).negated(),G.ServerTimeUtc),G.TargetType===Be.Crypto&&this.ctx.data.user.patchCryptoCurrencyDelta(G.TargetID,new Mt(G.TargetCredited),G.ServerTimeUtc),this.ctx.emitter.emit("currency:cryptoConverted",G);}return B}};var jt=class{constructor(e){this.ctx=e;}ctx;async upgradeLevel(e,t){let s=e.trim();if(!s)return n("client","ItemInstanceID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let r={...this.ctx.buildAuthedBaseRequest(),ItemInstanceID:s,RelatedEntityID:`upgrade_item_${s}_${d()}`};t&&t.length>0&&(r.FodderInstanceIDs=[...t]);let i=await this.ctx.api.item.upgradeLevel(r);return i.ok&&(await this.ctx.userService.getUserInventory(),this.ctx.emitter.emit("item:levelUpgraded",i.data)),i}async upgradeLevelsBatch(e){if(!e||e.length===0)return n("client","upgrades is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),Upgrades:e},s=await this.ctx.api.item.upgradeLevelsBatch(t);return s.ok&&(await this.ctx.userService.getUserInventory(),this.ctx.emitter.emit("item:levelsUpgradedBatch",s.data)),s}};var nl="Store",Ft=class{constructor(e){this.ctx=e;}ctx;async purchase(e,t=1){if(!e)return n("client","OfferID is required.");if(t<1)return n("client","Count must be at least 1.");let s=this.ctx.auth.context;if(!s)return n("unauthorized","Not logged in.");let r={...this.ctx.buildAuthedBaseRequest(),OfferID:e,Count:t,RelatedEntityID:`store_buy_${e}_${s.userID}_${d()}`},i=await this.ctx.api.store.purchase(r);if(i.ok){let c=i.data;this.ctx.data.user.patchStorePurchase(e,t,c.ServerTimeUtc),this.ctx.data.user.applyResourceOperation(c.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("store:offerPurchased",c);}return i}async purchaseBatch(e){if(!e||e.length===0)return n("client","purchases is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),Purchases:e},s=await this.ctx.api.store.purchaseBatch(t);if(s.ok){let r=false;for(let i of s.data)!i.Success||!i.Data||!i.Data.OfferID||(this.ctx.data.user.patchStorePurchase(i.Data.OfferID,i.Data.Count,i.Data.ServerTimeUtc),!r&&i.Data.Resources&&(this.ctx.data.user.applyResourceOperation(i.Data.Resources,this.ctx.data.config.itemDefinitions),r=true));this.ctx.emitter.emit("store:offersPurchasedBatch",s.data);}return s}async getDefinitions(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.store.getDefinitions(e);return t.ok&&(this.ctx.data.config.patchSection(nl,t.data),this.ctx.emitter.emit("store:definitionsLoaded",t.data)),t}async getUserState(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.store.getUserState(e);return t.ok&&(this.ctx.data.user.applyStore(t.data),this.ctx.emitter.emit("store:userStateLoaded",t.data)),t}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var ol="Lootbox",_t=class{constructor(e){this.ctx=e;}ctx;async getDefinitions(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.lootbox.getDefinitions(e);if(t.ok){let s=t.data.LootboxDefinitions;s&&(this.ctx.data.config.patchSection(ol,s),this.ctx.emitter.emit("lootbox:definitionsLoaded",s));}return t}async open(e,t,s){if(!e)return n("client","LootboxID is required.");if(t<1)return n("client","Count must be at least 1.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let r={...this.ctx.buildAuthedBaseRequest(),LootboxID:e,Count:t,SelectedOptionID:s,RelatedEntityID:`lootbox_${e}_${s}_${d()}`},i=await this.ctx.api.lootbox.open(r);if(i.ok){let c=i.data;c.TriggeredPity&&c.TriggeredPity.length>0&&this.ctx.data.user.applyLootboxPityTriggers(e,c.TriggeredPity,t),this.ctx.data.user.applyResourceOperation(c.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("lootbox:opened",c);}return i}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var al="Reward";function Mr(u){return u.length>0&&!u.includes(".")&&!u.includes("$")}var Wt=class{constructor(e){this.ctx=e;}ctx;multiplier=1;multiplierEnabled=false;get milestoneRewardMultiplier(){return this.multiplier}get milestoneRewardMultiplierEnabled(){return this.multiplierEnabled}async getRewardDefinitions(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.reward.getRewardDefinitions(e);if(t.ok){let s=t.data.RewardDefinitions;s&&(this.ctx.data.config.patchSection(al,s),this.ctx.emitter.emit("reward:definitionsLoaded",s));}return t}async getUserRewardsState(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.reward.getUserRewardsState(e);return t.ok&&t.data.Rewards&&(this.ctx.data.user.applyReward(t.data.Rewards),this.ctx.emitter.emit("reward:userStateLoaded",t.data.Rewards)),t}async getMilestoneRewardMultiplier(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.reward.getMilestoneRewardMultiplier(e);if(t.ok){let s=t.data;this.multiplierEnabled=s.Enabled,this.multiplier=s.Enabled?s.Multiplier??1:1,this.ctx.emitter.emit("reward:milestoneMultiplierLoaded",s);}return t}async claimDailyReward(e){let t=this.ctx.auth.context;if(!t)return n("unauthorized","Not logged in.");let s={...this.ctx.buildAuthedBaseRequest(),CalendarID:e,RelatedEntityID:`dailyreward_${t.userID}_${e??"default"}_${d()}`},r=await this.ctx.api.reward.claimDailyReward(s);if(r.ok){let i=r.data;this.ctx.data.user.patchDailyCalendarState(i.CalendarID,i.DailyState),this.ctx.data.user.applyResourceOperation(i.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("reward:dailyClaimed",i);}return r}async collectIdleAccrual(e){if(!Mr(e))return n("client",'AccrualID is required and must not contain "." or "$".');if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),AccrualID:e,RelatedEntityID:`idle_collect_${e}_${d()}`},s=await this.ctx.api.reward.collectIdleAccrual(t);if(s.ok){let r=s.data;this.ctx.data.user.patchIdleAccrualState(r.AccrualID,r.IdleState),this.ctx.data.user.applyResourceOperation(r.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("reward:idleCollected",r);}return s}async claimComebackReward(e){if(!Mr(e))return n("client",'ComebackID is required and must not contain "." or "$".');if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),ComebackID:e,RelatedEntityID:`comeback_claim_${e}_${d()}`},s=await this.ctx.api.reward.claimComebackReward(t);if(s.ok){let r=s.data;this.ctx.data.user.patchComebackState(r.ComebackID,r.ComebackState),this.ctx.data.user.applyResourceOperation(r.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("reward:comebackClaimed",r);}return s}async claimReward(e){if(!Mr(e))return n("client",'ClaimID is required and must not contain "." or "$".');if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),ClaimID:e,RelatedEntityID:`reward_claim_${e}_${d()}`},s=await this.ctx.api.reward.claimReward(t);if(s.ok){let r=s.data;this.ctx.data.user.patchClaimRewardState(r.ClaimID,r.ClaimState),this.ctx.data.user.applyResourceOperation(r.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("reward:claimed",r);}return s}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var ll="Quest",Vt=class{constructor(e){this.ctx=e;}ctx;async getQuestDefinitions(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.quest.getQuestDefinitions(e);return t.ok&&(this.ctx.data.config.patchSection(ll,t.data),this.ctx.emitter.emit("quest:definitionsLoaded",t.data)),t}async getUserQuestState(e=true){let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.AutoRefreshCycles=e;let s=await this.ctx.api.quest.getUserQuestState(t);if(s.ok){let r=s.data.State??{};this.ctx.data.user.applyQuest(r),this.ctx.data.user.patchQuestPointsTracks(s.data.PointsTracks),this.ctx.emitter.emit("quest:userStateLoaded",r);}return s}async refreshQuestCycles(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.quest.refreshQuestCycles(e);return t.ok&&this.ctx.emitter.emit("quest:cyclesRefreshed",void 0),t}async claimQuestReward(e,t){let s=e.trim();if(!s)return n("client","QuestID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let r=t&&t.trim().length>0?t.trim():void 0,i={...this.ctx.buildAuthedBaseRequest(),QuestID:s,CycleID:r,RelatedEntityID:`quest_claim_${r??""}_${s}_${d()}`},c=await this.ctx.api.quest.claimQuestReward(i);if(c.ok){let m=c.data;this.ctx.data.user.patchQuestStatus(m.QuestID,m.CycleID,"Claimed"),this.ctx.data.user.applyResourceOperation(m.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("quest:rewardClaimed",m);}return c}async claimQuestRewardsBatch(e){if(!e||e.length===0)return n("client","quests is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),Quests:e},s=await this.ctx.api.quest.claimQuestRewardsBatch(t);if(s.ok){let r=false;for(let i of s.data)!i.Success||!i.Data||(this.ctx.data.user.patchQuestStatus(i.Data.QuestID,i.Data.CycleID,"Claimed"),!r&&i.Data.Resources&&(this.ctx.data.user.applyResourceOperation(i.Data.Resources,this.ctx.data.config.itemDefinitions),r=true));this.ctx.emitter.emit("quest:rewardsClaimedBatch",s.data);}return s}async claimMilestoneReward(e,t){let s=e.trim(),r=t.trim();if(!s||!r)return n("client","CycleID and MilestoneID are required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let i={...this.ctx.buildAuthedBaseRequest(),CycleID:s,MilestoneID:r,RelatedEntityID:`milestone_claim_${s}_${r}_${d()}`},c=await this.ctx.api.quest.claimMilestoneReward(i);if(c.ok){let m=c.data;this.ctx.data.user.patchMilestoneClaimed(m.CycleID,m.MilestoneID),this.ctx.data.user.applyResourceOperation(m.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("quest:milestoneClaimed",m);}return c}async claimMilestoneRewardsBatch(e){if(!e||e.length===0)return n("client","milestones is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),Milestones:e},s=await this.ctx.api.quest.claimMilestoneRewardsBatch(t);if(s.ok){let r=false;for(let i of s.data)!i.Success||!i.Data||(this.ctx.data.user.patchMilestoneClaimed(i.Data.CycleID,i.Data.MilestoneID),!r&&i.Data.Resources&&(this.ctx.data.user.applyResourceOperation(i.Data.Resources,this.ctx.data.config.itemDefinitions),r=true));this.ctx.emitter.emit("quest:milestonesClaimedBatch",s.data);}return s}async claimGroupCompletionReward(e,t){let s=e.trim(),r=t.trim();if(!s||!r)return n("client","CycleID and GroupCompletionID are required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let i={...this.ctx.buildAuthedBaseRequest(),CycleID:s,GroupCompletionID:r,RelatedEntityID:`group_completion_${s}_${r}_${d()}`},c=await this.ctx.api.quest.claimGroupCompletionReward(i);if(c.ok){let m=c.data;this.ctx.data.user.patchGroupCompletionClaimed(m.CycleID,m.GroupCompletionID),this.ctx.data.user.applyResourceOperation(m.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("quest:groupCompletionClaimed",m);}return c}async addQuestProgress(e,t){let s=e.trim();if(!s)return n("client","MetricID is required.");if(t<0)return n("client","ProgressValue must be >= 0.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let r={...this.ctx.buildAuthedBaseRequest(),MetricID:s,ProgressValue:t},i=await this.ctx.api.quest.addQuestProgress(r);return i.ok&&(this.ctx.data.user.patchQuestProgressUpdates(i.data.Updates),this.ctx.emitter.emit("quest:progressAdded",i.data)),i}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var ul="TimedEvent",Qt=class{constructor(e){this.ctx=e;}ctx;async getActiveEvents(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.timedEvent.getActiveEvents(e);return t.ok&&(this.ctx.data.user.applyActiveEvents(t.data),this.ctx.emitter.emit("timedEvent:activeEventsLoaded",t.data)),t}async getDefinitions(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.timedEvent.getDefinitions(e);return t.ok&&(this.ctx.data.config.patchSection(ul,t.data),this.ctx.emitter.emit("timedEvent:definitionsLoaded",t.data)),t}async getUserLteState(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.timedEvent.getUserLteState(e);return t.ok&&(this.ctx.data.user.applyUserLteState(t.data),this.ctx.emitter.emit("timedEvent:userStateLoaded",t.data)),t}async grantTokens(e,t,s,r,i,c,m=1){if(!t)return n("client","LteID is required.");if(!s)return n("client","SourceType is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let z={...this.ctx.buildAuthedBaseRequest(),Type:e,LteID:t,SourceType:s,Outcome:r,AmountOverride:i,SourceParams:c,RollMultiplier:m},B=await this.ctx.api.timedEvent.grantTokens(z);return B.ok&&(this.ctx.data.user.applyResourceOperation(B.data,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("timedEvent:tokensGranted",B.data)),B}async spendTokens(e,t,s){if(!t)return n("client","LteID is required.");if(s<=0)return n("client","SpendAmount must be positive.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let r={...this.ctx.buildAuthedBaseRequest(),Type:e,LteID:t,SpendAmount:s},i=await this.ctx.api.timedEvent.spendTokens(r);return i.ok&&(this.ctx.data.user.applyResourceOperation(i.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("timedEvent:tokensSpent",i.data)),i}async claimMilestone(e,t,s){if(!t||!s)return n("client","LteID and MilestoneID are required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let r={...this.ctx.buildAuthedBaseRequest(),Type:e,LteID:t,MilestoneID:s},i=await this.ctx.api.timedEvent.claimMilestone(r);if(i.ok){let c=i.data;this.ctx.data.user.applyResourceOperation(c.Rewards,this.ctx.data.config.itemDefinitions),this.ctx.data.user.patchTimedEventMilestoneClaimed(e,t,s),this.ctx.emitter.emit("timedEvent:milestoneClaimed",c);}return i}async claimMilestonesBatch(e){if(!e||e.length===0)return n("client","milestones is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),Milestones:e},s=await this.ctx.api.timedEvent.claimMilestonesBatch(t);return s.ok&&(this.applyMilestoneClaimBatch(s.data),this.ctx.emitter.emit("timedEvent:milestonesClaimedBatch",s.data)),s}async claimAllMilestones(e){let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");e&&e.length>0&&(t.Events=e);let s=await this.ctx.api.timedEvent.claimAllMilestones(t);return s.ok&&(this.applyMilestoneClaimBatch(s.data),this.ctx.emitter.emit("timedEvent:allMilestonesClaimed",s.data)),s}async spendTokensBatch(e){if(!e||e.length===0)return n("client","spends is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),Spends:e},s=await this.ctx.api.timedEvent.spendTokensBatch(t);if(s.ok){let r=false;for(let i of s.data)!r&&i.Success&&i.Data?.Resources&&(this.ctx.data.user.applyResourceOperation(i.Data.Resources,this.ctx.data.config.itemDefinitions),r=true);this.ctx.emitter.emit("timedEvent:tokensSpentBatch",s.data);}return s}async grantTokensBatch(e){if(!e||e.length===0)return n("client","grants is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),Grants:e},s=await this.ctx.api.timedEvent.grantTokensBatch(t);if(s.ok){let r=false;for(let i of s.data)!r&&i.Success&&i.Data?.Resources&&(this.ctx.data.user.applyResourceOperation(i.Data.Resources,this.ctx.data.config.itemDefinitions),r=true);this.ctx.emitter.emit("timedEvent:tokensGrantedBatch",s.data);}return s}applyMilestoneClaimBatch(e){let t=false;for(let s of e){if(!s.Success||!s.Data)continue;let r=s.Data;r.Type&&r.LteID&&r.MilestoneID&&this.ctx.data.user.patchTimedEventMilestoneClaimed(r.Type,r.LteID,r.MilestoneID),!t&&r.Rewards&&(this.ctx.data.user.applyResourceOperation(r.Rewards,this.ctx.data.config.itemDefinitions),t=true);}}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var cl="Leaderboard",Ht=class{constructor(e){this.ctx=e;}ctx;cycleDocID(e){return `${this.ctx.settings.titleID}_${e}`}async getDefinitions(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.leaderboard.getDefinitions(e);return t.ok&&(this.ctx.data.config.patchSection(cl,t.data),this.ctx.emitter.emit("leaderboard:definitionsLoaded",t.data)),t}async getLeaderboard(e){if(!e)return n("client","LeaderboardID is required.");let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.LeaderboardID=e;let s=await this.ctx.api.leaderboard.getLeaderboard(t);return s.ok&&this.ctx.emitter.emit("leaderboard:loaded",s.data),s}async getMyProgress(e){if(!e)return n("client","LeaderboardID is required.");let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.LeaderboardID=e;let s=await this.ctx.api.leaderboard.getMyProgress(t);return s.ok&&(this.ctx.data.user.patchLeaderboardMyProgress(this.cycleDocID(e),s.data),this.ctx.emitter.emit("leaderboard:myProgressLoaded",s.data)),s}async submitScore(e,t){if(!e)return n("client","LeaderboardID is required.");if(t<=0)return n("client","Score must be positive.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let s={...this.ctx.buildAuthedBaseRequest(),LeaderboardID:e,Score:t},r=await this.ctx.api.leaderboard.submitScore(s);if(r.ok){let i=r.data;this.ctx.data.user.patchLeaderboardScoreSubmitted(this.cycleDocID(e),i.NewScore,t,i.CycleVersion),this.ctx.emitter.emit("leaderboard:scoreSubmitted",i);}return r}async submitScoreFromSource(e,t,s,r,i=1){if(!e)return n("client","LeaderboardID is required.");if(!t)return n("client","SourceType is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let c={...this.ctx.buildAuthedBaseRequest(),LeaderboardID:e,SourceType:t,Outcome:s,Params:r,RollMultiplier:i},m=await this.ctx.api.leaderboard.submitScoreFromSource(c);if(m.ok){let z=m.data;this.ctx.data.user.patchLeaderboardScoreSubmitted(this.cycleDocID(e),z.NewScore,z.NewScore,z.CycleVersion),this.ctx.emitter.emit("leaderboard:scoreSubmitted",z);}return m}async claimCycleReward(e){if(!e)return n("client","LeaderboardID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),LeaderboardID:e},s=await this.ctx.api.leaderboard.claimCycleReward(t);if(s.ok){let r=s.data;this.ctx.data.user.patchLeaderboardCycleRewardClaimed(this.cycleDocID(e)),this.ctx.data.user.applyResourceOperation(r.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("leaderboard:cycleRewardClaimed",r);}return s}async claimMilestone(e,t){if(!e||!t)return n("client","LeaderboardID and MilestoneID are required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let s={...this.ctx.buildAuthedBaseRequest(),LeaderboardID:e,MilestoneID:t},r=await this.ctx.api.leaderboard.claimMilestone(s);if(r.ok){let i=r.data;this.ctx.data.user.patchLeaderboardMilestoneClaimed(this.cycleDocID(e),t),this.ctx.data.user.applyResourceOperation(i.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("leaderboard:milestoneClaimed",i);}return r}async getFriendsLeaderboard(e){if(!e)return n("client","LeaderboardID is required.");let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.LeaderboardID=e;let s=await this.ctx.api.leaderboard.getFriendsLeaderboard(t);return s.ok&&this.ctx.emitter.emit("leaderboard:friendsLoaded",s.data),s}async getLeaderboardsBatch(e){if(!e||e.length===0)return n("client","leaderboardIDs is required.");let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.LeaderboardIDs=e;let s=await this.ctx.api.leaderboard.getLeaderboardsBatch(t);return s.ok&&this.ctx.emitter.emit("leaderboard:loadedBatch",s.data),s}async getProgressBatch(e){if(!e||e.length===0)return n("client","leaderboardIDs is required.");let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.LeaderboardIDs=e;let s=await this.ctx.api.leaderboard.getProgressBatch(t);if(s.ok){for(let r of s.data)!r.Success||!r.Data||this.ctx.data.user.patchLeaderboardMyProgress(this.cycleDocID(r.Data.LeaderboardID),r.Data);this.ctx.emitter.emit("leaderboard:myProgressLoadedBatch",s.data);}return s}async claimCycleRewardsBatch(e){if(!e||e.length===0)return n("client","leaderboardIDs is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),LeaderboardIDs:e},s=await this.ctx.api.leaderboard.claimCycleRewardsBatch(t);if(s.ok){for(let r of s.data)!r.Success||!r.Data||(this.ctx.data.user.patchLeaderboardCycleRewardClaimed(this.cycleDocID(r.Data.LeaderboardID)),r.Data.Resources&&this.ctx.data.user.applyResourceOperation(r.Data.Resources,this.ctx.data.config.itemDefinitions));this.ctx.emitter.emit("leaderboard:cycleRewardsClaimedBatch",s.data);}return s}async claimMilestonesBatch(e){if(!e||e.length===0)return n("client","milestones is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),Milestones:e},s=await this.ctx.api.leaderboard.claimMilestonesBatch(t);if(s.ok){for(let r of s.data)!r.Success||!r.Data||(this.ctx.data.user.patchLeaderboardMilestoneClaimed(this.cycleDocID(r.Data.LeaderboardID),r.Data.MilestoneID),r.Data.Resources&&this.ctx.data.user.applyResourceOperation(r.Data.Resources,this.ctx.data.config.itemDefinitions));this.ctx.emitter.emit("leaderboard:milestonesClaimedBatch",s.data);}return s}async submitScoresBatch(e){if(!e||e.length===0)return n("client","scores is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),Scores:e},s=await this.ctx.api.leaderboard.submitScoresBatch(t);if(s.ok){for(let r of s.data)!r.Success||!r.Data||this.ctx.data.user.patchLeaderboardScoreSubmitted(this.cycleDocID(r.Data.LeaderboardID),r.Data.NewScore,r.Data.NewScore,r.Data.CycleVersion);this.ctx.emitter.emit("leaderboard:scoresSubmittedBatch",s.data);}return s}async claimAllRewardsBatch(e){if(!e||e.length===0)return n("client","leaderboardIDs is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),LeaderboardIDs:e},s=await this.ctx.api.leaderboard.claimAllRewardsBatch(t);if(s.ok){for(let r of s.data){let i=this.cycleDocID(r.LeaderboardID);r.CycleReward?.Success&&r.CycleReward.Data&&(this.ctx.data.user.patchLeaderboardCycleRewardClaimed(i),r.CycleReward.Data.Resources&&this.ctx.data.user.applyResourceOperation(r.CycleReward.Data.Resources,this.ctx.data.config.itemDefinitions));for(let c of r.Milestones??[])!c.Success||!c.Data||(this.ctx.data.user.patchLeaderboardMilestoneClaimed(i,c.Data.MilestoneID),c.Data.Resources&&this.ctx.data.user.applyResourceOperation(c.Data.Resources,this.ctx.data.config.itemDefinitions));}this.ctx.emitter.emit("leaderboard:allRewardsClaimedBatch",s.data);}return s}async getOverviewBatch(e){if(!e||e.length===0)return n("client","leaderboardIDs is required.");let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.LeaderboardIDs=e;let s=await this.ctx.api.leaderboard.getOverviewBatch(t);if(s.ok){for(let r of s.data)r.Progress?.Success&&r.Progress.Data&&this.ctx.data.user.patchLeaderboardMyProgress(this.cycleDocID(r.LeaderboardID),r.Progress.Data);this.ctx.emitter.emit("leaderboard:overviewLoadedBatch",s.data);}return s}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var pl="Season",$t=class{constructor(e){this.ctx=e;}ctx;async getDefinitions(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.season.getDefinitions(e);return t.ok&&(this.ctx.data.config.patchSection(pl,t.data),this.ctx.emitter.emit("season:definitionsLoaded",t.data)),t}async getActiveSeason(e){if(!e)return n("client","SeasonChainID is required.");let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.SeasonChainID=e;let s=await this.ctx.api.season.getActiveSeason(t);return s.ok&&(s.data.UserState&&this.ctx.data.user.patchSeasonState(e,s.data.UserState),this.ctx.emitter.emit("season:activeLoaded",s.data)),s}async getUserState(e){if(!e)return n("client","SeasonChainID is required.");let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.SeasonChainID=e;let s=await this.ctx.api.season.getUserState(t);return s.ok&&(this.ctx.data.user.patchSeasonState(e,s.data),this.ctx.emitter.emit("season:userStateLoaded",s.data)),s}async grantStatusTokens(e,t){if(!e)return n("client","SeasonChainID is required.");if(t<=0)return n("client","Amount must be positive.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let s={...this.ctx.buildAuthedBaseRequest(),SeasonChainID:e,Amount:t,RelatedEntityID:`season_grant_${e}_${d()}`},r=await this.ctx.api.season.grantStatusTokens(s);return r.ok&&(this.ctx.data.user.patchSeasonCurrentTier(e,r.data.NewTier),this.ctx.emitter.emit("season:statusTokensGranted",r.data)),r}async claimTierReward(e,t){if(!e)return n("client","SeasonChainID is required.");if(t<=0)return n("client","TierNumber must be positive.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let s={...this.ctx.buildAuthedBaseRequest(),SeasonChainID:e,TierNumber:t,RelatedEntityID:`season_tier_${e}_t${t}_${d()}`},r=await this.ctx.api.season.claimTierReward(s);if(r.ok){let i=r.data;this.ctx.data.user.patchSeasonClaimedTier(e,t),this.ctx.data.user.applyResourceOperation(i.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("season:tierRewardClaimed",i);}return r}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var dl="Premium",Zt=class{constructor(e){this.ctx=e;}ctx;async getDefinitions(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.premium.getDefinitions(e);return t.ok&&t.data.Premium&&(this.ctx.data.config.patchSection(dl,t.data.Premium),this.ctx.emitter.emit("premium:definitionsLoaded",t.data)),t}async getUserState(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.premium.getUserState(e);return t.ok&&t.data.Premium&&(this.ctx.data.user.applyPremium(t.data.Premium),this.ctx.emitter.emit("premium:stateLoaded",t.data)),t}async activateTrial(e,t){if(!e||!t)return n("client","PremiumID and TransactionID are required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let s={...this.ctx.buildAuthedBaseRequest(),PremiumID:e,TransactionID:t,RelatedEntityID:`premium_trial_${e}_${t}`},r=await this.ctx.api.premium.activateTrial(s);return r.ok&&(r.data.Premium&&this.ctx.data.user.applyPremium(r.data.Premium),this.ctx.emitter.emit("premium:trialActivated",r.data)),r}async purchaseItemOrCurrency(e,t,s="Default",r=1){if(!e||!t)return n("client","PremiumID and TransactionID are required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let i={...this.ctx.buildAuthedBaseRequest(),PremiumID:e,TransactionID:t,SelectedOptionID:s,Count:r,RelatedEntityID:`premium_purchase_${e}_${t}`},c=await this.ctx.api.premium.purchaseItemOrCurrency(i);if(c.ok){let m=c.data;m.Premium&&this.ctx.data.user.applyPremium(m.Premium),this.ctx.data.user.applyResourceOperation(m.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("premium:purchaseCompleted",m);}return c}async purchaseRealMoney(e,t,s,r,i,c,m,z){if(!e||!t)return n("client","PremiumID and TransactionID are required.");if(!r||!i)return n("client","ProductID and ReceiptData are required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let B={...this.ctx.buildAuthedBaseRequest(),PremiumID:e,TransactionID:t,Store:s,ProductID:r,ReceiptData:i,PurchaseToken:c,PackageName:m,AppStoreEnvironment:z,RelatedEntityID:`premium_iap_${e}_${t}`},G=await this.ctx.api.premium.purchaseRealMoney(B);if(G.ok){let pe=G.data;pe.Premium&&this.ctx.data.user.applyPremium(pe.Premium),this.ctx.data.user.applyResourceOperation(pe.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("premium:realMoneyPurchaseCompleted",pe);}return G}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var ml="Character",Kt=class{constructor(e){this.ctx=e;}ctx;async getCharacterDefinitions(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.character.getCharacterDefinitions(e);return t.ok&&(this.ctx.data.config.patchSection(ml,t.data),this.ctx.emitter.emit("character:definitionsLoaded",t.data)),t}async getUserCharacters(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.character.getUserCharacters(e);if(t.ok){let s=t.data.Characters??{};this.ctx.data.user.applyCharacter(s),this.ctx.emitter.emit("character:userCharactersLoaded",s);}return t}async unlockCharacter(e){if(!e)return n("client","CharacterID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),CharacterID:e,RelatedEntityID:`unlock_char_${e}_${d()}`},s=await this.ctx.api.character.unlockCharacter(t);if(s.ok){let r=s.data;this.ctx.data.user.patchCharacter(r.CharacterID,i=>{i.StatLevels??={},i.Equipment??={},r.Power!=null&&(i.Power=r.Power),i.UpdatedAt=r.ServerTimeUtc;}),this.ctx.data.user.applyResourceOperation(r.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("character:unlocked",r);}return s}async upgradeStatLevel(e,t,s){if(!e||!t)return n("client","CharacterID and StatID are required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let r={...this.ctx.buildAuthedBaseRequest(),CharacterID:e,StatID:t,RelatedEntityID:`upgrade_stat_${e}_${t}_${d()}`,...s?.levels!=null?{Levels:s.levels}:{},...s?.targetLevel!=null?{TargetLevel:s.targetLevel}:{}},i=await this.ctx.api.character.upgradeStatLevel(r);if(i.ok){let c=i.data;this.ctx.data.user.patchCharacter(c.CharacterID,m=>{m.StatLevels??={},m.StatLevels[c.StatID]=c.StatLevel,c.Power!=null&&(m.Power=c.Power),m.UpdatedAt=c.ServerTimeUtc;}),this.ctx.data.user.applyResourceOperation(c.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("character:statLevelUpgraded",c);}return i}async upgradeCharacterLevel(e,t){if(!e)return n("client","CharacterID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let s={...this.ctx.buildAuthedBaseRequest(),CharacterID:e,RelatedEntityID:`upgrade_char_${e}_${d()}`,...t?.levels!=null?{Levels:t.levels}:{},...t?.targetLevel!=null?{TargetLevel:t.targetLevel}:{}},r=await this.ctx.api.character.upgradeCharacterLevel(s);if(r.ok){let i=r.data;this.ctx.data.user.patchCharacter(i.CharacterID,c=>{c.Level=i.NewLevel,i.Power!=null&&(c.Power=i.Power),c.UpdatedAt=i.ServerTimeUtc,i.NewLevel===1&&(c.StatLevels??={},c.Equipment??={});}),this.ctx.data.user.applyResourceOperation(i.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("character:levelUpgraded",i);}return r}async equipItems(e,t){if(!e)return n("client","CharacterID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let s={...this.ctx.buildAuthedBaseRequest(),CharacterID:e,ItemsToEquip:t},r=await this.ctx.api.character.equipItems(s);return r.ok&&(this.applyEquipChangesLocally(e,r.data),this.ctx.emitter.emit("character:itemsEquipped",r.data)),r}async unequipItems(e,t){if(!e)return n("client","CharacterID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let s={...this.ctx.buildAuthedBaseRequest(),CharacterID:e,UnequipSlotIDs:t},r=await this.ctx.api.character.unequipItems(s);if(r.ok){let i=r.data;this.applyUnequipChangesLocally(e,i),this.ctx.emitter.emit("character:itemsUnequipped",{characterID:e,slotIDs:i.ClearedSlotIDs??[],power:i.Power??null});}return r}async unequipAllCharacters(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.character.unequipAllCharacters(e);return t.ok&&(this.applyUnequipAllLocally(t.data),this.ctx.emitter.emit("character:allUnequipped",t.data)),t}async unlockCharactersBatch(e){if(!e||e.length===0)return n("client","characterIDs is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),UnlockCharacterIDs:e},s=await this.ctx.api.character.unlockCharactersBatch(t);return s.ok&&(this.applyBatchResults(s.data,r=>{this.ctx.data.user.patchCharacter(r.CharacterID,i=>{i.StatLevels??={},i.Equipment??={},r.Power!=null&&(i.Power=r.Power),i.UpdatedAt=r.ServerTimeUtc;});}),this.ctx.emitter.emit("character:charactersUnlocked",s.data)),s}async upgradeCharacterLevelsBatch(e){if(!e||e.length===0)return n("client","upgrades is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),LevelUpgrades:e},s=await this.ctx.api.character.upgradeCharacterLevelsBatch(t);return s.ok&&(this.applyBatchResults(s.data,r=>{this.ctx.data.user.patchCharacter(r.CharacterID,i=>{i.Level=r.NewLevel,r.Power!=null&&(i.Power=r.Power),i.UpdatedAt=r.ServerTimeUtc,r.NewLevel===1&&(i.StatLevels??={},i.Equipment??={});});}),this.ctx.emitter.emit("character:levelsUpgraded",s.data)),s}async upgradeStatLevelsBatch(e){if(!e||e.length===0)return n("client","upgrades is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),StatUpgrades:e},s=await this.ctx.api.character.upgradeStatLevelsBatch(t);return s.ok&&(this.applyBatchResults(s.data,r=>{this.ctx.data.user.patchCharacter(r.CharacterID,i=>{i.StatLevels??={},i.StatLevels[r.StatID]=r.StatLevel,r.Power!=null&&(i.Power=r.Power),i.UpdatedAt=r.ServerTimeUtc;});}),this.ctx.emitter.emit("character:statLevelsUpgraded",s.data)),s}applyBatchResults(e,t){e.Resources&&this.ctx.data.user.applyResourceOperation(e.Resources,this.ctx.data.config.itemDefinitions);for(let s of e.Items??[])!s.Success||!s.Data||t(s.Data);}applyInventoryDelta(e){this.ctx.data.user.applyInventoryDelta(e);}applyEquipChangesLocally(e,t){let s=this.ctx.data.user;this.applyInventoryDelta(t.Inventory);for(let[r,i]of Object.entries(t.Equipment??{}))s.patchCharacterEquipment(e,r,i);s.patchCharacter(e,r=>{t.Power!=null&&(r.Power=t.Power),r.UpdatedAt=t.ServerTimeUtc;});}applyUnequipChangesLocally(e,t){let s=t.ClearedSlotIDs??[];if(s.length===0&&t.Power==null)return;let r=this.ctx.data.user;this.applyInventoryDelta(t.Inventory);for(let i of s)r.patchCharacterEquipment(e,i,null);r.patchCharacter(e,i=>{t.Power!=null&&(i.Power=t.Power),i.UpdatedAt=t.ServerTimeUtc;});}applyUnequipAllLocally(e){let t=this.ctx.data.user;this.applyInventoryDelta(e.Inventory);for(let[s,r]of Object.entries(e.Characters??{})){for(let i of r.ClearedSlotIDs??[])t.patchCharacterEquipment(s,i,null);t.patchCharacter(s,i=>{r.Power!=null&&(i.Power=r.Power),i.UpdatedAt=e.ServerTimeUtc;});}}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var hl="Match",Jt=class{constructor(e){this.ctx=e;}ctx;async createMatch(e,t,s,r,i){let c=this.ctx.auth.context;if(!c)return n("unauthorized","Not logged in.");let m={...this.ctx.buildAuthedBaseRequest(),Entry:e,RuleID:t,CharacterID:s,BattleStrategy:r,TargetUserID:i,RelatedEntityID:`pvp_create_${c.userID}_${d()}`},z=await this.ctx.api.match.createMatch(m);return z.ok&&(this.ctx.data.user.applyResourceOperation(z.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("match:created",z.data)),z}async updateMatch(e,t={}){if(!e)return n("client","MatchID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let s={...this.ctx.buildAuthedBaseRequest(),MatchID:e,TargetUserID:t.targetUserID,ClearTargetUser:t.clearTargetUser,RuleID:t.ruleID,CharacterID:t.characterID,BattleStrategy:t.battleStrategy},r=await this.ctx.api.match.updateMatch(s);return r.ok&&this.ctx.emitter.emit("match:updated",r.data),r}async cancelMatch(e){if(!e)return n("client","MatchID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),MatchID:e},s=await this.ctx.api.match.cancelMatch(t);return s.ok&&(this.ctx.data.user.applyResourceOperation(s.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("match:cancelled",s.data)),s}async instantBattle(e,t,s,r){let i=this.ctx.auth.context;if(!i)return n("unauthorized","Not logged in.");let c={...this.ctx.buildAuthedBaseRequest(),MatchID:e,RuleID:t,CharacterID:s,BattleStrategy:r,RelatedEntityID:`pvp_battle_${e}_${d()}`},m=await this.ctx.api.match.instantBattle(c);if(m.ok){let z=m.data,B=this.ctx.data.config.itemDefinitions;if(z.Resources)this.ctx.data.user.applyResourceOperation(z.Resources,B);else if(z.ResourcesDual){let G=z.ResourcesDual;G.FromUserID===i.userID&&G.FromResult?this.ctx.data.user.applyResourceOperation(G.FromResult,B):G.ToUserID===i.userID&&G.ToResult&&this.ctx.data.user.applyResourceOperation(G.ToResult,B);}this.ctx.emitter.emit("match:instantBattleCompleted",z);}return m}async saveStrategy(e){if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),BattleStrategy:e},s=await this.ctx.api.match.saveStrategy(t);return s.ok&&(this.ctx.data.user.patchMatchStrategy(e),this.ctx.emitter.emit("match:strategySaved",e)),s}async getMyMatches(e=0,t=20,s){let r=this.baseRequest();if(!r)return n("unauthorized","Not logged in.");r.Page=e,r.PageSize=t,r.Statuses=s;let i=await this.ctx.api.match.getMyMatches(r);return i.ok&&this.ctx.emitter.emit("match:myMatchesLoaded",i.data),i}async getAvailableMatches(e=0,t=20,s=false){let r=this.baseRequest();if(!r)return n("unauthorized","Not logged in.");r.Page=e,r.PageSize=t,r.OnlyPublic=s;let i=await this.ctx.api.match.getAvailableMatches(r);return i.ok&&this.ctx.emitter.emit("match:availableMatchesLoaded",i.data),i}async getDefinitions(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.match.getDefinitions(e);return t.ok&&(this.ctx.data.config.patchSection(hl,t.data),this.ctx.emitter.emit("match:definitionsLoaded",t.data)),t}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var fl="Craft",Yt=class{constructor(e){this.ctx=e;}ctx;async getDefinitions(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.craft.getDefinitions(e);return t.ok&&t.data.CraftDefinitions&&(this.ctx.data.config.patchSection(fl,t.data.CraftDefinitions),this.ctx.emitter.emit("craft:definitionsLoaded",t.data.CraftDefinitions)),t}async craft(e,t,s=1,r){if(!e)return n("client","CraftID is required.");let i=this.ctx.auth.context;if(!i)return n("unauthorized","Not logged in.");let c={...this.ctx.buildAuthedBaseRequest(),CraftID:e,InputItemIDs:t,Count:s,SelectedOptionID:r,RelatedEntityID:`craft_${e}_${i.userID}_${d()}`},m=await this.ctx.api.craft.craft(c);return m.ok&&(this.ctx.data.user.applyResourceOperation(m.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("craft:completed",m.data)),m}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var Rl="Collection",Xt=class{constructor(e){this.ctx=e;}ctx;async getDefinitions(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.collection.getDefinitions(e);return t.ok&&(this.ctx.data.config.patchSection(Rl,t.data),this.ctx.emitter.emit("collection:definitionsLoaded",t.data)),t}async getUserState(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.collection.getUserState(e);return t.ok&&(this.ctx.data.user.applyCollection(t.data),this.ctx.emitter.emit("collection:userStateLoaded",t.data)),t}async openPack(e,t){let s=this.ctx.auth.context;if(!s)return n("unauthorized","Not logged in.");let r={...this.ctx.buildAuthedBaseRequest(),CollectionID:e,PackTypeID:t,RelatedEntityID:`open_pack_${e}_${t}_${s.userID}_${d()}`},i=await this.ctx.api.collection.openPack(r);return i.ok&&(this.ctx.data.user.applyResourceOperation(i.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("collection:packOpened",i.data)),i}async openCollectionChest(e,t){let s=this.ctx.auth.context;if(!s)return n("unauthorized","Not logged in.");let r={...this.ctx.buildAuthedBaseRequest(),CollectionID:e,CollectionChestID:t,RelatedEntityID:`open_chest_${e}_${t}_${s.userID}_${d()}`},i=await this.ctx.api.collection.openCollectionChest(r);return i.ok&&(this.ctx.data.user.applyResourceOperation(i.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("collection:chestOpened",i.data)),i}async useCollectibleJoker(e,t){let s=this.ctx.auth.context;if(!s)return n("unauthorized","Not logged in.");let r={...this.ctx.buildAuthedBaseRequest(),CollectionID:e,CollectibleID:t,CollectibleIsSpecial:false,RelatedEntityID:`use_joker_${e}_${t}_${s.userID}_${d()}`},i=await this.ctx.api.collection.useCollectibleJoker(r);return i.ok&&(this.ctx.data.user.applyResourceOperation(i.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("collection:jokerUsed",i.data)),i}async claimSetReward(e,t){let s=this.ctx.auth.context;if(!s)return n("unauthorized","Not logged in.");let r={...this.ctx.buildAuthedBaseRequest(),CollectionID:e,SetID:t,RelatedEntityID:`claim_set_${e}_${t}_${s.userID}_${d()}`},i=await this.ctx.api.collection.claimSetReward(r);return i.ok&&(this.ctx.data.user.applyResourceOperation(i.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("collection:setRewardClaimed",i.data)),i}async claimSetRewardsBatch(e){if(!e||e.length===0)return n("client","sets is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),Sets:e},s=await this.ctx.api.collection.claimSetRewardsBatch(t);if(s.ok){let r=false;for(let i of s.data)!r&&i.Success&&i.Data?.Resources&&(this.ctx.data.user.applyResourceOperation(i.Data.Resources,this.ctx.data.config.itemDefinitions),r=true);this.ctx.emitter.emit("collection:setRewardsClaimedBatch",s.data);}return s}async claimGrandPrize(e){let t=this.ctx.auth.context;if(!t)return n("unauthorized","Not logged in.");let s={...this.ctx.buildAuthedBaseRequest(),CollectionID:e,RelatedEntityID:`grand_prize_${e}_${t.userID}_${d()}`},r=await this.ctx.api.collection.claimGrandPrize(s);return r.ok&&(this.ctx.data.user.applyResourceOperation(r.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("collection:grandPrizeClaimed",r.data)),r}async sendTradeOffer(e,t,s,r,i,c=false){let m=this.ctx.auth.context;if(!m)return n("unauthorized","Not logged in.");let z={...this.ctx.buildAuthedBaseRequest(),CollectionID:e,CollectibleID:t,CollectibleIsSpecial:s,ReceiverUserID:r,RequestedCollectibleID:i,RequestedCollectibleIsSpecial:c,RelatedEntityID:`trade_send_${m.userID}_${r}_${d()}`},B=await this.ctx.api.collection.sendTradeOffer(z);return B.ok&&this.ctx.emitter.emit("collection:tradeOfferSent",B.data),B}async cancelTradeOffer(e){if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),OfferID:e,RelatedEntityID:`trade_cancel_${e}_${d()}`},s=await this.ctx.api.collection.cancelTradeOffer(t);return s.ok&&this.ctx.emitter.emit("collection:tradeOfferCancelled",s.data),s}async acceptTradeOffer(e){if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),OfferID:e,RelatedEntityID:`trade_accept_${e}_${d()}`},s=await this.ctx.api.collection.acceptTradeOffer(t);return s.ok&&this.ctx.emitter.emit("collection:tradeOfferAccepted",s.data),s}async declineTradeOffer(e){if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),OfferID:e,RelatedEntityID:`trade_decline_${e}_${d()}`},s=await this.ctx.api.collection.declineTradeOffer(t);return s.ok&&this.ctx.emitter.emit("collection:tradeOfferDeclined",s.data),s}async getMyTradeOffers(e){let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.CollectionID=e;let s=await this.ctx.api.collection.getMyTradeOffers(t);return s.ok&&this.ctx.emitter.emit("collection:myTradeOffersLoaded",s.data),s}async getIncomingTradeOffers(e){let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.CollectionID=e;let s=await this.ctx.api.collection.getIncomingTradeOffers(t);return s.ok&&this.ctx.emitter.emit("collection:incomingTradeOffersLoaded",s.data),s}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var gl="CoopEvent",es=class{constructor(e){this.ctx=e;}ctx;async getDefinitions(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.coopEvent.getDefinitions(e);return t.ok&&(this.ctx.data.config.patchSection(gl,t.data),this.ctx.emitter.emit("coopEvent:definitionsLoaded",t.data)),t}async getActiveEvent(e){if(!e)return n("client","CoopChainID is required.");let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.CoopChainID=e;let s=await this.ctx.api.coopEvent.getActiveEvent(t);return s.ok&&this.ctx.emitter.emit("coopEvent:activeEventLoaded",s.data),s}async getUserState(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.coopEvent.getUserState(e);return t.ok&&(this.ctx.data.user.applyCoopEvent(t.data.UserState??null),this.ctx.emitter.emit("coopEvent:userStateLoaded",t.data)),t}async getGroupState(e){if(!e)return n("client","GroupID is required.");let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.GroupID=e;let s=await this.ctx.api.coopEvent.getGroupState(t);return s.ok&&this.ctx.emitter.emit("coopEvent:groupStateLoaded",s.data),s}async joinOrCreateGroup(e){if(!e)return n("client","CoopChainID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),CoopChainID:e},s=await this.ctx.api.coopEvent.joinOrCreateGroup(t);if(s.ok){let r=s.data.Group;r&&this.ctx.data.user.patchCoopEventActiveGroup(r.GroupID??null,r.CoopEventID??null,-1),this.ctx.emitter.emit("coopEvent:groupJoined",s.data);}return s}async spin(e,t){if(!e||!t)return n("client","CoopChainID and GroupID are required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let s={...this.ctx.buildAuthedBaseRequest(),CoopChainID:e,GroupID:t,RelatedEntityID:d()},r=await this.ctx.api.coopEvent.spin(s);return r.ok&&(this.ctx.data.user.applyResourceOperation(r.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("coopEvent:spinCompleted",r.data)),r}async claimObjectReward(e){if(!e)return n("client","GroupID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),GroupID:e},s=await this.ctx.api.coopEvent.claimObjectReward(t);return s.ok&&(this.ctx.data.user.applyResourceOperation(s.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("coopEvent:objectRewardClaimed",s.data)),s}async claimGrandPrize(e){if(!e)return n("client","GroupID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),GroupID:e},s=await this.ctx.api.coopEvent.claimGrandPrize(t);return s.ok&&(this.ctx.data.user.applyResourceOperation(s.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.data.user.patchCoopEventActiveGroup(null,null,-1),this.ctx.emitter.emit("coopEvent:grandPrizeClaimed",s.data)),s}async leaveGroup(e){if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),GroupID:e},s=await this.ctx.api.coopEvent.leaveGroup(t);return s.ok&&(this.ctx.data.user.patchCoopEventActiveGroup(null,null,-1),this.ctx.emitter.emit("coopEvent:groupLeft",s.data)),s}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var yl="DealOffer",ts=class{constructor(e){this.ctx=e;}ctx;async getDefinition(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.dealOffer.getDefinition(e);return t.ok&&t.data.DealOfferDefinitions&&(this.ctx.data.config.patchSection(yl,t.data.DealOfferDefinitions),this.ctx.emitter.emit("dealOffer:definitionLoaded",t.data.DealOfferDefinitions)),t}async getUserState(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.dealOffer.getUserState(e);return t.ok&&t.data.DealOffers&&(this.ctx.data.user.applyDealOffer(t.data.DealOffers),this.ctx.emitter.emit("dealOffer:userStateLoaded",t.data.DealOffers)),t}async getActiveDeals(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.dealOffer.getActiveDeals(e);return t.ok&&this.ctx.emitter.emit("dealOffer:activeDealsLoaded",t.data),t}async dismissDeal(e){if(!e)return n("client","SlotID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),SlotID:e,RelatedEntityID:`deal_dismiss_${e}_${d()}`},s=await this.ctx.api.dealOffer.dismissDeal(t);return s.ok&&(this.ctx.data.user.applyResourceOperation(s.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("dealOffer:dealDismissed",s.data)),s}async executeNode(e,t,s){if(!e||!t)return n("client","SlotID and NodeID are required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let r=s&&s.trim().length>0?s.trim():void 0,i={...this.ctx.buildAuthedBaseRequest(),SlotID:e,NodeID:t,RelatedEntityID:r??`deal_exec_${e}_${t}_${d()}`},c=await this.ctx.api.dealOffer.executeNode(i);return c.ok&&(c.data.Idempotent||this.ctx.data.user.applyResourceOperation(c.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("dealOffer:nodeExecuted",c.data)),c}async recordShow(e){if(!e)return n("client","SlotID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),SlotID:e,RelatedEntityID:`deal_show_${e}_${d()}`},s=await this.ctx.api.dealOffer.recordShow(t);return s.ok&&(this.ctx.data.user.applyResourceOperation(s.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("dealOffer:showRecorded",s.data)),s}async claimMilestone(e,t){if(!e||!t)return n("client","SlotID and MilestoneID are required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let s={...this.ctx.buildAuthedBaseRequest(),SlotID:e,MilestoneID:t,RelatedEntityID:`deal_milestone_${e}_${t}_${d()}`},r=await this.ctx.api.dealOffer.claimMilestone(s);return r.ok&&(this.ctx.data.user.applyResourceOperation(r.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("dealOffer:milestoneClaimed",r.data)),r}async claimMilestonesBatch(e,t){if(!e)return n("client","SlotID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let s=[...new Set(t.map(c=>c.trim()).filter(c=>c.length>0))],r={...this.ctx.buildAuthedBaseRequest(),SlotID:e,MilestoneIDs:s,RelatedEntityID:`deal_milestone_batch_${e}_${d()}`},i=await this.ctx.api.dealOffer.claimMilestonesBatch(r);return i.ok&&(this.ctx.data.user.applyResourceOperation(i.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("dealOffer:milestonesBatchClaimed",i.data)),i}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var Cl="Referral",ss=class{constructor(e){this.ctx=e;}ctx;async getDefinitions(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.referral.getDefinitions(e);return t.ok&&t.data.ReferralDefinitions&&(this.ctx.data.config.patchSection(Cl,t.data.ReferralDefinitions),this.ctx.emitter.emit("referral:definitionsLoaded",t.data)),t}async getUserState(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.referral.getUserState(e);return t.ok&&t.data.Referral&&(this.ctx.data.user.applyReferral(t.data.Referral),this.ctx.emitter.emit("referral:userStateLoaded",t.data)),t}async activateReferralCode(e){let t=e.trim().toUpperCase();if(!t)return n("client","ReferralCode is required.");let s=this.ctx.auth.context;if(!s)return n("unauthorized","Not logged in.");let r={...this.ctx.buildAuthedBaseRequest(),ReferralCode:t,RelatedEntityID:`referral_activation_${s.userID}`},i=await this.ctx.api.referral.activateReferralCode(r);if(i.ok){let c=i.data;c.ReferralCode&&this.ctx.data.user.patchReferralSubscription(c.ReferralCode),this.ctx.data.user.applyResourceOperation(c.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("referral:codeActivated",c);}return i}async claimInviteReward(e){let t=e.trim();if(!t)return n("client","InviteRewardID is required.");let s=this.ctx.auth.context;if(!s)return n("unauthorized","Not logged in.");let r={...this.ctx.buildAuthedBaseRequest(),InviteRewardID:t,RelatedEntityID:`referral_invite_${t}_${s.userID}`},i=await this.ctx.api.referral.claimInviteReward(r);if(i.ok){let c=i.data;c.RewardID&&this.ctx.data.user.patchReferralInviteRewardClaimed(c.RewardID),this.ctx.data.user.applyResourceOperation(c.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("referral:inviteRewardClaimed",c);}return i}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var rs=class{constructor(e){this.ctx=e;}ctx;async getFriendsList(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.social.getFriendsList(e);return t.ok&&(this.ctx.data.user.applySocialFriendsList(t.data.Friends),this.ctx.emitter.emit("social:friendsListLoaded",t.data)),t}async getIncomingRequests(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.social.getIncomingRequests(e);return t.ok&&(this.ctx.data.user.applySocialIncomingRequests(t.data.Friends),this.ctx.emitter.emit("social:incomingRequestsLoaded",t.data)),t}async getRecommendedFriends(e=5){let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.Limit=e;let s=await this.ctx.api.social.getRecommendedFriends(t);return s.ok&&this.ctx.emitter.emit("social:recommendedFriendsLoaded",s.data),s}async sendFriendRequest(e){if(!e)return n("client","TargetUserID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),TargetUserID:e},s=await this.ctx.api.social.sendFriendRequest(t);return s.ok&&(this.ctx.data.user.patchSocialAddOutgoingRequest(e),this.ctx.emitter.emit("social:friendRequestSent",s.data)),s}async acceptFriendRequest(e){if(!e)return n("client","RequesterUserID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),TargetUserID:e},s=await this.ctx.api.social.acceptFriendRequest(t);return s.ok&&(this.ctx.data.user.patchSocialAcceptFriend(e),this.ctx.emitter.emit("social:friendRequestAccepted",s.data)),s}async declineFriendRequest(e){if(!e)return n("client","RequesterUserID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),TargetUserID:e},s=await this.ctx.api.social.declineFriendRequest(t);return s.ok&&(this.ctx.data.user.patchSocialRemoveIncomingRequest(e),this.ctx.emitter.emit("social:friendRequestDeclined",s.data)),s}async removeFriend(e){if(!e)return n("client","FriendUserID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),TargetUserID:e},s=await this.ctx.api.social.removeFriend(t);return s.ok&&(this.ctx.data.user.patchSocialRemoveFriend(e),this.ctx.emitter.emit("social:friendRemoved",s.data)),s}async getTimeline(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.social.getTimeline(e);return t.ok&&(this.ctx.data.user.applySocialTimeline(t.data.Events),this.ctx.emitter.emit("social:timelineLoaded",t.data)),t}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var Sl="TimedBoost";function xl(u){return u.length>0&&!u.includes(".")&&!u.includes("$")}var is=class{constructor(e){this.ctx=e;}ctx;async getDefinitions(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.timedBoost.getDefinitions(e);return t.ok&&(this.ctx.data.config.patchSection(Sl,t.data),this.ctx.emitter.emit("timedBoost:definitionsLoaded",t.data)),t}async getActive(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.timedBoost.getActive(e);return t.ok&&(this.ctx.data.user.applyTimedBoost({Active:t.data.Active??{}}),this.ctx.emitter.emit("timedBoost:activeLoaded",t.data)),t}async getActiveWindows(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.timedBoost.getActiveWindows(e);return t.ok&&this.ctx.emitter.emit("timedBoost:activeWindowsLoaded",t.data),t}async activate(e){let t=e.trim();if(!xl(t))return n("client",'BoostID is required and must not contain "." or "$".');if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let s={...this.ctx.buildAuthedBaseRequest(),BoostID:t,RelatedEntityID:`timed_boost_activate_${t}_${d()}`},r=await this.ctx.api.timedBoost.activate(s);if(r.ok){let i=r.data;if(i.ActivatedBoost){let c=i.StackingPolicy??"Replace";this.ctx.data.user.patchActiveTimedBoost(i.ActivatedBoost,c);}this.ctx.data.user.applyResourceOperation(i.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("timedBoost:activated",i);}return r}async cleanupExpired(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.timedBoost.cleanupExpired(e);return t.ok&&(await this.getActive(),this.ctx.emitter.emit("timedBoost:expiredCleaned",void 0)),t}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var A=z.union([z.number(),z.string()]).transform((u,e)=>{let t=typeof u=="string"?Number(u):u;return Number.isFinite(t)?Math.trunc(t):(e.addIssue({code:z.ZodIssueCode.custom,message:`Invalid integer amount: ${String(u)}`}),z.NEVER)}),w=z.union([z.number(),z.string()]).transform((u,e)=>{let t=typeof u=="number"?String(u):u.trim();return t===""||Number.isNaN(Number(t))?(e.addIssue({code:z.ZodIssueCode.custom,message:`Invalid decimal: ${String(u)}`}),z.NEVER):t}),a=z.string();var _e={Private:"Private",Public:"Public",ReadOnly:"ReadOnly",Internal:"Internal"},Dl={Client:"Client",Server:"Server",System:"System"},bl=z.enum(["Client","Server","System"]),zl=z.object({Value:z.string().nullish(),UpdatedAt:a.nullish(),Version:z.number().nullish(),LastWriter:bl.nullish(),ExpiresAt:a.nullish()}).passthrough(),ns=z.record(z.string(),zl),Bi=z.object({Version:z.number().nullish(),Private:ns.nullish(),Public:ns.nullish(),ReadOnly:ns.nullish()}),kr=z.object({UserID:z.string().nullish(),Version:z.number().nullish(),Public:ns.nullish()}),Ar=z.object({ServerTimeUtc:a.nullish(),Bucket:z.string().nullish(),KeyID:z.string(),Version:z.number().nullish(),ExpiresAt:a.nullish()}),vl=z.object({Bucket:z.string().nullish(),KeyID:z.string(),Version:z.number().nullish(),ExpiresAt:a.nullish()}),wi=z.object({ServerTimeUtc:a.nullish(),Results:z.array(vl).nullish()}),qi=z.object({ServerTimeUtc:a.nullish(),DeletedCount:z.number().nullish()}),Ei=z.object({Results:z.array(kr).nullish(),NotFoundUserIDs:z.array(z.string()).nullish()}),Tl={String:"String",Int:"Int",Bool:"Bool",Json:"Json"},Pl=z.enum(["String","Int","Bool","Json"]),Il=z.object({KeyID:z.string(),Bucket:z.string().nullish(),ValueType:Pl.nullish(),MaxValueLengthBytes:z.number().nullish(),TtlSeconds:z.number().nullish(),DefaultValue:z.string().nullish(),Description:z.string().nullish()}).passthrough(),os=z.object({Keys:z.record(z.string(),Il).nullish(),DefaultMaxValueLengthBytes:z.number().nullish(),DefaultTtlSeconds:z.number().nullish(),MaxKeysPerBucket:z.number().nullish(),MaxTotalSizeBytes:z.number().nullish(),RejectUnregisteredKeys:z.boolean().nullish()}).passthrough(),qe={GetUserCustomDataDefinitions:"GetUserCustomDataDefinitions",GetMyUserCustomData:"GetMyUserCustomData",GetPublicUserCustomDataOf:"GetPublicUserCustomDataOf",SetPrivateData:"SetPrivateData",SetPublicData:"SetPublicData",DeleteKey:"DeleteKey",BatchSet:"BatchSet",BatchDelete:"BatchDelete",BatchGetPublicUserCustomDataOf:"BatchGetPublicUserCustomDataOf"};var Ml="UserCustomData";function Li(u){return u.length>0&&!u.includes(".")&&!u.includes("$")}var as=class{constructor(e){this.ctx=e;}ctx;async getUserCustomDataDefinitions(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.userCustomData.getUserCustomDataDefinitions(e);return t.ok&&(this.ctx.data.config.patchSection(Ml,t.data),this.ctx.emitter.emit("userCustomData:definitionsLoaded",t.data)),t}async getMyUserCustomData(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.userCustomData.getMyUserCustomData(e);return t.ok&&(this.ctx.data.user.applyUserCustomData(t.data),this.ctx.emitter.emit("userCustomData:myDataLoaded",t.data)),t}async getPublicUserCustomDataOf(e){let t=e.trim();if(!t)return n("client","TargetUserID is required.");let s=this.baseRequest();if(!s)return n("unauthorized","Not logged in.");s.TargetUserID=t;let r=await this.ctx.api.userCustomData.getPublicUserCustomDataOf(s);return r.ok&&this.ctx.emitter.emit("userCustomData:publicDataLoaded",r.data),r}async setPrivateData(e,t){return this.setData(e,t,_e.Private)}async setPublicData(e,t){return this.setData(e,t,_e.Public)}async setData(e,t,s){let r=e.trim();if(!Li(r))return n("client",'KeyID is required and must not contain "." or "$".');if(t==null)return n("client","Value is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let i={...this.ctx.buildAuthedBaseRequest(),KeyID:r,Value:t},m=await(s===_e.Private?this.ctx.api.userCustomData.setPrivateData(i):this.ctx.api.userCustomData.setPublicData(i));if(m.ok){let z=m.data;this.ctx.data.user.patchUserCustomDataKey(s,z.KeyID,t,z.Version??0,z.ExpiresAt),this.ctx.emitter.emit(s===_e.Private?"userCustomData:privateDataSet":"userCustomData:publicDataSet",z);}return m}async deleteKey(e,t){let s=e.trim();if(!Li(s))return n("client",'KeyID is required and must not contain "." or "$".');if(t!==_e.Private&&t!==_e.Public)return n("client","Only Private or Public keys can be deleted.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let r={...this.ctx.buildAuthedBaseRequest(),KeyID:s,Bucket:t},i=await this.ctx.api.userCustomData.deleteKey(r);return i.ok&&(this.ctx.data.user.removeUserCustomDataKey(t,s),this.ctx.emitter.emit("userCustomData:keyDeleted",void 0)),i}async batchSet(e){if(!e.length)return n("client","At least one item is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),BatchSetItems:e},s=await this.ctx.api.userCustomData.batchSet(t);if(s.ok){for(let r of s.data.Results??[]){let i=r.Bucket??_e.Private,c=e.find(m=>m.Bucket===i&&m.KeyID===r.KeyID);c&&this.ctx.data.user.patchUserCustomDataKey(i,r.KeyID,c.Value,r.Version??0,r.ExpiresAt);}this.ctx.emitter.emit("userCustomData:batchSet",s.data);}return s}async batchDelete(e){if(!e.length)return n("client","At least one item is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),BatchDeleteItems:e},s=await this.ctx.api.userCustomData.batchDelete(t);if(s.ok){for(let r of e)this.ctx.data.user.removeUserCustomDataKey(r.Bucket,r.KeyID.trim());this.ctx.emitter.emit("userCustomData:batchDeleted",s.data);}return s}async batchGetPublicUserCustomDataOf(e){if(!e.length)return n("client","At least one target user id is required.");let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.TargetUserIDs=e;let s=await this.ctx.api.userCustomData.batchGetPublicUserCustomDataOf(t);return s.ok&&this.ctx.emitter.emit("userCustomData:batchPublicDataLoaded",s.data),s}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var kl="TitleCustomData",ls=class{constructor(e){this.ctx=e;}ctx;async getTitlePublicConfiguration(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.title.getTitlePublicConfiguration(e);return t.ok&&(this.ctx.data.config.applyTitlePublicConfiguration(t.data),this.ctx.emitter.emit("title:publicConfigurationReceived",t.data)),t}async getPublicTitleCustomData(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.title.getPublicTitleCustomData(e);return t.ok&&(this.ctx.data.config.patchSection(kl,t.data),this.ctx.emitter.emit("title:publicCustomDataReceived",t.data)),t}async getCurrencyDefinitions(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.title.getCurrencyDefinitions(e);return t.ok&&(this.ctx.data.config.applyCurrencyDefinitions(t.data),this.ctx.emitter.emit("title:currencyDefinitionsReceived",t.data)),t}async getItemDefinitions(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.title.getItemDefinitions(e);return t.ok&&(this.ctx.data.config.applyItemDefinitions(t.data),this.ctx.emitter.emit("title:itemDefinitionsReceived",t.data)),t}async getServerTime(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.title.getServerTime(e);return t.ok&&this.ctx.emitter.emit("title:serverTimeReceived",t.data),t}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var Al=15,Ol="GameLoop",Ul="BoardDefinition",us=class{constructor(e){this.ctx=e;}ctx;get itemDefs(){return this.ctx.data.config.itemDefinitions}async getGameLoops(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.gameLoop.getGameLoops(e);return t.ok&&(this.ctx.data.config.patchSection(Ol,t.data),this.ctx.emitter.emit("gameLoop:gameLoopsLoaded",t.data)),t}async getBoardDefinition(e=false){let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");let s=await this.ctx.api.gameLoop.getBoardDefinition(t,e);return s.ok&&(this.ctx.data.config.patchSection(Ul,s.data),this.ctx.emitter.emit("gameLoop:boardDefinitionLoaded",s.data)),s}async getBoardDefinitionForLevel(e,t=false){if(e<=0)return n("client","stageLevel must be > 0.");let s=this.baseRequest();if(!s)return n("unauthorized","Not logged in.");s.StageLevel=e;let r=await this.ctx.api.gameLoop.getBoardDefinitionForLevel(s,t);return r.ok&&this.ctx.emitter.emit("gameLoop:boardDefinitionForLevelLoaded",r.data),r}async getUserBoardState(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.gameLoop.getUserBoardState(e);return t.ok&&(this.ctx.data.user.applyBoardState(t.data),this.ctx.emitter.emit("gameLoop:boardStateLoaded",t.data)),t}async boardLoopRoll(e=1){if(e<1)return n("client","rollMultiplier must be >= 1.");let t=this.ctx.auth.context;if(!t)return n("unauthorized","Not logged in.");let s={...this.ctx.buildAuthedBaseRequest(),RollMultiplier:e,RelatedEntityID:`roll_${t.userID}_${d()}`},r=await this.ctx.api.gameLoop.boardLoopRoll(s);if(r.ok){let i=r.data,c=Ai(new Date,Al);this.ctx.data.user.patchBoardState(m=>{m.Position=i.NewPosition,m.CyclesCompleted=(m.CyclesCompleted??0)+(i.CyclesCompletedDelta??0),m.LastRollAtUtc=new Date().toISOString(),i.ActionRequired&&i.ActionData?m.Pending={Type:i.ActionRequired,TargetUserID:i.ActionData.TargetUserID,TargetPublicData:i.ActionData.PublicData,TargetBuildingStates:i.ActionData.TargetBuildingStates??void 0,TargetHasShield:i.ActionData.TargetHasShield??void 0,RollMultiplier:i.UsedMultiplier??1,ExpiresAtUtc:c}:i.SpecialModeOffer&&(m.Pending={Type:"SPECIAL",RollMultiplier:i.UsedMultiplier??1,ExpiresAtUtc:c,Special:{ModeID:i.SpecialModeOffer.ModeID??void 0,Choices:i.SpecialModeOffer.Choices??void 0}});}),i.Operation&&this.ctx.data.user.applyResourceOperation(i.Operation,this.itemDefs),this.ctx.emitter.emit("gameLoop:boardRolled",i);}return r}async boardLoopAttack(e=-1){let t=this.ctx.auth.context;if(!t)return n("unauthorized","Not logged in.");let s={...this.ctx.buildAuthedBaseRequest(),BuildingIndex:e,RelatedEntityID:`attack_${t.userID}_${d()}`},r=await this.ctx.api.gameLoop.boardLoopAttack(s);if(r.ok){let i=r.data;this.ctx.data.user.clearBoardPending(),i.IsBotTarget&&i.Operation?this.ctx.data.user.applyResourceOperation(i.Operation,this.itemDefs):!i.IsBotTarget&&i.DualResult?.FromResult&&this.ctx.data.user.applyResourceOperation(i.DualResult.FromResult,this.itemDefs),this.ctx.emitter.emit("gameLoop:boardAttacked",i);}else await this.getUserBoardState();return r}async boardLoopRaid(e,t){if(e<0||e>11)return n("client","digIndex must be between 0 and 11.");let s=this.ctx.auth.context;if(!s)return n("unauthorized","Not logged in.");let r={...this.ctx.buildAuthedBaseRequest(),DigIndex:e,RelatedEntityID:t??`raid_${s.userID}_${d()}`},i=await this.ctx.api.gameLoop.boardLoopRaid(r);if(i.ok){let c=i.data;c.Status==="CONTINUE"?this.ctx.data.user.patchBoardPendingRaidLayout(c.RaidLayout,c.OpenedIndex??-1):(this.ctx.data.user.clearBoardPending(),this.applyRaidResources(c)),this.ctx.emitter.emit("gameLoop:boardRaided",c);}else await this.getUserBoardState();return i}async boardLoopRaidFast(e){if(!e.length)return n("client","digIndices must not be empty.");let t=this.ctx.auth.context;if(!t)return n("unauthorized","Not logged in.");let s={...this.ctx.buildAuthedBaseRequest(),DigIndices:e,RelatedEntityID:`raidfast_${t.userID}_${d()}`},r=await this.ctx.api.gameLoop.boardLoopRaidFast(s);if(r.ok){let i=r.data;i.Status!=="CONTINUE"&&(this.ctx.data.user.clearBoardPending(),this.applyRaidResources(i)),this.ctx.emitter.emit("gameLoop:boardRaidedFast",i);}else await this.getUserBoardState();return r}async boardLoopBuild(e){if(e<0)return n("client","buildingIndex must be >= 0.");let t=this.ctx.auth.context;if(!t)return n("unauthorized","Not logged in.");let s={...this.ctx.buildAuthedBaseRequest(),BuildingIndex:e,RelatedEntityID:`build_${t.userID}_${e}_${d()}`},r=await this.ctx.api.gameLoop.boardLoopBuild(s);if(r.ok){let i=r.data;i.StageComplete?this.ctx.data.user.patchBoardState(c=>{c.StageLevel=(c.StageLevel??1)+1,c.Position=0,c.Pending=null,c.BuildingStates=null;}):this.ctx.data.user.patchBoardBuilding(i.BuiltIndex,c=>{i.NewLevel!=null&&(c.Level=i.NewLevel),c.IsDamaged=false,i.MaxLevelRewardClaimed&&(c.MaxLevelRewardClaimed=true);}),i.Operation&&this.ctx.data.user.applyResourceOperation(i.Operation,this.itemDefs),this.ctx.emitter.emit("gameLoop:boardBuilt",i);}return r}async boardSpecialChoose(e){if(!e)return n("client","choiceID must not be empty.");let t=this.ctx.auth.context;if(!t)return n("unauthorized","Not logged in.");let s={...this.ctx.buildAuthedBaseRequest(),ChoiceID:e,RelatedEntityID:`special_choose_${t.userID}_${d()}`},r=await this.ctx.api.gameLoop.boardSpecialChoose(s);if(r.ok){let i=r.data;i.Mode==="Instant"||i.Mode===0?this.ctx.data.user.clearBoardPending():this.ctx.data.user.patchBoardSpecialPending(m=>{m.ChoiceID=e,m.ChosenMode=i.Mode??"Timed",m.StartedAtUtc=i.StartedAtUtc??null,m.DurationSeconds=i.DurationSeconds??null,m.AdViewsUsed=0;}),i.Operation&&this.ctx.data.user.applyResourceOperation(i.Operation,this.itemDefs),this.ctx.emitter.emit("gameLoop:boardSpecialChose",i);}return r}async boardSpecialApplyMultiplier(e){let t=this.ctx.auth.context;if(!t)return n("unauthorized","Not logged in.");let s={...this.ctx.buildAuthedBaseRequest(),RelatedEntityID:e??`special_ad_${t.userID}_${d()}`},r=await this.ctx.api.gameLoop.boardSpecialApplyMultiplier(s);if(r.ok){let i=r.data;this.ctx.data.user.patchBoardSpecialPending(c=>{c.AdViewsUsed=i.AdViewsUsed??0,c.AccumulatedMultiplier=i.AccumulatedMultiplier??0;}),this.ctx.emitter.emit("gameLoop:boardSpecialApplyMultiplier",i);}return r}async boardSpecialClaim(){let e=this.ctx.auth.context;if(!e)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),RelatedEntityID:`special_claim_${e.userID}_${d()}`},s=await this.ctx.api.gameLoop.boardSpecialClaim(t);if(s.ok){let r=s.data;this.ctx.data.user.clearBoardPending(),r.Operation&&this.ctx.data.user.applyResourceOperation(r.Operation,this.itemDefs),this.ctx.emitter.emit("gameLoop:boardSpecialClaimed",r);}return s}async getCommunityChestState(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.gameLoop.getCommunityChestState(e);return t.ok&&(this.ctx.data.user.applyCommunityChestUserState(t.data.UserState??null),this.ctx.emitter.emit("gameLoop:communityChestStateLoaded",t.data)),t}async joinOrCreateCommunityChest(){if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let e={...this.ctx.buildAuthedBaseRequest()},t=await this.ctx.api.gameLoop.joinOrCreateCommunityChest(e);if(t.ok){let s=t.data.Group;s?.GroupID&&this.ctx.data.user.applyCommunityChestUserState({ActiveGroupID:s.GroupID,ActiveRoundIndex:s.RoundIndex??void 0}),this.ctx.emitter.emit("gameLoop:communityChestJoined",t.data);}return t}async claimCommunityChestMilestone(e,t){if(!e)return n("client","milestoneID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let s={...this.ctx.buildAuthedBaseRequest(),MilestoneID:e,GroupID:t},r=await this.ctx.api.gameLoop.claimCommunityChestMilestone(s);return r.ok&&(r.data.Resources&&this.ctx.data.user.applyResourceOperation(r.data.Resources,this.itemDefs),this.ctx.emitter.emit("gameLoop:communityChestMilestoneClaimed",r.data)),r}async claimCommunityChestGrandPrize(e){if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),GroupID:e},s=await this.ctx.api.gameLoop.claimCommunityChestGrandPrize(t);return s.ok&&(s.data.Resources&&this.ctx.data.user.applyResourceOperation(s.data.Resources,this.itemDefs),this.ctx.emitter.emit("gameLoop:communityChestGrandPrizeClaimed",s.data)),s}async leaveCommunityChest(e){if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),GroupID:e},s=await this.ctx.api.gameLoop.leaveCommunityChest(t);return s.ok&&(s.data.Success&&this.ctx.data.user.applyCommunityChestUserState({ActiveGroupID:void 0,ActiveRoundIndex:-1}),this.ctx.emitter.emit("gameLoop:communityChestLeft",s.data)),s}applyRaidResources(e){e.Operation?this.ctx.data.user.applyResourceOperation(e.Operation,this.itemDefs):e.DualResult?.FromResult&&this.ctx.data.user.applyResourceOperation(e.DualResult.FromResult,this.itemDefs);}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var cs=class{constructor(e){this.ctx=e;}ctx;async execute(e,t,s,r){let i=e.trim();if(!i)return n("client","FunctionName is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let c={...this.ctx.buildAuthedBaseRequest(),FunctionName:i,FunctionParameter:t,RevisionSelection:s,SpecificRevision:r},m=await this.ctx.api.cloudCode.execute(c);return m.ok&&this.ctx.emitter.emit("cloudCode:executed",m.data),m}};var Or=z.object({Type:Bt.nullish(),CurrencyID:z.string().nullish(),Amount:A.nullish(),CatalogID:z.string().nullish(),ItemID:z.string().nullish()}),Bl=z.object({Type:wt.nullish(),EntityID:z.string()}),wl=z.object({Address:Bl.nullish(),Amount:A.nullish(),Source:z.string().nullish()}),ne=z.object({Entries:z.array(Or).nullish(),EventTokens:z.array(wl).nullish()}),Gi=z.object({MinPremiumTier:z.number().nullish(),RequiredPremiumID:z.string().nullish(),Resources:ne.nullish()}),L=z.object({Standard:ne.nullish(),PremiumBonuses:z.array(z.unknown()).nullish(),PremiumTiers:z.array(Gi).nullish()}),Q=z.object({Standard:ne.nullish(),PremiumDiscounts:z.array(z.unknown()).nullish(),PremiumTiers:z.array(Gi).nullish()}),S=z.object({Grant:L.nullish(),Consume:Q.nullish()}),Ye=z.object({FromUserID:z.string().nullish(),ToUserID:z.string().nullish(),FromResult:S.nullish(),ToResult:S.nullish()});z.object({FromUserID:z.string().nullish(),ToUserID:z.string().nullish(),Transferred:ne.nullish()});var Ni=z.object({ServerTimeUtc:a,SourceType:ot,SourceID:z.string(),TargetType:ot,TargetID:z.string(),SourceSpent:A,FeeAmount:A,RateApplied:w,TargetCredited:A}),ji=z.object({ServerTimeUtc:a,SourceType:ot,SourceID:z.string(),TargetType:ot,TargetID:z.string(),SourceSpent:w,FeeAmount:w,RateApplied:w,TargetCredited:w}),ps={Convert:"Convert",CryptoConvert:"CryptoConvert"},ql={Active:"Active",Hidden:"Hidden",Deprecated:"Deprecated",Maintenance:"Maintenance"},Fi=z.enum(["Active","Hidden","Deprecated","Maintenance"]),El={Automatic:"Automatic",Manual:"Manual"},Ll=z.enum(["Automatic","Manual"]),Gl=z.object({ValueInUSD:w.nullish(),ValueInUSDUpdatedAt:a.nullish(),InitialDeposit:z.number().nullish(),MinBalance:z.number().nullish(),MaxBalance:z.number().nullish(),DailyEarnLimit:z.number().nullish(),DailySpendLimit:z.number().nullish()}).passthrough(),Nl=z.object({Rate:z.number().nullish(),Max:z.number().nullish(),Period:z.number().nullish()}).passthrough(),jl=z.object({IsTradable:z.boolean().nullish(),IsPurchasable:z.boolean().nullish(),IsRefundable:z.boolean().nullish()}).passthrough(),Fl=z.object({TargetCurrencyType:ot.nullish(),TargetCurrencyID:z.string(),Rate:w.nullish(),MinAmount:z.number().nullish(),MaxAmount:z.number().nullish(),DailyLimit:z.number().nullish()}).passthrough(),_i=z.object({Enabled:z.boolean().nullish(),RateMode:Ll.nullish(),FeePercent:w.nullish(),Targets:z.array(Fl).nullish()}).passthrough(),Wi=z.object({CreatedAt:a.nullish(),UpdatedAt:a.nullish()}).passthrough(),_l=z.object({CurrencyID:z.string(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Economy:Gl.nullish(),Recharge:Nl.nullish(),Conversion:_i.nullish(),Permissions:jl.nullish(),Audit:Wi.nullish(),Status:Fi.nullish()}).passthrough(),Wl=z.object({NetworkID:z.string(),ContractAddress:z.string().nullish(),Decimals:z.number().nullish(),MinDeposit:w.nullish(),MinWithdraw:w.nullish(),WithdrawFee:w.nullish(),DepositsEnabled:z.boolean().nullish(),WithdrawalsEnabled:z.boolean().nullish()}).passthrough(),Vl=z.object({DailyWithdrawUsd:w.nullish(),MonthlyWithdrawUsd:w.nullish(),KycRequiredAboveUsd:w.nullish()}).passthrough(),Ql=z.object({DepositsEnabled:z.boolean().nullish(),WithdrawalsEnabled:z.boolean().nullish(),SpendableInGame:z.boolean().nullish(),ConvertibleToVirtual:z.boolean().nullish()}).passthrough(),Ur=z.object({CurrencyID:z.string(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),DisplayDecimals:z.number().nullish(),ValueInUSD:w.nullish(),ValueInUSDUpdatedAt:a.nullish(),DeveloperDepositSharePercent:w.nullish(),CommunityMarketingDepositSharePercent:w.nullish(),WithdrawalBurnPercent:w.nullish(),Networks:z.array(Wl).nullish(),Limits:Vl.nullish(),Permissions:Ql.nullish(),Conversion:_i.nullish(),Audit:Wi.nullish(),Status:Fi.nullish()}).passthrough(),ds=z.object({VirtualCurrencies:z.record(z.string(),_l).nullish(),CryptoCurrencies:z.record(z.string(),Ur).nullish()}).passthrough();var ee=u=>z.object({Id:z.string(),Success:z.boolean(),Error:z.string().nullish(),Data:u.nullish()}),ms=u=>z.object({ServerTimeUtc:a,Items:z.array(ee(u)),Resources:S.nullish()});var me=z.object({PresetID:z.string().nullish(),Remove:z.array(z.string()).nullish()}).passthrough();var Vi=z.object({CatalogID:z.string().nullish(),ItemID:z.string().nullish(),ItemInstanceID:z.string().nullish(),EquippedAt:a.nullish()}),Br=z.object({CharacterID:z.string(),Level:z.number().nullish(),Experience:A.nullish(),Power:z.number().nullish(),StatLevels:z.record(z.string(),z.number()).nullish(),Equipment:z.record(z.string(),Vi).nullish(),UpdatedAt:a.nullish()}).passthrough(),Hl=z.object({CharacterID:z.string().nullish(),SlotID:z.string().nullish()}).passthrough(),$l=z.object({ItemInstanceID:z.string(),ItemID:z.string(),CatalogID:z.string().nullish(),Quantity:z.number().nullish(),RemainingUses:z.number().nullish(),Level:z.number().nullish(),AcquiredAt:a,ExpiresAt:a.nullish(),EquippedSlot:Hl.nullish(),CustomData:z.string().nullish()}).passthrough().transform(u=>u),lt=z.object({ChangedInstances:z.record(z.string(),$l).nullish(),RemovedInstanceIDs:z.array(z.string()).nullish()}),Qi=z.object({Characters:z.record(z.string(),Br).nullish()}),wr=z.object({ServerTimeUtc:a,CharacterID:z.string(),StatID:z.string(),StatLevel:z.number(),Power:z.number().nullish(),Resources:S.nullish()}),qr=z.object({ServerTimeUtc:a,CharacterID:z.string(),NewLevel:z.number(),Power:z.number().nullish(),Resources:S.nullish()}),Hi=z.object({ServerTimeUtc:a,CharacterID:z.string(),Equipment:z.record(z.string(),Vi).nullish(),ReplacedInstanceIDs:z.array(z.string()).nullish(),Power:z.number().nullish(),Inventory:lt.nullish()}),$i=z.object({ServerTimeUtc:a,CharacterID:z.string(),ClearedSlotIDs:z.array(z.string()).nullish(),Power:z.number().nullish(),Inventory:lt.nullish()}),Zl=z.object({ClearedSlotIDs:z.array(z.string()).nullish(),Power:z.number().nullish()}),Zi=z.object({ServerTimeUtc:a,Characters:z.record(z.string(),Zl).nullish(),Inventory:lt.nullish()}),Er=z.object({ServerTimeUtc:a,CharacterID:z.string(),Power:z.number().nullish(),Resources:S.nullish()}),Ki=ms(Er),Ji=ms(qr),Yi=ms(wr),Xi=z.object({RequiredStatID:z.string(),RequiredLevel:z.number()}).passthrough(),en=z.object({StatID:z.string(),TypeID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),MaxLevel:z.number().nullish(),Weight:z.number().nullish(),BaseCostResource:Q.nullish(),CostScalingFactor:z.number().nullish(),BaseStatValue:z.number().nullish(),StatScalingFactor:z.number().nullish(),CharacterLevelScalingFactor:z.number().nullish(),Requirements:z.array(Xi).nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),tn=z.object({Level:z.number().nullish(),UpgradeCost:Q.nullish(),GlobalStatMultiplier:z.number().nullish(),StatMaxLevelMultiplier:z.number().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),Kl=z.object({SlotID:z.string(),MinCharacterLevel:z.number().nullish(),StatRequirements:z.array(Xi).nullish(),AllowedRarityIDs:z.array(z.string()).nullish(),AllowedItemTags:z.array(z.string()).nullish(),MinItemLevel:z.number().nullish(),MaxItemLevel:z.number().nullish()}).passthrough(),sn=z.object({Slots:z.record(z.string(),Kl).nullish()}).passthrough(),Jl=z.object({DisplayName:z.string().nullish(),Description:z.string().nullish(),Lore:z.string().nullish(),SortOrder:z.number().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),Yl=z.object({ClassID:z.string().nullish(),RarityID:z.string().nullish(),Tags:z.array(z.string()).nullish()}).passthrough(),Xl=z.object({UnlockedByDefault:z.boolean().nullish(),Cost:Q.nullish()}).passthrough(),eu=z.object({Stats:me.nullish(),Levels:me.nullish(),Equipment:me.nullish()}).passthrough(),tu=z.object({CharacterID:z.string(),Identity:Jl.nullish(),Classification:Yl.nullish(),Unlock:Xl.nullish(),Presets:eu.nullish(),Equipment:sn.nullish(),Stats:z.record(z.string(),en).nullish(),Levels:z.record(z.string(),tn).nullish()}).passthrough(),su=z.object({Stats:z.record(z.string(),en).nullish()}).passthrough(),ru=z.object({Levels:z.record(z.string(),tn).nullish()}).passthrough(),iu=z.object({Equipment:sn.nullish()}).passthrough(),nu=z.object({Stats:z.record(z.string(),su).nullish(),Levels:z.record(z.string(),ru).nullish(),Equipment:z.record(z.string(),iu).nullish()}).passthrough(),fs=z.object({Definitions:z.record(z.string(),tu).nullish(),Presets:nu.nullish()}).passthrough(),ze={GetCharacterDefinitions:"GetCharacterDefinitions",GetUserCharacters:"GetUserCharacters",UnlockCharacter:"UnlockCharacter",UpgradeStatLevel:"UpgradeStatLevel",UpgradeCharacterLevel:"UpgradeCharacterLevel",EquipItems:"EquipItems",UnequipItems:"UnequipItems",UnequipAllCharacters:"UnequipAllCharacters",UnlockCharactersBatch:"UnlockCharactersBatch",UpgradeCharacterLevelsBatch:"UpgradeCharacterLevelsBatch",UpgradeStatLevelsBatch:"UpgradeStatLevelsBatch"};var ou={EVM:"EVM",Solana:"Solana"},au=z.enum(["EVM","Solana"]),lu={AutoLinkedFromTransaction:"AutoLinkedFromTransaction",SignatureVerified:"SignatureVerified",ManuallyLinked:"ManuallyLinked"},uu=z.enum(["AutoLinkedFromTransaction","SignatureVerified","ManuallyLinked"]),cu={Token:"Token",Nft:"Nft"},rn=z.enum(["Token","Nft"]),pu={NotRequested:"NotRequested",Pending:"Pending",Verified:"Verified",Rejected:"Rejected",Expired:"Expired"},du=z.enum(["NotRequested","Pending","Verified","Rejected","Expired"]),mu={None:"None",Tier1:"Tier1",Tier2:"Tier2",Tier3:"Tier3"},hu=z.enum(["None","Tier1","Tier2","Tier3"]),fu={Pending:"Pending",Completed:"Completed",Failed:"Failed",Expired:"Expired",Abandoned:"Abandoned"},Lr=z.enum(["Pending","Completed","Failed","Expired","Abandoned"]),nn={GameTopUp:"game_topup",CommunityReward:"community_reward"};function Rs(u){let e=u?.trim();return e||nn.GameTopUp}var Ru={UsersCryptoWallet:"UsersCryptoWallet",Game:"Game"},on=z.enum(["UsersCryptoWallet","Game"]),gu=z.object({ContractAddress:z.string().nullish(),ItemCatalogID:z.string().nullish(),DisplayName:z.string().nullish(),DepositsEnabled:z.boolean().nullish(),WithdrawalsEnabled:z.boolean().nullish()}).passthrough(),an=z.object({Ios:z.boolean().nullish(),Android:z.boolean().nullish(),Web:z.boolean().nullish()}).passthrough(),yu=z.object({NetworkID:z.string().nullish(),DisplayName:z.string().nullish(),Type:au.nullish(),ChainID:z.number().nullish(),ChainTicker:z.string().nullish(),PlatformPoolAddress:z.string().nullish(),VaultDepositAddress:z.string().nullish(),ChainConfigVersion:z.number().nullish(),RequiredConfirmations:z.number().nullish(),DepositsEnabled:z.boolean().nullish(),WithdrawalsEnabled:z.boolean().nullish(),NftDepositsEnabled:z.boolean().nullish(),NftWithdrawalsEnabled:z.boolean().nullish(),PlatformOverrides:an.nullish(),NftCollections:z.array(gu).nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),Cu=z.object({DepositsEnabled:z.boolean().nullish(),WithdrawalsEnabled:z.boolean().nullish(),NftDepositsEnabled:z.boolean().nullish(),NftWithdrawalsEnabled:z.boolean().nullish(),PlatformOverrides:an.nullish()}).passthrough(),Su=z.object({MinAccountAgeDays:z.number().nullish(),MultiAccountCheckEnabled:z.boolean().nullish(),BanOnSharedWithdrawalAddress:z.boolean().nullish(),PendingWithdrawalTtlHours:z.number().nullish()}).passthrough();var xu=z.enum(["OnChain","Combined"]),Du=z.object({Enabled:z.boolean().nullish(),NetworkID:z.string().nullish(),CurrencyID:z.string().nullish(),MinBalance:w.nullish(),BalanceSource:xu.nullish(),DenyMessage:z.string().nullish()}).passthrough(),bu=z.object({Enabled:z.boolean().nullish(),TokenGates:z.array(Du).nullish()}).passthrough(),Gr=z.object({SystemState:Cu.nullish(),Networks:z.record(z.string(),yu).nullish(),AccountSafety:Su.nullish(),WalletLogin:bu.nullish()}).passthrough(),zu=z.object({NetworkID:z.string().nullish(),Address:z.string().nullish(),LinkedAt:a.nullish(),LastUsedAt:a.nullish(),LinkType:uu.nullish(),IsSignatureVerified:z.boolean().nullish()}).passthrough(),ln=z.object({TitleTransactionID:z.string().nullish(),Type:rn.nullish(),NetworkID:z.string().nullish(),AssetID:z.string().nullish(),Amount:w.nullish(),CreatedAt:a.nullish(),ExpiresAt:a.nullish()}).passthrough(),vu=z.object({Status:du.nullish(),Tier:hu.nullish(),VerifiedAt:a.nullish(),ExpiresAt:a.nullish(),RejectedAt:a.nullish(),ProviderReference:z.string().nullish(),RejectionReason:z.string().nullish()}).passthrough(),Tu=z.object({CurrencyID:z.string().nullish(),Deposits:z.number().nullish(),DepositsVolumeNative:w.nullish(),DepositsVolumeUsd:w.nullish(),Withdrawals:z.number().nullish(),WithdrawalsVolumeNative:w.nullish(),WithdrawalsVolumeUsd:w.nullish(),FailedWithdrawals:z.number().nullish(),RejectedDeposits:z.number().nullish(),FirstDepositAt:a.nullish(),LastDepositAt:a.nullish(),FirstWithdrawalAt:a.nullish(),LastWithdrawalAt:a.nullish()}).passthrough(),Pu=z.object({TotalDeposits:z.number().nullish(),TotalWithdrawals:z.number().nullish(),FailedWithdrawals:z.number().nullish(),RejectedDeposits:z.number().nullish(),TotalDepositsVolumeUsd:w.nullish(),TotalWithdrawalsVolumeUsd:w.nullish(),PerCurrency:z.record(z.string(),Tu).nullish()}).passthrough(),Iu=z.object({NetworkID:z.string().nullish(),ItemCatalogID:z.string().nullish(),Deposits:z.number().nullish(),Withdrawals:z.number().nullish(),FailedWithdrawals:z.number().nullish(),RejectedDeposits:z.number().nullish(),FirstDepositAt:a.nullish(),LastDepositAt:a.nullish(),FirstWithdrawalAt:a.nullish(),LastWithdrawalAt:a.nullish()}).passthrough(),Mu=z.object({TotalDeposits:z.number().nullish(),TotalWithdrawals:z.number().nullish(),FailedWithdrawals:z.number().nullish(),RejectedDeposits:z.number().nullish(),PerCollection:z.record(z.string(),Iu).nullish()}).passthrough(),ku=z.object({Tokens:Pu.nullish(),Nfts:Mu.nullish()}).passthrough(),Au=z.object({CurrencyID:z.string().nullish(),Balance:w.nullish(),MinBalance:w.nullish()}).passthrough(),Ou=z.object({NetworkID:z.string().nullish(),Address:z.string().nullish(),CheckedAt:a.nullish(),LoggedInAt:a.nullish(),GatePassed:z.boolean().nullish(),GatedBalances:z.array(Au).nullish()}).passthrough(),Uu=z.object({Version:z.number().nullish(),Stats:ku.nullish(),LinkedWallets:z.record(z.string(),zu).nullish(),LastWalletLogin:Ou.nullish(),PendingWithdrawals:z.array(ln).nullish(),Kyc:vu.nullish(),FirstActivityAt:a.nullish(),LastActivityAt:a.nullish(),IsFlagged:z.boolean().nullish(),FlagReason:z.string().nullish()}).passthrough(),Bu=z.object({CurrencyID:z.string(),AmountDelta:w,FrozenDelta:w,UpdatedAt:a}).passthrough(),gs=z.object({CryptoBalances:z.record(z.string(),Bu).nullish(),PendingAdded:ln.nullish(),PendingRemovedIDs:z.array(z.string()).nullish()}).passthrough(),wu=z.object({Amount:w,Frozen:w,CreatedAt:a.nullish(),UpdatedAt:a.nullish()}).passthrough().transform(u=>u),qu=z.object({ID:z.string().nullish(),TitleID:z.string().nullish(),CreatedAt:a.nullish(),UpdatedAt:a.nullish(),UserID:z.string().nullish(),TransactionHash:z.string().nullish(),Nonce:z.string().nullish(),NetworkID:z.string().nullish(),ChainType:z.string().nullish(),ChainID:z.number().nullish(),Direction:on.nullish(),From:z.string().nullish(),To:z.string().nullish(),Amount:w.nullish(),Status:Lr.nullish(),SignatureData:z.string().nullish(),CompletedAt:a.nullish(),ExpiresAt:a.nullish(),FailReason:z.string().nullish(),Reason:z.string().nullish(),Category:z.string().nullish(),TokenID:z.string().nullish(),CurrencyID:z.string().nullish(),AmountUsd:w.nullish(),NetPayoutAmount:w.nullish()}).passthrough(),Eu=z.object({ID:z.string().nullish(),TitleID:z.string().nullish(),CreatedAt:a.nullish(),UpdatedAt:a.nullish(),UserID:z.string().nullish(),TransactionHash:z.string().nullish(),Nonce:z.string().nullish(),NetworkID:z.string().nullish(),ChainType:z.string().nullish(),ChainID:z.number().nullish(),Direction:on.nullish(),From:z.string().nullish(),To:z.string().nullish(),Amount:w.nullish(),Status:Lr.nullish(),SignatureData:z.string().nullish(),CompletedAt:a.nullish(),ExpiresAt:a.nullish(),FailReason:z.string().nullish(),Reason:z.string().nullish(),Category:z.string().nullish(),NFTID:z.string().nullish(),ItemID:z.string().nullish(),CatalogID:z.string().nullish(),SkinID:z.string().nullish()}).passthrough(),Nr=z.object({TokenAddress:z.string().nullish(),WalletAddress:z.string().nullish(),Amount:z.string().nullish(),BurnAmount:z.string().nullish(),TokenId:z.string().nullish(),Nonce:z.string().nullish(),ContractAddress:z.string().nullish(),UserID:z.string().nullish(),TitleID:z.string().nullish(),Category:z.string().nullish(),Deadline:z.string().nullish(),Signature:z.string().nullish()}).passthrough(),jr=z.object({Mint:z.string().nullish(),WalletAddress:z.string().nullish(),Amount:z.string().nullish(),Nonce:z.string().nullish(),ExpiresAt:z.string().nullish(),ProgramID:z.string().nullish(),SignatureHex:z.string().nullish(),SigIxIndex:z.number().nullish(),Ed25519PublicKey:z.string().nullish(),Ed25519Message:z.string().nullish(),UserID:z.string().nullish()}).passthrough(),un=z.object({Blockchain:Gr.nullish(),CryptoCurrencies:z.record(z.string(),Ur).nullish()}).passthrough(),cn=z.object({State:Uu.nullish(),CryptoBalances:z.record(z.string(),wu).nullish()}).passthrough(),pn=z.object({ServerTimeUtc:a.nullish(),TransactionHash:z.string().nullish(),NetworkID:z.string().nullish(),CurrencyID:z.string().nullish(),AmountNative:w.nullish(),AmountUsd:w.nullish(),StateDelta:gs.nullish()}).passthrough(),dn=z.object({ServerTimeUtc:a.nullish(),TransactionHash:z.string().nullish(),NetworkID:z.string().nullish(),ItemID:z.string().nullish(),CatalogID:z.string().nullish(),NftTokenID:z.string().nullish(),Amount:z.number().nullish(),Resources:S.nullish(),Inventory:lt.nullish()}).passthrough(),mn=z.object({ServerTimeUtc:a.nullish(),TitleTransactionID:z.string().nullish(),NetworkID:z.string().nullish(),CurrencyID:z.string().nullish(),AmountNative:w.nullish(),NetAmountNative:w.nullish(),BurnAmountNative:w.nullish(),AmountUsd:w.nullish(),ExpiresAt:a.nullish(),EvmSignature:Nr.nullish(),SolanaSignature:jr.nullish(),StateDelta:gs.nullish()}).passthrough(),hn=z.object({ServerTimeUtc:a.nullish(),TitleTransactionID:z.string().nullish(),NetworkID:z.string().nullish(),ItemID:z.string().nullish(),CatalogID:z.string().nullish(),NftTokenID:z.string().nullish(),Amount:z.number().nullish(),ExpiresAt:a.nullish(),Resources:S.nullish(),EvmSignature:Nr.nullish(),SolanaSignature:jr.nullish(),StateDelta:gs.nullish(),Inventory:lt.nullish()}).passthrough(),fn=z.object({TokenTransactions:z.array(qu).nullish(),NFTTransactions:z.array(Eu).nullish()}).passthrough(),Fr=z.object({ServerTimeUtc:a.nullish(),TransactionHash:z.string().nullish(),NetworkID:z.string().nullish(),CurrencyID:z.string().nullish(),AmountNative:w.nullish(),AmountUsd:w.nullish(),Target:z.string().nullish()}).passthrough(),Rn=z.object({TitleTransactionID:z.string().nullish(),Kind:rn.nullish(),EvmSignature:Nr.nullish(),SolanaSignature:jr.nullish()}).passthrough(),gn=z.object({TitleTransactionID:z.string().nullish(),OnChainTxHash:z.string().nullish(),Status:Lr.nullish(),StateDelta:gs.nullish()}).passthrough(),ve={GetDefinitions:"GetDefinitions",GetUserState:"GetUserState",DepositToken:"DepositToken",DepositNFT:"DepositNFT",RequestTokenWithdrawal:"RequestTokenWithdrawal",RequestNFTWithdrawal:"RequestNFTWithdrawal",GetTransactionHistory:"GetTransactionHistory",RetryWithdrawal:"RetryWithdrawal",ConfirmWithdrawal:"ConfirmWithdrawal",DonateToDeveloper:"DonateToDeveloper",DonateToUsersPool:"DonateToUsersPool"};var Lu="Blockchain",ys=class{constructor(e){this.ctx=e;}ctx;async getDefinitions(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.blockchain.getDefinitions(e);return t.ok&&(this.ctx.data.config.patchSection(Lu,t.data.Blockchain),this.ctx.emitter.emit("blockchain:definitionsLoaded",t.data)),t}async getUserState(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.blockchain.getUserState(e);return t.ok&&(this.ctx.data.user.applyBlockchainState(t.data.State??null,t.data.CryptoBalances),this.ctx.emitter.emit("blockchain:userStateLoaded",t.data)),t}async depositToken(e,t){if(!e)return n("client","NetworkID is required.");if(!t)return n("client","TransactionHash is required.");let s=this.baseRequest();if(!s)return n("unauthorized","Not logged in.");s.NetworkID=e,s.TransactionHash=t;let r=await this.ctx.api.blockchain.depositToken(s);return r.ok&&r.data.CurrencyID&&(this.ctx.data.user.patchCryptoCurrencyDelta(r.data.CurrencyID,new Mt(r.data.AmountNative??0),r.data.ServerTimeUtc??void 0),this.ctx.emitter.emit("blockchain:tokenDeposited",r.data)),r}async depositNFT(e,t){if(!e)return n("client","NetworkID is required.");if(!t)return n("client","TransactionHash is required.");let s=this.baseRequest();if(!s)return n("unauthorized","Not logged in.");s.NetworkID=e,s.TransactionHash=t;let r=await this.ctx.api.blockchain.depositNFT(s);return r.ok&&(this.ctx.data.user.applyResourceOperation(r.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("blockchain:nftDeposited",r.data)),r}async requestTokenWithdrawal(e,t,s,r,i){if(!e)return n("client","CurrencyID is required.");if(!t)return n("client","NetworkID is required.");if(!s)return n("client","WalletAddress is required.");if(!r)return n("client","Amount is required.");let c=this.baseRequest();if(!c)return n("unauthorized","Not logged in.");c.CurrencyID=e,c.NetworkID=t,c.WalletAddress=s,c.Amount=r,c.Category=Rs(i);let m=await this.ctx.api.blockchain.requestTokenWithdrawal(c);return m.ok&&m.data.CurrencyID&&(this.ctx.data.user.patchCryptoCurrencyDelta(m.data.CurrencyID,new Mt(m.data.AmountNative??0).negated(),m.data.ServerTimeUtc??void 0),this.ctx.emitter.emit("blockchain:tokenWithdrawalRequested",m.data)),m}async requestNFTWithdrawal(e,t,s,r,i,c,m){if(!e)return n("client","ItemID is required.");if(!t)return n("client","NetworkID is required.");if(!s)return n("client","WalletAddress is required.");if(!r)return n("client","Amount is required.");let z=this.baseRequest();if(!z)return n("unauthorized","Not logged in.");z.ItemID=e,z.NetworkID=t,z.WalletAddress=s,z.Amount=r,z.Category=Rs(i),c!==void 0&&(z.Level=c),m&&(z.ItemInstanceID=m);let B=await this.ctx.api.blockchain.requestNFTWithdrawal(z);return B.ok&&(this.ctx.data.user.applyResourceOperation(B.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("blockchain:nftWithdrawalRequested",B.data)),B}async getTransactionHistory(e=50){let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.Amount=String(e);let s=await this.ctx.api.blockchain.getTransactionHistory(t);return s.ok&&this.ctx.emitter.emit("blockchain:transactionHistoryLoaded",s.data),s}async retryWithdrawal(e){if(!e)return n("client","TitleTransactionID is required.");let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.TitleTransactionID=e;let s=await this.ctx.api.blockchain.retryWithdrawal(t);return s.ok&&this.ctx.emitter.emit("blockchain:withdrawalRetried",s.data),s}async confirmWithdrawal(e,t){if(!e)return n("client","TitleTransactionID is required.");if(!t)return n("client","On-chain TransactionHash is required.");let s=this.baseRequest();if(!s)return n("unauthorized","Not logged in.");s.TitleTransactionID=e,s.TransactionHash=t;let r=await this.ctx.api.blockchain.confirmWithdrawal(s);return r.ok&&this.ctx.emitter.emit("blockchain:withdrawalConfirmed",r.data),r}async donateToDeveloper(e,t){if(!e)return n("client","NetworkID is required.");if(!t)return n("client","TransactionHash is required.");let s=this.baseRequest();if(!s)return n("unauthorized","Not logged in.");s.NetworkID=e,s.TransactionHash=t;let r=await this.ctx.api.blockchain.donateToDeveloper(s);return r.ok&&this.ctx.emitter.emit("blockchain:donatedToDeveloper",r.data),r}async donateToUsersPool(e,t){if(!e)return n("client","NetworkID is required.");if(!t)return n("client","TransactionHash is required.");let s=this.baseRequest();if(!s)return n("unauthorized","Not logged in.");s.NetworkID=e,s.TransactionHash=t;let r=await this.ctx.api.blockchain.donateToUsersPool(s);return r.ok&&this.ctx.emitter.emit("blockchain:donatedToUsersPool",r.data),r}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var Gu="Marketplace",Cs=class{constructor(e){this.ctx=e;}ctx;async getDefinitions(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.marketplace.getDefinitions(e);return t.ok&&(this.ctx.data.config.patchSection(Gu,t.data.Definitions),this.ctx.emitter.emit("marketplace:definitionsLoaded",t.data)),t}async getGroupedOffers(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.marketplace.getGroupedOffers(e);return t.ok&&this.ctx.emitter.emit("marketplace:groupedOffersLoaded",t.data),t}async getOffersByItem(e,t,s,r=20){if(!e)return n("client","ItemID is required.");let i=this.baseRequest();if(!i)return n("unauthorized","Not logged in.");i.ItemID=e,i.OfferTypeFilter=t,i.ContinuationToken=s,i.PageSize=r;let c=await this.ctx.api.marketplace.getOffersByItem(i);return c.ok&&this.ctx.emitter.emit("marketplace:offersByItemLoaded",c.data),c}async getOffer(e){if(!e)return n("client","OfferID is required.");let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.OfferID=e;let s=await this.ctx.api.marketplace.getOffer(t);return s.ok&&this.ctx.emitter.emit("marketplace:offerLoaded",s.data),s}async getBuyOrders(e,t,s=20){let r=this.baseRequest();if(!r)return n("unauthorized","Not logged in.");r.ItemID=e,r.ContinuationToken=t,r.PageSize=s;let i=await this.ctx.api.marketplace.getBuyOrders(r);return i.ok&&this.ctx.emitter.emit("marketplace:buyOrdersLoaded",i.data),i}async getMyState(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.marketplace.getMyState(e);return t.ok&&(this.ctx.data.user.applyMarketplaceState(t.data.Limits??null),this.ctx.emitter.emit("marketplace:myStateLoaded",t.data)),t}async getHistory(e,t=20){let s=this.baseRequest();if(!s)return n("unauthorized","Not logged in.");s.ContinuationToken=e,s.PageSize=t;let r=await this.ctx.api.marketplace.getHistory(s);return r.ok&&this.ctx.emitter.emit("marketplace:historyLoaded",r.data),r}async createListing(e,t,s,r,i,c){if(!e)return n("client","ItemID is required.");if(!t)return n("client","CatalogID is required.");if(!r)return n("client","PriceBundle is required.");let m=this.baseRequest();if(!m)return n("unauthorized","Not logged in.");m.ItemID=e,m.CatalogID=t,m.GoodsAmount=s,m.PriceBundle=r,m.DurationHours=i,m.ItemInstanceIDs=c;let z=await this.ctx.api.marketplace.createListing(m);return this.applyCreateOfferResult(z,"marketplace:listingCreated"),z}async cancelListing(e){return this.cancelOffer(e,t=>this.ctx.api.marketplace.cancelListing(t),"marketplace:listingCancelled")}async buy(e){if(!e)return n("client","OfferID is required.");let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.OfferID=e;let s=await this.ctx.api.marketplace.buy(t);return s.ok&&(this.applyDualPartySettlement(s.data.Settlement),this.ctx.emitter.emit("marketplace:bought",s.data)),s}async createAuction(e,t,s,r,i,c,m={}){if(!e)return n("client","ItemID is required.");if(!t)return n("client","CatalogID is required.");let z=this.baseRequest();if(!z)return n("unauthorized","Not logged in.");z.ItemID=e,z.CatalogID=t,z.GoodsAmount=s,z.BidAxisType=r,z.BidCurrencyID=m.bidCurrencyID,z.BidCatalogID=m.bidCatalogID,z.BidItemID=m.bidItemID,z.StartingBid=i,z.DurationHours=c,z.ItemInstanceIDs=m.itemInstanceIDs;let B=await this.ctx.api.marketplace.createAuction(z);return this.applyCreateOfferResult(B,"marketplace:auctionCreated"),B}async placeBid(e,t){if(!e)return n("client","OfferID is required.");if(!t||t<=0)return n("client","BidAmount must be positive.");let s=this.baseRequest();if(!s)return n("unauthorized","Not logged in.");s.OfferID=e,s.BidAmount=t;let r=await this.ctx.api.marketplace.placeBid(s);return r.ok&&(this.ctx.data.user.applyResourceOperation(r.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("marketplace:bidPlaced",r.data)),r}async claimAuction(e){if(!e)return n("client","OfferID is required.");let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.OfferID=e;let s=await this.ctx.api.marketplace.claimAuction(t);return s.ok&&(this.ctx.data.user.applyResourceOperation(s.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("marketplace:auctionClaimed",s.data)),s}async createBuyOrder(e,t,s,r,i){if(!e)return n("client","ItemID is required.");if(!t)return n("client","CatalogID is required.");if(!r)return n("client","PriceBundle is required.");let c=this.baseRequest();if(!c)return n("unauthorized","Not logged in.");c.ItemID=e,c.CatalogID=t,c.GoodsAmount=s,c.PriceBundle=r,c.DurationHours=i;let m=await this.ctx.api.marketplace.createBuyOrder(c);return this.applyCreateOfferResult(m,"marketplace:buyOrderCreated"),m}async cancelBuyOrder(e){return this.cancelOffer(e,t=>this.ctx.api.marketplace.cancelBuyOrder(t),"marketplace:buyOrderCancelled")}async fillBuyOrder(e){if(!e)return n("client","OfferID is required.");let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.OfferID=e;let s=await this.ctx.api.marketplace.fillBuyOrder(t);return s.ok&&(this.applyDualPartySettlement(s.data.Settlement),this.ctx.emitter.emit("marketplace:buyOrderFilled",s.data)),s}async createDirectTrade(e,t,s,r,i){if(!e)return n("client","TargetUserID is required.");if(!t)return n("client","CatalogID is required.");if(!s)return n("client","ItemID is required.");let c=this.baseRequest();if(!c)return n("unauthorized","Not logged in.");c.TargetUserID=e,c.CatalogID=t,c.ItemID=s,c.ItemInstanceIDs=r,c.RequestedBundle=i;let m=await this.ctx.api.marketplace.createDirectTrade(c);return this.applyCreateOfferResult(m,"marketplace:directTradeCreated"),m}async respondDirectTrade(e,t){if(!e)return n("client","OfferID is required.");let s=this.baseRequest();if(!s)return n("unauthorized","Not logged in.");s.OfferID=e,s.Accept=t;let r=await this.ctx.api.marketplace.respondDirectTrade(s);return r.ok&&(t&&(r.data.Settlement?this.applyDualPartySettlement(r.data.Settlement):r.data.Resources&&this.ctx.data.user.applyResourceOperation(r.data.Resources,this.ctx.data.config.itemDefinitions)),this.ctx.emitter.emit("marketplace:directTradeResponded",r.data)),r}async cancelDirectTrade(e){return this.cancelOffer(e,t=>this.ctx.api.marketplace.cancelDirectTrade(t),"marketplace:directTradeCancelled")}async claimBack(e){let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.OfferID=e;let s=await this.ctx.api.marketplace.claimBack(t);return s.ok&&(this.ctx.data.user.applyResourceOperation(s.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("marketplace:claimedBack",s.data)),s}async cancelOffer(e,t,s){if(!e)return n("client","OfferID is required.");let r=this.baseRequest();if(!r)return n("unauthorized","Not logged in.");r.OfferID=e;let i=await t(r);return i.ok&&(this.ctx.data.user.applyResourceOperation(i.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit(s,i.data)),i}applyCreateOfferResult(e,t){e.ok&&(this.ctx.data.user.applyResourceOperation(e.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit(t,e.data));}applyDualPartySettlement(e){let t=this.ctx.auth.context?.userID;if(!e||!t)return;let s=this.ctx.data.config.itemDefinitions;e.FromUserID===t&&e.FromResult?this.ctx.data.user.applyResourceOperation(e.FromResult,s):e.ToUserID===t&&e.ToResult&&this.ctx.data.user.applyResourceOperation(e.ToResult,s);}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var Ss=class{constructor(e){this.ctx=e;}ctx;async createRoom(e,t={}){if(!e)return n("client","RoomName is required.");let s=this.baseRequest();if(!s)return n("unauthorized","Not logged in.");s.RoomName=e,s.Topology=t.topology,s.ChatMode=t.chatMode,s.MaxPlayers=t.maxPlayers,s.Visibility=t.visibility,s.JoinCode=t.joinCode;let r=await this.ctx.api.multiplayer.createRoom(s);return r.ok&&this.ctx.emitter.emit("multiplayer:roomCreated",r.data),r}async joinRoom(e,t){if(!e)return n("client","RoomID is required.");let s=this.baseRequest();if(!s)return n("unauthorized","Not logged in.");s.RoomID=e,s.JoinCode=t;let r=await this.ctx.api.multiplayer.joinRoom(s);return r.ok&&this.ctx.emitter.emit("multiplayer:roomJoined",r.data),r}async leaveRoom(e){if(!e)return n("client","RoomID is required.");let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.RoomID=e;let s=await this.ctx.api.multiplayer.leaveRoom(t);return s.ok&&this.ctx.emitter.emit("multiplayer:roomLeft",s.data),s}async listRooms(e=0,t=20){let s=this.baseRequest();if(!s)return n("unauthorized","Not logged in.");s.Page=e,s.PageSize=t;let r=await this.ctx.api.multiplayer.listRooms(s);return r.ok&&this.ctx.emitter.emit("multiplayer:roomsListed",r.data),r}async getRoom(e){if(!e)return n("client","RoomID is required.");let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.RoomID=e;let s=await this.ctx.api.multiplayer.getRoom(t);return s.ok&&this.ctx.emitter.emit("multiplayer:roomLoaded",s.data),s}async closeRoom(e){if(!e)return n("client","RoomID is required.");let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.RoomID=e;let s=await this.ctx.api.multiplayer.closeRoom(t);return s.ok&&this.ctx.emitter.emit("multiplayer:roomClosed",s.data),s}async poll(e,t){if(!e)return n("client","RoomID is required.");let s=this.baseRequest();if(!s)return n("unauthorized","Not logged in.");s.RoomID=e,s.LastSeq=t;let r=await this.ctx.api.multiplayer.poll(s);return r.ok&&this.ctx.emitter.emit("multiplayer:polled",r.data),r}async sendSignal(e,t,s,r){if(!e)return n("client","RoomID is required.");if(!t)return n("client","TargetUserID is required.");if(!s)return n("client","SignalKind is required.");let i=this.baseRequest();if(!i)return n("unauthorized","Not logged in.");i.RoomID=e,i.TargetUserID=t,i.SignalKind=s,i.Payload=r;let c=await this.ctx.api.multiplayer.sendSignal(i);return c.ok&&this.ctx.emitter.emit("multiplayer:signalSent",c.data),c}async sendChat(e,t){if(!e)return n("client","RoomID is required.");if(!t)return n("client","ChatText is required.");let s=this.baseRequest();if(!s)return n("unauthorized","Not logged in.");s.RoomID=e,s.ChatText=t;let r=await this.ctx.api.multiplayer.sendChat(s);return r.ok&&this.ctx.emitter.emit("multiplayer:chatSent",r.data),r}async setMemberState(e,t,s){if(!e)return n("client","RoomID is required.");let r=this.baseRequest();if(!r)return n("unauthorized","Not logged in.");r.RoomID=e,r.Ready=t,r.MemberState=s;let i=await this.ctx.api.multiplayer.setMemberState(r);return i.ok&&this.ctx.emitter.emit("multiplayer:memberStateSet",i.data),i}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var Cn=z.object({PlatformUserID:z.string().nullish(),PlatformAuthToken:z.string().nullish(),PlatformAuthTokenExpiration:a.nullish(),TitleUserID:z.string(),TitleClientSessionTicket:z.string(),TitleClientSessionTicketExpiration:a}),Re=z.object({IsCompleted:z.boolean().nullish(),ServerTime:a.nullish()}),Sn=z.object({Message:z.string(),ExpiresAt:a}),ke={LoginWithDeviceID:"LoginWithDeviceID",LoginWithTelegram:"LoginWithTelegram",LoginWithEmail:"LoginWithEmail",LoginWithGoogle:"LoginWithGoogle",LoginWithPlatformToken:"LoginWithPlatformToken",RegisterWithEmail:"RegisterWithEmail",RefreshPlatformToken:"RefreshPlatformToken",RequestWalletChallenge:"RequestWalletChallenge",LoginWithWallet:"LoginWithWallet",ForgotPassword:"ForgotPassword",ResetPassword:"ResetPassword"};function O(u,e,t,s){let i=`api/v2/${u&&u.length>0?u:"0"}/Client/${e}/${t}`;return s==null?i:`${i}/${s}`}var xs=class{constructor(e){this.ctx=e;}ctx;endpoint(e){return O(this.ctx.settings.titleID,"Authentication",e)}login(e,t){return this.ctx.transport.post(this.endpoint(e),t,Cn,{ticket:null})}loginWithDeviceID(e){return this.login(ke.LoginWithDeviceID,e)}loginWithTelegram(e){return this.login(ke.LoginWithTelegram,e)}loginWithEmail(e){return this.login(ke.LoginWithEmail,e)}loginWithGoogle(e){return this.login(ke.LoginWithGoogle,e)}loginWithPlatformToken(e){return this.login(ke.LoginWithPlatformToken,e)}registerWithEmail(e){return this.login(ke.RegisterWithEmail,e)}requestWalletChallenge(e){return this.ctx.transport.post(this.endpoint(ke.RequestWalletChallenge),e,Sn,{ticket:null})}loginWithWallet(e){return this.login(ke.LoginWithWallet,e)}forgotPassword(e){return this.ctx.transport.post(this.endpoint(ke.ForgotPassword),e,Re,{ticket:null})}resetPassword(e){return this.ctx.transport.post(this.endpoint(ke.ResetPassword),e,Re,{ticket:null})}};var _r=z.object({Title:z.unknown().nullish(),User:z.unknown().nullish()}).passthrough().transform(u=>u),xn=z.object({}).passthrough().transform(u=>u),Dn=z.object({}).passthrough().transform(u=>u),bn=z.object({Today:z.number(),Yesterday:z.number(),CurrentWeek:z.number(),CurrentMonth:z.number(),Total:z.number(),TotalSessions:z.number(),FirstActiveAt:a.nullish(),LastActiveAt:a.nullish(),LongestSessionEverSeconds:z.number().nullish(),CurrentWeekActiveHoursMask:z.number().nullish(),CurrentMonthActiveHoursMask:z.number().nullish(),ReactivationCount:z.number().nullish(),History:z.record(z.string(),z.unknown()).nullish()}).passthrough(),zn=z.object({Username:z.string()}),Ge={GetClientState:"GetClientState",GetClientStateExcept:"GetClientStateExcept",GetInventory:"GetInventory",GetEventTokens:"GetEventTokens",GetUsageTime:"GetUsageTime",AddUsageTime:"AddUsageTime",DeleteUserAccount:"DeleteUserAccount",ChangeUsername:"ChangeUsername"};var Ds=class{constructor(e){this.ctx=e;}ctx;endpoint(e,t){return O(this.ctx.settings.titleID,"User",e,t??"")}getClientState(e){return this.ctx.transport.post(this.endpoint(Ge.GetClientState,e.UserID),e,_r,{ticket:e.ClientSessionTicket})}getClientStateExcept(e){return this.ctx.transport.post(this.endpoint(Ge.GetClientStateExcept,e.UserID),e,_r,{ticket:e.ClientSessionTicket})}getInventory(e){return this.ctx.transport.post(this.endpoint(Ge.GetInventory,e.UserID),e,xn,{ticket:e.ClientSessionTicket})}getEventTokens(e){return this.ctx.transport.post(this.endpoint(Ge.GetEventTokens,e.UserID),e,Dn,{ticket:e.ClientSessionTicket})}getUsageTime(e){return this.ctx.transport.post(this.endpoint(Ge.GetUsageTime,e.UserID),e,bn,{ticket:e.ClientSessionTicket})}addUsageTime(e){return this.ctx.transport.post(this.endpoint(Ge.AddUsageTime,e.UserID),e,Re,{ticket:e.ClientSessionTicket,silent:true})}deleteUserAccount(e){return this.ctx.transport.post(this.endpoint(Ge.DeleteUserAccount,e.UserID),e,Re,{ticket:e.ClientSessionTicket})}changeUsername(e){return this.ctx.transport.post(this.endpoint(Ge.ChangeUsername,e.UserID),e,zn,{ticket:e.ClientSessionTicket})}};var bs=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=O(this.ctx.settings.titleID,"Currency",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}convert(e){return this.send(ps.Convert,e,Ni)}cryptoConvert(e){return this.send(ps.CryptoConvert,e,ji)}};var Nu=z.object({ItemInstanceID:z.string(),Units:z.number(),Level:z.number()}),Wr=z.object({ServerTimeUtc:a,ItemInstanceID:z.string(),ItemID:z.string(),CatalogID:z.string().nullish(),Level:z.number(),Resources:S.nullish(),FodderConsumed:z.array(Nu).nullish()}),vn=z.array(ee(Wr)),zs={UpgradeLevel:"UpgradeLevel",UpgradeLevelsBatch:"UpgradeLevelsBatch"},ju={FlatCount:"FlatCount",Merge:"Merge",InvestmentRefund:"InvestmentRefund"},Fu=z.enum(["FlatCount","Merge","InvestmentRefund"]),_u={ProtectLeveled:"ProtectLeveled",CheapestFirst:"CheapestFirst",ClientSelected:"ClientSelected"},Wu=z.enum(["ProtectLeveled","CheapestFirst","ClientSelected"]),Vu=z.object({ContractAddress:z.string().nullish(),TokenID:z.string().nullish(),TokenStandard:z.string().nullish()}).passthrough(),Qu=z.object({Networks:z.record(z.string(),Vu).nullish(),MetadataUrl:z.string().nullish()}).passthrough(),Hu=z.object({FlatBonuses:z.record(z.string(),z.number()).nullish(),PercentBonuses:z.record(z.string(),z.number()).nullish(),Power:z.number().nullish()}).passthrough(),$u=z.object({MinCharacterLevel:z.number().nullish(),UseRequirements:z.record(z.string(),z.number()).nullish(),AllowedCharacterIDs:z.array(z.string()).nullish(),AllowedSlotIDs:z.array(z.string()).nullish()}).passthrough(),Zu=z.object({ValuationMode:Fu.nullish(),MergeRatio:z.number().nullish(),Selection:Wu.nullish()}).passthrough(),Ku=z.object({MaxLevel:z.number().nullish(),BaseCostResource:Q.nullish(),CostScalingFactor:z.number().nullish(),FlatScalingFactor:z.number().nullish(),PercentScalingFactor:z.number().nullish(),PowerScalingFactor:z.number().nullish(),Fodder:Zu.nullish()}).passthrough(),Ju=z.object({RarityID:z.string().nullish(),CollectionID:z.string().nullish(),AuthorID:z.string().nullish()}).passthrough(),Yu=z.object({ItemID:z.string(),CatalogID:z.string(),ItemClass:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),Tags:z.array(z.string()).nullish(),CustomData:z.string().nullish(),IsStackable:z.boolean().nullish(),IsTradable:z.boolean().nullish(),Weight:z.number().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),NFT:Qu.nullish(),Stats:Hu.nullish(),Equipment:$u.nullish(),Upgrade:Ku.nullish(),Metadata:Ju.nullish(),ExpirationDurationSeconds:z.number().nullish()}).passthrough(),Xu=z.object({Items:z.record(z.string(),Yu).nullish()}).passthrough(),vs=z.object({Catalogs:z.record(z.string(),Xu).nullish()}).passthrough();var Ts=class{constructor(e){this.ctx=e;}ctx;upgradeLevel(e){let t=O(this.ctx.settings.titleID,"Item",zs.UpgradeLevel,e.UserID??"");return this.ctx.transport.post(t,e,Wr,{ticket:e.ClientSessionTicket})}upgradeLevelsBatch(e){let t=O(this.ctx.settings.titleID,"Item",zs.UpgradeLevelsBatch,e.UserID??"");return this.ctx.transport.post(t,e,vn,{ticket:e.ClientSessionTicket})}};var ec=z.object({ExperimentID:z.string().nullish(),Variants:z.array(z.string()).nullish()}).passthrough(),H=z.object({Segments:z.array(z.string()).nullish(),MinPremiumTier:z.number().nullish(),RequiredPremiumIDs:z.array(z.string()).nullish(),MinLevel:z.number().nullish(),MaxLevel:z.number().nullish(),Countries:z.array(z.string()).nullish(),RegisteredWithinDays:z.number().nullish(),ActiveWithinDays:z.number().nullish(),Experiment:ec.nullish()}).passthrough();var le=z.object({TotalCap:z.number().nullish(),DailyCap:z.number().nullish(),DailyWeightCap:z.number().nullish(),PerActivationCap:z.number().nullish(),CooldownSeconds:z.number().nullish(),MaxPerWindow:z.number().nullish(),WindowSeconds:z.number().nullish()}).passthrough();var Vr=z.object({ServerTimeUtc:a,OfferID:z.string(),Count:z.number(),Resources:S.nullish()}),Tn=z.array(ee(Vr)),tc=z.object({OfferID:z.string(),TotalPurchases:z.number(),DailyPurchases:z.number(),DailyResetUtc:a,LastPurchasedAt:a}),Pn=z.object({Purchases:z.record(z.string(),tc).nullish()}).passthrough().transform(u=>u),sc=z.object({StartUtc:a.nullish(),EndUtc:a.nullish(),RequiredFlags:z.array(z.string()).nullish()}).passthrough(),rc=z.object({StoreID:z.string(),Type:z.string().nullish(),Name:z.string().nullish(),Description:z.string().nullish(),Rules:sc.nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),ic=z.object({StartUtc:a.nullish(),EndUtc:a.nullish(),Gate:H.nullish(),Limits:le.nullish()}).passthrough(),nc=z.object({OfferID:z.string(),StoreIDs:z.array(z.string()).nullish(),Name:z.string().nullish(),Cost:Q.nullish(),Rewards:L.nullish(),Rules:ic.nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),Ps=z.object({Stores:z.record(z.string(),rc).nullish(),StoreOffers:z.record(z.string(),nc).nullish()}).passthrough(),ut={Purchase:"Purchase",GetDefinitions:"GetDefinitions",GetUserState:"GetUserState",PurchaseBatch:"PurchaseBatch"};var Is=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=O(this.ctx.settings.titleID,"Store",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}purchase(e){return this.send(ut.Purchase,e,Vr)}purchaseBatch(e){return this.send(ut.PurchaseBatch,e,Tn)}getDefinitions(e){return this.send(ut.GetDefinitions,e,Ps)}getUserState(e){return this.send(ut.GetUserState,e,Pn)}};var oc=z.object({Min:z.number().nullish(),Max:z.number().nullish()}).passthrough(),In=z.object({Reward:L.nullish(),Weight:z.number().nullish(),AmountRange:oc.nullish()}).passthrough(),ct=z.object({SlotID:z.string().nullish(),MinRolls:z.number().nullish(),MaxRolls:z.number().nullish(),Pool:z.array(In).nullish()}).passthrough(),pt=z.object({RuleID:z.string().nullish(),Threshold:z.number().nullish(),Pool:z.array(In).nullish()}).passthrough(),ac=z.object({RewardSlots:z.array(ct).nullish()}).passthrough(),lc=z.object({PityRules:z.array(pt).nullish()}).passthrough(),Ms=z.object({SlotPresets:z.record(z.string(),ac).nullish(),PityPresets:z.record(z.string(),lc).nullish()}).passthrough();var uc=z.object({SeasonChainID:z.string().nullish(),MinSeasonTier:z.number().nullish(),Rewards:L.nullish()}).passthrough(),cc=z.object({SeasonChainID:z.string().nullish(),MinSeasonTier:z.number().nullish(),Multiplier:z.number().nullish()}).passthrough(),Qr=z.object({Bundles:z.array(uc).nullish(),Multipliers:z.array(cc).nullish()}).passthrough();var pc=z.enum(["BoardStageLevel","BoardRank","BoardCyclesCompleted","CharacterLevel","SeasonTier","EventTokenTotalEarned","VirtualCurrencyBalance","PlayerLevel"]);var dc=z.enum(["Tiered","Linear"]);var mc=z.enum(["Step","Linear"]),hc=z.object({AtProgress:z.number().nullish(),Multiplier:z.number().nullish()}).passthrough(),ks=z.object({Source:pc.nullish(),SourceKey:z.string().nullish(),CurveType:dc.nullish(),Tiers:z.array(hc).nullish(),TierMode:mc.nullish(),BaseMultiplier:z.number().nullish(),PerUnit:z.number().nullish(),Anchor:z.number().nullish(),MinMultiplier:z.number().nullish(),MaxMultiplier:z.number().nullish(),IncludeRewards:ne.nullish(),ExcludeRewards:ne.nullish()}).passthrough(),Se=z.object({MilestoneID:z.string().nullish(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),RequiredProgress:z.number().nullish(),Rewards:L.nullish(),BonusRewards:L.nullish(),SeasonTierRewards:Qr.nullish(),SortOrder:z.number().nullish(),IsFeatured:z.boolean().nullish()}).passthrough(),dt=z.object({Milestones:z.record(z.string(),Se).nullish()}).passthrough();var fc=z.object({RuleID:z.string(),BoxIndex:z.number().nullish()}),Mn=z.object({ServerTimeUtc:a,LootboxID:z.string(),OpenedCount:z.number().nullish(),SelectedOptionID:z.number().nullish(),Resources:S.nullish(),Results:z.array(S).nullish(),TriggeredPity:z.array(fc).nullish()}),Rc=z.object({PriceOptionID:z.number().nullish(),RequiredResources:Q.nullish()}).passthrough(),gc=z.object({RewardSlots:me.nullish(),PityRules:me.nullish()}).passthrough(),yc=z.object({LootboxID:z.string(),AssetPaths:z.record(z.string(),z.string()).nullish(),PriceOptions:z.record(z.string(),Rc).nullish(),RewardSlots:z.array(ct).nullish(),PityRules:z.array(pt).nullish(),Presets:gc.nullish(),RewardMultiplier:ks.nullish()}).passthrough(),Hr=z.object({Definitions:z.record(z.string(),yc).nullish(),RewardPools:Ms.nullish()}).passthrough(),kn=z.object({LootboxDefinitions:Hr.nullish()}),As={GetDefinitions:"GetDefinitions",Open:"Open"};var Os=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=O(this.ctx.settings.titleID,"Lootbox",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(As.GetDefinitions,e,kn)}open(e){return this.send(As.Open,e,Mn)}};var Cc=z.object({}).passthrough().transform(u=>u),Sc=z.object({}).passthrough().transform(u=>u),xc=z.object({}).passthrough().transform(u=>u),Dc=z.object({}).passthrough().transform(u=>u),bc=z.object({}).passthrough().transform(u=>u),An=z.object({ServerTimeUtc:a,CalendarID:z.string(),DayNumber:z.number().nullish(),DailyState:Cc,Resources:S.nullish()}),On=z.object({ServerTimeUtc:a,AccrualID:z.string(),AccruedSeconds:A.nullish(),AppliedRatePerSecond:z.number().nullish(),IdleState:Sc,Resources:S.nullish()}),Un=z.object({ServerTimeUtc:a,ComebackID:z.string(),ClaimedTierIndex:z.number().nullish(),ComebackState:xc,Resources:S.nullish()}),Bn=z.object({ServerTimeUtc:a,ClaimID:z.string(),ClaimState:Dc,Resources:S.nullish()}),wn=z.object({Enabled:z.boolean(),Multiplier:z.number().nullish(),Progress:A.nullish(),Source:z.string().nullish(),SourceKey:z.string().nullish()}),zc=z.object({RewardMode:z.string().nullish(),RewardStackLowerTiers:z.boolean().nullish()}).passthrough(),vc=z.object({DayNumber:z.number().nullish(),Rewards:L.nullish(),IsMilestone:z.boolean().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),Tc=z.object({CalendarID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Days:z.array(vc).nullish(),IsLooping:z.boolean().nullish(),MissBehavior:z.string().nullish(),ResetByDays:z.number().nullish(),MissThresholdMultiplier:z.number().nullish(),ClaimMode:z.string().nullish(),ClaimCooldownSeconds:z.number().nullish(),Gate:H.nullish(),AvailableFromUtc:z.string().nullish(),AvailableUntilUtc:z.string().nullish()}).passthrough(),Pc=z.object({MinPremiumTier:z.number().nullish(),RequiredPremiumID:z.string().nullish(),Multiplier:z.number().nullish()}).passthrough(),Ic=z.object({BaseRatePerSecond:z.number().nullish(),PowerCoefficient:z.number().nullish(),BoardRankCoefficient:z.number().nullish(),EquipmentBonusEnabled:z.boolean().nullish(),EquipmentCharacterID:z.string().nullish(),PremiumMultipliers:z.array(Pc).nullish()}).passthrough(),Mc=z.object({MinCharacterLevel:z.number().nullish(),RequirementsCharacterID:z.string().nullish(),Gate:H.nullish(),RequiredItemIDs:z.array(z.string()).nullish(),RequiredEquippedItemIDs:z.array(z.string()).nullish()}).passthrough(),kc=z.object({AccrualID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Rate:Ic.nullish(),Rewards:L.nullish(),MaxAccumulationSeconds:z.number().nullish(),MinClaimSeconds:z.number().nullish(),Requirements:Mc.nullish(),FirstClaimMode:z.string().nullish(),AvailableFromUtc:z.string().nullish(),AvailableUntilUtc:z.string().nullish()}).passthrough(),Ac=z.object({MinAbsenceSeconds:z.number().nullish(),Rewards:L.nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),Oc=z.object({ComebackID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Tiers:z.array(Ac).nullish(),ClaimCooldownSeconds:z.number().nullish(),ClaimWindowSeconds:z.number().nullish(),TrackPresenceOnRead:z.boolean().nullish(),Gate:H.nullish(),AvailableFromUtc:z.string().nullish(),AvailableUntilUtc:z.string().nullish()}).passthrough(),Uc=z.object({MinPremiumTier:z.number().nullish(),RequiredPremiumID:z.string().nullish(),CooldownSeconds:z.number().nullish(),MaxClaimsPerWindow:z.number().nullish(),WindowSeconds:z.number().nullish(),TotalClaimLimit:z.number().nullish()}).passthrough(),Bc=z.object({ClaimID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Mode:z.string().nullish(),Rewards:L.nullish(),Limits:le.nullish(),PremiumLimitOverrides:z.array(Uc).nullish(),Gate:H.nullish(),AvailableFromUtc:z.string().nullish(),AvailableUntilUtc:z.string().nullish()}).passthrough(),$r=z.object({TierRewards:zc.nullish(),MilestoneRewardMultiplier:ks.nullish(),DailyCalendars:z.record(z.string(),Tc).nullish(),IdleAccruals:z.record(z.string(),kc).nullish(),Comebacks:z.record(z.string(),Oc).nullish(),Claims:z.record(z.string(),Bc).nullish()}).passthrough(),qn=z.object({RewardDefinitions:$r.nullish()}),En=z.object({Rewards:bc.nullish()}),Ve={GetRewardDefinitions:"GetRewardDefinitions",GetUserRewardsState:"GetUserRewardsState",ClaimDailyReward:"ClaimDailyReward",CollectIdleAccrual:"CollectIdleAccrual",ClaimComebackReward:"ClaimComebackReward",ClaimReward:"ClaimReward",ClaimRewardsBatch:"ClaimRewardsBatch",GetMilestoneRewardMultiplier:"GetMilestoneRewardMultiplier"};var Us=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=O(this.ctx.settings.titleID,"Reward",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getRewardDefinitions(e){return this.send(Ve.GetRewardDefinitions,e,qn)}getUserRewardsState(e){return this.send(Ve.GetUserRewardsState,e,En)}getMilestoneRewardMultiplier(e){return this.send(Ve.GetMilestoneRewardMultiplier,e,wn)}claimDailyReward(e){return this.send(Ve.ClaimDailyReward,e,An)}collectIdleAccrual(e){return this.send(Ve.CollectIdleAccrual,e,On)}claimComebackReward(e){return this.send(Ve.ClaimComebackReward,e,Un)}claimReward(e){return this.send(Ve.ClaimReward,e,Bn)}};var wc=z.object({OffsetSecondsFromParentStart:z.number().nullish(),DurationSeconds:z.number().nullish(),AllowEarningAfterEnd:z.boolean().nullish(),ClaimGraceHours:z.number().nullish()}).passthrough(),qc=z.object({StartUtc:z.string().nullish(),EndUtc:z.string().nullish(),AllowEarningAfterEnd:z.boolean().nullish(),ClaimGraceHours:z.number().nullish()}).passthrough(),Ec=z.object({AnchorUtc:z.string().nullish(),MaxCycles:z.number().nullish(),PauseBetweenPhasesSec:z.number().nullish(),PauseBetweenCyclesSec:z.number().nullish()}).passthrough();z.object({PhaseID:z.string().nullish(),Order:z.number().nullish(),DurationSec:z.number().nullish(),ClaimGraceHours:z.number().nullish()}).passthrough();var Lc=z.object({Reset:z.string().nullish(),IntervalSeconds:z.number().nullish(),AnchorUtc:z.string().nullish(),PauseBetweenCyclesSec:z.number().nullish(),ClaimGraceHours:z.number().nullish()}).passthrough();z.object({SourceType:z.string().nullish(),TileType:z.string().nullish(),TileIndex:z.number().nullish(),ChanceOutcomeID:z.string().nullish(),Outcome:z.string().nullish(),Params:z.record(z.string(),z.string()).nullish()}).passthrough();var Xe=z.object({SourceType:z.string().nullish(),BaseWeight:z.number().nullish(),ScaleWithRollMultiplier:z.boolean().nullish(),TileTypeFilter:z.array(z.string()).nullish(),TileIndexFilter:z.array(z.number()).nullish(),ChanceOutcomeFilter:z.array(z.string()).nullish(),OutcomeFilter:z.array(z.string()).nullish(),Params:z.record(z.string(),z.string()).nullish(),Limits:le.nullish()}).passthrough(),ae=z.object({Mode:z.string().nullish(),IsActive:z.boolean().nullish(),Scheduled:qc.nullish(),Chain:Ec.nullish(),Cyclic:Lc.nullish(),ActivationTriggers:z.array(Xe).nullish(),Relative:wc.nullish()}).passthrough();var Gc=z.object({TargetCurrencyID:z.string().nullish(),Rate:z.number().nullish(),MaxConvertAmount:z.number().nullish()}).passthrough(),mt=z.object({DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),MaxBalance:z.number().nullish(),MaxPerGrant:z.number().nullish(),DailyEarnCap:z.number().nullish(),BurnOnEventEnd:z.boolean().nullish(),BurnConversion:Gc.nullish()}).passthrough();var Nc={Active:"Active",Completed:"Completed",Claimed:"Claimed",Expired:"Expired"},Ln=z.enum(["Active","Completed","Claimed","Expired"]),jc=z.object({}).passthrough().transform(u=>u),Fc=z.object({CycleID:z.string(),InstanceKey:z.string().nullish(),CycleStartUtc:a.nullish(),CycleEndUtc:a.nullish(),PointsTotalEarned:A.nullish(),PointsCurrent:A.nullish(),ClaimedPointMilestoneIDs:z.array(z.string()).nullish()}),_c=z.object({QuestID:z.string(),CycleID:z.string().nullish(),ObjectiveID:z.string().nullish(),NewValue:A.nullish(),ObjectiveCompleted:z.boolean().nullish(),Status:Ln}),Gn=z.object({State:jc.nullish(),PointsTracks:z.record(z.string(),Fc).nullish()}),Zr=z.object({ServerTimeUtc:a,QuestID:z.string(),CycleID:z.string().nullish(),NewStatus:Ln.nullish(),Resources:S.nullish()}),Kr=z.object({ServerTimeUtc:a,CycleID:z.string(),MilestoneID:z.string(),PointsTotalEarned:A.nullish(),Resources:S.nullish()}),Nn=z.object({ServerTimeUtc:a,CycleID:z.string(),GroupCompletionID:z.string(),GroupID:z.string().nullish(),CompletedGroupQuests:z.number().nullish(),RequiredGroupQuests:z.number().nullish(),Resources:S.nullish()}),jn=z.object({MetricID:z.string(),Updates:z.array(_c).nullish()}),Fn=z.array(ee(Zr)),_n=z.array(ee(Kr)),Wc={ClientApi:"ClientApi",ServerApi:"ServerApi",SystemEvent:"SystemEvent"},Vc=z.enum(["ClientApi","ServerApi","SystemEvent"]),Qc={BlockProgressAndClaim:"BlockProgressAndClaim",BlockClaimOnly:"BlockClaimOnly"},Hc=z.enum(["BlockProgressAndClaim","BlockClaimOnly"]),$c=z.object({ObjectiveID:z.string().nullish(),Source:Vc.nullish(),MaxProgressPerCall:z.number().nullish(),MetricID:z.string().nullish(),TargetValue:z.number().nullish(),AggregationMethod:z.string().nullish(),Filters:z.record(z.string(),z.string()).nullish()}).passthrough(),Zc=z.object({QuestID:z.string().nullish(),CycleIDs:z.array(z.string()).nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),SortOrder:z.number().nullish(),RequiredQuestIDs:z.array(z.string()).nullish(),PrerequisiteMode:Hc.nullish(),PointsReward:z.number().nullish(),Schedule:ae.nullish(),AccrueProgressWhenLocked:z.boolean().nullish(),Gate:H.nullish(),Limits:le.nullish(),GroupID:z.string().nullish(),Objectives:z.record(z.string(),$c).nullish(),Reward:L.nullish()}).passthrough(),Kc=z.object({CompletionID:z.string().nullish(),GroupID:z.string().nullish(),RequiredCompletedQuests:z.number().nullish(),Gate:H.nullish(),Reward:L.nullish(),PointsReward:z.number().nullish()}).passthrough(),Jc=z.object({CycleID:z.string().nullish(),DisplayName:z.string().nullish(),Schedule:ae.nullish(),Milestones:z.record(z.string(),Se).nullish(),Gate:H.nullish(),PointsToken:mt.nullish(),GroupCompletions:z.record(z.string(),Kc).nullish()}).passthrough(),Bs=z.object({Cycles:z.record(z.string(),Jc).nullish(),Quests:z.record(z.string(),Zc).nullish()}).passthrough(),Ee={GetQuestDefinitions:"GetQuestDefinitions",GetUserQuestState:"GetUserQuestState",RefreshQuestCycles:"RefreshQuestCycles",ClaimQuestReward:"ClaimQuestReward",ClaimMilestoneReward:"ClaimMilestoneReward",AddQuestProgress:"AddQuestProgress",ClaimQuestRewardsBatch:"ClaimQuestRewardsBatch",ClaimMilestoneRewardsBatch:"ClaimMilestoneRewardsBatch",ClaimGroupCompletionReward:"ClaimGroupCompletionReward"};var ws=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=O(this.ctx.settings.titleID,"Quest",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getQuestDefinitions(e){return this.send(Ee.GetQuestDefinitions,e,Bs)}getUserQuestState(e){return this.send(Ee.GetUserQuestState,e,Gn)}refreshQuestCycles(e){return this.send(Ee.RefreshQuestCycles,e,Re)}claimQuestReward(e){return this.send(Ee.ClaimQuestReward,e,Zr)}claimQuestRewardsBatch(e){return this.send(Ee.ClaimQuestRewardsBatch,e,Fn)}claimMilestoneReward(e){return this.send(Ee.ClaimMilestoneReward,e,Kr)}claimMilestoneRewardsBatch(e){return this.send(Ee.ClaimMilestoneRewardsBatch,e,_n)}claimGroupCompletionReward(e){return this.send(Ee.ClaimGroupCompletionReward,e,Nn)}addQuestProgress(e){return this.send(Ee.AddQuestProgress,e,jn)}};var Wn=z.object({}).passthrough().transform(u=>u);var Yc=z.object({Order:z.number().nullish(),Type:z.string().nullish(),DurationSec:z.number().nullish(),BonusMultiplier:z.number().nullish()}).passthrough(),Xc=z.object({Schedule:z.array(Yc).nullish(),RepeatCycle:z.boolean().nullish(),MaxCycles:z.number().nullish()}).passthrough(),ep=z.object({IsActive:z.boolean().nullish(),CurrentPhaseEndUtc:a.nullish(),NextBonusStartUtc:a.nullish(),CurrentCycleIndex:z.number().nullish(),CurrentPhaseIndex:z.number().nullish(),ActiveBonusMultiplier:z.number().nullish()}).passthrough(),tp=z.object({Milestones:me.nullish()}).passthrough(),Jr=z.object({DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Category:z.string().nullish(),Token:mt.nullish(),TokenSources:z.array(Xe).nullish(),ClaimMode:z.string().nullish(),Milestones:z.record(z.string(),Se).nullish(),Presets:tp.nullish(),BonusWindow:Xc.nullish()}).passthrough(),sp=z.object({ChainedEventID:z.string().nullish(),Order:z.number().nullish(),DurationSec:z.number().nullish(),Content:Jr.nullish(),ClaimGraceHours:z.number().nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),rp=z.object({TimedEventID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Schedule:ae.nullish(),Content:Jr.nullish(),Events:z.array(sp).nullish(),Gate:H.nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),ip=z.object({MaxConcurrentEvents:z.number().nullish()}).passthrough(),np=z.object({Milestones:z.record(z.string(),dt).nullish()}).passthrough(),qs=z.object({Definitions:z.record(z.string(),rp).nullish(),Settings:ip.nullish(),Presets:np.nullish()}).passthrough(),op=z.object({Type:Ct,TimedEventID:z.string(),CurrentChainedEventID:z.string().nullish(),Content:Jr.nullish(),Progress:Wn.nullish(),ComputedStartUtc:a.nullish(),ComputedEndUtc:a.nullish(),CanEarn:z.boolean().nullish(),CanClaim:z.boolean().nullish(),NextMilestone:Se.nullish(),BonusWindow:ep.nullish(),CurrentCycleIndex:z.number().nullish(),CurrentEventOrder:z.number().nullish(),TotalEventsInChain:z.number().nullish()}).passthrough(),Vn=z.object({ActiveEvents:z.array(op).nullish()}).passthrough(),Qn=z.object({Tokens:z.record(z.string(),Wn).nullish()}),Yr=z.object({Type:Ct.nullish(),LteID:z.string().nullish(),Resources:S.nullish()}),Xr=z.object({Type:Ct.nullish(),LteID:z.string().nullish(),MilestoneID:z.string().nullish(),Rewards:S.nullish()}),ap=z.object({Type:Ct.nullish(),LteID:z.string().nullish(),Resources:S.nullish()}),ei=z.array(ee(Xr)),Hn=z.array(ee(Yr)),$n=z.array(ee(ap)),Ae={GetActiveEvents:"GetActiveEvents",GrantTokens:"GrantTokens",SpendTokens:"SpendTokens",ClaimMilestone:"ClaimMilestone",GetDefinitions:"GetDefinitions",GetUserLteState:"GetUserLteState",ClaimMilestonesBatch:"ClaimMilestonesBatch",ClaimAllMilestones:"ClaimAllMilestones",SpendTokensBatch:"SpendTokensBatch",GrantTokensBatch:"GrantTokensBatch"};var Es=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=O(this.ctx.settings.titleID,"TimedEvent",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getActiveEvents(e){return this.send(Ae.GetActiveEvents,e,Vn)}getDefinitions(e){return this.send(Ae.GetDefinitions,e,qs)}getUserLteState(e){return this.send(Ae.GetUserLteState,e,Qn)}grantTokens(e){return this.send(Ae.GrantTokens,e,S)}spendTokens(e){return this.send(Ae.SpendTokens,e,Yr)}claimMilestone(e){return this.send(Ae.ClaimMilestone,e,Xr)}claimMilestonesBatch(e){return this.send(Ae.ClaimMilestonesBatch,e,ei)}claimAllMilestones(e){return this.send(Ae.ClaimAllMilestones,e,ei)}spendTokensBatch(e){return this.send(Ae.SpendTokensBatch,e,Hn)}grantTokensBatch(e){return this.send(Ae.GrantTokensBatch,e,$n)}};var ye=z.object({Username:z.string().nullish(),Country:z.string().nullish(),AvatarUrl:z.string().nullish(),Premium:z.boolean().nullish(),Level:z.number().nullish(),Power:z.number().nullish(),BoardRank:z.number().nullish()}).passthrough();var lp=z.object({UserID:z.string(),Score:A.nullish(),Rank:z.number().nullish(),LastScoreUpdateUtc:a.nullish(),IpHash:z.string().nullish(),PublicProfile:ye.nullish(),SeasonTierAtCycleEnd:z.number().nullish()}).passthrough(),St=z.object({LeaderboardID:z.string(),CycleVersion:z.number().nullish(),TotalParticipants:A.nullish(),CycleEndUtc:a.nullish(),TopUsers:z.array(lp).nullish(),BracketID:z.string().nullish()}),up=z.object({CycleKey:z.string().nullish(),CycleEndUtc:a.nullish(),ClaimDeadlineUtc:a.nullish(),MilestoneTokensEarned:A.nullish(),ClaimableMilestoneIDs:z.array(z.string()).nullish(),CycleIndex:z.number().nullish(),ChainedEventID:z.string().nullish()}).passthrough(),Ls=z.object({LeaderboardID:z.string(),CurrentScore:A.nullish(),LastKnownRank:z.number().nullish(),HasUnclaimedReward:z.boolean().nullish(),ScoreEarnedThisCycle:A.nullish(),MilestoneTokensEarned:A.nullish(),NextMilestone:Se.nullish(),HasUnclaimedMilestone:z.boolean().nullish(),ClaimableGraceCycles:z.array(up).nullish()}),Gs=z.object({LeaderboardID:z.string(),NewScore:A,CycleVersion:z.number()}),Ns=z.object({ServerTimeUtc:a,LeaderboardID:z.string(),Rank:z.number().nullish(),Resources:S.nullish()}),js=z.object({ServerTimeUtc:a,LeaderboardID:z.string(),MilestoneID:z.string(),Resources:S.nullish()}),Zn=z.array(ee(St)),Kn=z.array(ee(Ls)),Jn=z.array(ee(Ns)),Yn=z.array(ee(js)),Xn=z.array(ee(Gs)),cp=z.object({LeaderboardID:z.string(),CycleReward:ee(Ns).nullish(),Milestones:z.array(ee(js)).nullish()}),eo=z.array(cp),pp=z.object({LeaderboardID:z.string(),Leaderboard:ee(St).nullish(),Progress:ee(Ls).nullish()}),to=z.array(pp),dp=z.string(),so=z.object({Rank:z.string().nullish(),Rewards:L.nullish(),SeasonTierRewards:Qr.nullish()}).passthrough(),mp=z.object({RankRewards:z.array(so).nullish()}).passthrough(),hp=z.object({ChainedEventID:z.string().nullish(),Order:z.number().nullish(),DurationSec:z.number().nullish(),ClaimGraceHours:z.number().nullish()}).passthrough(),fp=z.object({Milestones:me.nullish(),RankRewards:me.nullish()}).passthrough(),Rp=z.object({LeaderboardID:z.string(),DisplayName:z.string().nullish(),ScoreDisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),IsEnabled:z.boolean().nullish(),ScoreAggregation:dp.nullish(),Schedule:ae.nullish(),ChainEvents:z.array(hp).nullish(),Gate:H.nullish(),TopUsersLimit:z.number().nullish(),MinScoreToEnterTop:z.number().nullish(),BracketSize:z.number().nullish(),LinkedSeasonChainID:z.string().nullish(),RankRewards:z.array(so).nullish(),Milestones:z.record(z.string(),Se).nullish(),Presets:fp.nullish(),MilestoneClaimMode:z.string().nullish(),MilestoneClaimGraceHours:z.number().nullish(),ScoreSources:z.array(Xe).nullish()}).passthrough(),gp=z.object({Milestones:z.record(z.string(),dt).nullish(),RankRewards:z.record(z.string(),mp).nullish()}).passthrough(),Fs=z.object({Definitions:z.record(z.string(),Rp).nullish(),Presets:gp.nullish()}).passthrough(),he={GetDefinitions:"GetDefinitions",GetLeaderboard:"GetLeaderboard",GetMyProgress:"GetMyProgress",SubmitScore:"SubmitScore",SubmitScoreFromSource:"SubmitScoreFromSource",ClaimCycleReward:"ClaimCycleReward",ClaimMilestone:"ClaimMilestone",GetFriendsLeaderboard:"GetFriendsLeaderboard",GetLeaderboardsBatch:"GetLeaderboardsBatch",GetProgressBatch:"GetProgressBatch",ClaimCycleRewardsBatch:"ClaimCycleRewardsBatch",ClaimMilestonesBatch:"ClaimMilestonesBatch",SubmitScoresBatch:"SubmitScoresBatch",ClaimAllRewardsBatch:"ClaimAllRewardsBatch",GetOverviewBatch:"GetOverviewBatch"};var _s=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=O(this.ctx.settings.titleID,"Leaderboard",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(he.GetDefinitions,e,Fs)}getLeaderboard(e){return this.send(he.GetLeaderboard,e,St)}getMyProgress(e){return this.send(he.GetMyProgress,e,Ls)}submitScore(e){return this.send(he.SubmitScore,e,Gs)}submitScoreFromSource(e){return this.send(he.SubmitScoreFromSource,e,Gs)}claimCycleReward(e){return this.send(he.ClaimCycleReward,e,Ns)}claimMilestone(e){return this.send(he.ClaimMilestone,e,js)}getFriendsLeaderboard(e){return this.send(he.GetFriendsLeaderboard,e,St)}getLeaderboardsBatch(e){return this.send(he.GetLeaderboardsBatch,e,Zn)}getProgressBatch(e){return this.send(he.GetProgressBatch,e,Kn)}claimCycleRewardsBatch(e){return this.send(he.ClaimCycleRewardsBatch,e,Jn)}claimMilestonesBatch(e){return this.send(he.ClaimMilestonesBatch,e,Yn)}submitScoresBatch(e){return this.send(he.SubmitScoresBatch,e,Xn)}claimAllRewardsBatch(e){return this.send(he.ClaimAllRewardsBatch,e,eo)}getOverviewBatch(e){return this.send(he.GetOverviewBatch,e,to)}};var ti=z.object({}).passthrough().transform(u=>u),ro=z.object({SeasonChainID:z.string(),CycleIndex:z.number().nullish(),Season:z.lazy(()=>ao).nullish(),ComputedStartUtc:a.nullish(),ComputedEndUtc:a.nullish(),SecondsRemaining:A.nullish(),UserState:ti.nullish(),NextTier:z.lazy(()=>oo).nullish()}).passthrough(),io=z.object({SeasonChainID:z.string(),CurrentSeasonID:z.string().nullish(),AmountGranted:A.nullish(),NewStatusTokens:A.nullish(),OldTier:z.number().nullish(),NewTier:z.number(),TierUp:z.boolean().nullish()}),no=z.object({SeasonChainID:z.string(),CurrentSeasonID:z.string().nullish(),TierNumber:z.number(),Resources:S.nullish()});var oo=z.object({Tier:z.number().nullish(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),RequiredTokens:A.nullish(),TierReachedReward:L.nullish()}).passthrough(),ao=z.object({SeasonID:z.string().nullish(),Order:z.number().nullish(),DurationSec:A.nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Tiers:z.array(oo).nullish(),LinkedCollectionID:z.string().nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough();var yp=z.object({SeasonChainID:z.string().nullish(),DisplayName:z.string().nullish(),Schedule:ae.nullish(),Seasons:z.array(ao).nullish(),GrantTokensAccessMode:z.string().nullish(),Gate:H.nullish()}).passthrough(),Ws=z.object({Chains:z.record(z.string(),yp).nullish()}).passthrough(),et={GetDefinitions:"GetDefinitions",GetActiveSeason:"GetActiveSeason",GetUserState:"GetUserState",GrantStatusTokens:"GrantStatusTokens",ClaimTierReward:"ClaimTierReward"};var Vs=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=O(this.ctx.settings.titleID,"Season",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(et.GetDefinitions,e,Ws)}getActiveSeason(e){return this.send(et.GetActiveSeason,e,ro)}getUserState(e){return this.send(et.GetUserState,e,ti)}grantStatusTokens(e){return this.send(et.GrantStatusTokens,e,io)}claimTierReward(e){return this.send(et.ClaimTierReward,e,no)}};var Cp={Apple:"Apple",Google:"Google"},lo=z.object({}).passthrough().transform(u=>u),Sp=z.object({PremiumID:z.string().nullish(),PurchaseDate:z.string().nullish(),ExpirationDate:z.string().nullish(),TransactionID:z.string().nullish(),IsAutoRenewEnabled:z.boolean().nullish()}).passthrough(),xp=z.object({OptionID:z.string().nullish(),Name:z.string().nullish(),RequiredResources:Q.nullish()}).passthrough(),Dp=z.object({PremiumID:z.string().nullish(),DisplayName:z.string().nullish(),Tier:z.number().nullish(),DurationDays:z.number().nullish(),TrialDurationDays:z.number().nullish(),PriceOptions:z.record(z.string(),xp).nullish(),AppleProductID:z.string().nullish(),GoogleProductID:z.string().nullish(),Benefits:z.record(z.string(),z.string()).nullish()}).passthrough(),si=z.object({Definitions:z.record(z.string(),Dp).nullish()}).passthrough(),uo=z.object({Premium:si.nullish()}),co=z.object({ServerTimeUtc:a.nullish(),Premium:lo.nullish()}),Qs=z.object({ServerTimeUtc:a.nullish(),Premium:lo.nullish(),Subscription:Sp.nullish(),Resources:S.nullish()}),tt={GetDefinitions:"GetDefinitions",GetUserState:"GetUserState",ActivateTrial:"ActivateTrial",PurchaseWithResources:"PurchaseWithResources",PurchaseRealMoney:"PurchaseRealMoney"};var Hs=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=O(this.ctx.settings.titleID,"Premium",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(tt.GetDefinitions,e,uo)}getUserState(e){return this.send(tt.GetUserState,e,co)}activateTrial(e){return this.send(tt.ActivateTrial,e,Qs)}purchaseItemOrCurrency(e){return this.send(tt.PurchaseWithResources,e,Qs)}purchaseRealMoney(e){return this.send(tt.PurchaseRealMoney,e,Qs)}};var $s=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=O(this.ctx.settings.titleID,"Character",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getCharacterDefinitions(e){return this.send(ze.GetCharacterDefinitions,e,fs)}getUserCharacters(e){return this.send(ze.GetUserCharacters,e,Qi)}unlockCharacter(e){return this.send(ze.UnlockCharacter,e,Er)}upgradeStatLevel(e){return this.send(ze.UpgradeStatLevel,e,wr)}upgradeCharacterLevel(e){return this.send(ze.UpgradeCharacterLevel,e,qr)}equipItems(e){return this.send(ze.EquipItems,e,Hi)}unequipItems(e){return this.send(ze.UnequipItems,e,$i)}unequipAllCharacters(e){return this.send(ze.UnequipAllCharacters,e,Zi)}unlockCharactersBatch(e){return this.send(ze.UnlockCharactersBatch,e,Ki)}upgradeCharacterLevelsBatch(e){return this.send(ze.UpgradeCharacterLevelsBatch,e,Ji)}upgradeStatLevelsBatch(e){return this.send(ze.UpgradeStatLevelsBatch,e,Yi)}};var bp={Head:"Head",Torso:"Torso",Legs:"Legs"},Zs=z.enum(["Head","Torso","Legs"]),zp={Open:"Open",InProgress:"InProgress",Cancelled:"Cancelled",Completed:"Completed"},ri=z.enum(["Open","InProgress","Cancelled","Completed"]),mo=z.object({AttackTarget:Zs,DefenseTarget:Zs});var vp=z.enum(["Hit","Critical","Block","Dodge"]),Tp=z.object({RoundIndex:z.number().nullish(),AttackerID:z.string().nullish(),DefenderID:z.string().nullish(),AttackZone:Zs.nullish(),DefenseZone:Zs.nullish(),HitType:vp.nullish(),DamageDealt:z.number().nullish(),DefenderHpRemaining:z.number().nullish()}).passthrough(),Pp=z.object({MaxHp:z.number().nullish(),CurrentHp:z.number().nullish(),Damage:z.number().nullish(),AttackSpeed:z.number().nullish(),CritChance:z.number().nullish(),CritMultiplier:z.number().nullish(),Armor:z.number().nullish(),DodgeChance:z.number().nullish()}).passthrough(),Ip=z.object({ItemInstanceID:z.string(),ItemID:z.string(),CatalogID:z.string().nullish(),Quantity:z.number().nullish(),RemainingUses:z.number().nullish(),Level:z.number().nullish(),AcquiredAt:a,ExpiresAt:a.nullish(),CustomData:z.string().nullish()}).passthrough().transform(u=>u),po=z.object({UserID:z.string().nullish(),SelectedCharacterID:z.string().nullish(),SelectedCharacter:Br.nullish(),BattleStrategy:z.array(mo).nullish(),UnstackableItems:z.record(z.string(),Ip).nullish(),Stats:Pp.nullish()}).passthrough(),Mp=z.object({WinnerUserID:z.string().nullish(),LoserUserID:z.string().nullish(),Entry:ne.nullish(),NetReward:ne.nullish(),BattleLog:z.array(Tp).nullish(),IsDraw:z.boolean().nullish(),P1BattleProfile:po.nullish(),P2BattleProfile:po.nullish()}).passthrough(),ho=z.object({MatchID:z.string(),TitleID:z.string().nullish(),RuleID:z.string().nullish(),CreatedAt:a.nullish(),CreatorID:z.string().nullish(),CreatorCharacterID:z.string().nullish(),CreatorStrategy:z.array(mo).nullish(),TargetUserID:z.string().nullish(),Entry:ne.nullish(),CreationCostPaid:ne.nullish(),RefundCreationCostOnCancel:z.boolean().nullish(),JoinedByUserID:z.string().nullish(),JoinedByCharacterID:z.string().nullish(),JoinedAt:a.nullish(),Status:ri.nullish(),WinnerUserID:z.string().nullish(),CompletedAt:a.nullish(),IsRewardDistributed:z.boolean().nullish(),RewardDistributedAt:a.nullish()}).passthrough(),fo=z.object({Status:ri,MatchID:z.string(),Entry:ne.nullish(),Resources:S.nullish()}),Ro=z.object({Match:ho.nullish()}),go=z.object({MatchID:z.string(),Status:ri,Resources:S.nullish()}),yo=z.object({Battle:Mp.nullish(),Resources:S.nullish(),ResourcesDual:Ye.nullish()}),ii=z.object({Matches:z.array(ho).nullish(),Page:z.number().nullish(),PageSize:z.number().nullish(),HasMore:z.boolean().nullish()}),Ne={CreateMatch:"CreateMatch",UpdateMatch:"UpdateMatch",CancelMatch:"CancelMatch",InstantBattle:"InstantBattle",SaveStrategy:"SaveStrategy",GetMyMatches:"GetMyMatches",GetAvailableMatches:"GetAvailableMatches",GetDefinitions:"GetDefinitions"};var kp=z.enum(["VirtualCurrency","Item","EventToken"]);var Ap=z.enum(["Constant","Stat","RankMultiplier","AllMight","GearFlat","GearPercent"]),Op=z.object({HealthStatID:z.string().nullish(),DamageStatID:z.string().nullish(),ArmorStatID:z.string().nullish(),AttackSpeedStatID:z.string().nullish(),CritChanceStatID:z.string().nullish(),CritDamageStatID:z.string().nullish(),DodgeStatID:z.string().nullish(),AllMightStatID:z.string().nullish()}).passthrough(),Up=z.object({MaxRounds:z.number().nullish(),BlockDamageMultiplier:z.number().nullish(),MinHitDamage:z.number().nullish(),DefaultCritMultiplier:z.number().nullish(),MaxCritChance:z.number().nullish(),MaxDodgeChance:z.number().nullish()}).passthrough(),Bp=z.object({Source:Ap.nullish(),StatID:z.string().nullish(),Value:z.number().nullish(),OnePlus:z.boolean().nullish()}).passthrough(),wp=z.object({Coefficient:z.number().nullish(),Factors:z.array(Bp).nullish()}).passthrough(),st=z.object({Terms:z.array(wp).nullish()}).passthrough(),qp=z.object({Health:st.nullish(),Damage:st.nullish(),Armor:st.nullish(),AttackSpeed:st.nullish(),CritChance:st.nullish(),CritDamage:st.nullish(),Dodge:st.nullish()}).passthrough(),Co=z.object({StatMapping:Op.nullish(),Combat:Up.nullish(),Formula:qp.nullish()}).passthrough(),Ep=z.object({BurnRate:z.number().nullish()}).passthrough(),ni=z.object({Kind:kp.nullish(),CurrencyID:z.string().nullish(),CatalogID:z.string().nullish(),ItemID:z.string().nullish(),TokenType:wt.nullish(),EntityID:z.string().nullish(),MinAmount:z.number().nullish(),MaxAmount:z.number().nullish()}).passthrough(),So=z.object({AllowVirtualCurrency:z.boolean().nullish(),AllowItems:z.boolean().nullish(),AllowEventTokens:z.boolean().nullish(),Allowed:z.array(ni).nullish(),MaxPositions:z.number().nullish()}).passthrough(),xo=z.object({Cost:Q.nullish(),RefundCostOnCancel:z.boolean().nullish(),MaxOpenMatches:z.number().nullish(),Limits:le.nullish(),AllowPrivateMatches:z.boolean().nullish(),MaxMatchesPerOpponentPerDay:z.number().nullish()}).passthrough(),Lp=z.object({RuleID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),Economy:Ep.nullish(),Entry:So.nullish(),Creation:xo.nullish(),Settings:Co.nullish()}).passthrough(),Gp=z.object({Rules:z.record(z.string(),Lp).nullish(),Defaults:Co.nullish(),EntryDefaults:So.nullish(),CreationDefaults:xo.nullish()}).passthrough(),oi=z.object({InstantBattle:Gp.nullish()}).passthrough(),Do=oi;var Ks=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=O(this.ctx.settings.titleID,"Match",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}createMatch(e){return this.send(Ne.CreateMatch,e,fo)}updateMatch(e){return this.send(Ne.UpdateMatch,e,Ro)}cancelMatch(e){return this.send(Ne.CancelMatch,e,go)}instantBattle(e){return this.send(Ne.InstantBattle,e,yo)}saveStrategy(e){return this.send(Ne.SaveStrategy,e,Re)}getMyMatches(e){return this.send(Ne.GetMyMatches,e,ii)}getAvailableMatches(e){return this.send(Ne.GetAvailableMatches,e,ii)}getDefinitions(e){return this.send(Ne.GetDefinitions,e,Do)}};var Np={TradeUpRarity:"TradeUpRarity",TradeUpCollection:"TradeUpCollection"},bo=z.enum(["TradeUpRarity","TradeUpCollection"]),jp=z.object({Index:z.number().nullish(),BurnedItemIDs:z.array(z.string()).nullish(),RolledCollectionID:z.string().nullish(),UsedCollections:z.record(z.string(),z.number()).nullish(),Output:Or.nullish()}),zo=z.object({ServerTimeUtc:a,Type:bo.nullish(),CraftID:z.string(),CraftedCount:z.number().nullish(),SelectedOptionID:z.string().nullish(),InputRarity:z.string().nullish(),OutputRarity:z.string().nullish(),Resources:S.nullish(),Results:z.array(jp).nullish()}),Fp=z.object({OptionID:z.string().nullish(),RequiredResources:Q.nullish()}).passthrough(),_p=z.object({CraftID:z.string().nullish(),Type:bo.nullish(),CatalogID:z.string().nullish(),CollectionID:z.string().nullish(),InputRarityID:z.string().nullish(),OutputRarityID:z.string().nullish(),RequiredItemCount:z.number().nullish(),PriceOptions:z.record(z.string(),Fp).nullish()}).passthrough(),ai=z.object({Definitions:z.record(z.string(),_p).nullish()}).passthrough(),vo=z.object({ServerTimeUtc:a.nullish(),CraftDefinitions:ai.nullish()}),Js={GetDefinitions:"GetDefinitions",Craft:"Craft"};var Ys=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=O(this.ctx.settings.titleID,"Craft",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(Js.GetDefinitions,e,vo)}craft(e){return this.send(Js.Craft,e,zo)}};var Wp={Pending:"Pending",Accepted:"Accepted",Declined:"Declined",Cancelled:"Cancelled",Expired:"Expired"},Vp=z.enum(["Pending","Accepted","Declined","Cancelled","Expired"]),To=z.object({}).passthrough().transform(u=>u),Xs=z.object({CollectibleID:z.string(),Rarity:z.number().nullish(),IsSpecial:z.boolean().nullish(),IsDuplicate:z.boolean().nullish(),CollectionCurrencyConverted:z.number().nullish()}),Po=z.object({GrantedCollectibles:z.array(Xs).nullish(),DuplicateCollectibles:z.array(Xs).nullish(),CollectionCurrencyEarned:A.nullish(),NewCollectionCurrencyBalance:A.nullish(),NewlyCompletedSetIDs:z.array(z.string()).nullish(),CollectionJustCompleted:z.boolean().nullish(),Resources:S.nullish(),TriggeredPity:z.array(z.unknown()).nullish()}),Io=z.object({GrantedCollectibles:z.array(Xs).nullish(),DuplicateCollectibles:z.array(Xs).nullish(),CollectionCurrencyEarned:A.nullish(),NewCollectionCurrencyBalance:A.nullish(),Resources:S.nullish(),TriggeredPity:z.array(z.unknown()).nullish()}),Mo=z.object({GrantedCollectibleID:z.string().nullish(),NewlyCompletedSetID:z.string().nullish(),CollectionJustCompleted:z.boolean().nullish(),Resources:S.nullish()}),li=z.object({SetID:z.string(),Resources:S.nullish()}),ko=z.array(ee(li)),Ao=z.object({Resources:S.nullish()}),Qp=z.object({OfferID:z.string(),TitleID:z.string().nullish(),CollectionID:z.string().nullish(),SenderUserID:z.string().nullish(),SenderPublicData:ye.nullish(),OfferedCollectibleID:z.string().nullish(),OfferedCollectibleIsSpecial:z.boolean().nullish(),ReceiverUserID:z.string().nullish(),RequestedCollectibleID:z.string().nullish(),RequestedCollectibleIsSpecial:z.boolean().nullish(),Status:Vp.nullish(),CreatedAtUtc:a.nullish(),ExpiresAtUtc:a.nullish(),RespondedAtUtc:a.nullish(),DeclineReason:z.string().nullish(),IsSpecialTradeEvent:z.boolean().nullish(),SpecialTradeEventID:z.string().nullish()}).passthrough(),Oo=z.object({OfferID:z.string(),ExpiresAtUtc:a.nullish(),Resources:S.nullish()}),Uo=z.object({OfferID:z.string(),Resources:S.nullish()}),Bo=z.object({OfferID:z.string(),ReceivedCollectibleID:z.string().nullish(),ReceivedIsSpecial:z.boolean().nullish(),SentCollectibleID:z.string().nullish(),SentCollectibleIsSpecial:z.boolean().nullish(),Transfer:z.unknown().nullish()}),wo=z.object({OfferID:z.string(),Resources:S.nullish()}),ui=z.object({Offers:z.array(Qp).nullish()}),Hp=z.object({CollectibleID:z.string().nullish(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Rarity:z.number().nullish(),HasSpecialVersion:z.boolean().nullish(),SortOrder:z.number().nullish()}).passthrough(),$p=z.object({SetID:z.string().nullish(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),SortOrder:z.number().nullish(),Collectibles:z.array(Hp).nullish(),SetCompletionReward:L.nullish()}).passthrough(),Zp=z.object({CollectionID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),SeasonChainID:z.string().nullish(),Sets:z.array($p).nullish(),GrandPrize:L.nullish()}).passthrough(),qo=z.object({BonusRewardSlots:me.nullish(),PityRules:me.nullish()}).passthrough(),Kp=z.object({PackTypeID:z.string().nullish(),Cost:Q.nullish(),BonusRewardSlots:z.array(ct).nullish(),PityRules:z.array(pt).nullish(),Presets:qo.nullish(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),CollectibleCount:z.number().nullish(),GuaranteedMinRarity:z.number().nullish(),GuaranteeMaxRarity:z.boolean().nullish(),RarityWeights:z.record(z.string(),z.number()).nullish(),ColorTier:z.number().nullish()}).passthrough(),Jp=z.object({Rarity:z.number().nullish(),CollectionCurrencyGranted:z.number().nullish()}).passthrough(),Yp=z.object({CollectionChestID:z.string().nullish(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),CollectionCurrencyCost:z.number().nullish(),MinCollectibleCount:z.number().nullish(),MaxCollectibleCount:z.number().nullish(),GuaranteedMinRarity:z.number().nullish(),BonusRewardSlots:z.array(ct).nullish(),PityRules:z.array(pt).nullish(),Presets:qo.nullish(),Tier:z.number().nullish()}).passthrough(),Xp=z.object({SpecialTradeEventID:z.string().nullish(),StartUtc:a.nullish(),EndUtc:a.nullish(),AllowedSpecialCollectibleIDs:z.array(z.string()).nullish(),SpecialTradeEventDailyTradeLimit:z.number().nullish()}).passthrough(),er=z.object({Collections:z.record(z.string(),Zp).nullish(),PackTypes:z.record(z.string(),Kp).nullish(),CollectionChests:z.array(Yp).nullish(),DuplicateConversions:z.array(Jp).nullish(),DailyTradeLimit:z.number().nullish(),CollectibleJokerCatalogID:z.string().nullish(),CollectibleJokerItemID:z.string().nullish(),SpecialTradeEvents:z.array(Xp).nullish(),RewardPools:Ms.nullish()}).passthrough(),Ce={GetDefinitions:"GetDefinitions",GetUserState:"GetUserState",OpenPack:"OpenPack",OpenCollectionChest:"OpenCollectionChest",UseCollectibleJoker:"UseCollectibleJoker",ClaimSetReward:"ClaimSetReward",ClaimSetRewardsBatch:"ClaimSetRewardsBatch",ClaimGrandPrize:"ClaimGrandPrize",SendTradeOffer:"SendTradeOffer",CancelTradeOffer:"CancelTradeOffer",AcceptTradeOffer:"AcceptTradeOffer",DeclineTradeOffer:"DeclineTradeOffer",GetMyTradeOffers:"GetMyTradeOffers",GetIncomingTradeOffers:"GetIncomingTradeOffers"};var tr=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=O(this.ctx.settings.titleID,"Collection",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(Ce.GetDefinitions,e,er)}getUserState(e){return this.send(Ce.GetUserState,e,To)}openPack(e){return this.send(Ce.OpenPack,e,Po)}openCollectionChest(e){return this.send(Ce.OpenCollectionChest,e,Io)}useCollectibleJoker(e){return this.send(Ce.UseCollectibleJoker,e,Mo)}claimSetReward(e){return this.send(Ce.ClaimSetReward,e,li)}claimSetRewardsBatch(e){return this.send(Ce.ClaimSetRewardsBatch,e,ko)}claimGrandPrize(e){return this.send(Ce.ClaimGrandPrize,e,Ao)}sendTradeOffer(e){return this.send(Ce.SendTradeOffer,e,Oo)}cancelTradeOffer(e){return this.send(Ce.CancelTradeOffer,e,Uo)}acceptTradeOffer(e){return this.send(Ce.AcceptTradeOffer,e,Bo)}declineTradeOffer(e){return this.send(Ce.DeclineTradeOffer,e,wo)}getMyTradeOffers(e){return this.send(Ce.GetMyTradeOffers,e,ui)}getIncomingTradeOffers(e){return this.send(Ce.GetIncomingTradeOffers,e,ui)}};var ed=z.object({}).passthrough().transform(u=>u),td={Forming:"Forming",Active:"Active",Completed:"Completed",Failed:"Failed",Expired:"Expired"},sd={Active:"Active",Left:"Left",Replaced:"Replaced"},rd=z.object({ObjectIndex:z.number().nullish(),ObjectCompletionRewardClaimed:z.boolean().nullish()}).passthrough(),id=z.object({UserID:z.string().nullish(),PublicData:ye.nullish(),BuildObjectsProgress:rd.nullish(),IsBot:z.boolean().nullish(),SpinsCount:z.number().nullish(),TokensSpent:z.number().nullish(),MemberStatus:z.string().nullish(),GrandPrizeClaimed:z.boolean().nullish(),JoinedAtUtc:a.nullish(),LeftAtUtc:a.nullish()}).passthrough(),nd=z.object({Index:z.number().nullish(),OwnerUserID:z.string().nullish(),CurrentProgress:z.number().nullish(),MaxProgress:z.number().nullish(),IsCompleted:z.boolean().nullish()}).passthrough(),od=z.object({Objects:z.array(nd).nullish()}).passthrough(),Eo=z.object({GroupID:z.string().nullish(),TitleID:z.string().nullish(),CoopChainID:z.string().nullish(),CoopEventID:z.string().nullish(),CycleIndex:z.number().nullish(),Members:z.array(id).nullish(),BuildObjectsState:od.nullish(),Status:z.string().nullish(),CreatedAtUtc:a.nullish(),ExpiresAtUtc:a.nullish(),Version:z.number().nullish()}).passthrough(),Lo=z.object({CoopChainID:z.string()}).passthrough(),ad=z.string(),Go=z.object({DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Weight:z.number().nullish(),MinProgress:z.number().nullish(),MaxProgress:z.number().nullish()}).passthrough(),ld=z.object({Index:z.number().nullish(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),MaxProgress:z.number().nullish(),CompletionReward:L.nullish()}).passthrough(),ud=z.object({Objects:z.array(ld).nullish(),SpinCost:Q.nullish(),SpinnerTable:z.array(Go).nullish()}).passthrough(),cd=z.object({CoopEventID:z.string().nullish(),Order:z.number().nullish(),DurationSec:z.number().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),EventType:ad.nullish(),PartnerCount:z.number().nullish(),MatchmakingTimeoutMinutes:z.number().nullish(),MemberGracePeriodMinutes:z.number().nullish(),BuildObjects:ud.nullish(),GrandPrize:L.nullish()}).passthrough(),pd=z.object({CoopChainID:z.string().nullish(),DisplayName:z.string().nullish(),Schedule:ae.nullish(),Events:z.array(cd).nullish(),Gate:H.nullish()}).passthrough(),No=z.object({ServerTimeUtc:a.nullish(),UserState:ed.nullish(),ActiveGroup:Eo.nullish()}),ci=z.object({ServerTimeUtc:a.nullish(),Group:Eo.nullish(),SecondsRemaining:A.nullish()}),jo=z.object({ServerTimeUtc:a.nullish(),GroupID:z.string().nullish(),Resources:S.nullish(),ObjectIndex:z.number().nullish(),Sector:Go.nullish(),ProgressDelta:z.number().nullish(),NewProgress:A.nullish(),MaxProgress:A.nullish(),ObjectCompleted:z.boolean().nullish(),AllObjectsCompleted:z.boolean().nullish()}),pi=z.object({ServerTimeUtc:a.nullish(),GroupID:z.string().nullish(),RewardType:z.string().nullish(),Resources:S.nullish()}),Fo=z.object({ServerTimeUtc:a.nullish(),GroupID:z.string().nullish(),Success:z.boolean().nullish()}),sr=z.object({Chains:z.record(z.string(),pd).nullish()}).passthrough(),Le={GetDefinitions:"GetDefinitions",GetActiveEvent:"GetActiveEvent",GetUserState:"GetUserState",GetGroupState:"GetGroupState",JoinOrCreateGroup:"JoinOrCreateGroup",Spin:"Spin",ClaimObjectReward:"ClaimObjectReward",ClaimGrandPrize:"ClaimGrandPrize",LeaveGroup:"LeaveGroup"};var rr=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=O(this.ctx.settings.titleID,"CoopEvent",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(Le.GetDefinitions,e,sr)}getActiveEvent(e){return this.send(Le.GetActiveEvent,e,Lo)}getUserState(e){return this.send(Le.GetUserState,e,No)}getGroupState(e){return this.send(Le.GetGroupState,e,ci)}joinOrCreateGroup(e){return this.send(Le.JoinOrCreateGroup,e,ci)}spin(e){return this.send(Le.Spin,e,jo)}claimObjectReward(e){return this.send(Le.ClaimObjectReward,e,pi)}claimGrandPrize(e){return this.send(Le.ClaimGrandPrize,e,pi)}leaveGroup(e){return this.send(Le.LeaveGroup,e,Fo)}};var dd={Active:"Active",Exhausted:"Exhausted",Expired:"Expired",Dismissed:"Dismissed"},md={Locked:"Locked",Available:"Available",InProgress:"InProgress",Completed:"Completed",Hidden:"Hidden"},hd=z.object({NodeID:z.string().nullish(),Status:z.string().nullish(),ExecutionCount:z.number().nullish(),UnlockedAtUtc:a.nullish(),CompletedAtUtc:a.nullish(),LastExecutedAtUtc:a.nullish(),NextAvailableAtUtc:a.nullish(),LastExecutionRefID:z.string().nullish()}).passthrough(),fd=z.object({TrackID:z.string().nullish(),CurrentValue:z.number().nullish(),LastUpdatedUtc:a.nullish()}).passthrough(),_o=z.object({OfferID:z.string().nullish(),InstanceKey:z.string().nullish(),SourceOfferVersion:z.number().nullish(),Status:z.string().nullish(),ActivatedAtUtc:a.nullish(),ExhaustedAtUtc:a.nullish(),ExpiredAtUtc:a.nullish(),DismissedAtUtc:a.nullish(),ShowCount:z.number().nullish(),LastShownAtUtc:a.nullish(),Nodes:z.record(z.string(),hd).nullish(),Tracks:z.record(z.string(),fd).nullish(),SelectedChoiceNodeID:z.string().nullish()}).passthrough(),Rd=z.object({SlotID:z.string().nullish(),QueueIndex:z.number().nullish(),CycleIndex:z.number().nullish(),ActiveOfferID:z.string().nullish(),ActiveOfferStartedAtUtc:a.nullish(),ActiveOfferExpiresAtUtc:a.nullish(),ActiveOffer:_o.nullish(),NextCycleStartsAtUtc:a.nullish(),LastUpdatedUtc:a.nullish(),DismissSkipAvailableAtUtc:a.nullish(),LastDismissedAtUtc:a.nullish()}).passthrough(),gd=z.object({TotalExecutions:z.number().nullish(),DailyExecutions:z.number().nullish(),DailyResetUtc:a.nullish()}).passthrough(),yd=z.object({TotalActivations:z.number().nullish(),TotalExhausted:z.number().nullish(),TotalExpired:z.number().nullish(),TotalDismissed:z.number().nullish(),TotalShows:z.number().nullish(),LastShownAtUtc:a.nullish(),LastActivatedAtUtc:a.nullish(),LastExhaustedAtUtc:a.nullish(),NodeCounts:z.record(z.string(),gd).nullish()}).passthrough(),Cd=z.object({Slots:z.record(z.string(),Rd).nullish(),OfferHistory:z.record(z.string(),yd).nullish(),LastUpdatedUtc:a.nullish()}).passthrough();var Sd=z.object({Order:z.number().nullish(),OfferID:z.string().nullish(),DurationSec:z.number().nullish(),DelayBeforeActivationSec:z.number().nullish()}).passthrough(),xd=z.object({SlotID:z.string().nullish(),Enabled:z.boolean().nullish(),SortOrder:z.number().nullish(),Queue:z.array(Sd).nullish(),Schedule:ae.nullish(),Gate:H.nullish(),AllowDismissSkip:z.boolean().nullish(),DismissSkipDelaySec:z.number().nullish()}).passthrough(),Dd=z.object({StoreOfferID:z.string().nullish(),BillingProductID:z.string().nullish(),DirectCost:Q.nullish(),UseExternalRewards:z.boolean().nullish()}).passthrough(),bd=z.object({AdPlacementID:z.string().nullish(),ViewsRequiredToComplete:z.number().nullish(),MaxViewsPerActivation:z.number().nullish(),CooldownSecondsBetweenViews:z.number().nullish(),RequireServerVerification:z.boolean().nullish(),GrantRewardsPerView:z.boolean().nullish()}).passthrough(),zd=z.object({Purchase:Dd.nullish(),RewardedVideo:bd.nullish()}).passthrough(),vd=z.object({TrackID:z.string().nullish(),Operator:z.string().nullish(),Value:z.number().nullish()}).passthrough(),Td=z.object({Milestones:me.nullish()}).passthrough(),Pd=z.object({TrackID:z.string().nullish(),Amount:z.number().nullish(),RespectBounds:z.boolean().nullish()}).passthrough(),Id=z.object({TrackID:z.string().nullish(),DisplayName:z.string().nullish(),StartValue:z.number().nullish(),MinValue:z.number().nullish(),MaxValue:z.number().nullish(),ClampToMin:z.boolean().nullish(),ClampToMax:z.boolean().nullish(),HiddenFromUI:z.boolean().nullish()}).passthrough(),Md=z.object({RequiredCompletedNodeIDs:z.array(z.string()).nullish(),RequiredAnyCompletedNodeIDs:z.array(z.string()).nullish(),RequiredTracks:z.array(vd).nullish(),VisibleWhileLocked:z.boolean().nullish()}).passthrough(),kd=z.object({NodeID:z.string().nullish(),SortOrder:z.number().nullish(),Type:z.string().nullish(),Action:zd.nullish(),Grants:L.nullish(),TrackChanges:z.array(Pd).nullish(),MilestonePoints:z.number().nullish(),UnlockRules:Md.nullish(),NextNodeIDs:z.array(z.string()).nullish(),ChoiceGroupID:z.string().nullish(),Limits:le.nullish(),HideWhenCompleted:z.boolean().nullish(),ExhaustOfferOnComplete:z.boolean().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Metadata:z.record(z.string(),z.string()).nullish()}).passthrough(),Wo=z.object({OfferID:z.string().nullish(),Version:z.number().nullish(),Enabled:z.boolean().nullish(),GraphMode:z.string().nullish(),Name:z.string().nullish(),Description:z.string().nullish(),RootNodeIDs:z.array(z.string()).nullish(),Nodes:z.array(kd).nullish(),Tracks:z.array(Id).nullish(),Milestones:z.record(z.string(),Se).nullish(),Presets:Td.nullish(),MilestoneClaimMode:z.string().nullish(),MilestoneToken:mt.nullish(),ExhaustedWhenAllTerminalNodesCompleted:z.boolean().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Metadata:z.record(z.string(),z.string()).nullish()}).passthrough(),Ad=z.object({Milestones:z.record(z.string(),dt).nullish()}).passthrough(),di=z.object({Slots:z.record(z.string(),xd).nullish(),Offers:z.record(z.string(),Wo).nullish(),Presets:Ad.nullish()}).passthrough(),Vo=z.object({DealOfferDefinitions:di.nullish()}),Qo=z.object({DealOffers:Cd.nullish()}),Od=z.object({EntityID:z.string().nullish(),TotalEarned:z.number().nullish(),ClaimedIDs:z.array(z.string()).nullish(),ReachedUnclaimedIDs:z.array(z.string()).nullish()}).passthrough(),Ud=z.object({SlotID:z.string().nullish(),SortOrder:z.number().nullish(),QueueIndex:z.number().nullish(),CycleIndex:z.number().nullish(),OfferDef:Wo.nullish(),ActivationState:_o.nullish(),IsNewActivation:z.boolean().nullish(),ComputedExpiresAtUtc:a.nullish(),Cost:Q.nullish(),Milestone:Od.nullish()}).passthrough(),Ho=z.object({Slots:z.array(Ud).nullish()}),$o=z.object({ServerTimeUtc:a.nullish(),SlotID:z.string().nullish(),NodeID:z.string().nullish(),NodeCompleted:z.boolean().nullish(),OfferExhausted:z.boolean().nullish(),Idempotent:z.boolean().nullish(),Resources:S.nullish()}),Zo=z.object({ServerTimeUtc:a.nullish(),SlotID:z.string().nullish(),Resources:S.nullish()}),Ko=z.object({ServerTimeUtc:a.nullish(),SlotID:z.string().nullish(),Resources:S.nullish()}),Jo=z.object({ServerTimeUtc:a.nullish(),SlotID:z.string().nullish(),MilestoneID:z.string().nullish(),Resources:S.nullish()}),Yo=z.object({ServerTimeUtc:a.nullish(),SlotID:z.string().nullish(),ClaimedIDs:z.array(z.string()).nullish(),Rejected:z.record(z.string(),z.string()).nullish(),Resources:S.nullish()}),je={GetDefinition:"GetDefinition",GetUserState:"GetUserState",GetActiveDeals:"GetActiveDeals",DismissDeal:"DismissDeal",ExecuteNode:"ExecuteNode",RecordShow:"RecordShow",ClaimMilestone:"ClaimMilestone",ClaimMilestonesBatch:"ClaimMilestonesBatch"};var ir=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=O(this.ctx.settings.titleID,"DealOffer",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getDefinition(e){return this.send(je.GetDefinition,e,Vo)}getUserState(e){return this.send(je.GetUserState,e,Qo)}getActiveDeals(e){return this.send(je.GetActiveDeals,e,Ho)}dismissDeal(e){return this.send(je.DismissDeal,e,Zo)}executeNode(e){return this.send(je.ExecuteNode,e,$o)}recordShow(e){return this.send(je.RecordShow,e,Ko)}claimMilestone(e){return this.send(je.ClaimMilestone,e,Jo)}claimMilestonesBatch(e){return this.send(je.ClaimMilestonesBatch,e,Yo)}};var Bd=z.object({}).passthrough().transform(u=>u),wd=z.object({FeatureKey:z.string().nullish(),IsEnabled:z.boolean().nullish(),Percent:z.number().nullish(),SourceCurrencyID:z.string().nullish(),TargetCurrencyID:z.string().nullish()}).passthrough(),mi=z.object({IsEnabled:z.boolean().nullish(),ActivationReward:L.nullish(),InviteRewards:z.record(z.string(),Se).nullish(),SpendRewards:z.array(wd).nullish()}).passthrough(),Xo=z.object({ReferralDefinitions:mi.nullish()}),ea=z.object({Referral:Bd.nullish()}),ta=z.object({ReferralCode:z.string().nullish(),IsFirstActivation:z.boolean().nullish(),Resources:S.nullish()}),sa=z.object({RewardID:z.string().nullish(),Resources:S.nullish()}),ht={GetDefinitions:"GetDefinitions",GetUserState:"GetUserState",ActivateReferralCode:"ActivateReferralCode",ClaimInviteReward:"ClaimInviteReward"};var nr=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=O(this.ctx.settings.titleID,"Referral",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(ht.GetDefinitions,e,Xo)}getUserState(e){return this.send(ht.GetUserState,e,ea)}activateReferralCode(e){return this.send(ht.ActivateReferralCode,e,ta)}claimInviteReward(e){return this.send(ht.ClaimInviteReward,e,sa)}};var qd={RequestSent:"RequestSent",Accepted:"Accepted",Declined:"Declined",Removed:"Removed"},Ed={Attack:"Attack",Raid:"Raid",FriendAdd:"FriendAdd"},Ld=z.object({UserID:z.string(),PublicData:ye.nullish()}),Gd=z.object({OwnerUserID:z.string().nullish(),ActorUserID:z.string().nullish(),ActorProfile:ye.nullish(),Type:z.string().nullish(),CreatedAt:a.nullish(),OwnerImpact:S.nullish(),IsBlocked:z.boolean().nullish(),TargetObjectName:z.string().nullish()}).passthrough(),or=z.object({Friends:z.array(Ld).nullish()}),xt=z.object({TargetUserID:z.string().nullish(),Status:z.string().nullish()}),ra=z.object({Events:z.array(Gd).nullish()}),Fe={GetFriendsList:"GetFriendsList",GetIncomingRequests:"GetIncomingRequests",GetRecommendedFriends:"GetRecommendedFriends",SendFriendRequest:"SendFriendRequest",AcceptFriendRequest:"AcceptFriendRequest",DeclineFriendRequest:"DeclineFriendRequest",RemoveFriend:"RemoveFriend",GetTimeline:"GetTimeline"};var ar=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=O(this.ctx.settings.titleID,"Social",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getFriendsList(e){return this.send(Fe.GetFriendsList,e,or)}getIncomingRequests(e){return this.send(Fe.GetIncomingRequests,e,or)}getRecommendedFriends(e){return this.send(Fe.GetRecommendedFriends,e,or)}sendFriendRequest(e){return this.send(Fe.SendFriendRequest,e,xt)}acceptFriendRequest(e){return this.send(Fe.AcceptFriendRequest,e,xt)}declineFriendRequest(e){return this.send(Fe.DeclineFriendRequest,e,xt)}removeFriend(e){return this.send(Fe.RemoveFriend,e,xt)}getTimeline(e){return this.send(Fe.GetTimeline,e,ra)}};var Nd={Replace:"Replace",Refresh:"Refresh",KeepBest:"KeepBest",Stack:"Stack"};var ft=z.object({Target:z.string().nullish(),Operation:z.string().nullish(),Value:z.number().nullish()}).passthrough(),jd=z.object({BoostID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),ActivationCost:Q.nullish(),Effect:ft.nullish(),DurationSeconds:z.number().nullish(),Charges:z.number().nullish(),StackingPolicy:z.string().nullish(),MaxActiveInstances:z.number().nullish(),Tags:z.array(z.string()).nullish()}).passthrough(),Fd=z.object({ScheduledBoostID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Tags:z.array(z.string()).nullish(),Schedule:ae.nullish(),Effects:z.array(ft).nullish(),Gate:H.nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),_d=z.object({ChainedBoostID:z.string().nullish(),Order:z.number().nullish(),DurationSec:z.number().nullish(),Effects:z.array(ft).nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),Wd=z.object({ChainID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Schedule:ae.nullish(),Phases:z.array(_d).nullish(),Gate:H.nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),Vd=z.object({TriggeredBoostID:z.string().nullish(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Tags:z.array(z.string()).nullish(),Sources:z.array(Xe).nullish(),Effects:z.array(ft).nullish(),DurationSeconds:z.number().nullish(),Charges:z.number().nullish(),StackingPolicy:z.string().nullish(),MaxActiveInstances:z.number().nullish(),Gate:H.nullish()}).passthrough(),Qd=z.object({MaxAddPercent:z.number().nullish(),MaxMultiply:z.number().nullish(),MaxAddFlat:z.number().nullish()}).passthrough(),Hd=z.object({StackingCaps:z.record(z.string(),Qd).nullish()}).passthrough(),lr=z.object({Definitions:z.record(z.string(),jd).nullish(),ScheduledBoosts:z.record(z.string(),Fd).nullish(),BoostChains:z.record(z.string(),Wd).nullish(),TriggeredBoosts:z.record(z.string(),Vd).nullish(),Settings:Hd.nullish()}).passthrough(),ia=z.object({InstanceID:z.string(),BoostID:z.string(),ActivatedAtUtc:a.nullish(),ExpiresAtUtc:a.nullish(),RemainingCharges:z.number().nullish(),EffectSnapshot:ft.nullish(),SourceType:z.string().nullish(),SourceRef:z.string().nullish()}).passthrough();z.object({Date:a.nullish(),DailyCount:z.number().nullish(),LastFiredUtc:a.nullish()}).passthrough();var na=z.object({ServerTimeUtc:a.nullish(),Active:z.record(z.string(),ia).nullish()}),oa=z.object({ServerTimeUtc:a.nullish(),BoostID:z.string().nullish(),StackingPolicy:z.string().nullish(),ActivatedBoost:ia.nullish(),Resources:S.nullish()}),$d={Scheduled:"Scheduled",Chain:"Chain"},Zd=z.object({Kind:z.string().nullish(),SourceID:z.string().nullish(),PhaseID:z.string().nullish(),CycleIndex:z.number().nullish(),PhaseOrder:z.number().nullish(),StartUtc:a.nullish(),EndUtc:a.nullish(),Effects:z.array(ft).nullish(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),aa=z.object({ServerTimeUtc:a.nullish(),Windows:z.array(Zd).nullish()}),rt={GetDefinitions:"GetDefinitions",GetActive:"GetActive",GetActiveWindows:"GetActiveWindows",Activate:"Activate",CleanupExpired:"CleanupExpired"};var ur=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=O(this.ctx.settings.titleID,"TimedBoost",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(rt.GetDefinitions,e,lr)}getActive(e){return this.send(rt.GetActive,e,na)}getActiveWindows(e){return this.send(rt.GetActiveWindows,e,aa)}activate(e){return this.send(rt.Activate,e,oa)}cleanupExpired(e){return this.send(rt.CleanupExpired,e,Re)}};var cr=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=O(this.ctx.settings.titleID,"UserCustomData",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getUserCustomDataDefinitions(e){return this.send(qe.GetUserCustomDataDefinitions,e,os)}getMyUserCustomData(e){return this.send(qe.GetMyUserCustomData,e,Bi)}getPublicUserCustomDataOf(e){return this.send(qe.GetPublicUserCustomDataOf,e,kr)}setPrivateData(e){return this.send(qe.SetPrivateData,e,Ar)}setPublicData(e){return this.send(qe.SetPublicData,e,Ar)}deleteKey(e){return this.send(qe.DeleteKey,e,Re)}batchSet(e){return this.send(qe.BatchSet,e,wi)}batchDelete(e){return this.send(qe.BatchDelete,e,qi)}batchGetPublicUserCustomDataOf(e){return this.send(qe.BatchGetPublicUserCustomDataOf,e,Ei)}};var Kd={Fast:"Fast",Sequential:"Sequential"},Jd={Instant:"Instant",Timed:"Timed"},Yd={Hit:"Hit",Blocked:"Blocked"},Xd=z.object({SlotIndex:z.number(),Level:z.number().nullish(),IsDamaged:z.boolean().nullish(),MaxLevelRewardClaimed:z.boolean().nullish()}).passthrough(),em=z.object({Symbol:z.union([z.string(),z.number()]).nullish(),OnOpenBonus:L.nullish(),BonusTag:z.string().nullish()}).passthrough();z.object({ElapsedSeconds:z.number().nullish(),Reward:L.nullish()}).passthrough();z.object({PlayedCount:z.number().nullish(),RewardsClaimedCount:z.number().nullish(),InstantClaimsCount:z.number().nullish(),EarlyClaimsCount:z.number().nullish(),LateClaimsCount:z.number().nullish(),AdViewsTotal:z.number().nullish()}).passthrough();var la=z.object({}).passthrough().transform(u=>u),ua=z.object({Min:z.number().nullish(),Max:z.number().nullish()}).passthrough(),be=z.object({Operation:S.nullish(),ScaleWithRollMultiplier:z.boolean().nullish()}).passthrough(),tm=z.object({Count:z.number().nullish(),Sides:z.number().nullish()}).passthrough(),sm=z.object({ShieldChance:z.number().nullish(),DamagedBuildingChance:z.number().nullish(),RankMultiplierMin:z.number().nullish(),RankMultiplierMax:z.number().nullish(),RankOffsetMin:z.number().nullish(),RankOffsetMax:z.number().nullish()}).passthrough(),rm=z.object({CostMatrixTemplatesByID:z.record(z.string(),z.array(z.array(z.number()))).nullish(),PerBoardGrowth:z.number().nullish(),VisualTemplateCycle:z.array(z.string()).nullish(),EconomyScaledResources:ne.nullish(),ScaleRaidStealWithEconomy:z.boolean().nullish(),ScaleAttackRewardWithEconomy:z.boolean().nullish(),AttackValueFromCostMatrix:z.boolean().nullish(),AttackBlockedRewardFactor:z.number().nullish(),ScaleVictimLossWithEconomy:z.boolean().nullish(),ScaleVictimLossWithTier:z.boolean().nullish(),SynthesizedBuildingSlots:z.number().nullish(),SynthesizedBuildingMaxLevel:z.number().nullish()}).passthrough(),im=z.object({CostMatrix:z.array(z.array(z.number())).nullish(),PerBoardGrowth:z.number().nullish(),EconomyScale:z.number().nullish(),ScaledResources:ne.nullish()}).passthrough(),ca=z.object({SlotIndex:z.number().nullish(),Name:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),MaxLevel:z.number().nullish(),MaxLevelReward:L.nullish()}).passthrough(),nm=z.object({Index:z.number().nullish(),Type:z.string().nullish(),CustomTypeID:z.string().nullish(),RandomActionAttackWeight:z.number().nullish(),RandomActionRaidWeight:z.number().nullish(),ChanceTableID:z.string().nullish(),SpecialModeID:z.string().nullish(),Params:z.record(z.string(),z.string()).nullish()}).passthrough(),om=z.object({Tiles:z.record(z.string(),nm).nullish()}).passthrough(),am=z.object({Weight:z.number().nullish(),Bonus:be.nullish(),Tag:z.string().nullish()}).passthrough(),lm=z.object({Weight:z.number().nullish(),Tag:z.string().nullish(),MinBonusCells:z.number().nullish(),MaxBonusCells:z.number().nullish(),BonusPool:z.array(am).nullish(),GuaranteedBonus:be.nullish(),IsJackpot:z.boolean().nullish(),JackpotFinalMultiplier:z.number().nullish(),JackpotSymbolDistribution:z.record(z.string(),z.number()).nullish()}).passthrough(),um=z.object({Variants:z.array(lm).nullish()}).passthrough(),cm=z.object({Weight:z.number().nullish(),OutcomeID:z.string().nullish(),Reward:be.nullish(),ForceAction:z.string().nullish(),SpecialModeID:z.string().nullish()}).passthrough(),pm=z.object({Outcomes:z.array(cm).nullish()}).passthrough(),pa=z.object({PerAdMultiplierRange:ua.nullish(),MaxAdViews:z.number().nullish(),AdCreditCost:z.number().nullish(),FormulaKind:z.string().nullish(),ApplyMultiplierOnEarlyClaim:z.boolean().nullish()}).passthrough(),dm=z.object({ElapsedSeconds:z.number().nullish(),Reward:be.nullish()}).passthrough(),mm=z.object({Tiers:z.array(dm).nullish(),BelowFirstTierReward:be.nullish()}).passthrough(),hm=z.object({ChoiceID:z.string().nullish(),Mode:z.string().nullish(),Reward:be.nullish(),DurationSeconds:z.number().nullish(),EntryCost:Q.nullish(),Multipliers:pa.nullish(),Gradation:mm.nullish()}).passthrough(),fm=z.object({Choices:z.array(hm).nullish(),OfferExpireSeconds:z.number().nullish(),ClaimExpireSeconds:z.number().nullish()}).passthrough(),Rm=z.object({Chance:z.number().nullish(),RequiredOutcome:z.string().nullish(),Reward:be.nullish(),Tag:z.string().nullish()}).passthrough(),gm=z.object({OnPassStart:be.nullish(),OnTileLanding:z.record(z.string(),be).nullish(),OnAttack:z.record(z.string(),be).nullish(),OnRaid:z.record(z.string(),be).nullish(),OnBuild:be.nullish(),OnStageComplete:be.nullish(),OnAttackBonusDrops:z.array(Rm).nullish(),ChanceTablesByID:z.record(z.string(),pm).nullish(),SpecialModesByID:z.record(z.string(),fm).nullish()}).passthrough(),da=z.object({BaseAttackReward:L.nullish(),BaseRaidReward:L.nullish(),MaxRollMultiplier:z.number().nullish(),MaxShields:z.number().nullish(),Buildings:z.array(ca).nullish(),HeistGridBonusConfig:um.nullish(),StageOperations:gm.nullish(),TileLandingMultiplier:ua.nullish(),EconomyOverride:im.nullish()}).passthrough(),ym=z.object({Name:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),BoardTemplateID:z.string().nullish(),Buildings:z.array(ca).nullish(),StageTemplateID:z.string().nullish(),CostMatrixTemplateID:z.string().nullish(),UnitValue:z.number().nullish(),Override:da.nullish()}).passthrough(),pr=z.object({RollCurrencyID:z.string().nullish(),ShieldCurrencyID:z.string().nullish(),RaidMode:z.string().nullish(),AllowedRollMultipliers:z.array(z.number()).nullish(),BoardTemplatesByID:z.record(z.string(),om).nullish(),StageTemplatesByID:z.record(z.string(),da).nullish(),StagesByLevel:z.record(z.string(),ym).nullish(),SoftCurrencyID:z.string().nullish(),ProceduralEconomy:rm.nullish(),Dice:tm.nullish(),Bots:sm.nullish()}).passthrough(),Cm=z.object({IsActive:z.boolean().nullish(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),AnchorUtc:a.nullish(),RoundDurationSec:z.number().nullish(),PauseBetweenRoundsSec:z.number().nullish(),MaxRounds:z.number().nullish(),PartnerCount:z.number().nullish(),MatchmakingTimeoutMinutes:z.number().nullish(),MemberGracePeriodMinutes:z.number().nullish(),ContributionMin:z.number().nullish(),ContributionMax:z.number().nullish(),ScaleContributionWithRollMultiplier:z.boolean().nullish(),MaxProgress:z.number().nullish(),Milestones:z.record(z.string(),Se).nullish(),GrandPrize:L.nullish()}).passthrough(),dr=z.object({Board:pr.nullish(),CommunityChest:Cm.nullish()}).passthrough(),Sm=z.object({TargetUserID:z.string().nullish(),IsBot:z.boolean().nullish(),PublicData:ye.nullish(),TargetBuildingStates:z.array(Xd).nullish(),TargetHasShield:z.boolean().nullish()}).passthrough(),xm=z.object({ChoiceID:z.string().nullish(),Mode:z.string().nullish(),Reward:be.nullish(),DurationSeconds:z.number().nullish(),EntryCost:Q.nullish(),Multipliers:pa.nullish()}).passthrough(),Dm=z.object({ModeID:z.string().nullish(),Choices:z.array(xm).nullish()}).passthrough(),bm=z.object({GroupID:z.string().nullish(),Delta:A.nullish(),NewProgress:A.nullish(),MaxProgress:A.nullish(),UnlockedMilestoneIDs:z.array(z.string()).nullish(),Completed:z.boolean().nullish()}).passthrough(),ma=z.object({UsedMultiplier:z.number().nullish(),Steps:z.number().nullish(),OldPosition:z.number().nullish(),NewPosition:z.number(),CyclesCompletedDelta:A.nullish(),LandedTileType:z.string().nullish(),Operation:S.nullish(),ActionRequired:z.string().nullish(),ActionData:Sm.nullish(),SpecialModeOffer:Dm.nullish(),CommunityChestContribution:bm.nullish()}).passthrough(),ha=z.object({Outcome:z.string().nullish(),IsBotTarget:z.boolean().nullish(),BuildingIndexHit:z.number().nullish(),Operation:S.nullish(),DualResult:Ye.nullish()}).passthrough(),hi=z.object({Status:z.string().nullish(),Outcome:z.string().nullish(),FoundSymbol:z.union([z.string(),z.number()]).nullish(),FoundBonus:L.nullish(),OpenedIndex:z.number().nullish(),AttemptsLeft:z.number().nullish(),RaidLayout:z.array(em).nullish(),HeistVariantTag:z.string().nullish(),IsJackpot:z.boolean().nullish(),Operation:S.nullish(),DualResult:Ye.nullish()}).passthrough(),fa=z.object({BuiltIndex:z.number(),NewLevel:z.number().nullish(),StageComplete:z.boolean().nullish(),MaxLevelRewardClaimed:z.boolean().nullish(),Operation:S.nullish()}).passthrough(),Ra=z.object({Mode:z.union([z.string(),z.number()]).nullish(),Operation:S.nullish(),DurationSeconds:z.number().nullish(),StartedAtUtc:a.nullish(),ExpiresAtUtc:a.nullish()}).passthrough(),ga=z.object({AdViewsUsed:z.number().nullish(),RolledMultiplier:z.number().nullish(),AccumulatedMultiplier:z.number().nullish(),RemainingAdViews:z.number().nullish()}).passthrough(),ya=z.object({FinalMultiplier:z.number().nullish(),AdViewsUsed:z.number().nullish(),AccumulatedMultiplier:z.number().nullish(),IsEarlyClaim:z.boolean().nullish(),Operation:S.nullish()}).passthrough(),zm={Forming:"Forming",Active:"Active",Completed:"Completed",Failed:"Failed",Expired:"Expired"},Ca=z.enum(["Forming","Active","Completed","Failed","Expired"]),vm={Active:"Active",Left:"Left",Replaced:"Replaced"},Tm=z.enum(["Active","Left","Replaced"]),Pm=z.object({CurrentProgress:A.nullish(),MaxProgress:A.nullish()}).passthrough(),Im=z.object({UserID:z.string().nullish(),PublicData:ye.nullish(),IsBot:z.boolean().nullish(),ContributionPoints:A.nullish(),ClaimedMilestoneIDs:z.array(z.string()).nullish(),GrandPrizeClaimed:z.boolean().nullish(),MemberStatus:Tm.nullish(),JoinedAtUtc:a.nullish(),LeftAtUtc:a.nullish()}).passthrough(),Sa=z.object({GroupID:z.string().nullish(),TitleID:z.string().nullish(),RoundIndex:z.number().nullish(),Members:z.array(Im).nullish(),SharedProgress:Pm.nullish(),Status:Ca.nullish(),CreatedAtUtc:a.nullish(),ExpiresAtUtc:a.nullish(),Version:z.number().nullish()}).passthrough(),Mm=z.object({GroupID:z.string().nullish(),RoundIndex:z.number().nullish(),FinalStatus:Ca.nullish(),GrandPrizeReceived:z.boolean().nullish(),FinishedAtUtc:a.nullish()}).passthrough(),km=z.object({ActiveGroupID:z.string().nullish(),ActiveRoundIndex:z.number().nullish(),History:z.array(Mm).nullish()}).passthrough(),xa=z.object({ServerTimeUtc:a.nullish(),UserState:km.nullish(),ActiveGroup:Sa.nullish(),SecondsRemaining:A.nullish()}),Da=z.object({ServerTimeUtc:a.nullish(),Group:Sa.nullish(),SecondsRemaining:A.nullish()}),fi=z.object({ServerTimeUtc:a.nullish(),GroupID:z.string().nullish(),RewardType:z.string().nullish(),MilestoneID:z.string().nullish(),Resources:S.nullish()}),ba=z.object({ServerTimeUtc:a.nullish(),GroupID:z.string().nullish(),Success:z.boolean().nullish()}),ce={GetGameLoops:"GetGameLoops",GetBoardDefinition:"GetBoardDefinition",GetBoardDefinitionForLevel:"GetBoardDefinitionForLevel",GetUserBoardState:"GetUserBoardState",BoardLoopRoll:"BoardLoopRoll",BoardLoopAttack:"BoardLoopAttack",BoardLoopRaid:"BoardLoopRaid",BoardLoopRaidFast:"BoardLoopRaidFast",BoardLoopBuild:"BoardLoopBuild",BoardSpecialChoose:"BoardSpecialChoose",BoardSpecialApplyMultiplier:"BoardSpecialApplyMultiplier",BoardSpecialClaim:"BoardSpecialClaim",GetCommunityChestState:"GetCommunityChestState",JoinOrCreateCommunityChest:"JoinOrCreateCommunityChest",ClaimCommunityChestMilestone:"ClaimCommunityChestMilestone",ClaimCommunityChestGrandPrize:"ClaimCommunityChestGrandPrize",LeaveCommunityChest:"LeaveCommunityChest"};var Am=z.object({VariantID:z.string().nullish(),DisplayName:z.string().nullish(),Weight:z.number().nullish(),IsControl:z.boolean().nullish(),Params:z.record(z.string(),z.string()).nullish()}).passthrough(),Om=z.object({ExperimentID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),IsEnabled:z.boolean().nullish(),Schedule:ae.nullish(),Gate:H.nullish(),Variants:z.array(Am).nullish(),Salt:z.string().nullish(),LayerID:z.string().nullish(),StickyAssignment:z.boolean().nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),za=z.object({Experiments:z.record(z.string(),Om).nullish()}).passthrough();var Um={Listing:"Listing",Auction:"Auction",BuyOrder:"BuyOrder",DirectTrade:"DirectTrade"},va=z.enum(["Listing","Auction","BuyOrder","DirectTrade"]),Bm={Active:"Active",Completed:"Completed",Cancelled:"Cancelled",Declined:"Declined",Expired:"Expired"},Ri=z.enum(["Active","Completed","Cancelled","Declined","Expired"]),wm={Burn:"Burn",Ledger:"Ledger"},qm=z.enum(["Burn","Ledger"]),Em=z.object({Percent:z.number().nullish(),MinPerPosition:A.nullish()}).passthrough(),Lm=z.object({AllowVirtualCurrency:z.boolean().nullish(),AllowItems:z.boolean().nullish(),AllowEventTokens:z.boolean().nullish(),Allowed:z.array(ni).nullish(),MaxPositions:z.number().nullish()}).passthrough(),Gm=z.object({Percent:z.number().nullish(),MinPerPosition:A.nullish(),Sink:qm.nullish(),LedgerAccountID:z.string().nullish(),PerCatalogOverrides:z.record(z.string(),Em).nullish(),ApplyToDirectTrades:z.boolean().nullish()}).passthrough(),Nm=z.object({AllowedCatalogIDs:z.array(z.string()).nullish(),DeniedCatalogIDs:z.array(z.string()).nullish(),DeniedItemIDs:z.array(z.string()).nullish(),AllowUnstackableWithState:z.boolean().nullish()}).passthrough(),jm=z.object({Enabled:z.boolean().nullish(),AllowedDurationsHours:z.array(z.number()).nullish(),MaxActiveListings:z.number().nullish(),CreateLimits:le.nullish(),BuyLimits:le.nullish(),ListingFee:Q.nullish(),RefundListingFeeOnCancel:z.boolean().nullish()}).passthrough(),Fm=z.object({Enabled:z.boolean().nullish(),MinDurationHours:z.number().nullish(),MaxDurationHours:z.number().nullish(),AntiSnipeWindowSeconds:z.number().nullish(),AntiSnipeExtensionSeconds:z.number().nullish(),MaxAntiSnipeExtensions:z.number().nullish(),MinBidStepPercent:z.number().nullish(),MinBidStepAbsolute:A.nullish(),BidLimits:le.nullish()}).passthrough(),_m=z.object({Enabled:z.boolean().nullish(),MaxActiveOrders:z.number().nullish(),AllowedDurationsHours:z.array(z.number()).nullish(),CreateLimits:le.nullish(),FillLimits:le.nullish()}).passthrough(),Wm=z.object({Enabled:z.boolean().nullish(),OfferExpirationHours:z.number().nullish(),MaxPendingOutgoing:z.number().nullish(),AllowGifts:z.boolean().nullish(),CreateLimits:le.nullish()}).passthrough(),gi=z.object({Enabled:z.boolean().nullish(),Gate:H.nullish(),Schedule:ae.nullish(),PricePolicy:Lm.nullish(),Commission:Gm.nullish(),Tradability:Nm.nullish(),Listings:jm.nullish(),Auctions:Fm.nullish(),BuyOrders:_m.nullish(),DirectTrades:Wm.nullish()}).passthrough(),Ta=z.object({BidIndex:z.number().nullish(),UserID:z.string().nullish(),Amount:A.nullish(),Settled:z.boolean().nullish(),SettledAt:a.nullish()}).passthrough(),Vm=z.object({BidAxisType:Bt.nullish(),BidCurrencyID:z.string().nullish(),BidCatalogID:z.string().nullish(),BidItemID:z.string().nullish(),StartingBid:A.nullish(),CurrentBid:A.nullish(),CurrentBidderID:z.string().nullish(),BidCount:z.number().nullish(),ExtensionCount:z.number().nullish(),PendingRefunds:z.array(Ta).nullish()}).passthrough(),mr=z.object({LastAt:a.nullish(),DailyCount:z.number().nullish(),DailyResetUtc:a.nullish()}).passthrough(),Qm=z.object({Create:mr.nullish(),Buy:mr.nullish(),Sell:mr.nullish(),Bid:mr.nullish()}).passthrough(),Hm=z.object({CharacterID:z.string().nullish(),SlotID:z.string().nullish()}).passthrough(),$m=z.object({ItemInstanceID:z.string(),ItemID:z.string(),CatalogID:z.string().nullish(),Quantity:z.number().nullish(),RemainingUses:z.number().nullish(),Level:z.number().nullish(),AcquiredAt:a,ExpiresAt:a.nullish(),EquippedSlot:Hm.nullish(),CustomData:z.string().nullish()}).passthrough().transform(u=>u),Qe=z.object({OfferID:z.string().nullish(),OfferType:va.nullish(),Status:Ri.nullish(),CreatorUserID:z.string().nullish(),CreatorPublicData:ye.nullish(),TargetUserID:z.string().nullish(),GoodsCatalogID:z.string().nullish(),GoodsItemID:z.string().nullish(),GoodsAmount:A.nullish(),GoodsInstances:z.array($m).nullish(),Price:ne.nullish(),Auction:Vm.nullish(),CreatedAt:a.nullish(),ExpiresAt:a.nullish()}).passthrough(),Zm=z.object({GoodsCatalogID:z.string().nullish(),GoodsItemID:z.string().nullish(),OfferCount:A.nullish()}).passthrough(),Pa=z.object({Definitions:gi.nullish(),IsOpenNow:z.boolean().nullish(),GatePassed:z.boolean().nullish()}).passthrough(),yi=z.object({Offers:z.array(Qe).nullish(),ContinuationToken:z.string().nullish()}).passthrough(),Ia=z.object({Groups:z.array(Zm).nullish()}).passthrough(),Ma=z.object({Offer:Qe.nullish()}).passthrough(),Dt=z.object({OfferID:z.string().nullish(),Offer:Qe.nullish(),Resources:S.nullish()}).passthrough(),He=z.object({OfferID:z.string().nullish(),Status:Ri.nullish(),Settlement:Ye.nullish(),Resources:S.nullish(),CommissionTaken:ne.nullish()}).passthrough(),ka=z.object({OfferID:z.string().nullish(),CurrentBid:A.nullish(),BidCount:z.number().nullish(),ExpiresAt:a.nullish(),Resources:S.nullish()}).passthrough(),Aa=z.object({MyOffers:z.array(Qe).nullish(),MyLeadingBids:z.array(Qe).nullish(),MyBuyOrders:z.array(Qe).nullish(),IncomingTrades:z.array(Qe).nullish(),OutgoingTrades:z.array(Qe).nullish(),Claimables:z.array(Qe).nullish(),DrainedRefunds:z.array(Ta).nullish(),Limits:Qm.nullish()}).passthrough(),Km=z.object({OfferID:z.string().nullish(),OfferType:va.nullish(),FinalStatus:Ri.nullish(),SellerUserID:z.string().nullish(),BuyerUserID:z.string().nullish(),GoodsCatalogID:z.string().nullish(),GoodsItemID:z.string().nullish(),GoodsAmount:A.nullish(),PricePaid:ne.nullish(),CommissionTaken:ne.nullish(),CompletedAt:a.nullish()}).passthrough(),Oa=z.object({Entries:z.array(Km).nullish(),ContinuationToken:z.string().nullish()}).passthrough(),re={GetDefinitions:"GetDefinitions",GetGroupedOffers:"GetGroupedOffers",GetOffersByItem:"GetOffersByItem",GetOffer:"GetOffer",GetBuyOrders:"GetBuyOrders",GetMyState:"GetMyState",GetHistory:"GetHistory",CreateListing:"CreateListing",CancelListing:"CancelListing",Buy:"Buy",CreateAuction:"CreateAuction",PlaceBid:"PlaceBid",ClaimAuction:"ClaimAuction",CreateBuyOrder:"CreateBuyOrder",CancelBuyOrder:"CancelBuyOrder",FillBuyOrder:"FillBuyOrder",CreateDirectTrade:"CreateDirectTrade",RespondDirectTrade:"RespondDirectTrade",CancelDirectTrade:"CancelDirectTrade",ClaimBack:"ClaimBack"};var Jm={Mesh:"Mesh",Host:"Host"},Ci=z.enum(["Mesh","Host"]),Ym={ServerRelay:"ServerRelay",P2P:"P2P"},Si=z.enum(["ServerRelay","P2P"]),Xm={Public:"Public",Private:"Private"},eh=z.enum(["Public","Private"]),th={Signal:"Signal",Chat:"Chat",PlayerJoined:"PlayerJoined",PlayerLeft:"PlayerLeft",HostChanged:"HostChanged",RoomClosed:"RoomClosed",MemberState:"MemberState"},sh=z.enum(["Signal","Chat","PlayerJoined","PlayerLeft","HostChanged","RoomClosed","MemberState"]),Ua=z.object({Urls:z.string().nullish(),Username:z.string().nullish(),Credential:z.string().nullish()}).passthrough(),rh=z.object({Enabled:z.boolean().nullish()}).passthrough(),Ba=z.object({SystemState:rh.nullish(),DefaultTopology:Ci.nullish(),AllowCreatorTopologyOverride:z.boolean().nullish(),DefaultChatMode:Si.nullish(),AllowCreatorChatOverride:z.boolean().nullish(),MaxPlayersPerRoom:z.number().nullish(),RoomTtlSeconds:z.number().nullish(),HeartbeatIntervalMs:z.number().nullish(),MemberTimeoutMs:z.number().nullish(),MaxSignalPayloadBytes:z.number().nullish(),MaxChatTextLength:z.number().nullish(),RoomLogCap:z.number().nullish(),IceServers:z.array(Ua).nullish()}).passthrough(),ih=z.object({UserID:z.string().nullish(),Username:z.string().nullish(),AvatarUrl:z.string().nullish(),Level:z.number().nullish(),Power:z.number().nullish(),Ready:z.boolean().nullish(),State:z.record(z.string(),z.string()).nullish(),JoinedAt:z.number().nullish(),IsHost:z.boolean().nullish(),LastSeenMs:z.number().nullish()}).passthrough(),nh=z.object({RoomID:z.string().nullish(),Name:z.string().nullish(),HostUserID:z.string().nullish(),Topology:Ci.nullish(),ChatMode:Si.nullish(),MaxPlayers:z.number().nullish(),MemberCount:z.number().nullish(),CreatedAt:z.number().nullish()}).passthrough(),oh=z.object({Seq:z.number().nullish(),Type:sh.nullish(),FromUserID:z.string().nullish(),ToUserID:z.string().nullish(),Kind:z.string().nullish(),Payload:z.string().nullish(),Ts:z.number().nullish()}).passthrough(),hr=z.object({RoomID:z.string().nullish(),Name:z.string().nullish(),HostUserID:z.string().nullish(),OwnerUserID:z.string().nullish(),Topology:Ci.nullish(),ChatMode:Si.nullish(),Visibility:eh.nullish(),Status:z.string().nullish(),MaxPlayers:z.number().nullish(),Members:z.array(ih).nullish(),IceServers:z.array(Ua).nullish(),Seq:z.number().nullish()}).passthrough(),xi=z.object({Closed:z.boolean().nullish(),NewHostUserID:z.string().nullish()}).passthrough(),wa=z.object({Rooms:z.array(nh).nullish(),Page:z.number().nullish(),PageSize:z.number().nullish(),HasMore:z.boolean().nullish()}).passthrough(),qa=z.object({Envelopes:z.array(oh).nullish(),MaxSeq:z.number().nullish()}).passthrough(),fr=z.object({Seq:z.number().nullish()}).passthrough(),Oe={CreateRoom:"CreateRoom",JoinRoom:"JoinRoom",LeaveRoom:"LeaveRoom",ListRooms:"ListRooms",GetRoom:"GetRoom",CloseRoom:"CloseRoom",Poll:"Poll",SendSignal:"SendSignal",SendChat:"SendChat",SetMemberState:"SetMemberState"};var Di=z.object({Data:z.string().nullish(),SchemaVersion:z.number().nullish(),UpdatedAt:a.nullish()}),ah=z.object({PublicData:z.record(z.string(),Di).nullish(),PrivateData:z.record(z.string(),Di).nullish()}),Ea=z.object({TitleCustomData:ah.nullish(),Character:fs.nullish(),Item:vs.nullish(),Currency:ds.nullish(),Store:Ps.nullish(),Lootbox:Hr.nullish(),Quest:Bs.nullish(),TimedEvent:qs.nullish(),Leaderboard:Fs.nullish(),Season:Ws.nullish(),Reward:$r.nullish(),Collection:er.nullish(),Craft:ai.nullish(),DealOffer:di.nullish(),Premium:si.nullish(),TimedBoost:lr.nullish(),CoopEvent:sr.nullish(),GameLoop:dr.nullish(),Match:oi.nullish(),Experiment:za.nullish(),Blockchain:Gr.nullish(),Marketplace:gi.nullish(),Multiplayer:Ba.nullish(),UserCustomData:os.nullish(),Referral:mi.nullish()}).passthrough(),La=z.object({PublicData:z.record(z.string(),Di).nullish()});var it={GetTitlePublicConfiguration:"GetTitlePublicConfiguration",GetTitlePublicConfigurationExcept:"GetTitlePublicConfigurationExcept",GetPublicCustomTitleData:"GetPublicCustomTitleData",GetCurrencyDefinitions:"GetCurrencyDefinitions",GetItemDefinitions:"GetItemDefinitions",GetServerTime:"GetServerTime"};var Rr=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=O(this.ctx.settings.titleID,"Title",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getTitlePublicConfiguration(e){return this.send(it.GetTitlePublicConfiguration,e,Ea)}getPublicTitleCustomData(e){return this.send(it.GetPublicCustomTitleData,e,La)}getCurrencyDefinitions(e){return this.send(it.GetCurrencyDefinitions,e,ds)}getItemDefinitions(e){return this.send(it.GetItemDefinitions,e,vs)}getServerTime(e){return this.send(it.GetServerTime,e,Re)}};var gr=class{constructor(e){this.ctx=e;}ctx;send(e,t,s,r=false){let i=O(this.ctx.settings.titleID,"GameLoop",e,t.UserID??"");return this.ctx.transport.post(i,t,s,{ticket:t.ClientSessionTicket,silent:r})}getGameLoops(e){return this.send(ce.GetGameLoops,e,dr)}getBoardDefinition(e,t=false){return this.send(ce.GetBoardDefinition,e,pr,t)}getBoardDefinitionForLevel(e,t=false){return this.send(ce.GetBoardDefinitionForLevel,e,pr,t)}getUserBoardState(e){return this.send(ce.GetUserBoardState,e,la)}boardLoopRoll(e){return this.send(ce.BoardLoopRoll,e,ma)}boardLoopAttack(e){return this.send(ce.BoardLoopAttack,e,ha)}boardLoopRaid(e){return this.send(ce.BoardLoopRaid,e,hi)}boardLoopRaidFast(e){return this.send(ce.BoardLoopRaidFast,e,hi)}boardLoopBuild(e){return this.send(ce.BoardLoopBuild,e,fa)}boardSpecialChoose(e){return this.send(ce.BoardSpecialChoose,e,Ra)}boardSpecialApplyMultiplier(e){return this.send(ce.BoardSpecialApplyMultiplier,e,ga)}boardSpecialClaim(e){return this.send(ce.BoardSpecialClaim,e,ya)}getCommunityChestState(e){return this.send(ce.GetCommunityChestState,e,xa)}joinOrCreateCommunityChest(e){return this.send(ce.JoinOrCreateCommunityChest,e,Da)}claimCommunityChestMilestone(e){return this.send(ce.ClaimCommunityChestMilestone,e,fi)}claimCommunityChestGrandPrize(e){return this.send(ce.ClaimCommunityChestGrandPrize,e,fi)}leaveCommunityChest(e){return this.send(ce.LeaveCommunityChest,e,ba)}};var bt=z.lazy(()=>z.union([z.string(),z.number(),z.boolean(),z.null(),z.array(bt),z.record(z.string(),bt)]));var lh={Live:"Live",Latest:"Latest",Specific:"Specific"},uh={Debug:"Debug",Info:"Info",Warning:"Warning",Error:"Error"},ch=z.enum(["Debug","Info","Warning","Error"]),ph={None:"None",Disabled:"Disabled",NoActiveRevision:"NoActiveRevision",RevisionNotFound:"RevisionNotFound",InvalidFieldName:"InvalidFieldName",RateLimited:"RateLimited",HandlerNotFound:"HandlerNotFound",HandlerDisabled:"HandlerDisabled",Timeout:"Timeout",StatementCountExceeded:"StatementCountExceeded",StackOverflow:"StackOverflow",ApiCallLimitExceeded:"ApiCallLimitExceeded",JavaScriptException:"JavaScriptException",ExecutionError:"ExecutionError"},dh=z.enum(["None","Disabled","NoActiveRevision","RevisionNotFound","InvalidFieldName","RateLimited","HandlerNotFound","HandlerDisabled","Timeout","StatementCountExceeded","StackOverflow","ApiCallLimitExceeded","JavaScriptException","ExecutionError"]),mh=z.object({Level:ch,Message:z.string().nullish(),Data:bt.nullish()}),hh=z.object({Error:dh,Message:z.string().nullish(),StackTrace:z.string().nullish()}),Ga=z.object({FunctionName:z.string().nullish(),Revision:z.number().nullish(),FunctionResult:bt.nullish(),FunctionResultTooLarge:z.boolean().nullish(),Logs:z.array(mh).nullish(),LogsTooLarge:z.boolean().nullish(),ExecutionTimeSeconds:z.number().nullish(),APIRequestsIssued:z.number().nullish(),Error:hh.nullish()}),bi={Execute:"Execute"};var yr=class{constructor(e){this.ctx=e;}ctx;execute(e){let t=O(this.ctx.settings.titleID,"CloudCode",bi.Execute,e.UserID??"");return this.ctx.transport.post(t,e,Ga,{ticket:e.ClientSessionTicket})}};var Cr=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=O(this.ctx.settings.titleID,"Blockchain",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(ve.GetDefinitions,e,un)}getUserState(e){return this.send(ve.GetUserState,e,cn)}depositToken(e){return this.send(ve.DepositToken,e,pn)}depositNFT(e){return this.send(ve.DepositNFT,e,dn)}requestTokenWithdrawal(e){return this.send(ve.RequestTokenWithdrawal,e,mn)}requestNFTWithdrawal(e){return this.send(ve.RequestNFTWithdrawal,e,hn)}getTransactionHistory(e){return this.send(ve.GetTransactionHistory,e,fn)}retryWithdrawal(e){return this.send(ve.RetryWithdrawal,e,Rn)}confirmWithdrawal(e){return this.send(ve.ConfirmWithdrawal,e,gn)}donateToDeveloper(e){return this.send(ve.DonateToDeveloper,e,Fr)}donateToUsersPool(e){return this.send(ve.DonateToUsersPool,e,Fr)}};var Sr=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=O(this.ctx.settings.titleID,"Marketplace",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(re.GetDefinitions,e,Pa)}getGroupedOffers(e){return this.send(re.GetGroupedOffers,e,Ia)}getOffersByItem(e){return this.send(re.GetOffersByItem,e,yi)}getOffer(e){return this.send(re.GetOffer,e,Ma)}getBuyOrders(e){return this.send(re.GetBuyOrders,e,yi)}getMyState(e){return this.send(re.GetMyState,e,Aa)}getHistory(e){return this.send(re.GetHistory,e,Oa)}createListing(e){return this.send(re.CreateListing,e,Dt)}cancelListing(e){return this.send(re.CancelListing,e,He)}buy(e){return this.send(re.Buy,e,He)}createAuction(e){return this.send(re.CreateAuction,e,Dt)}placeBid(e){return this.send(re.PlaceBid,e,ka)}claimAuction(e){return this.send(re.ClaimAuction,e,He)}createBuyOrder(e){return this.send(re.CreateBuyOrder,e,Dt)}cancelBuyOrder(e){return this.send(re.CancelBuyOrder,e,He)}fillBuyOrder(e){return this.send(re.FillBuyOrder,e,He)}createDirectTrade(e){return this.send(re.CreateDirectTrade,e,Dt)}respondDirectTrade(e){return this.send(re.RespondDirectTrade,e,He)}cancelDirectTrade(e){return this.send(re.CancelDirectTrade,e,He)}claimBack(e){return this.send(re.ClaimBack,e,He)}};var xr=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=O(this.ctx.settings.titleID,"Multiplayer",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}createRoom(e){return this.send(Oe.CreateRoom,e,hr)}joinRoom(e){return this.send(Oe.JoinRoom,e,hr)}leaveRoom(e){return this.send(Oe.LeaveRoom,e,xi)}listRooms(e){return this.send(Oe.ListRooms,e,wa)}getRoom(e){return this.send(Oe.GetRoom,e,hr)}closeRoom(e){return this.send(Oe.CloseRoom,e,xi)}poll(e){return this.send(Oe.Poll,e,qa)}sendSignal(e){return this.send(Oe.SendSignal,e,fr)}sendChat(e){return this.send(Oe.SendChat,e,fr)}setMemberState(e){return this.send(Oe.SetMemberState,e,fr)}};var Dr=class{settings;emitter;platform;transport;data;authStore;api;auth;userService;currency;item;store;lootbox;reward;quest;timedEvent;leaderboard;season;premium;character;match;craft;collection;coopEvent;dealOffer;referral;social;timedBoost;userCustomData;title;gameLoop;cloudCode;blockchain;marketplace;multiplayer;constructor(e$1){this.settings=Ti(e$1),this.emitter=new gt,this.platform=e$1.platform??new e,this.transport=new It({baseUrl:this.settings.baseUrl,emitter:this.emitter,fetchImpl:e$1.fetch,debugLogging:this.settings.debugLogging,throttleMs:e$1.throttleMs}),this.data=new Ot(this.emitter),this.authStore=new qt(this.platform.storage,this.settings.titleID),this.api={authentication:new xs(this),user:new Ds(this),currency:new bs(this),item:new Ts(this),store:new Is(this),lootbox:new Os(this),reward:new Us(this),quest:new ws(this),timedEvent:new Es(this),leaderboard:new _s(this),season:new Vs(this),premium:new Hs(this),character:new $s(this),match:new Ks(this),craft:new Ys(this),collection:new tr(this),coopEvent:new rr(this),dealOffer:new ir(this),referral:new nr(this),social:new ar(this),timedBoost:new ur(this),userCustomData:new cr(this),title:new Rr(this),gameLoop:new gr(this),cloudCode:new yr(this),blockchain:new Cr(this),marketplace:new Sr(this),multiplayer:new xr(this)},this.userService=new Lt(this),this.auth=new Et(this),this.currency=new Nt(this),this.item=new jt(this),this.store=new Ft(this),this.lootbox=new _t(this),this.reward=new Wt(this),this.quest=new Vt(this),this.timedEvent=new Qt(this),this.leaderboard=new Ht(this),this.season=new $t(this),this.premium=new Zt(this),this.character=new Kt(this),this.match=new Jt(this),this.craft=new Yt(this),this.collection=new Xt(this),this.coopEvent=new es(this),this.dealOffer=new ts(this),this.referral=new ss(this),this.social=new rs(this),this.timedBoost=new is(this),this.userCustomData=new as(this),this.title=new ls(this),this.gameLoop=new us(this),this.cloudCode=new cs(this),this.blockchain=new ys(this),this.marketplace=new Cs(this),this.multiplayer=new Ss(this),this.transport.setSessionRefreshHandler(()=>this.auth.refreshSession());}buildAuthedBaseRequest(){let e=this.auth.context;return {UserID:e?.userID,ClientSessionTicket:e?.clientSessionTicket,BuildKey:this.settings.buildKey,WebAppLink:this.platform.getFullURL(),RelatedEntityID:d()}}};var br=class{ctx;constructor(e){this.ctx=new Dr(e);}get auth(){return this.ctx.auth}get user(){return this.ctx.userService}get currency(){return this.ctx.currency}get item(){return this.ctx.item}get store(){return this.ctx.store}get lootbox(){return this.ctx.lootbox}get reward(){return this.ctx.reward}get quest(){return this.ctx.quest}get timedEvent(){return this.ctx.timedEvent}get leaderboard(){return this.ctx.leaderboard}get season(){return this.ctx.season}get premium(){return this.ctx.premium}get character(){return this.ctx.character}get match(){return this.ctx.match}get craft(){return this.ctx.craft}get collection(){return this.ctx.collection}get coopEvent(){return this.ctx.coopEvent}get dealOffer(){return this.ctx.dealOffer}get referral(){return this.ctx.referral}get social(){return this.ctx.social}get timedBoost(){return this.ctx.timedBoost}get userCustomData(){return this.ctx.userCustomData}get title(){return this.ctx.title}get gameLoop(){return this.ctx.gameLoop}get cloudCode(){return this.ctx.cloudCode}get blockchain(){return this.ctx.blockchain}get marketplace(){return this.ctx.marketplace}get multiplayer(){return this.ctx.multiplayer}get data(){return this.ctx.data}get platform(){return this.ctx.platform}on(e,t){return this.ctx.emitter.on(e,t)}once(e,t){return this.ctx.emitter.once(e,t)}off(e,t){this.ctx.emitter.off(e,t);}};function fh(u){return new br(u)}var Rh={Banner:"Banner",Interstitial:"Interstitial",RewardedVideo:"RewardedVideo",RewardedInterstitial:"RewardedInterstitial",AppOpen:"AppOpen",Native:"Native"},zi=z.enum(["Banner","Interstitial","RewardedVideo","RewardedInterstitial","AppOpen","Native"]),gh={Top:"Top",Bottom:"Bottom",Left:"Left",Right:"Right"},yh=z.enum(["Top","Bottom","Left","Right"]),Ch=z.object({PlacementID:z.string().nullish(),Type:zi.nullish(),Enabled:z.boolean().nullish(),CooldownSeconds:z.number().nullish(),DailyImpressionCap:z.number().nullish(),CreditsRewarded:z.number().nullish(),AllowedProviderIDs:z.array(z.string()).nullish()}).passthrough(),Sh=z.object({DefaultCreditsPerView:z.number().nullish(),MaxCreditsBalance:z.number().nullish(),DailyCreditEarnCap:z.number().nullish(),DailyViewCap:z.number().nullish(),MinSecondsBetweenViews:z.number().nullish()}).passthrough(),xh=z.object({CooldownSeconds:z.number().nullish(),MinSessionTimeBeforeFirstSeconds:z.number().nullish(),DailyImpressionCap:z.number().nullish(),MaxImpressionsPerSession:z.number().nullish()}).passthrough(),Dh=z.object({Enabled:z.boolean().nullish(),Position:yh.nullish(),RefreshIntervalSeconds:z.number().nullish()}).passthrough(),bh=z.object({Enabled:z.boolean().nullish(),CooldownSeconds:z.number().nullish(),DailyImpressionCap:z.number().nullish()}).passthrough(),zh=z.object({MaxImpressionsPerHour:z.number().nullish(),MaxImpressionsPerDay:z.number().nullish(),MaxImpressionsPerSession:z.number().nullish()}).passthrough(),vh=z.object({MinPremiumTier:z.number().nullish(),RequiredPremiumID:z.string().nullish(),DisableInterstitials:z.boolean().nullish(),DisableBanners:z.boolean().nullish(),DisableAppOpen:z.boolean().nullish()}).passthrough(),Th=z.object({RequirePersonalizedAdsConsent:z.boolean().nullish(),RequireTrackingConsent:z.boolean().nullish(),CurrentPolicyVersion:z.string().nullish(),RegulatedRegions:z.array(z.string()).nullish()}).passthrough(),Ph=z.object({RequireServerSideVerification:z.boolean().nullish(),PendingRequestTtlSeconds:z.number().nullish(),MaxPendingRequestsPerUser:z.number().nullish(),ProviderPublicKeys:z.record(z.string(),z.string()).nullish()}).passthrough(),Ih=z.object({AndroidUnitID:z.string().nullish(),IosUnitID:z.string().nullish(),WebUnitID:z.string().nullish(),Type:zi.nullish()}).passthrough(),Mh=z.object({ProviderID:z.string().nullish(),Enabled:z.boolean().nullish(),Priority:z.number().nullish(),AndroidAppID:z.string().nullish(),IosAppID:z.string().nullish(),WebAppID:z.string().nullish(),Units:z.record(z.string(),Ih).nullish()}).passthrough();z.object({Enabled:z.boolean().nullish(),Placements:z.record(z.string(),Ch).nullish(),Providers:z.record(z.string(),Mh).nullish(),RewardedVideo:Sh.nullish(),Interstitial:xh.nullish(),Banner:Dh.nullish(),AppOpen:bh.nullish(),FrequencyCapping:zh.nullish(),PremiumAdReductions:z.array(vh).nullish(),Consent:Th.nullish(),Verification:Ph.nullish()}).passthrough();var kh=z.object({RewardedVideoCredit:z.number().nullish(),TotalEarned:z.number().nullish(),TotalSpent:z.number().nullish()}).passthrough(),Ah=z.object({PlacementID:z.string().nullish(),LastShownAt:a.nullish(),LastCompletedAt:a.nullish(),TotalImpressions:z.number().nullish(),TotalCompletions:z.number().nullish(),ConsecutiveFailures:z.number().nullish()}).passthrough(),Oh=z.object({Date:a.nullish(),ImpressionsByPlacement:z.record(z.string(),z.number()).nullish(),CompletionsByPlacement:z.record(z.string(),z.number()).nullish(),TotalImpressions:z.number().nullish(),InterstitialImpressions:z.number().nullish(),RewardedCompletions:z.number().nullish(),AppOpenImpressions:z.number().nullish(),CreditsEarnedToday:z.number().nullish()}).passthrough(),Uh=z.object({SessionID:z.string().nullish(),SessionStartAt:a.nullish(),Impressions:z.number().nullish(),InterstitialImpressions:z.number().nullish(),RewardedCompletions:z.number().nullish()}).passthrough(),Bh=z.object({PersonalizedAdsConsent:z.boolean().nullish(),TrackingConsent:z.boolean().nullish(),PolicyVersion:z.string().nullish(),Region:z.string().nullish(),ConsentGivenAt:a.nullish(),ConsentRevokedAt:a.nullish()}).passthrough(),wh=z.object({RequestID:z.string().nullish(),PlacementID:z.string().nullish(),ProviderID:z.string().nullish(),Type:zi.nullish(),IssuedAt:a.nullish(),ExpiresAt:a.nullish(),CreditsToAward:z.number().nullish()}).passthrough(),qh=z.object({InvalidSsvCount:z.number().nullish(),OrphanCompletions:z.number().nullish(),FastCompletions:z.number().nullish(),LastFlaggedAt:a.nullish()}).passthrough();z.object({Credits:kh.nullish(),Placements:z.record(z.string(),Ah).nullish(),Daily:Oh.nullish(),Session:Uh.nullish(),LastImpressionAt:a.nullish(),LastInterstitialAt:a.nullish(),LastRewardedAt:a.nullish(),LastAppOpenAt:a.nullish(),TotalImpressions:z.number().nullish(),TotalRewardedCompletions:z.number().nullish(),AdsDisabledUntil:a.nullish(),Consent:Bh.nullish(),PendingRequests:z.record(z.string(),wh).nullish(),FraudFlags:qh.nullish(),UpdatedAt:a.nullish()}).passthrough();var Eh={Unread:"Unread",Read:"Read",Deleted:"Deleted",Expired:"Expired"},Lh=z.enum(["Unread","Read","Deleted","Expired"]),Gh={Admin:"Admin",Leaderboard:"Leaderboard",CoopEvent:"CoopEvent",Season:"Season",Collection:"Collection",MilestoneEvent:"MilestoneEvent",PlayerGift:"PlayerGift",Social:"Social",Compensation:"Compensation",Referral:"Referral",Quest:"Quest"},Nh=z.enum(["Admin","Leaderboard","CoopEvent","Season","Collection","MilestoneEvent","PlayerGift","Social","Compensation","Referral","Quest"]),jh={Active:"Active",Paused:"Paused",Cancelled:"Cancelled",Completed:"Completed"},Fh=z.enum(["Active","Paused","Cancelled","Completed"]),_h=z.object({MessageTypeID:z.string().nullish(),DisplayName:z.string().nullish(),IconPath:z.string().nullish(),DisplayPriority:z.number().nullish(),ExpirationHours:z.number().nullish(),AutoClaim:z.boolean().nullish(),AllowP2P:z.boolean().nullish(),ShowBadge:z.boolean().nullish()}).passthrough(),Wh=z.object({SegmentID:z.string().nullish(),DisplayName:z.string().nullish(),Gate:H.nullish()}).passthrough();z.object({MaxMessagesPerUser:z.number().nullish(),ReadNoRewardRetentionHours:z.number().nullish(),ClaimedRetentionHours:z.number().nullish(),DefaultPageSize:z.number().nullish(),EnableAutoClaim:z.boolean().nullish(),MessageTypes:z.record(z.string(),_h).nullish(),Segments:z.array(Wh).nullish(),DailyP2PGiftLimit:z.number().nullish(),MaxRewardsPerP2PMessage:z.number().nullish()}).passthrough();z.object({MessageID:z.string().nullish(),TitleID:z.string().nullish(),RecipientUserID:z.string().nullish(),MessageTypeID:z.string().nullish(),Source:Nh.nullish(),RelatedEntityID:z.string().nullish(),SenderUserID:z.string().nullish(),SenderPublicData:ye.nullish(),Subject:z.string().nullish(),Body:z.string().nullish(),TemplateParams:z.record(z.string(),z.string()).nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Rewards:L.nullish(),Claimed:z.boolean().nullish(),ClaimedAtUtc:a.nullish(),Status:Lh.nullish(),CreatedAtUtc:a.nullish(),ExpiresAtUtc:a.nullish(),ReadAtUtc:a.nullish(),BroadcastID:z.string().nullish(),Version:z.number().nullish()}).passthrough();z.object({BroadcastID:z.string().nullish(),TitleID:z.string().nullish(),MessageTypeID:z.string().nullish(),Subject:z.string().nullish(),Body:z.string().nullish(),TemplateParams:z.record(z.string(),z.string()).nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Rewards:L.nullish(),TargetSegmentID:z.string().nullish(),TargetUserIDs:z.array(z.string()).nullish(),StartsAtUtc:a.nullish(),ExpiresAtUtc:a.nullish(),CreatedAtUtc:a.nullish(),CreatedByAdminID:z.string().nullish(),AdminComment:z.string().nullish(),Status:Fh.nullish(),DeliveredCount:z.number().nullish(),ClaimedCount:z.number().nullish()}).passthrough();z.object({UnreadCount:z.number().nullish(),UnclaimedRewardCount:z.number().nullish(),LastFetchCursor:a.nullish(),ReceivedBroadcastIDs:z.array(z.string()).nullish(),ClaimedBroadcastIDs:z.array(z.string()).nullish(),DailyP2PGiftsSent:z.number().nullish(),DailyGiftsResetDate:a.nullish(),LastOpenedAtUtc:a.nullish(),TotalMessagesReceived:z.number().nullish(),TotalRewardsClaimed:z.number().nullish()}).passthrough();
|
|
2
|
+
export{Rh as AdType,Yd as AttackOutcome,de as AuthType,ke as AuthenticationAction,gh as BannerPosition,ve as BlockchainAction,ou as BlockchainNetworkType,nn as BlockchainOperationCategory,fu as BlockchainTransactionStatus,cu as BlockchainTransactionType,bp as BodyPart,$d as BoostWindowKind,jh as BroadcastStatus,ze as CharacterAction,bi as CloudCodeAction,ph as CloudCodeErrorCode,uh as CloudCodeLogLevel,lh as CloudCodeRevisionSelection,Ce as CollectionAction,wm as CommissionSink,vm as CommunityChestMemberStatus,zm as CommunityChestStatus,El as ConversionRateMode,Le as CoopEventAction,td as CoopGroupStatus,sd as CoopMemberStatus,Js as CraftAction,Np as CraftType,ps as CurrencyAction,ql as CurrencyStatus,Be as CurrencyType,_e as CustomDataBucket,Tl as CustomDataValueType,Dl as CustomDataWriter,vi as DEFAULT_BASE_URL,md as DealNodeRuntimeStatus,je as DealOfferAction,dd as DealOfferActivationStatus,th as EnvelopeType,Xa as EventTokenType,_u as FodderSelectionMode,ju as FodderValuationMode,qd as FriendActionStatus,ce as GameLoopAction,br as IDosGamesClient,zs as ItemAction,pu as KycStatus,mu as KycTier,he as LeaderboardAction,As as LootboxAction,Gh as MailboxMessageSource,Eh as MailboxMessageStatus,Bm as MarketOfferStatus,Um as MarketOfferType,re as MarketplaceAction,Ne as MatchAction,zp as MatchStatus,Oe as MultiplayerAction,Ym as MultiplayerChatMode,Jm as MultiplayerTopology,tt as PremiumAction,Ee as QuestAction,Wc as QuestObjectiveSource,Qc as QuestPrerequisiteMode,Nc as QuestStatus,Kd as RaidMode,ht as ReferralAction,Ya as ResourceEntryType,Ve as RewardAction,Xm as RoomVisibility,el as ScheduleMode,et as SeasonAction,Fe as SocialAction,Jd as SpecialChoiceMode,ut as StoreAction,Cp as StoreType,rt as TimedBoostAction,Nd as TimedBoostStackingPolicy,Ae as TimedEventAction,Ed as TimelineEventType,it as TitleAction,Wp as TradeOfferStatus,Ru as TransactionDirection,gt as TypedEmitter,Ge as UserAction,qe as UserCustomDataAction,lu as WalletLinkType,fh as createIDosGamesClient,Va as isFail,Wa as isOk,Rs as normalizeBlockchainCategory};
|