@idosgames/core 0.5.1 → 0.7.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/dist/index.js CHANGED
@@ -1,2 +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 Lt from'decimal.js';var Ct=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();}};function yl(){let a=new Map;return {get:e=>a.get(e)??null,set:(e,t)=>{a.set(e,t);},remove:e=>{a.delete(e);}}}function Fi(){return Cl()??yl()}function Cl(){try{let a=globalThis.localStorage;if(!a)return null;let e="__idos_probe__";return a.setItem(e,"1"),a.removeItem(e),{get:t=>{try{return a.getItem(t)}catch{return null}},set:(t,s)=>{try{a.setItem(t,s);}catch{try{a.removeItem(t);}catch{}}},remove:t=>{try{a.removeItem(t);}catch{}}}}catch{return null}}var Vi="https://api.idosgames.com";function _i(a){return {titleID:a.titleID,titleTemplateID:a.titleTemplateID??"default",buildKey:a.buildKey??"",baseUrl:(a.baseUrl??Vi).replace(/\/+$/,""),devBuild:a.devBuild??false,debugLogging:a.debugLogging??false,configStorage:a.configStorage??Fi()}}function Wi(a){return {ok:true,data:a}}function n(a,e){return {ok:false,reason:a,error:e}}function Sl(a){return a.ok}function xl(a){return !a.ok}var qe={Virtual:"Virtual",Crypto:"Crypto"},ut=z.enum(["Virtual","Crypto"]),Dl={Item:"Item",VirtualCurrency:"VirtualCurrency",CryptoCurrency:"CryptoCurrency",UsdCent:"UsdCent"},Mt=z.enum(["Item","VirtualCurrency","CryptoCurrency","UsdCent"]),bl={TimedEvent:"TimedEvent",Quest:"Quest",Leaderboard:"Leaderboard",CoopEvent:"CoopEvent",Season:"Season"},kt=z.enum(["TimedEvent","Quest","Leaderboard","CoopEvent","Season"]),vl={Cyclic:"Cyclic",Scheduled:"Scheduled",Chained:"Chained"},St=z.enum(["Cyclic","Scheduled","Chained"]),ue={None:"None",Device:"Device",Email:"Email",iDosGames:"iDosGames",Facebook:"Facebook",Google:"Google",GooglePlay:"GooglePlay",Telegram:"Telegram",Wallet:"Wallet"};var M=z.union([z.number(),z.string()]).transform((a,e)=>{let t=typeof a=="string"?Number(a):a;return Number.isFinite(t)?Math.trunc(t):(e.addIssue({code:z.ZodIssueCode.custom,message:`Invalid integer amount: ${String(a)}`}),z.NEVER)}),B=z.union([z.number(),z.string()]).transform((a,e)=>{let t=typeof a=="number"?String(a):a.trim();return t===""||Number.isNaN(Number(t))?(e.addIssue({code:z.ZodIssueCode.custom,message:`Invalid decimal: ${String(a)}`}),z.NEVER):t}),l=z.string();var Or=z.object({Type:Mt.nullish(),CurrencyID:z.string().nullish(),Amount:M.nullish(),CatalogID:z.string().nullish(),ItemID:z.string().nullish()}),zl=z.object({Type:kt.nullish(),EntityID:z.string()}),Tl=z.object({Address:zl.nullish(),Amount:M.nullish(),Source:z.string().nullish()}),ce=z.object({Entries:z.array(Or).nullish(),EventTokens:z.array(Tl).nullish()}),Qi=z.object({MinPremiumTier:z.number().nullish(),RequiredPremiumID:z.string().nullish(),Resources:ce.nullish()}),G=z.object({Standard:ce.nullish(),PremiumBonuses:z.array(z.unknown()).nullish(),PremiumTiers:z.array(Qi).nullish()}),K=z.object({Standard:ce.nullish(),PremiumDiscounts:z.array(z.unknown()).nullish(),PremiumTiers:z.array(Qi).nullish()}),x=z.object({Grant:G.nullish(),Consume:K.nullish()}),st=z.object({FromUserID:z.string().nullish(),ToUserID:z.string().nullish(),FromResult:x.nullish(),ToResult:x.nullish()});z.object({FromUserID:z.string().nullish(),ToUserID:z.string().nullish(),Transferred:ce.nullish()});var Pl=z.object({ExperimentID:z.string().nullish(),Variants:z.array(z.string()).nullish()}).passthrough(),Q=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:Pl.nullish()}).passthrough();var de=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 Il=z.object({OffsetSecondsFromParentStart:z.number().nullish(),DurationSeconds:z.number().nullish(),AllowEarningAfterEnd:z.boolean().nullish(),ClaimGraceHours:z.number().nullish()}).passthrough(),Ml=z.object({StartUtc:z.string().nullish(),EndUtc:z.string().nullish(),AllowEarningAfterEnd:z.boolean().nullish(),ClaimGraceHours:z.number().nullish()}).passthrough(),kl=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 Al=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 _e=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:de.nullish()}).passthrough(),pe=z.object({Mode:z.string().nullish(),IsActive:z.boolean().nullish(),Scheduled:Ml.nullish(),Chain:kl.nullish(),Cyclic:Al.nullish(),ActivationTriggers:z.array(_e).nullish(),Relative:Il.nullish()}).passthrough();var Ul=z.object({SeasonChainID:z.string().nullish(),MinSeasonTier:z.number().nullish(),Rewards:G.nullish()}).passthrough(),Ol=z.object({SeasonChainID:z.string().nullish(),MinSeasonTier:z.number().nullish(),Multiplier:z.number().nullish()}).passthrough(),wr=z.object({Bundles:z.array(Ul).nullish(),Multipliers:z.array(Ol).nullish()}).passthrough();var wl=z.enum(["BoardStageLevel","BoardRank","BoardCyclesCompleted","CharacterLevel","SeasonTier","EventTokenTotalEarned","VirtualCurrencyBalance","PlayerLevel"]);var Bl=z.enum(["Tiered","Linear"]);var ql=z.enum(["Step","Linear"]),El=z.object({AtProgress:z.number().nullish(),Multiplier:z.number().nullish()}).passthrough(),At=z.object({Source:wl.nullish(),SourceKey:z.string().nullish(),CurveType:Bl.nullish(),Tiers:z.array(El).nullish(),TierMode:ql.nullish(),BaseMultiplier:z.number().nullish(),PerUnit:z.number().nullish(),Anchor:z.number().nullish(),MinMultiplier:z.number().nullish(),MaxMultiplier:z.number().nullish(),IncludeRewards:ce.nullish(),ExcludeRewards:ce.nullish()}).passthrough(),ye=z.object({MilestoneID:z.string().nullish(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),RequiredProgress:z.number().nullish(),Rewards:G.nullish(),BonusRewards:G.nullish(),SeasonTierRewards:wr.nullish(),SortOrder:z.number().nullish(),IsFeatured:z.boolean().nullish()}).passthrough(),Xe=z.object({Milestones:z.record(z.string(),ye).nullish()}).passthrough();var ne=z.object({PresetID:z.string().nullish(),Remove:z.array(z.string()).nullish()}).passthrough();var Ll=z.object({TargetCurrencyID:z.string().nullish(),Rate:z.number().nullish(),MaxConvertAmount:z.number().nullish()}).passthrough(),rt=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:Ll.nullish()}).passthrough();var re=a=>z.object({Id:z.string(),Success:z.boolean(),Error:z.string().nullish(),Data:a.nullish()}),Ot=a=>z.object({ServerTimeUtc:l,Items:z.array(re(a)),Resources:x.nullish()});var Gl={Active:"Active",Completed:"Completed",Claimed:"Claimed",Expired:"Expired"},Hi=z.enum(["Active","Completed","Claimed","Expired"]),Nl=z.object({}).passthrough().transform(a=>a),jl=z.object({CycleID:z.string(),InstanceKey:z.string().nullish(),PhaseID:z.string().nullish(),CycleIndex:z.number().nullish(),CycleStartUtc:l.nullish(),CycleEndUtc:l.nullish(),PointsTotalEarned:M.nullish(),PointsCurrent:M.nullish(),ClaimedPointMilestoneIDs:z.array(z.string()).nullish()}),Br=z.object({QuestID:z.string(),CycleID:z.string().nullish(),ObjectiveID:z.string().nullish(),NewValue:M.nullish(),ObjectiveCompleted:z.boolean().nullish(),Status:Hi}),Ki=z.object({State:Nl.nullish(),PointsTracks:z.record(z.string(),jl).nullish()}),qr=z.object({ServerTimeUtc:l,QuestID:z.string(),CycleID:z.string().nullish(),NewStatus:Hi.nullish(),Resources:x.nullish()}),Er=z.object({ServerTimeUtc:l,CycleID:z.string(),MilestoneID:z.string(),PointsTotalEarned:M.nullish(),Resources:x.nullish()}),$i=z.object({ServerTimeUtc:l,CycleID:z.string(),GroupCompletionID:z.string(),GroupID:z.string().nullish(),CompletedGroupQuests:z.number().nullish(),RequiredGroupQuests:z.number().nullish(),Resources:x.nullish()}),Zi=z.object({MetricID:z.string(),Updates:z.array(Br).nullish()}),Ji=z.array(re(qr)),Yi=z.array(re(Er)),Fl={ClientApi:"ClientApi",ServerApi:"ServerApi",SystemEvent:"SystemEvent"},Vl=z.enum(["ClientApi","ServerApi","SystemEvent"]),_l={BlockProgressAndClaim:"BlockProgressAndClaim",BlockClaimOnly:"BlockClaimOnly"},Wl=z.enum(["BlockProgressAndClaim","BlockClaimOnly"]),Xi=z.object({ObjectiveID:z.string().nullish(),Source:Vl.nullish(),MaxProgressPerCall:z.number().nullish(),MetricID:z.string().nullish(),Triggers:z.array(_e).nullish(),TargetValue:z.number().nullish(),AggregationMethod:z.string().nullish()}).passthrough(),Lr=z.object({Milestones:ne.nullish(),Linking:ne.nullish(),Availability:ne.nullish(),Reward:ne.nullish(),Objectives:ne.nullish()}).passthrough(),Ql=z.object({DisplayName:z.string().nullish(),Description:z.string().nullish(),SortOrder:z.number().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),en=z.object({CycleIDs:z.array(z.string()).nullish(),GroupID:z.string().nullish(),PhaseIDs:z.array(z.string()).nullish(),RequiredQuestIDs:z.array(z.string()).nullish(),PrerequisiteMode:Wl.nullish()}).passthrough(),tn=z.object({Schedule:pe.nullish(),AccrueProgressWhenLocked:z.boolean().nullish(),Gate:Q.nullish(),Limits:de.nullish()}).passthrough(),sn=z.object({Grant:G.nullish(),PointsReward:z.number().nullish()}).passthrough(),Hl=z.object({QuestID:z.string().nullish(),Identity:Ql.nullish(),Linking:en.nullish(),Availability:tn.nullish(),Objectives:z.record(z.string(),Xi).nullish(),Reward:sn.nullish(),Presets:Lr.nullish()}).passthrough(),Kl=z.object({CompletionID:z.string().nullish(),GroupID:z.string().nullish(),RequiredCompletedQuests:z.number().nullish(),Gate:Q.nullish(),Reward:G.nullish(),PointsReward:z.number().nullish()}).passthrough(),$l=z.object({PhaseID:z.string().nullish(),Order:z.number().nullish(),DurationSec:z.number().nullish(),ClaimGraceHours:z.number().nullish(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),CustomParams:z.record(z.string(),z.string()).nullish(),Gate:Q.nullish(),Milestones:z.record(z.string(),ye).nullish(),Presets:Lr.nullish(),PointsToken:rt.nullish()}).passthrough(),Zl=z.object({Milestones:z.record(z.string(),Xe).nullish(),Linking:z.record(z.string(),en).nullish(),Availability:z.record(z.string(),tn).nullish(),Reward:z.record(z.string(),sn).nullish(),Objectives:z.record(z.string(),z.record(z.string(),Xi)).nullish()}).passthrough(),Jl=z.object({CycleID:z.string().nullish(),DisplayName:z.string().nullish(),Schedule:pe.nullish(),Milestones:z.record(z.string(),ye).nullish(),Gate:Q.nullish(),PointsToken:rt.nullish(),GroupCompletions:z.record(z.string(),Kl).nullish(),Phases:z.record(z.string(),$l).nullish(),Presets:Lr.nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),wt=z.object({Cycles:z.record(z.string(),Jl).nullish(),Quests:z.record(z.string(),Hl).nullish(),Presets:Zl.nullish()}).passthrough(),Le={GetQuestDefinitions:"GetQuestDefinitions",GetUserQuestState:"GetUserQuestState",RefreshQuestCycles:"RefreshQuestCycles",ClaimQuestReward:"ClaimQuestReward",ClaimMilestoneReward:"ClaimMilestoneReward",AddQuestProgress:"AddQuestProgress",ClaimQuestRewardsBatch:"ClaimQuestRewardsBatch",ClaimMilestoneRewardsBatch:"ClaimMilestoneRewardsBatch",ClaimGroupCompletionReward:"ClaimGroupCompletionReward"};var Bt=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 qt=class{set=new Set;add(e){return this.set.has(e)?false:(this.set.add(e),true)}remove(e){this.set.delete(e);}};function rn(a){return a===429||a>=500&&a<=599}function Gr(a,e=Math.random){let t=Math.min(500*Math.pow(2,a-1),4e3),s=t*.2*(e()*2-1);return Math.max(50,t+s)}function Nr(a){return new Promise(e=>setTimeout(e,a))}var Yl=12e3,Xl=z.object({Success:z.boolean(),Error:z.string().nullish(),Data:z.unknown().optional(),QuestProgress:z.array(Br).nullish(),StateVersions:z.record(z.string(),z.number()).nullish(),StateEpoch:z.string().nullish()}).passthrough(),Et=class{baseUrl;emitter;fetchImpl;debugLogging;throttler;inflight=new qt;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 Bt(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),d=r.ticket??null,v=r.silent??!1,w=r.timeoutMs??Yl,q=r.autoRetry??!0,se=!1,ge=0;for(;;){let Me;try{Me=await this.doFetch(i,c,d,w);}catch{if(q&&ge<3){ge++,await Nr(Gr(ge));continue}return this.connectionFailure("Internet Connection Error",v)}let ke=Me.status;if(ke>=200&&ke<300)return await this.parseSuccess(Me,s,v,e);if(ke===401){if(!se&&this.sessionRefreshHandler){se=!0;let Je=null;try{Je=await this.sessionRefreshHandler();}catch{Je=null;}if(Je){d=Je;continue}}return this.emitter.emit("auth:unauthorized",void 0),n("unauthorized","Unauthorized")}if(rn(ke)){if(q&&ge<3){ge++,await Nr(Gr(ge));continue}return this.connectionFailure(`Server temporarily unavailable (HTTP ${ke})`,v)}return await this.handleWebError(Me,ke,v)}}finally{this.inflight.remove(e),this.lowerBusy();}}async doFetch(e,t,s,r){let i=new AbortController,c=setTimeout(()=>{i.abort();},r);try{let d={"Content-Type":"application/json"};return s&&(d.Authorization=`Bearer ${s}`),await this.fetchImpl(e,{method:"POST",body:t,headers:d,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 d=Xl.safeParse(c);if(!d.success)return this.globalError("Malformed response envelope",s);if(!d.data.Success){let se=d.data.Error??"Server returned Success=false";return s||this.emitter.emit("error:global",se),n("server",se)}let v=d.data.QuestProgress;v&&v.length>0&&this.emitter.emit("quest:systemProgress",v);let w=d.data.StateVersions;w&&Object.keys(w).length>0&&this.emitter.emit("user:stateVersions",{epoch:d.data.StateEpoch??null,versions:w});let q=t.safeParse(d.data.Data);if(!q.success){let se=`Validation error (${r}): ${q.error.message}`;return this.debugLogging&&console.warn("[HttpTransport]",se),s||this.emitter.emit("error:global",se),n("validation",se)}return Wi(q.data)}async handleWebError(e,t,s){let r=`HTTP ${t}`;try{let i=await e.text();if(i)try{let d=JSON.parse(i).Error;r=typeof d=="string"&&d.length>0?`HTTP ${t}: ${d}`:`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 pt(a){return (typeof a=="string"?a:a.toISOString()).slice(0,10)}function xt(a){return `${pt(a)}T00:00:00.000Z`}function on(a){let e=new Date(a);return new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()+1)).toISOString()}function an(a,e){return new Date(a.getTime()+e*6e4).toISOString()}function ln(a,e,t,s){let r={vcChanged:false,ccChanged:false,itemsChanged:false,tokensChanged:false};if(!e)return r;a.InventoryV2??={};let i=a.InventoryV2,c=s.toISOString(),d$1=new Map,v=new Map,w=new Map,q=new Map,se=new Map,ge=new Map,Me=new Map,ke=new Map,Je=e.Grant?.PremiumTiers??[],Pt=Je.length;for(let te=0;;te++){let le,H;if(te===0)le=e.Grant?.Standard?.Entries,H=false;else if(te-1<Pt)le=Je[te-1]?.Resources?.Entries,H=false;else if(te===1+Pt)le=e.Consume?.Standard?.Entries,H=true;else break;if(le)for(let j of le){if(j.Type==null)continue;let _=Math.max(0,j.Amount??0);if(!(_<=0))switch(j.Type){case "VirtualCurrency":{if(!j.CurrencyID)continue;let W=H?v:d$1;W.set(j.CurrencyID,(W.get(j.CurrencyID)??0)+_);break}case "CryptoCurrency":{if(!j.CurrencyID)continue;let W=H?q:w;W.set(j.CurrencyID,(W.get(j.CurrencyID)??new Lt(0)).plus(_));break}case "Item":{if(!j.ItemID)continue;let W=tu(t,j.CatalogID,j.ItemID),X=(W?W.IsStackable??true:true)?H?ge:se:H?ke:Me;X.set(j.ItemID,(X.get(j.ItemID)??0)+_);break}case "UsdCent":continue}}}if(r.vcChanged=d$1.size>0||v.size>0,r.vcChanged){i.VirtualCurrencies??={};for(let te of new Set([...d$1.keys(),...v.keys()])){let le=d$1.get(te)??0,H=v.get(te)??0,j=le-H,_=i.VirtualCurrencies[te];_?(_.Amount+=j,_.UpdatedAt=c,_.Daily&&pt(_.Daily.PeriodStartUtc)===pt(s)?(_.Daily.Earned+=le,_.Daily.Spent+=H):_.Daily={PeriodStartUtc:xt(s),Earned:le,Spent:H}):i.VirtualCurrencies[te]={Amount:j,CreatedAt:c,UpdatedAt:c,Daily:{PeriodStartUtc:xt(s),Earned:le,Spent:H}};}}if(r.ccChanged=w.size>0||q.size>0,r.ccChanged){i.CryptoCurrencies??={};for(let te of new Set([...w.keys(),...q.keys()])){let le=w.get(te)??new Lt(0),H=q.get(te)??new Lt(0),j=le.minus(H),_=i.CryptoCurrencies[te];_?(_.Amount=new Lt(_.Amount).plus(j).toString(),_.UpdatedAt=c):i.CryptoCurrencies[te]={Amount:j.toString(),Frozen:"0",CreatedAt:c,UpdatedAt:c};}}if(r.itemsChanged=se.size>0||ge.size>0||Me.size>0||ke.size>0,r.itemsChanged){i.Items??={},i.UnstackableItems??={};let te=i.UnstackableItems,le=new Set([...se.keys(),...ge.keys(),...Me.keys(),...ke.keys()]);for(let H of le){let j=(se.get(H)??0)-(ge.get(H)??0),_=(Me.get(H)??0)-(ke.get(H)??0),W=j+_,Ae=i.Items[H];Ae?(j!==0&&(Ae.StackableAmount+=j),_!==0&&(Ae.UnstackableAmount+=_),W!==0&&(Ae.TotalAmount+=W)):i.Items[H]={StackableAmount:Math.max(0,j),UnstackableAmount:Math.max(0,_),TotalAmount:Math.max(0,W)};}for(let[H,j]of ke){if(j<=0)continue;let _=Object.values(te).filter(W=>W.ItemID===H&&W.EquippedSlot==null&&(W.ExpiresAt==null||new Date(W.ExpiresAt)>s)).sort(eu).slice(0,j).map(W=>W.ItemInstanceID);for(let W of _)delete te[W];}for(let[H,j]of Me){let _=su(t,H);for(let W=0;W<j;W++){let Ae=d();te[Ae]={ItemInstanceID:Ae,ItemID:H,CatalogID:_,RemainingUses:1,AcquiredAt:c};}}}a.EventToken??={};let ml=a.EventToken;for(let te=0;;te++){let le,H;if(te===0)le=e.Grant?.Standard?.EventTokens,H=false;else if(te-1<Pt)le=Je[te-1]?.Resources?.EventTokens,H=false;else if(te===1+Pt)le=e.Consume?.Standard?.EventTokens,H=true;else break;if(!(!le||le.length===0))for(let j of le){let _=j.Address;if(!_||_.Type==null)continue;let W=j.Amount??0;if(W<=0)continue;let Ae=ru(ml,_.Type);if(!Ae)continue;let X=Ae[_.EntityID];X||(X={},Ae[_.EntityID]=X),X.Balance??={Current:0,TotalEarned:0,TotalSpent:0},X.Daily??={Date:xt(s),TotalEarned:0},X.Meta??={};let yt=j.Source&&j.Source.length>0?j.Source:"CustomAction";H?(X.Balance.Current-=W,X.Balance.TotalSpent+=W):(X.Balance.Current+=W,X.Balance.TotalEarned+=W,pt(X.Daily.Date)!==pt(s)&&(X.Daily={Date:xt(s),TotalEarned:0}),X.Daily.TotalEarned+=W,X.Daily.EarnedBySource??={},X.Daily.EarnedBySource[yt]=(X.Daily.EarnedBySource[yt]??0)+W,X.Daily.TriggersBySource??={},X.Daily.TriggersBySource[yt]=(X.Daily.TriggersBySource[yt]??0)+1,X.Daily.LastTriggerBySource??={},X.Daily.LastTriggerBySource[yt]=c,X.Meta.JoinedAtUtc||(X.Meta.JoinedAtUtc=c),X.Meta.LastEarnedAtUtc=c),r.tokensChanged=true;}}return r}function eu(a,e){return a.AcquiredAt!==e.AcquiredAt?a.AcquiredAt<e.AcquiredAt?-1:1:a.ItemInstanceID===e.ItemInstanceID?0:a.ItemInstanceID<e.ItemInstanceID?-1:1}function tu(a,e,t){let s=a?.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 su(a,e){let t=a?.Catalogs;if(t){for(let[s,r]of Object.entries(t))if(r.Items&&e in r.Items)return s}}function ru(a,e){switch(e){case "TimedEvent":return a.TimedEvent??={};case "Quest":return a.Quest??={};case "Leaderboard":return a.Leaderboard??={};case "CoopEvent":return a.CoopEvent??={};case "Season":return a.Season??={};default:return null}}function jr(a,e){return a===e||a.startsWith(`${e}:`)}var Gt=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);}applyUserStateContainers(e,t){if(t.length!==0){this.currentState??={};for(let s of t)this.currentState[s]=e[s];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=ln(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 Lt?t:new Lt(t),c=s??new Date().toISOString(),d=r[e];d?(d.Amount=new Lt(d.Amount).plus(i).toString(),d.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=on(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(jr(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))!jr(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,d={Value:s,UpdatedAt:new Date().toISOString(),Version:r,LastWriter:"Client",ExpiresAt:i??null};if(e==="Private")c.Private??={},c.Private[t]=d;else if(e==="Public")c.Public??={},c.Public[t]=d;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 Nt=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 jt=class{user;config;constructor(e){this.user=new Gt(e),this.config=new Nt;}reset(){this.user.clear(),this.config.applyTitlePublicConfiguration(null);}};var Ft=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 iu(e)?e:ue.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 iu(a){return a!==null&&Object.values(ue).includes(a)}var nu=8,ou=100,au=/^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/i,un=["GameLoop"],Vt=class{constructor(e){this.ctx=e;}ctx;authContext=null;refreshing=false;rememberSession=true;sessionAuthType=ue.None;sessionEmail="";sessionPassword="";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}setRememberSession(e){this.rememberSession=e;}get remembersSession(){return this.rememberSession}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(ue.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(ue.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(ue.Email);return i.ok&&this.keepEmailCredentials(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(ue.Email);return i.ok&&this.keepEmailCredentials(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(ue.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(ue.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(ue.iDosGames)):s}async loginWithSsoCode(e){if(!e)return n("client","SSO code is null or empty.");this.ctx.emitter.emit("auth:requestSent",void 0);let t=this.baseRequest();t.SsoCode=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.loginWithSsoCode(t);return s.ok?(this.applyAuthContext(s.data),this.fetchAndApplyClientState(ue.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(){return this.replay(this.ctx.authStore.lastAuthType,this.ctx.authStore.savedEmail,this.ctx.authStore.savedPassword)}replay(e,t,s){switch(e){case ue.Email:return this.loginWithEmail(t,s);case ue.Device:case ue.None:return this.loginWithDeviceID();case ue.Telegram:return this.loginWithTelegram();default:return Promise.resolve(n("client",`Cannot auto-login: last session used "${e}", 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)return null;let e=this.sessionAuthType!==ue.None?this.sessionAuthType:this.ctx.authStore.lastAuthType;if(e===ue.None)return null;this.refreshing=true;try{return (await this.replay(e,this.sessionEmail||this.ctx.authStore.savedEmail,this.sessionPassword||this.ctx.authStore.savedPassword)).ok&&this.authContext?this.authContext.clientSessionTicket:null}catch{return null}finally{this.refreshing=false;}}logout(){this.authContext=null,this.forgetSession(),this.ctx.authStore.clear(),this.ctx.data.reset(),this.ctx.emitter.emit("auth:loggedOut",void 0);}static isValidEmail(e){return e.length>0&&au.test(e)}static isValidPasswordLength(e){return e.length>=nu&&e.length<=ou}keepEmailCredentials(e,t){this.sessionEmail=e,this.sessionPassword=t,this.rememberSession&&this.ctx.authStore.saveEmailAndPassword(e,t);}forgetSession(){this.sessionAuthType=ue.None,this.sessionEmail="",this.sessionPassword="";}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(un,un);return t.ok&&(this.sessionAuthType=e,this.rememberSession?this.ctx.authStore.saveAuthType(e):this.ctx.authStore.clear(),this.ctx.emitter.emit("auth:loggedIn",void 0)),t}};var lu="idos:cfg",dt=class{constructor(e,t){this.storage=e;this.titleId=t;}storage;titleId;static scopeOf(e,t){return t&&t.length>0?`x:${cn(t)}`:e&&e.length>0?`f:${cn(e)}`:t?"x:":"f:"}async read(e){try{let t=await this.storage.get(this.keyOf(e));if(!t)return null;let s=JSON.parse(t);return !s||typeof s!="object"||typeof s.v!="string"||!s.c?null:s}catch{return null}}async write(e,t,s){try{let r={v:t,c:s};await this.storage.set(this.keyOf(e),JSON.stringify(r));}catch{}}async clear(e){try{await this.storage.remove(this.keyOf(e));}catch{}}keyOf(e){return `${lu}:${this.titleId}:${e}`}};function cn(a){return [...a].map(e=>e.toLowerCase()).sort().join(",")}var uu="idos:state",_t=class{constructor(e,t){this.storage=e;this.titleId=t;}storage;titleId;async read(e){if(!e)return null;try{let t=await this.storage.get(this.keyOf(e));if(!t)return null;let s=JSON.parse(t);return !s||typeof s!="object"||typeof s.e!="string"||!s.v||!s.s?null:s}catch{return null}}async write(e,t,s,r){if(!(!e||!t))try{let i={e:t,v:s,s:r};await this.storage.set(this.keyOf(e),JSON.stringify(i));}catch{}}keyOf(e){return `${uu}:${this.titleId}:${e}`}};function cu(a,e){if(!a)return;let t=new Set((e??[]).map(r=>r.trim().toLowerCase()));if(t.size===0)return a;let s={};for(let[r,i]of Object.entries(a))t.has(r.toLowerCase())||(s[r]=i);return s}function Vr(a,e,t,s){let r={...a??{}};if(!e||!t||!s)return r;for(let[i,c]of Object.entries(t))s[i]===c&&i in e&&(r[i]=e[i]);return r}function pu(a){return {...a??{}}}function _r(a){return typeof a.StateEpoch=="string"&&a.StateEpoch.length>0?a.StateEpoch:null}var Wt=class{constructor(e){this.cache=e;}cache;loadedFor=null;epoch=null;versions={};state=null;dirty=false;async load(e){if(this.loadedFor===e)return;let t=await this.cache.read(e);this.loadedFor=e,this.epoch=t?.e??null,this.versions=t?{...t.v}:{},this.state=t?.s??null,this.dirty=false;}get cachedState(){return this.state}get currentEpoch(){return this.epoch}versionsFor(e){if(!this.epoch)return;let t=cu(this.versions,e);return t&&Object.keys(t).length>0?t:void 0}noteMutation(e,t){if(!e||e!==this.epoch){e&&e!==this.epoch&&this.reset(e);return}for(let[s,r]of Object.entries(t)){let i=this.versions[s];i!==void 0&&r===i+1?this.versions[s]=r:delete this.versions[s],this.dirty=true;}}afterFullRead(e,t){e!==this.epoch&&this.reset(e),this.versions=pu(t),this.dirty=true;}afterSliceRead(e,t){e!==this.epoch&&this.reset(e);for(let[s,r]of Object.entries(t??{}))this.versions[s]=r;this.dirty=true;}async flush(e,t){!this.dirty||!this.epoch||!e||(this.state=t??{},this.dirty=false,await this.cache.write(e,this.epoch,this.versions,this.state));}reset(e){this.epoch=e,this.versions={},this.state=null,this.dirty=true;}};var pn=n("server","Title configuration is unavailable (CDN and API both failed)."),Qt=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}get configCache(){return this.cache??=new dt(this.ctx.settings.configStorage,this.ctx.settings.titleID)}cache;get stateStore(){return this.versionStore??=new Wt(new _t(this.ctx.settings.configStorage,this.ctx.settings.titleID))}versionStore;noteStateVersions(e,t){this.ctx.auth.context?.userID&&this.stateStore.currentEpoch&&this.stateStore.noteMutation(e,t);}async getClientState(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=dt.scopeOf(e.TitleFields,null),s=await this.configCache.read(t);s&&(e.KnownTitleConfigVersion=s.v);let r=await this.prepareStateHandshake(e,null),i=await this.ctx.api.user.getClientState(e);if(!i.ok)return i;let c=await this.resolveTitleConfig(i.data,t,s,{Fields:e.TitleFields});return c==null?pn:(this.finishStateHandshake(i.data,r),await this.applyClientState(i.data,c,void 0,void 0),await this.flushState(r),i)}async prepareStateHandshake(e,t){let s=this.ctx.auth.context?.userID;if(!s)return {userId:null,cached:null,sent:void 0};await this.stateStore.load(s),await this.stateStore.flush(s,this.ctx.data.user.state);let r=this.stateStore.versionsFor(t);if(r){e.KnownStateVersions=r;let i=this.stateStore.currentEpoch;i&&(e.KnownStateEpoch=i);}return {userId:s,cached:this.stateStore.cachedState,sent:r}}finishStateHandshake(e,t){let s=Vr(e.User,t.cached,t.sent,e.StateVersions);e.User=s;let r=_r(e);!r||!t.userId||this.stateStore.afterFullRead(r,e.StateVersions);}async resolveTitleConfig(e,t,s,r){let i=e.TitleConfigVersion;if(s&&i&&s.v===i)return s.c;if(e.TitleConfigUrl){let d=await this.fetchConfigFromCdn(e.TitleConfigUrl);if(d!=null)return i&&await this.configCache.write(t,i,d),d}let c=await this.fetchConfigFromApi(r);return c!=null?(i&&await this.configCache.write(t,i,c),c):s?.c??null}async fetchConfigFromCdn(e){try{let t=await this.ctx.fetchImpl(e);if(!t.ok)return null;let s=await t.json();return s&&typeof s=="object"?s:null}catch{return null}}async fetchConfigFromApi(e){let t=this.baseRequest();if(!t)return null;let s={...t,...e},r=e.ExcludeFields?await this.ctx.api.title.getTitlePublicConfigurationExcept(s):await this.ctx.api.title.getTitlePublicConfiguration(s);return r.ok?r.data:null}async getClientStateExcept(e,t){let s=this.baseRequest();if(!s)return n("unauthorized","Not logged in.");s.ExcludeFields=e,s.ExcludeTitleFields=t;let r=dt.scopeOf(null,t??[]),i=await this.configCache.read(r);i&&(s.KnownTitleConfigVersion=i.v);let c=await this.prepareStateHandshake(s,e??null),d=await this.ctx.api.user.getClientStateExcept(s);if(!d.ok)return d;let v=await this.resolveTitleConfig(d.data,r,i,{ExcludeFields:t??[]});return v==null?pn:(this.finishStateHandshake(d.data,c),await this.applyClientState(d.data,v,e,t),await this.flushState(c),d)}async getStateVersions(e){let t=this.baseRequest();return t?(e&&e.length>0&&(t.Fields=e),this.ctx.api.user.getStateVersions(t)):n("unauthorized","Not logged in.")}async getUserState(e){let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");e&&e.length>0&&(t.Fields=e);let s=await this.prepareStateHandshake(t,null),r=await this.ctx.api.user.getUserState(t);if(!r.ok)return r;let i=Vr(r.data.User,s.cached,s.sent,r.data.StateVersions);r.data.User=i;let c=Object.keys(r.data.StateVersions??{});this.ctx.data.user.applyUserStateContainers(i,c);let d=_r(r.data);return d&&(this.stateStore.afterSliceRead(d,r.data.StateVersions),await this.flushState(s)),r}async flushState(e){e.userId&&await this.stateStore.flush(e.userId,this.ctx.data.user.state);}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}async applyClientState(e,t,s,r){let i=s?.includes("GameLoop")===true,c=r?.includes("GameLoop")===true,d=i?this.ctx.data.user.state?.GameLoop:void 0,v=c?this.ctx.data.config.titlePublicConfiguration?.GameLoop:void 0;this.ctx.data.config.applyTitlePublicConfiguration(t),this.ctx.data.user.applyUserState(e.User??{});let w=this.ctx.data.user.state;i&&w&&w.GameLoop==null&&(w.GameLoop=d);let q=this.ctx.data.config.titlePublicConfiguration;c&&q&&q.GameLoop==null&&(q.GameLoop=v),this.ctx.emitter.emit("user:clientStateReceived",e);}};var Kt=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===qe.Crypto||s===qe.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 d$1={...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()}`},v=await this.ctx.api.currency.convert(d$1);if(v.ok){let w=v.data,q={Consume:{Standard:{Entries:[{Type:"VirtualCurrency",CurrencyID:w.SourceID,Amount:w.SourceSpent}]}},Grant:{Standard:{Entries:[{Type:"VirtualCurrency",CurrencyID:w.TargetID,Amount:w.TargetCredited}]}}};this.ctx.data.user.applyResourceOperation(q,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("currency:converted",w);}return v}async cryptoConvert(e,t,s,r,i,c){let d$1=i instanceof Lt?i:new Lt(i);if(!t)return n("client","SourceID is required.");if(!r)return n("client","TargetID is required.");if(d$1.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===qe.Virtual&&s===qe.Virtual)return n("client","cryptoConvert requires at least one crypto side. Use convert for VC\u2194VC.");if(e===qe.Virtual&&!d$1.isInteger())return n("client","Virtual currency source amount must be integer.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let v={...this.ctx.buildAuthedBaseRequest(),SourceType:e,SourceID:t,TargetType:s,TargetID:r,SourceAmount:d$1.toString(),TransactionID:c&&c.length>0?c:`crypto_convert_${e}_${t}_to_${s}_${r}_${d()}`},w=await this.ctx.api.currency.cryptoConvert(v);if(w.ok){let q=w.data,se=[],ge=[];if(q.SourceType===qe.Virtual&&se.push({Type:"VirtualCurrency",CurrencyID:q.SourceID,Amount:Math.trunc(Number(q.SourceSpent))}),q.TargetType===qe.Virtual&&ge.push({Type:"VirtualCurrency",CurrencyID:q.TargetID,Amount:Math.trunc(Number(q.TargetCredited))}),se.length>0||ge.length>0){let Me={Consume:se.length>0?{Standard:{Entries:se}}:null,Grant:ge.length>0?{Standard:{Entries:ge}}:null};this.ctx.data.user.applyResourceOperation(Me,this.ctx.data.config.itemDefinitions);}q.SourceType===qe.Crypto&&this.ctx.data.user.patchCryptoCurrencyDelta(q.SourceID,new Lt(q.SourceSpent).negated(),q.ServerTimeUtc),q.TargetType===qe.Crypto&&this.ctx.data.user.patchCryptoCurrencyDelta(q.TargetID,new Lt(q.TargetCredited),q.ServerTimeUtc),this.ctx.emitter.emit("currency:cryptoConverted",q);}return w}};var $t=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 du="Store",Zt=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(du,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 hu="Lootbox",Jt=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(hu,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.data.user.applyInventoryDelta(c.Inventory),this.ctx.emitter.emit("lootbox:opened",c);}return i}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var mu="Reward";function Wr(a){return a.length>0&&!a.includes(".")&&!a.includes("$")}var Yt=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(mu,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(!Wr(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(!Wr(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(!Wr(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 fu="Quest",Xt=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(fu,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 d=c.data;this.ctx.data.user.patchQuestStatus(d.QuestID,d.CycleID,"Claimed"),this.ctx.data.user.applyResourceOperation(d.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("quest:rewardClaimed",d);}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 d=c.data;this.ctx.data.user.patchMilestoneClaimed(d.CycleID,d.MilestoneID),this.ctx.data.user.applyResourceOperation(d.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("quest:milestoneClaimed",d);}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 d=c.data;this.ctx.data.user.patchGroupCompletionClaimed(d.CycleID,d.GroupCompletionID),this.ctx.data.user.applyResourceOperation(d.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("quest:groupCompletionClaimed",d);}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 gu="TimedEvent",es=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(gu,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,d=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 v={...this.ctx.buildAuthedBaseRequest(),Type:e,LteID:t,SourceType:s,Outcome:r,AmountOverride:i,SourceParams:c,RollMultiplier:d},w=await this.ctx.api.timedEvent.grantTokens(v);return w.ok&&(this.ctx.data.user.applyResourceOperation(w.data,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("timedEvent:tokensGranted",w.data)),w}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 Ru="Leaderboard",ts=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(Ru,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},d=await this.ctx.api.leaderboard.submitScoreFromSource(c);if(d.ok){let v=d.data;this.ctx.data.user.patchLeaderboardScoreSubmitted(this.cycleDocID(e),v.NewScore,v.NewScore,v.CycleVersion),this.ctx.emitter.emit("leaderboard:scoreSubmitted",v);}return d}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 yu="Season",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.season.getDefinitions(e);return t.ok&&(this.ctx.data.config.patchSection(yu,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 Cu="Premium",rs=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(Cu,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 d=c.data;d.Premium&&this.ctx.data.user.applyPremium(d.Premium),this.ctx.data.user.applyResourceOperation(d.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("premium:purchaseCompleted",d);}return c}async purchaseRealMoney(e,t,s,r,i,c,d,v){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 w={...this.ctx.buildAuthedBaseRequest(),PremiumID:e,TransactionID:t,Store:s,ProductID:r,ReceiptData:i,PurchaseToken:c,PackageName:d,AppStoreEnvironment:v,RelatedEntityID:`premium_iap_${e}_${t}`},q=await this.ctx.api.premium.purchaseRealMoney(w);if(q.ok){let se=q.data;se.Premium&&this.ctx.data.user.applyPremium(se.Premium),this.ctx.data.user.applyResourceOperation(se.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("premium:realMoneyPurchaseCompleted",se);}return q}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var Su="Character",is=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(Su,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,d=>{d.StatLevels??={},d.StatLevels[c.StatID]=c.StatLevel,c.Power!=null&&(d.Power=c.Power),d.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 xu="Match",ns=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 d$1={...this.ctx.buildAuthedBaseRequest(),Entry:e,RuleID:t,CharacterID:s,BattleStrategy:r,TargetUserID:i,RelatedEntityID:`pvp_create_${c.userID}_${d()}`},v=await this.ctx.api.match.createMatch(d$1);return v.ok&&(this.ctx.data.user.applyResourceOperation(v.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("match:created",v.data)),v}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()}`},d$1=await this.ctx.api.match.instantBattle(c);if(d$1.ok){let v=d$1.data,w=this.ctx.data.config.itemDefinitions;if(v.Resources)this.ctx.data.user.applyResourceOperation(v.Resources,w);else if(v.ResourcesDual){let q=v.ResourcesDual;q.FromUserID===i.userID&&q.FromResult?this.ctx.data.user.applyResourceOperation(q.FromResult,w):q.ToUserID===i.userID&&q.ToResult&&this.ctx.data.user.applyResourceOperation(q.ToResult,w);}this.ctx.emitter.emit("match:instantBattleCompleted",v);}return d$1}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(xu,t.data),this.ctx.emitter.emit("match:definitionsLoaded",t.data)),t}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var Du="Craft",os=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(Du,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()}`},d$1=await this.ctx.api.craft.craft(c);return d$1.ok&&(this.ctx.data.user.applyResourceOperation(d$1.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("craft:completed",d$1.data)),d$1}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var bu="Collection",as=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(bu,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 d$1=this.ctx.auth.context;if(!d$1)return n("unauthorized","Not logged in.");let v={...this.ctx.buildAuthedBaseRequest(),CollectionID:e,CollectibleID:t,CollectibleIsSpecial:s,ReceiverUserID:r,RequestedCollectibleID:i,RequestedCollectibleIsSpecial:c,RelatedEntityID:`trade_send_${d$1.userID}_${r}_${d()}`},w=await this.ctx.api.collection.sendTradeOffer(v);return w.ok&&this.ctx.emitter.emit("collection:tradeOfferSent",w.data),w}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 vu="CoopEvent",ls=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(vu,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 zu="DealOffer",us=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(zu,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 Tu="Referral",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.referral.getDefinitions(e);return t.ok&&t.data.ReferralDefinitions&&(this.ctx.data.config.patchSection(Tu,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 ps=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 Pu="TimedBoost";function Iu(a){return a.length>0&&!a.includes(".")&&!a.includes("$")}var ds=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(Pu,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(!Iu(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 Qe={Private:"Private",Public:"Public",ReadOnly:"ReadOnly",Internal:"Internal"},Mu={Client:"Client",Server:"Server",System:"System"},ku=z.enum(["Client","Server","System"]),Au=z.object({Value:z.string().nullish(),UpdatedAt:l.nullish(),Version:z.number().nullish(),LastWriter:ku.nullish(),ExpiresAt:l.nullish()}).passthrough(),hs=z.record(z.string(),Au),dn=z.object({Version:z.number().nullish(),Private:hs.nullish(),Public:hs.nullish(),ReadOnly:hs.nullish()}),Qr=z.object({UserID:z.string().nullish(),Version:z.number().nullish(),Public:hs.nullish()}),Hr=z.object({ServerTimeUtc:l.nullish(),Bucket:z.string().nullish(),KeyID:z.string(),Version:z.number().nullish(),ExpiresAt:l.nullish()}),Uu=z.object({Bucket:z.string().nullish(),KeyID:z.string(),Version:z.number().nullish(),ExpiresAt:l.nullish()}),hn=z.object({ServerTimeUtc:l.nullish(),Results:z.array(Uu).nullish()}),mn=z.object({ServerTimeUtc:l.nullish(),DeletedCount:z.number().nullish()}),fn=z.object({Results:z.array(Qr).nullish(),NotFoundUserIDs:z.array(z.string()).nullish()}),Ou={String:"String",Int:"Int",Bool:"Bool",Json:"Json"},wu=z.enum(["String","Int","Bool","Json"]),Bu=z.object({KeyID:z.string(),Bucket:z.string().nullish(),ValueType:wu.nullish(),MaxValueLengthBytes:z.number().nullish(),TtlSeconds:z.number().nullish(),DefaultValue:z.string().nullish(),Description:z.string().nullish()}).passthrough(),ms=z.object({Keys:z.record(z.string(),Bu).nullish(),DefaultMaxValueLengthBytes:z.number().nullish(),DefaultTtlSeconds:z.number().nullish(),MaxKeysPerBucket:z.number().nullish(),MaxTotalSizeBytes:z.number().nullish(),RejectUnregisteredKeys:z.boolean().nullish()}).passthrough(),Ge={GetUserCustomDataDefinitions:"GetUserCustomDataDefinitions",GetMyUserCustomData:"GetMyUserCustomData",GetPublicUserCustomDataOf:"GetPublicUserCustomDataOf",SetPrivateData:"SetPrivateData",SetPublicData:"SetPublicData",DeleteKey:"DeleteKey",BatchSet:"BatchSet",BatchDelete:"BatchDelete",BatchGetPublicUserCustomDataOf:"BatchGetPublicUserCustomDataOf"};var qu="UserCustomData";function gn(a){return a.length>0&&!a.includes(".")&&!a.includes("$")}var fs=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(qu,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,Qe.Private)}async setPublicData(e,t){return this.setData(e,t,Qe.Public)}async setData(e,t,s){let r=e.trim();if(!gn(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},d=await(s===Qe.Private?this.ctx.api.userCustomData.setPrivateData(i):this.ctx.api.userCustomData.setPublicData(i));if(d.ok){let v=d.data;this.ctx.data.user.patchUserCustomDataKey(s,v.KeyID,t,v.Version??0,v.ExpiresAt),this.ctx.emitter.emit(s===Qe.Private?"userCustomData:privateDataSet":"userCustomData:publicDataSet",v);}return d}async deleteKey(e,t){let s=e.trim();if(!gn(s))return n("client",'KeyID is required and must not contain "." or "$".');if(t!==Qe.Private&&t!==Qe.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??Qe.Private,c=e.find(d=>d.Bucket===i&&d.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 Eu="TitleCustomDataDefinitions",Rn=50;function Lu(a){return a.length>0&&!a.includes(".")&&!a.includes("$")}function Kr(a){if(a.ExpiresAt==null)return false;let e=Date.parse(a.ExpiresAt);return !Number.isNaN(e)&&e<=Date.now()}function Gu(a){let e={};for(let[t,s]of Object.entries(a))Kr(s)||(e[t]=s);return e}var gs=class{constructor(e){this.ctx=e;}ctx;lastRuntimeVersion=null;runtimeCache={};async getTitleCustomDataDefinitions(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.titleCustomData.getTitleCustomDataDefinitions(e);return t.ok&&(this.ctx.data.config.patchSection(Eu,t.data),this.ctx.emitter.emit("titleCustomData:definitionsLoaded",t.data)),t}async getPublicTitleData(e=true){let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");e&&this.lastRuntimeVersion!=null&&(t.KnownRuntimeVersion=this.lastRuntimeVersion);let s=await this.ctx.api.titleCustomData.getPublicTitleData(t);return s.ok&&this.absorb(s.data),s}async getPublicTitleDataKeys(e){let t=e.map(i=>i.trim()).filter(i=>i.length>0);if(!t.length)return n("client","At least one KeyID is required.");if(t.some(i=>!Lu(i)))return n("client",'KeyID must not contain "." or "$".');if(t.length>Rn)return n("client",`At most ${Rn} keys per call \u2014 request them in chunks.`);let s=this.baseRequest();if(!s)return n("unauthorized","Not logged in.");s.KeyIDs=t;let r=await this.ctx.api.titleCustomData.getPublicTitleDataKeys(s);return r.ok&&this.ctx.emitter.emit("titleCustomData:publicDataLoaded",r.data),r}getValue(e){let t=this.runtimeCache[e];if(t?.Value!=null&&!Kr(t))return t.Value;let s=this.staticCache[e];if(s?.Value!=null&&!Kr(s))return s.Value}get runtimeVersion(){return this.lastRuntimeVersion}staticCache={};absorb(e){e.Static&&(this.staticCache=e.Static),e.NotModified?(this.runtimeCache=Gu(this.runtimeCache),e.Runtime=this.runtimeCache):e.Runtime&&(this.runtimeCache=e.Runtime),e.RuntimeVersion!=null&&(this.lastRuntimeVersion=e.RuntimeVersion),this.ctx.emitter.emit("titleCustomData:publicDataLoaded",e);}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var Rs=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 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 Nu=15,ju="GameLoop",Fu="BoardDefinition",ys=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(ju,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(Fu,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=an(new Date,Nu);this.ctx.data.user.patchBoardState(d=>{d.Position=i.NewPosition,d.CyclesCompleted=(d.CyclesCompleted??0)+(i.CyclesCompletedDelta??0),d.LastRollAtUtc=new Date().toISOString(),i.ActionRequired&&i.ActionData?d.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&&(d.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),i.ActionRequired==="RAID"&&await this.getUserBoardState(),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(d=>{d.ChoiceID=e,d.ChosenMode=i.Mode??"Timed",d.StartedAtUtc=i.StartedAtUtc??null,d.DurationSeconds=i.DurationSeconds??null,d.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},d=await this.ctx.api.cloudCode.execute(c);return d.ok&&this.ctx.emitter.emit("cloudCode:executed",d.data),d}};var yn=z.object({ServerTimeUtc:l,SourceType:ut,SourceID:z.string(),TargetType:ut,TargetID:z.string(),SourceSpent:M,FeeAmount:M,RateApplied:B,TargetCredited:M}),Cn=z.object({ServerTimeUtc:l,SourceType:ut,SourceID:z.string(),TargetType:ut,TargetID:z.string(),SourceSpent:B,FeeAmount:B,RateApplied:B,TargetCredited:B}),Ss={Convert:"Convert",CryptoConvert:"CryptoConvert"},Vu={Active:"Active",Hidden:"Hidden",Deprecated:"Deprecated",Maintenance:"Maintenance"},Sn=z.enum(["Active","Hidden","Deprecated","Maintenance"]),_u={Automatic:"Automatic",Manual:"Manual"},Wu=z.enum(["Automatic","Manual"]),Qu=z.object({ValueInUSD:B.nullish(),ValueInUSDUpdatedAt:l.nullish(),InitialDeposit:z.number().nullish(),MinBalance:z.number().nullish(),MaxBalance:z.number().nullish(),DailyEarnLimit:z.number().nullish(),DailySpendLimit:z.number().nullish()}).passthrough(),Hu=z.object({Rate:z.number().nullish(),Max:z.number().nullish(),Period:z.number().nullish()}).passthrough(),Ku=z.object({IsTradable:z.boolean().nullish(),IsPurchasable:z.boolean().nullish(),IsRefundable:z.boolean().nullish()}).passthrough(),$u=z.object({TargetCurrencyType:ut.nullish(),TargetCurrencyID:z.string(),Rate:B.nullish(),MinAmount:z.number().nullish(),MaxAmount:z.number().nullish(),DailyLimit:z.number().nullish()}).passthrough(),xn=z.object({Enabled:z.boolean().nullish(),RateMode:Wu.nullish(),FeePercent:B.nullish(),Targets:z.array($u).nullish()}).passthrough(),Dn=z.object({CreatedAt:l.nullish(),UpdatedAt:l.nullish()}).passthrough(),Zu=z.object({CurrencyID:z.string(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Economy:Qu.nullish(),Recharge:Hu.nullish(),Conversion:xn.nullish(),Permissions:Ku.nullish(),Audit:Dn.nullish(),Status:Sn.nullish()}).passthrough(),Ju=z.object({NetworkID:z.string(),ContractAddress:z.string().nullish(),Decimals:z.number().nullish(),MinDeposit:B.nullish(),MinWithdraw:B.nullish(),WithdrawFee:B.nullish(),DepositsEnabled:z.boolean().nullish(),WithdrawalsEnabled:z.boolean().nullish()}).passthrough(),Yu=z.object({DailyWithdrawUsd:B.nullish(),MonthlyWithdrawUsd:B.nullish(),KycRequiredAboveUsd:B.nullish()}).passthrough(),Xu=z.object({DepositsEnabled:z.boolean().nullish(),WithdrawalsEnabled:z.boolean().nullish(),SpendableInGame:z.boolean().nullish(),ConvertibleToVirtual:z.boolean().nullish()}).passthrough(),$r=z.object({CurrencyID:z.string(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),DisplayDecimals:z.number().nullish(),ValueInUSD:B.nullish(),ValueInUSDUpdatedAt:l.nullish(),DeveloperDepositSharePercent:B.nullish(),CommunityMarketingDepositSharePercent:B.nullish(),WithdrawalBurnPercent:B.nullish(),Networks:z.array(Ju).nullish(),Limits:Yu.nullish(),Permissions:Xu.nullish(),Conversion:xn.nullish(),Audit:Dn.nullish(),Status:Sn.nullish()}).passthrough(),xs=z.object({VirtualCurrencies:z.record(z.string(),Zu).nullish(),CryptoCurrencies:z.record(z.string(),$r).nullish()}).passthrough();var bn=z.object({CatalogID:z.string().nullish(),ItemID:z.string().nullish(),ItemInstanceID:z.string().nullish(),EquippedAt:l.nullish()}),Zr=z.object({CharacterID:z.string(),Level:z.number().nullish(),Experience:M.nullish(),Power:z.number().nullish(),StatLevels:z.record(z.string(),z.number()).nullish(),Equipment:z.record(z.string(),bn).nullish(),UpdatedAt:l.nullish()}).passthrough(),ec=z.object({CharacterID:z.string().nullish(),SlotID:z.string().nullish()}).passthrough(),tc=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:l,ExpiresAt:l.nullish(),EquippedSlot:ec.nullish(),CustomData:z.string().nullish()}).passthrough().transform(a=>a),et=z.object({ChangedInstances:z.record(z.string(),tc).nullish(),RemovedInstanceIDs:z.array(z.string()).nullish()}),vn=z.object({Characters:z.record(z.string(),Zr).nullish()}),Jr=z.object({ServerTimeUtc:l,CharacterID:z.string(),StatID:z.string(),StatLevel:z.number(),Power:z.number().nullish(),Resources:x.nullish()}),Yr=z.object({ServerTimeUtc:l,CharacterID:z.string(),NewLevel:z.number(),Power:z.number().nullish(),Resources:x.nullish()}),zn=z.object({ServerTimeUtc:l,CharacterID:z.string(),Equipment:z.record(z.string(),bn).nullish(),ReplacedInstanceIDs:z.array(z.string()).nullish(),Power:z.number().nullish(),Inventory:et.nullish()}),Tn=z.object({ServerTimeUtc:l,CharacterID:z.string(),ClearedSlotIDs:z.array(z.string()).nullish(),Power:z.number().nullish(),Inventory:et.nullish()}),sc=z.object({ClearedSlotIDs:z.array(z.string()).nullish(),Power:z.number().nullish()}),Pn=z.object({ServerTimeUtc:l,Characters:z.record(z.string(),sc).nullish(),Inventory:et.nullish()}),Xr=z.object({ServerTimeUtc:l,CharacterID:z.string(),Power:z.number().nullish(),Resources:x.nullish()}),In=Ot(Xr),Mn=Ot(Yr),kn=Ot(Jr),An=z.object({RequiredStatID:z.string(),RequiredLevel:z.number()}).passthrough(),Un=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:K.nullish(),CostScalingFactor:z.number().nullish(),BaseStatValue:z.number().nullish(),StatScalingFactor:z.number().nullish(),CharacterLevelScalingFactor:z.number().nullish(),Requirements:z.array(An).nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),On=z.object({Level:z.number().nullish(),UpgradeCost:K.nullish(),GlobalStatMultiplier:z.number().nullish(),StatMaxLevelMultiplier:z.number().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),rc=z.object({SlotID:z.string(),MinCharacterLevel:z.number().nullish(),StatRequirements:z.array(An).nullish(),AllowedRarityIDs:z.array(z.string()).nullish(),AllowedItemTags:z.array(z.string()).nullish(),MinItemLevel:z.number().nullish(),MaxItemLevel:z.number().nullish()}).passthrough(),wn=z.object({Slots:z.record(z.string(),rc).nullish()}).passthrough(),ic=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(),nc=z.object({ClassID:z.string().nullish(),RarityID:z.string().nullish(),Tags:z.array(z.string()).nullish()}).passthrough(),oc=z.object({UnlockedByDefault:z.boolean().nullish(),Cost:K.nullish()}).passthrough(),ac=z.object({Stats:ne.nullish(),Levels:ne.nullish(),Equipment:ne.nullish()}).passthrough(),lc=z.object({CharacterID:z.string(),Identity:ic.nullish(),Classification:nc.nullish(),Unlock:oc.nullish(),Presets:ac.nullish(),Equipment:wn.nullish(),Stats:z.record(z.string(),Un).nullish(),Levels:z.record(z.string(),On).nullish()}).passthrough(),uc=z.object({Stats:z.record(z.string(),Un).nullish()}).passthrough(),cc=z.object({Levels:z.record(z.string(),On).nullish()}).passthrough(),pc=z.object({Equipment:wn.nullish()}).passthrough(),dc=z.object({Stats:z.record(z.string(),uc).nullish(),Levels:z.record(z.string(),cc).nullish(),Equipment:z.record(z.string(),pc).nullish()}).passthrough(),Ds=z.object({Definitions:z.record(z.string(),lc).nullish(),Presets:dc.nullish()}).passthrough(),Te={GetCharacterDefinitions:"GetCharacterDefinitions",GetUserCharacters:"GetUserCharacters",UnlockCharacter:"UnlockCharacter",UpgradeStatLevel:"UpgradeStatLevel",UpgradeCharacterLevel:"UpgradeCharacterLevel",EquipItems:"EquipItems",UnequipItems:"UnequipItems",UnequipAllCharacters:"UnequipAllCharacters",UnlockCharactersBatch:"UnlockCharactersBatch",UpgradeCharacterLevelsBatch:"UpgradeCharacterLevelsBatch",UpgradeStatLevelsBatch:"UpgradeStatLevelsBatch"};var hc={EVM:"EVM",Solana:"Solana"},mc=z.enum(["EVM","Solana"]),fc={AutoLinkedFromTransaction:"AutoLinkedFromTransaction",SignatureVerified:"SignatureVerified",ManuallyLinked:"ManuallyLinked"},gc=z.enum(["AutoLinkedFromTransaction","SignatureVerified","ManuallyLinked"]),Rc={Token:"Token",Nft:"Nft"},Bn=z.enum(["Token","Nft"]),yc={NotRequested:"NotRequested",Pending:"Pending",Verified:"Verified",Rejected:"Rejected",Expired:"Expired"},Cc=z.enum(["NotRequested","Pending","Verified","Rejected","Expired"]),Sc={None:"None",Tier1:"Tier1",Tier2:"Tier2",Tier3:"Tier3"},xc=z.enum(["None","Tier1","Tier2","Tier3"]),Dc={Pending:"Pending",Completed:"Completed",Failed:"Failed",Expired:"Expired",Abandoned:"Abandoned"},ei=z.enum(["Pending","Completed","Failed","Expired","Abandoned"]),qn={GameTopUp:"game_topup",CommunityReward:"community_reward"};function bs(a){let e=a?.trim();return e||qn.GameTopUp}var bc={UsersCryptoWallet:"UsersCryptoWallet",Game:"Game"},En=z.enum(["UsersCryptoWallet","Game"]),vc=z.object({ContractAddress:z.string().nullish(),ItemCatalogID:z.string().nullish(),DisplayName:z.string().nullish(),DepositsEnabled:z.boolean().nullish(),WithdrawalsEnabled:z.boolean().nullish()}).passthrough(),Ln=z.object({Ios:z.boolean().nullish(),Android:z.boolean().nullish(),Web:z.boolean().nullish()}).passthrough(),zc=z.object({NetworkID:z.string().nullish(),DisplayName:z.string().nullish(),Type:mc.nullish(),ChainID:z.number().nullish(),ChainTicker:z.string().nullish(),RewardPoolAddress: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:Ln.nullish(),NftCollections:z.array(vc).nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),Tc=z.object({DepositsEnabled:z.boolean().nullish(),WithdrawalsEnabled:z.boolean().nullish(),NftDepositsEnabled:z.boolean().nullish(),NftWithdrawalsEnabled:z.boolean().nullish(),PlatformOverrides:Ln.nullish()}).passthrough(),Pc=z.object({MinAccountAgeDays:z.number().nullish(),MultiAccountCheckEnabled:z.boolean().nullish(),BanOnSharedWithdrawalAddress:z.boolean().nullish(),PendingWithdrawalTtlHours:z.number().nullish()}).passthrough();var Ic=z.enum(["OnChain","Combined"]),Mc=z.object({Enabled:z.boolean().nullish(),NetworkID:z.string().nullish(),CurrencyID:z.string().nullish(),MinBalance:B.nullish(),BalanceSource:Ic.nullish(),DenyMessage:z.string().nullish()}).passthrough(),kc=z.object({Enabled:z.boolean().nullish(),TokenGates:z.array(Mc).nullish(),WalletConnectProjectId:z.string().nullish()}).passthrough(),ti=z.object({SystemState:Tc.nullish(),Networks:z.record(z.string(),zc).nullish(),AccountSafety:Pc.nullish(),WalletLogin:kc.nullish()}).passthrough(),Ac=z.object({NetworkID:z.string().nullish(),Address:z.string().nullish(),LinkedAt:l.nullish(),LastUsedAt:l.nullish(),LinkType:gc.nullish(),IsSignatureVerified:z.boolean().nullish()}).passthrough(),Gn=z.object({TitleTransactionID:z.string().nullish(),Type:Bn.nullish(),NetworkID:z.string().nullish(),AssetID:z.string().nullish(),Amount:B.nullish(),CreatedAt:l.nullish(),ExpiresAt:l.nullish()}).passthrough(),Uc=z.object({Status:Cc.nullish(),Tier:xc.nullish(),VerifiedAt:l.nullish(),ExpiresAt:l.nullish(),RejectedAt:l.nullish(),ProviderReference:z.string().nullish(),RejectionReason:z.string().nullish()}).passthrough(),Oc=z.object({CurrencyID:z.string().nullish(),Deposits:z.number().nullish(),DepositsVolumeNative:B.nullish(),DepositsVolumeUsd:B.nullish(),Withdrawals:z.number().nullish(),WithdrawalsVolumeNative:B.nullish(),WithdrawalsVolumeUsd:B.nullish(),FailedWithdrawals:z.number().nullish(),RejectedDeposits:z.number().nullish(),FirstDepositAt:l.nullish(),LastDepositAt:l.nullish(),FirstWithdrawalAt:l.nullish(),LastWithdrawalAt:l.nullish()}).passthrough(),wc=z.object({TotalDeposits:z.number().nullish(),TotalWithdrawals:z.number().nullish(),FailedWithdrawals:z.number().nullish(),RejectedDeposits:z.number().nullish(),TotalDepositsVolumeUsd:B.nullish(),TotalWithdrawalsVolumeUsd:B.nullish(),PerCurrency:z.record(z.string(),Oc).nullish()}).passthrough(),Bc=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:l.nullish(),LastDepositAt:l.nullish(),FirstWithdrawalAt:l.nullish(),LastWithdrawalAt:l.nullish()}).passthrough(),qc=z.object({TotalDeposits:z.number().nullish(),TotalWithdrawals:z.number().nullish(),FailedWithdrawals:z.number().nullish(),RejectedDeposits:z.number().nullish(),PerCollection:z.record(z.string(),Bc).nullish()}).passthrough(),Ec=z.object({Tokens:wc.nullish(),Nfts:qc.nullish()}).passthrough(),Lc=z.object({CurrencyID:z.string().nullish(),Balance:B.nullish(),MinBalance:B.nullish()}).passthrough(),Gc=z.object({NetworkID:z.string().nullish(),Address:z.string().nullish(),CheckedAt:l.nullish(),LoggedInAt:l.nullish(),GatePassed:z.boolean().nullish(),GatedBalances:z.array(Lc).nullish()}).passthrough(),Nc=z.object({Version:z.number().nullish(),Stats:Ec.nullish(),LinkedWallets:z.record(z.string(),Ac).nullish(),LastWalletLogin:Gc.nullish(),PendingWithdrawals:z.array(Gn).nullish(),Kyc:Uc.nullish(),FirstActivityAt:l.nullish(),LastActivityAt:l.nullish(),IsFlagged:z.boolean().nullish(),FlagReason:z.string().nullish()}).passthrough(),jc=z.object({CurrencyID:z.string(),AmountDelta:B,FrozenDelta:B,UpdatedAt:l}).passthrough(),vs=z.object({CryptoBalances:z.record(z.string(),jc).nullish(),PendingAdded:Gn.nullish(),PendingRemovedIDs:z.array(z.string()).nullish()}).passthrough(),Fc=z.object({Amount:B,Frozen:B,CreatedAt:l.nullish(),UpdatedAt:l.nullish()}).passthrough().transform(a=>a),Vc=z.object({ID:z.string().nullish(),TitleID:z.string().nullish(),CreatedAt:l.nullish(),UpdatedAt:l.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:En.nullish(),From:z.string().nullish(),To:z.string().nullish(),Amount:B.nullish(),Status:ei.nullish(),SignatureData:z.string().nullish(),CompletedAt:l.nullish(),ExpiresAt:l.nullish(),FailReason:z.string().nullish(),Reason:z.string().nullish(),Category:z.string().nullish(),TokenID:z.string().nullish(),CurrencyID:z.string().nullish(),AmountUsd:B.nullish(),NetPayoutAmount:B.nullish()}).passthrough(),_c=z.object({ID:z.string().nullish(),TitleID:z.string().nullish(),CreatedAt:l.nullish(),UpdatedAt:l.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:En.nullish(),From:z.string().nullish(),To:z.string().nullish(),Amount:B.nullish(),Status:ei.nullish(),SignatureData:z.string().nullish(),CompletedAt:l.nullish(),ExpiresAt:l.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(),Nn=z.object({To:z.string().nullish(),Amount:z.union([z.string(),z.number()]).nullish()}).passthrough(),si=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(),SignatureEpoch:z.string().nullish(),Splits:z.array(Nn).nullish(),Signature:z.string().nullish()}).passthrough(),ri=z.object({Mint:z.string().nullish(),WalletAddress:z.string().nullish(),Amount:z.string().nullish(),BurnAmount:z.string().nullish(),Nonce:z.string().nullish(),ExpiresAt:z.string().nullish(),ProgramID:z.string().nullish(),SignatureEpoch:z.string().nullish(),Domain:z.string().nullish(),Splits:z.array(Nn).nullish(),SignatureHex:z.string().nullish(),SigIxIndex:z.number().nullish(),Ed25519PublicKey:z.string().nullish(),Ed25519Message:z.string().nullish(),UserID:z.string().nullish(),TitleID:z.string().nullish(),Category:z.string().nullish()}).passthrough(),jn=z.object({Blockchain:ti.nullish(),CryptoCurrencies:z.record(z.string(),$r).nullish()}).passthrough(),Fn=z.object({State:Nc.nullish(),CryptoBalances:z.record(z.string(),Fc).nullish()}).passthrough(),Vn=z.object({ServerTimeUtc:l.nullish(),TransactionHash:z.string().nullish(),NetworkID:z.string().nullish(),CurrencyID:z.string().nullish(),AmountNative:B.nullish(),AmountUsd:B.nullish(),StateDelta:vs.nullish()}).passthrough(),_n=z.object({ServerTimeUtc:l.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:x.nullish(),Inventory:et.nullish()}).passthrough(),Wn=z.object({ServerTimeUtc:l.nullish(),TitleTransactionID:z.string().nullish(),NetworkID:z.string().nullish(),CurrencyID:z.string().nullish(),AmountNative:B.nullish(),NetAmountNative:B.nullish(),BurnAmountNative:B.nullish(),AmountUsd:B.nullish(),ExpiresAt:l.nullish(),EvmSignature:si.nullish(),SolanaSignature:ri.nullish(),StateDelta:vs.nullish()}).passthrough(),Qn=z.object({ServerTimeUtc:l.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:l.nullish(),Resources:x.nullish(),EvmSignature:si.nullish(),SolanaSignature:ri.nullish(),StateDelta:vs.nullish(),Inventory:et.nullish()}).passthrough(),Hn=z.object({TokenTransactions:z.array(Vc).nullish(),NFTTransactions:z.array(_c).nullish()}).passthrough(),ii=z.object({ServerTimeUtc:l.nullish(),TransactionHash:z.string().nullish(),NetworkID:z.string().nullish(),CurrencyID:z.string().nullish(),AmountNative:B.nullish(),AmountUsd:B.nullish(),Target:z.string().nullish()}).passthrough(),Kn=z.object({TitleTransactionID:z.string().nullish(),Kind:Bn.nullish(),EvmSignature:si.nullish(),SolanaSignature:ri.nullish()}).passthrough(),$n=z.object({TitleTransactionID:z.string().nullish(),OnChainTxHash:z.string().nullish(),Status:ei.nullish(),StateDelta:vs.nullish()}).passthrough(),Pe={GetDefinitions:"GetDefinitions",GetUserState:"GetUserState",DepositToken:"DepositToken",DepositNFT:"DepositNFT",RequestTokenWithdrawal:"RequestTokenWithdrawal",RequestNFTWithdrawal:"RequestNFTWithdrawal",GetTransactionHistory:"GetTransactionHistory",RetryWithdrawal:"RetryWithdrawal",ConfirmWithdrawal:"ConfirmWithdrawal",DonateToDeveloper:"DonateToDeveloper",DonateToUsersPool:"DonateToUsersPool"};var Wc="Blockchain",zs=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(Wc,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 Lt(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=bs(i);let d=await this.ctx.api.blockchain.requestTokenWithdrawal(c);return d.ok&&d.data.CurrencyID&&(this.ctx.data.user.patchCryptoCurrencyDelta(d.data.CurrencyID,new Lt(d.data.AmountNative??0).negated(),d.data.ServerTimeUtc??void 0),this.ctx.emitter.emit("blockchain:tokenWithdrawalRequested",d.data)),d}async requestNFTWithdrawal(e,t,s,r,i,c,d){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 v=this.baseRequest();if(!v)return n("unauthorized","Not logged in.");v.ItemID=e,v.NetworkID=t,v.WalletAddress=s,v.Amount=r,v.Category=bs(i),c!==void 0&&(v.Level=c),d&&(v.ItemInstanceID=d);let w=await this.ctx.api.blockchain.requestNFTWithdrawal(v);return w.ok&&(this.ctx.data.user.applyResourceOperation(w.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("blockchain:nftWithdrawalRequested",w.data)),w}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 Ce=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 Qc={Head:"Head",Torso:"Torso",Legs:"Legs"},Ts=z.enum(["Head","Torso","Legs"]),Hc={Open:"Open",InProgress:"InProgress",Cancelled:"Cancelled",Completed:"Completed"},ni=z.enum(["Open","InProgress","Cancelled","Completed"]),Yn=z.object({AttackTarget:Ts,DefenseTarget:Ts});var Kc=z.enum(["Hit","Critical","Block","Dodge"]),$c=z.object({RoundIndex:z.number().nullish(),AttackerID:z.string().nullish(),DefenderID:z.string().nullish(),AttackZone:Ts.nullish(),DefenseZone:Ts.nullish(),HitType:Kc.nullish(),DamageDealt:z.number().nullish(),DefenderHpRemaining:z.number().nullish()}).passthrough(),Zc=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(),Jc=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:l,ExpiresAt:l.nullish(),CustomData:z.string().nullish()}).passthrough().transform(a=>a),Jn=z.object({UserID:z.string().nullish(),SelectedCharacterID:z.string().nullish(),SelectedCharacter:Zr.nullish(),BattleStrategy:z.array(Yn).nullish(),UnstackableItems:z.record(z.string(),Jc).nullish(),Stats:Zc.nullish()}).passthrough(),Yc=z.object({WinnerUserID:z.string().nullish(),LoserUserID:z.string().nullish(),Entry:ce.nullish(),NetReward:ce.nullish(),BattleLog:z.array($c).nullish(),IsDraw:z.boolean().nullish(),P1BattleProfile:Jn.nullish(),P2BattleProfile:Jn.nullish()}).passthrough(),Xn=z.object({MatchID:z.string(),TitleID:z.string().nullish(),RuleID:z.string().nullish(),CreatedAt:l.nullish(),CreatorID:z.string().nullish(),CreatorCharacterID:z.string().nullish(),CreatorStrategy:z.array(Yn).nullish(),TargetUserID:z.string().nullish(),Entry:ce.nullish(),CreationCostPaid:ce.nullish(),RefundCreationCostOnCancel:z.boolean().nullish(),JoinedByUserID:z.string().nullish(),JoinedByCharacterID:z.string().nullish(),JoinedAt:l.nullish(),Status:ni.nullish(),WinnerUserID:z.string().nullish(),CompletedAt:l.nullish(),IsRewardDistributed:z.boolean().nullish(),RewardDistributedAt:l.nullish()}).passthrough(),eo=z.object({Status:ni,MatchID:z.string(),Entry:ce.nullish(),Resources:x.nullish()}),to=z.object({Match:Xn.nullish()}),so=z.object({MatchID:z.string(),Status:ni,Resources:x.nullish()}),ro=z.object({Battle:Yc.nullish(),Resources:x.nullish(),ResourcesDual:st.nullish()}),oi=z.object({Matches:z.array(Xn).nullish(),Page:z.number().nullish(),PageSize:z.number().nullish(),HasMore:z.boolean().nullish()}),je={CreateMatch:"CreateMatch",UpdateMatch:"UpdateMatch",CancelMatch:"CancelMatch",InstantBattle:"InstantBattle",SaveStrategy:"SaveStrategy",GetMyMatches:"GetMyMatches",GetAvailableMatches:"GetAvailableMatches",GetDefinitions:"GetDefinitions"};var Xc=z.enum(["VirtualCurrency","Item","EventToken"]);var ep=z.enum(["Constant","Stat","RankMultiplier","AllMight","GearFlat","GearPercent"]),tp=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(),sp=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(),rp=z.object({Source:ep.nullish(),StatID:z.string().nullish(),Value:z.number().nullish(),OnePlus:z.boolean().nullish()}).passthrough(),ip=z.object({Coefficient:z.number().nullish(),Factors:z.array(rp).nullish()}).passthrough(),it=z.object({Terms:z.array(ip).nullish()}).passthrough(),np=z.object({Health:it.nullish(),Damage:it.nullish(),Armor:it.nullish(),AttackSpeed:it.nullish(),CritChance:it.nullish(),CritDamage:it.nullish(),Dodge:it.nullish()}).passthrough(),io=z.object({StatMapping:tp.nullish(),Combat:sp.nullish(),Formula:np.nullish()}).passthrough(),op=z.object({BurnRate:z.number().nullish()}).passthrough(),ai=z.object({Kind:Xc.nullish(),CurrencyID:z.string().nullish(),CatalogID:z.string().nullish(),ItemID:z.string().nullish(),TokenType:kt.nullish(),EntityID:z.string().nullish(),MinAmount:z.number().nullish(),MaxAmount:z.number().nullish()}).passthrough(),no=z.object({AllowVirtualCurrency:z.boolean().nullish(),AllowItems:z.boolean().nullish(),AllowEventTokens:z.boolean().nullish(),Allowed:z.array(ai).nullish(),MaxPositions:z.number().nullish()}).passthrough(),oo=z.object({Cost:K.nullish(),RefundCostOnCancel:z.boolean().nullish(),MaxOpenMatches:z.number().nullish(),Limits:de.nullish(),AllowPrivateMatches:z.boolean().nullish(),MaxMatchesPerOpponentPerDay:z.number().nullish()}).passthrough(),ap=z.object({RuleID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),Economy:op.nullish(),Entry:no.nullish(),Creation:oo.nullish(),Settings:io.nullish()}).passthrough(),lp=z.object({Rules:z.record(z.string(),ap).nullish(),Defaults:io.nullish(),EntryDefaults:no.nullish(),CreationDefaults:oo.nullish()}).passthrough(),li=z.object({InstantBattle:lp.nullish()}).passthrough(),ao=li;var up={Listing:"Listing",Auction:"Auction",BuyOrder:"BuyOrder",DirectTrade:"DirectTrade"},ui=z.enum(["Listing","Auction","BuyOrder","DirectTrade"]),cp={Active:"Active",Completed:"Completed",Cancelled:"Cancelled",Declined:"Declined",Expired:"Expired"},ci=z.enum(["Active","Completed","Cancelled","Declined","Expired"]),pp={Burn:"Burn",Ledger:"Ledger"},dp=z.enum(["Burn","Ledger"]),Is={Item:"Item",VirtualCurrency:"VirtualCurrency"},pi=z.enum(["Item","VirtualCurrency"]),hp=z.object({Percent:z.number().nullish(),MinPerPosition:M.nullish()}).passthrough(),mp=z.object({AllowVirtualCurrency:z.boolean().nullish(),AllowItems:z.boolean().nullish(),AllowEventTokens:z.boolean().nullish(),Allowed:z.array(ai).nullish(),MaxPositions:z.number().nullish()}).passthrough(),fp=z.object({Percent:z.number().nullish(),MinPerPosition:M.nullish(),Sink:dp.nullish(),LedgerAccountID:z.string().nullish(),PerCatalogOverrides:z.record(z.string(),hp).nullish(),ApplyToDirectTrades:z.boolean().nullish()}).passthrough(),gp=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(),Rp=z.object({Enabled:z.boolean().nullish(),AllowedDurationsHours:z.array(z.number()).nullish(),MaxActiveListings:z.number().nullish(),CreateLimits:de.nullish(),BuyLimits:de.nullish(),ListingFee:K.nullish(),RefundListingFeeOnCancel:z.boolean().nullish()}).passthrough(),yp=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:M.nullish(),BidLimits:de.nullish()}).passthrough(),Cp=z.object({Enabled:z.boolean().nullish(),MaxActiveOrders:z.number().nullish(),AllowedDurationsHours:z.array(z.number()).nullish(),CreateLimits:de.nullish(),FillLimits:de.nullish()}).passthrough(),Sp=z.object({Enabled:z.boolean().nullish(),OfferExpirationHours:z.number().nullish(),MaxPendingOutgoing:z.number().nullish(),AllowGifts:z.boolean().nullish(),CreateLimits:de.nullish()}).passthrough(),xp=z.object({Enabled:z.boolean().nullish()}).passthrough(),di=z.object({Enabled:z.boolean().nullish(),Gate:Q.nullish(),Schedule:pe.nullish(),PricePolicy:mp.nullish(),Commission:fp.nullish(),Tradability:gp.nullish(),Listings:Rp.nullish(),Auctions:yp.nullish(),BuyOrders:Cp.nullish(),DirectTrades:Sp.nullish(),Matching:xp.nullish()}).passthrough(),lo=z.object({BidIndex:z.number().nullish(),UserID:z.string().nullish(),Amount:M.nullish(),Settled:z.boolean().nullish(),SettledAt:l.nullish()}).passthrough(),Dp=z.object({BidAxisType:Mt.nullish(),BidCurrencyID:z.string().nullish(),BidCatalogID:z.string().nullish(),BidItemID:z.string().nullish(),StartingBid:M.nullish(),CurrentBid:M.nullish(),CurrentBidderID:z.string().nullish(),BidCount:z.number().nullish(),ExtensionCount:z.number().nullish(),PendingRefunds:z.array(lo).nullish()}).passthrough(),Ps=z.object({LastAt:l.nullish(),DailyCount:z.number().nullish(),DailyResetUtc:l.nullish()}).passthrough(),bp=z.object({Create:Ps.nullish(),Buy:Ps.nullish(),Sell:Ps.nullish(),Bid:Ps.nullish()}).passthrough(),vp=z.object({CharacterID:z.string().nullish(),SlotID:z.string().nullish()}).passthrough(),zp=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:l,ExpiresAt:l.nullish(),EquippedSlot:vp.nullish(),CustomData:z.string().nullish()}).passthrough().transform(a=>a),He=z.object({OfferID:z.string().nullish(),OfferType:ui.nullish(),Status:ci.nullish(),CreatorUserID:z.string().nullish(),CreatorPublicData:Ce.nullish(),TargetUserID:z.string().nullish(),GoodsType:pi.nullish(),GoodsCatalogID:z.string().nullish(),GoodsItemID:z.string().nullish(),GoodsCurrencyID:z.string().nullish(),GoodsAmount:M.nullish(),GoodsInstances:z.array(zp).nullish(),Price:ce.nullish(),Auction:Dp.nullish(),CreatedAt:l.nullish(),ExpiresAt:l.nullish()}).passthrough(),Tp=z.object({GoodsType:pi.nullish(),GoodsCatalogID:z.string().nullish(),GoodsItemID:z.string().nullish(),GoodsCurrencyID:z.string().nullish(),CountsByType:z.record(ui,M).nullish(),ListingCount:M.nullish(),AuctionCount:M.nullish(),BuyOrderCount:M.nullish()}).passthrough(),uo=z.object({Definitions:di.nullish(),IsOpenNow:z.boolean().nullish(),GatePassed:z.boolean().nullish()}).passthrough(),hi=z.object({Offers:z.array(He).nullish(),ContinuationToken:z.string().nullish()}).passthrough(),co=z.object({Groups:z.array(Tp).nullish()}).passthrough(),po=z.object({Offer:He.nullish()}).passthrough(),Ue=z.object({OfferID:z.string().nullish(),Status:ci.nullish(),Settlement:st.nullish(),Resources:x.nullish(),CommissionTaken:ce.nullish()}).passthrough(),Dt=z.object({OfferID:z.string().nullish(),Offer:He.nullish(),Resources:x.nullish(),Matched:z.boolean().nullish(),Settlement:Ue.nullish()}).passthrough(),ho=z.object({OfferID:z.string().nullish(),CurrentBid:M.nullish(),BidCount:z.number().nullish(),ExpiresAt:l.nullish(),Resources:x.nullish()}).passthrough(),mo=z.object({MyOffers:z.array(He).nullish(),MyLeadingBids:z.array(He).nullish(),MyBuyOrders:z.array(He).nullish(),IncomingTrades:z.array(He).nullish(),OutgoingTrades:z.array(He).nullish(),Claimables:z.array(He).nullish(),DrainedRefunds:z.array(lo).nullish(),Limits:bp.nullish()}).passthrough(),Pp=z.object({OfferID:z.string().nullish(),OfferType:ui.nullish(),FinalStatus:ci.nullish(),SellerUserID:z.string().nullish(),BuyerUserID:z.string().nullish(),GoodsType:pi.nullish(),GoodsCatalogID:z.string().nullish(),GoodsItemID:z.string().nullish(),GoodsCurrencyID:z.string().nullish(),GoodsAmount:M.nullish(),PricePaid:ce.nullish(),CommissionTaken:ce.nullish(),CompletedAt:l.nullish()}).passthrough(),fo=z.object({Entries:z.array(Pp).nullish(),ContinuationToken:z.string().nullish()}).passthrough(),ie={GetDefinitions:"GetDefinitions",GetGroupedOffers:"GetGroupedOffers",GetOffersByItem:"GetOffersByItem",GetOffer:"GetOffer",GetBuyOrders:"GetBuyOrders",GetMyState:"GetMyState",GetHistory:"GetHistory",CreateListing:"CreateListing",CancelListing:"CancelListing",Buy:"Buy",MarketBuy:"MarketBuy",MarketSell:"MarketSell",CreateAuction:"CreateAuction",PlaceBid:"PlaceBid",ClaimAuction:"ClaimAuction",CreateBuyOrder:"CreateBuyOrder",CancelBuyOrder:"CancelBuyOrder",FillBuyOrder:"FillBuyOrder",CreateDirectTrade:"CreateDirectTrade",RespondDirectTrade:"RespondDirectTrade",CancelDirectTrade:"CancelDirectTrade",ClaimBack:"ClaimBack"};var Ip="Marketplace",Ms=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(Ip,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 d=this.baseRequest();if(!d)return n("unauthorized","Not logged in.");d.ItemID=e,d.CatalogID=t,d.GoodsAmount=s,d.PriceBundle=r,d.DurationHours=i,d.ItemInstanceIDs=c;let v=await this.ctx.api.marketplace.createListing(d);return this.applyCreateOfferResult(v,"marketplace:listingCreated"),v}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 marketBuy(e,t,s){if(!e||e<=0)return n("client","GoodsAmount must be positive.");if(!t)return n("client","PriceBundle is required.");let r=this.baseRequest();if(!r)return n("unauthorized","Not logged in.");let i=this.applyGoodsSelector(r,s);if(i)return i;r.GoodsAmount=e,r.PriceBundle=t;let c=await this.ctx.api.marketplace.marketBuy(r);return c.ok&&(this.applyDualPartySettlement(c.data.Settlement),this.ctx.emitter.emit("marketplace:marketBought",c.data)),c}async marketSell(e,t,s){if(!e||e<=0)return n("client","GoodsAmount must be positive.");if(!t)return n("client","PriceBundle is required.");let r=this.baseRequest();if(!r)return n("unauthorized","Not logged in.");let i=this.applyGoodsSelector(r,s);if(i)return i;r.GoodsAmount=e,r.PriceBundle=t;let c=await this.ctx.api.marketplace.marketSell(r);return c.ok&&(this.applyDualPartySettlement(c.data.Settlement),this.ctx.emitter.emit("marketplace:marketSold",c.data)),c}async createAuction(e,t,s,r,i,c,d={}){if(!e)return n("client","ItemID is required.");if(!t)return n("client","CatalogID is required.");let v=this.baseRequest();if(!v)return n("unauthorized","Not logged in.");v.ItemID=e,v.CatalogID=t,v.GoodsAmount=s,v.BidAxisType=r,v.BidCurrencyID=d.bidCurrencyID,v.BidCatalogID=d.bidCatalogID,v.BidItemID=d.bidItemID,v.StartingBid=i,v.DurationHours=c,v.ItemInstanceIDs=d.itemInstanceIDs;let w=await this.ctx.api.marketplace.createAuction(v);return this.applyCreateOfferResult(w,"marketplace:auctionCreated"),w}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 d=await this.ctx.api.marketplace.createBuyOrder(c);return this.applyCreateOfferResult(d,"marketplace:buyOrderCreated"),d}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 d=await this.ctx.api.marketplace.createDirectTrade(c);return this.applyCreateOfferResult(d,"marketplace:directTradeCreated"),d}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&&(e.data.Matched&&e.data.Settlement?this.applyDualPartySettlement(e.data.Settlement.Settlement):this.ctx.data.user.applyResourceOperation(e.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit(t,e.data));}applyGoodsSelector(e,t){return "goodsCurrencyID"in t&&t.goodsCurrencyID?(e.GoodsType=Is.VirtualCurrency,e.GoodsCurrencyID=t.goodsCurrencyID,null):"itemID"in t&&t.itemID&&t.catalogID?(e.GoodsType=Is.Item,e.ItemID=t.itemID,e.CatalogID=t.catalogID,null):n("client","Either itemID+catalogID or goodsCurrencyID is required.")}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 ks=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 go=z.object({PlatformUserID:z.string().nullish(),PlatformAuthToken:z.string().nullish(),PlatformAuthTokenExpiration:l.nullish(),TitleUserID:z.string(),TitleClientSessionTicket:z.string(),TitleClientSessionTicketExpiration:l}),Se=z.object({IsCompleted:z.boolean().nullish(),ServerTime:l.nullish()}),Ro=z.object({Message:z.string(),ExpiresAt:l}),Ie={LoginWithDeviceID:"LoginWithDeviceID",LoginWithTelegram:"LoginWithTelegram",LoginWithEmail:"LoginWithEmail",LoginWithGoogle:"LoginWithGoogle",LoginWithPlatformToken:"LoginWithPlatformToken",LoginWithSsoCode:"LoginWithSsoCode",RegisterWithEmail:"RegisterWithEmail",RequestWalletChallenge:"RequestWalletChallenge",LoginWithWallet:"LoginWithWallet",ForgotPassword:"ForgotPassword",ResetPassword:"ResetPassword"};function U(a,e,t,s){let i=`api/v2/${a&&a.length>0?a:"0"}/Client/${e}/${t}`;return s==null?i:`${i}/${s}`}var As=class{constructor(e){this.ctx=e;}ctx;endpoint(e){return U(this.ctx.settings.titleID,"Authentication",e)}login(e,t){return this.ctx.transport.post(this.endpoint(e),t,go,{ticket:null})}loginWithDeviceID(e){return this.login(Ie.LoginWithDeviceID,e)}loginWithTelegram(e){return this.login(Ie.LoginWithTelegram,e)}loginWithEmail(e){return this.login(Ie.LoginWithEmail,e)}loginWithGoogle(e){return this.login(Ie.LoginWithGoogle,e)}loginWithPlatformToken(e){return this.login(Ie.LoginWithPlatformToken,e)}loginWithSsoCode(e){return this.login(Ie.LoginWithSsoCode,e)}registerWithEmail(e){return this.login(Ie.RegisterWithEmail,e)}requestWalletChallenge(e){return this.ctx.transport.post(this.endpoint(Ie.RequestWalletChallenge),e,Ro,{ticket:null})}loginWithWallet(e){return this.login(Ie.LoginWithWallet,e)}forgotPassword(e){return this.ctx.transport.post(this.endpoint(Ie.ForgotPassword),e,Se,{ticket:null})}resetPassword(e){return this.ctx.transport.post(this.endpoint(Ie.ResetPassword),e,Se,{ticket:null})}};var mi=z.object({TitleConfigVersion:z.string().nullish(),TitleConfigUrl:z.string().nullish(),User:z.unknown().nullish(),StateVersions:z.record(z.string(),z.number()).nullish(),StateEpoch:z.string().nullish()}).passthrough().transform(a=>a),yo=z.object({StateEpoch:z.string().nullish(),StateVersions:z.record(z.string(),z.number()).nullish()}).passthrough().transform(a=>a),Co=z.object({StateEpoch:z.string().nullish(),StateVersions:z.record(z.string(),z.number()).nullish(),User:z.unknown().nullish()}).passthrough().transform(a=>a),So=z.object({}).passthrough().transform(a=>a),xo=z.object({}).passthrough().transform(a=>a),Do=z.object({Today:z.number(),Yesterday:z.number(),CurrentWeek:z.number(),CurrentMonth:z.number(),Total:z.number(),TotalSessions:z.number(),FirstActiveAt:l.nullish(),LastActiveAt:l.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(),bo=z.object({Username:z.string()}),Oe={GetClientState:"GetClientState",GetClientStateExcept:"GetClientStateExcept",GetStateVersions:"GetStateVersions",GetUserState:"GetUserState",GetInventory:"GetInventory",GetEventTokens:"GetEventTokens",GetUsageTime:"GetUsageTime",AddUsageTime:"AddUsageTime",DeleteUserAccount:"DeleteUserAccount",ChangeUsername:"ChangeUsername"};var Us=class{constructor(e){this.ctx=e;}ctx;endpoint(e,t){return U(this.ctx.settings.titleID,"User",e,t??"")}getClientState(e){return this.ctx.transport.post(this.endpoint(Oe.GetClientState,e.UserID),e,mi,{ticket:e.ClientSessionTicket})}getClientStateExcept(e){return this.ctx.transport.post(this.endpoint(Oe.GetClientStateExcept,e.UserID),e,mi,{ticket:e.ClientSessionTicket})}getStateVersions(e){return this.ctx.transport.post(this.endpoint(Oe.GetStateVersions,e.UserID),e,yo,{ticket:e.ClientSessionTicket})}getUserState(e){return this.ctx.transport.post(this.endpoint(Oe.GetUserState,e.UserID),e,Co,{ticket:e.ClientSessionTicket})}getInventory(e){return this.ctx.transport.post(this.endpoint(Oe.GetInventory,e.UserID),e,So,{ticket:e.ClientSessionTicket})}getEventTokens(e){return this.ctx.transport.post(this.endpoint(Oe.GetEventTokens,e.UserID),e,xo,{ticket:e.ClientSessionTicket})}getUsageTime(e){return this.ctx.transport.post(this.endpoint(Oe.GetUsageTime,e.UserID),e,Do,{ticket:e.ClientSessionTicket})}addUsageTime(e){return this.ctx.transport.post(this.endpoint(Oe.AddUsageTime,e.UserID),e,Se,{ticket:e.ClientSessionTicket,silent:true})}deleteUserAccount(e){return this.ctx.transport.post(this.endpoint(Oe.DeleteUserAccount,e.UserID),e,Se,{ticket:e.ClientSessionTicket})}changeUsername(e){return this.ctx.transport.post(this.endpoint(Oe.ChangeUsername,e.UserID),e,bo,{ticket:e.ClientSessionTicket})}};var Os=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=U(this.ctx.settings.titleID,"Currency",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}convert(e){return this.send(Ss.Convert,e,yn)}cryptoConvert(e){return this.send(Ss.CryptoConvert,e,Cn)}};var Mp=z.object({ItemInstanceID:z.string(),Units:z.number(),Level:z.number()}),fi=z.object({ServerTimeUtc:l,ItemInstanceID:z.string(),ItemID:z.string(),CatalogID:z.string().nullish(),Level:z.number(),Resources:x.nullish(),FodderConsumed:z.array(Mp).nullish()}),vo=z.array(re(fi)),ws={UpgradeLevel:"UpgradeLevel",UpgradeLevelsBatch:"UpgradeLevelsBatch"},kp={FlatCount:"FlatCount",Merge:"Merge",InvestmentRefund:"InvestmentRefund"},Ap=z.enum(["FlatCount","Merge","InvestmentRefund"]),Up={ProtectLeveled:"ProtectLeveled",CheapestFirst:"CheapestFirst",ClientSelected:"ClientSelected"},Op=z.enum(["ProtectLeveled","CheapestFirst","ClientSelected"]),wp=z.object({ContractAddress:z.string().nullish(),TokenID:z.string().nullish(),TokenStandard:z.string().nullish()}).passthrough(),Bp=z.object({Networks:z.record(z.string(),wp).nullish(),MetadataUrl:z.string().nullish()}).passthrough(),qp=z.object({FlatBonuses:z.record(z.string(),z.number()).nullish(),PercentBonuses:z.record(z.string(),z.number()).nullish(),Power:z.number().nullish()}).passthrough(),Ep=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(),Lp=z.object({ValuationMode:Ap.nullish(),MergeRatio:z.number().nullish(),Selection:Op.nullish()}).passthrough(),Gp=z.object({MaxLevel:z.number().nullish(),BaseCostResource:K.nullish(),CostScalingFactor:z.number().nullish(),FlatScalingFactor:z.number().nullish(),PercentScalingFactor:z.number().nullish(),PowerScalingFactor:z.number().nullish(),Fodder:Lp.nullish()}).passthrough(),Np=z.object({RarityID:z.string().nullish(),CollectionID:z.string().nullish(),AuthorID:z.string().nullish()}).passthrough(),jp=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:Bp.nullish(),Stats:qp.nullish(),Equipment:Ep.nullish(),Upgrade:Gp.nullish(),Metadata:Np.nullish(),ExpirationDurationSeconds:z.number().nullish()}).passthrough(),Fp=z.object({Items:z.record(z.string(),jp).nullish()}).passthrough(),Bs=z.object({Catalogs:z.record(z.string(),Fp).nullish()}).passthrough();var qs=class{constructor(e){this.ctx=e;}ctx;upgradeLevel(e){let t=U(this.ctx.settings.titleID,"Item",ws.UpgradeLevel,e.UserID??"");return this.ctx.transport.post(t,e,fi,{ticket:e.ClientSessionTicket})}upgradeLevelsBatch(e){let t=U(this.ctx.settings.titleID,"Item",ws.UpgradeLevelsBatch,e.UserID??"");return this.ctx.transport.post(t,e,vo,{ticket:e.ClientSessionTicket})}};var gi=z.object({ServerTimeUtc:l,OfferID:z.string(),Count:z.number(),Resources:x.nullish()}),zo=z.array(re(gi)),Vp=z.object({OfferID:z.string(),TotalPurchases:z.number(),DailyPurchases:z.number(),DailyResetUtc:l,LastPurchasedAt:l}),To=z.object({Purchases:z.record(z.string(),Vp).nullish()}).passthrough().transform(a=>a),_p=z.object({StartUtc:l.nullish(),EndUtc:l.nullish(),RequiredFlags:z.array(z.string()).nullish()}).passthrough(),Wp=z.object({StoreID:z.string(),Type:z.string().nullish(),Name:z.string().nullish(),Description:z.string().nullish(),Rules:_p.nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),Qp=z.object({StartUtc:l.nullish(),EndUtc:l.nullish(),Gate:Q.nullish(),Limits:de.nullish()}).passthrough(),Hp=z.object({OfferID:z.string(),StoreIDs:z.array(z.string()).nullish(),Name:z.string().nullish(),Cost:K.nullish(),Rewards:G.nullish(),Rules:Qp.nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),Es=z.object({Stores:z.record(z.string(),Wp).nullish(),StoreOffers:z.record(z.string(),Hp).nullish()}).passthrough(),ht={Purchase:"Purchase",GetDefinitions:"GetDefinitions",GetUserState:"GetUserState",PurchaseBatch:"PurchaseBatch"};var Ls=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=U(this.ctx.settings.titleID,"Store",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}purchase(e){return this.send(ht.Purchase,e,gi)}purchaseBatch(e){return this.send(ht.PurchaseBatch,e,zo)}getDefinitions(e){return this.send(ht.GetDefinitions,e,Es)}getUserState(e){return this.send(ht.GetUserState,e,To)}};var Kp=z.object({Min:z.number().nullish(),Max:z.number().nullish()}).passthrough(),Po=z.object({Reward:G.nullish(),Weight:z.number().nullish(),AmountRange:Kp.nullish()}).passthrough(),mt=z.object({SlotID:z.string().nullish(),MinRolls:z.number().nullish(),MaxRolls:z.number().nullish(),Pool:z.array(Po).nullish()}).passthrough(),ft=z.object({RuleID:z.string().nullish(),Threshold:z.number().nullish(),Pool:z.array(Po).nullish()}).passthrough(),$p=z.object({RewardSlots:z.array(mt).nullish()}).passthrough(),Zp=z.object({PityRules:z.array(ft).nullish()}).passthrough(),Gs=z.object({SlotPresets:z.record(z.string(),$p).nullish(),PityPresets:z.record(z.string(),Zp).nullish()}).passthrough();var Jp=z.object({RuleID:z.string(),BoxIndex:z.number().nullish()}),Io=z.object({ServerTimeUtc:l,LootboxID:z.string(),OpenedCount:z.number().nullish(),SelectedOptionID:z.number().nullish(),Resources:x.nullish(),Inventory:et.nullish(),Results:z.array(x).nullish(),TriggeredPity:z.array(Jp).nullish()}),Yp=z.object({PriceOptionID:z.number().nullish(),RequiredResources:K.nullish()}).passthrough(),Xp=z.object({RewardSlots:ne.nullish(),PityRules:ne.nullish()}).passthrough(),ed=z.object({CatalogID:z.string().nullish(),ItemID:z.string().nullish(),MaxDrops:M.nullish()}).passthrough(),td=z.object({LootboxID:z.string(),AssetPaths:z.record(z.string(),z.string()).nullish(),PriceOptions:z.record(z.string(),Yp).nullish(),RewardSlots:z.array(mt).nullish(),PityRules:z.array(ft).nullish(),Presets:Xp.nullish(),RewardMultiplier:At.nullish(),SupplyLimits:z.array(ed).nullish()}).passthrough(),Ri=z.object({Definitions:z.record(z.string(),td).nullish(),RewardPools:Gs.nullish()}).passthrough(),Mo=z.object({LootboxDefinitions:Ri.nullish()}),Ns={GetDefinitions:"GetDefinitions",Open:"Open"};var js=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=U(this.ctx.settings.titleID,"Lootbox",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(Ns.GetDefinitions,e,Mo)}open(e){return this.send(Ns.Open,e,Io)}};var sd=z.object({}).passthrough().transform(a=>a),rd=z.object({}).passthrough().transform(a=>a),id=z.object({}).passthrough().transform(a=>a),nd=z.object({}).passthrough().transform(a=>a),od=z.object({}).passthrough().transform(a=>a),ko=z.object({ServerTimeUtc:l,CalendarID:z.string(),DayNumber:z.number().nullish(),DailyState:sd,Resources:x.nullish()}),Ao=z.object({ServerTimeUtc:l,AccrualID:z.string(),AccruedSeconds:M.nullish(),AppliedRatePerSecond:z.number().nullish(),IdleState:rd,Resources:x.nullish()}),Uo=z.object({ServerTimeUtc:l,ComebackID:z.string(),ClaimedTierIndex:z.number().nullish(),ComebackState:id,Resources:x.nullish()}),Oo=z.object({ServerTimeUtc:l,ClaimID:z.string(),ClaimState:nd,Resources:x.nullish()}),wo=z.object({Enabled:z.boolean(),Multiplier:z.number().nullish(),Progress:M.nullish(),Source:z.string().nullish(),SourceKey:z.string().nullish()}),ad=z.object({RewardMode:z.string().nullish(),RewardStackLowerTiers:z.boolean().nullish()}).passthrough(),ld=z.object({DayNumber:z.number().nullish(),Rewards:G.nullish(),IsMilestone:z.boolean().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),ud=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(ld).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:Q.nullish(),AvailableFromUtc:z.string().nullish(),AvailableUntilUtc:z.string().nullish()}).passthrough(),cd=z.object({MinPremiumTier:z.number().nullish(),RequiredPremiumID:z.string().nullish(),Multiplier:z.number().nullish()}).passthrough(),pd=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(cd).nullish()}).passthrough(),dd=z.object({MinCharacterLevel:z.number().nullish(),RequirementsCharacterID:z.string().nullish(),Gate:Q.nullish(),RequiredItemIDs:z.array(z.string()).nullish(),RequiredEquippedItemIDs:z.array(z.string()).nullish()}).passthrough(),hd=z.object({AccrualID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Rate:pd.nullish(),Rewards:G.nullish(),MaxAccumulationSeconds:z.number().nullish(),MinClaimSeconds:z.number().nullish(),Requirements:dd.nullish(),FirstClaimMode:z.string().nullish(),AvailableFromUtc:z.string().nullish(),AvailableUntilUtc:z.string().nullish()}).passthrough(),md=z.object({MinAbsenceSeconds:z.number().nullish(),Rewards:G.nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),fd=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(md).nullish(),ClaimCooldownSeconds:z.number().nullish(),ClaimWindowSeconds:z.number().nullish(),TrackPresenceOnRead:z.boolean().nullish(),Gate:Q.nullish(),AvailableFromUtc:z.string().nullish(),AvailableUntilUtc:z.string().nullish()}).passthrough(),gd=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(),Rd=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:G.nullish(),Limits:de.nullish(),PremiumLimitOverrides:z.array(gd).nullish(),Gate:Q.nullish(),AvailableFromUtc:z.string().nullish(),AvailableUntilUtc:z.string().nullish()}).passthrough(),yi=z.object({TierRewards:ad.nullish(),MilestoneRewardMultiplier:At.nullish(),DailyCalendars:z.record(z.string(),ud).nullish(),IdleAccruals:z.record(z.string(),hd).nullish(),Comebacks:z.record(z.string(),fd).nullish(),Claims:z.record(z.string(),Rd).nullish()}).passthrough(),Bo=z.object({RewardDefinitions:yi.nullish()}),qo=z.object({Rewards:od.nullish()}),$e={GetRewardDefinitions:"GetRewardDefinitions",GetUserRewardsState:"GetUserRewardsState",ClaimDailyReward:"ClaimDailyReward",CollectIdleAccrual:"CollectIdleAccrual",ClaimComebackReward:"ClaimComebackReward",ClaimReward:"ClaimReward",ClaimRewardsBatch:"ClaimRewardsBatch",GetMilestoneRewardMultiplier:"GetMilestoneRewardMultiplier"};var Fs=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=U(this.ctx.settings.titleID,"Reward",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getRewardDefinitions(e){return this.send($e.GetRewardDefinitions,e,Bo)}getUserRewardsState(e){return this.send($e.GetUserRewardsState,e,qo)}getMilestoneRewardMultiplier(e){return this.send($e.GetMilestoneRewardMultiplier,e,wo)}claimDailyReward(e){return this.send($e.ClaimDailyReward,e,ko)}collectIdleAccrual(e){return this.send($e.CollectIdleAccrual,e,Ao)}claimComebackReward(e){return this.send($e.ClaimComebackReward,e,Uo)}claimReward(e){return this.send($e.ClaimReward,e,Oo)}};var Vs=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=U(this.ctx.settings.titleID,"Quest",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getQuestDefinitions(e){return this.send(Le.GetQuestDefinitions,e,wt)}getUserQuestState(e){return this.send(Le.GetUserQuestState,e,Ki)}refreshQuestCycles(e){return this.send(Le.RefreshQuestCycles,e,Se)}claimQuestReward(e){return this.send(Le.ClaimQuestReward,e,qr)}claimQuestRewardsBatch(e){return this.send(Le.ClaimQuestRewardsBatch,e,Ji)}claimMilestoneReward(e){return this.send(Le.ClaimMilestoneReward,e,Er)}claimMilestoneRewardsBatch(e){return this.send(Le.ClaimMilestoneRewardsBatch,e,Yi)}claimGroupCompletionReward(e){return this.send(Le.ClaimGroupCompletionReward,e,$i)}addQuestProgress(e){return this.send(Le.AddQuestProgress,e,Zi)}};var Eo=z.object({}).passthrough().transform(a=>a);var yd=z.object({Order:z.number().nullish(),Type:z.string().nullish(),DurationSec:z.number().nullish(),BonusMultiplier:z.number().nullish()}).passthrough(),Cd=z.object({Schedule:z.array(yd).nullish(),RepeatCycle:z.boolean().nullish(),MaxCycles:z.number().nullish()}).passthrough(),Sd=z.object({IsActive:z.boolean().nullish(),CurrentPhaseEndUtc:l.nullish(),NextBonusStartUtc:l.nullish(),CurrentCycleIndex:z.number().nullish(),CurrentPhaseIndex:z.number().nullish(),ActiveBonusMultiplier:z.number().nullish()}).passthrough(),xd=z.object({Milestones:ne.nullish()}).passthrough(),Ci=z.object({DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Category:z.string().nullish(),Token:rt.nullish(),TokenSources:z.array(_e).nullish(),ClaimMode:z.string().nullish(),Milestones:z.record(z.string(),ye).nullish(),Presets:xd.nullish(),BonusWindow:Cd.nullish()}).passthrough(),Dd=z.object({ChainedEventID:z.string().nullish(),Order:z.number().nullish(),DurationSec:z.number().nullish(),Content:Ci.nullish(),ClaimGraceHours:z.number().nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),bd=z.object({TimedEventID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Schedule:pe.nullish(),Content:Ci.nullish(),Events:z.array(Dd).nullish(),Gate:Q.nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),vd=z.object({MaxConcurrentEvents:z.number().nullish()}).passthrough(),zd=z.object({Milestones:z.record(z.string(),Xe).nullish()}).passthrough(),_s=z.object({Definitions:z.record(z.string(),bd).nullish(),Settings:vd.nullish(),Presets:zd.nullish()}).passthrough(),Td=z.object({Type:St,TimedEventID:z.string(),CurrentChainedEventID:z.string().nullish(),Content:Ci.nullish(),Progress:Eo.nullish(),ComputedStartUtc:l.nullish(),ComputedEndUtc:l.nullish(),CanEarn:z.boolean().nullish(),CanClaim:z.boolean().nullish(),NextMilestone:ye.nullish(),BonusWindow:Sd.nullish(),CurrentCycleIndex:z.number().nullish(),CurrentEventOrder:z.number().nullish(),TotalEventsInChain:z.number().nullish()}).passthrough(),Lo=z.object({ActiveEvents:z.array(Td).nullish()}).passthrough(),Go=z.object({Tokens:z.record(z.string(),Eo).nullish()}),Si=z.object({Type:St.nullish(),LteID:z.string().nullish(),Resources:x.nullish()}),xi=z.object({Type:St.nullish(),LteID:z.string().nullish(),MilestoneID:z.string().nullish(),Rewards:x.nullish()}),Pd=z.object({Type:St.nullish(),LteID:z.string().nullish(),Resources:x.nullish()}),Di=z.array(re(xi)),No=z.array(re(Si)),jo=z.array(re(Pd)),we={GetActiveEvents:"GetActiveEvents",GrantTokens:"GrantTokens",SpendTokens:"SpendTokens",ClaimMilestone:"ClaimMilestone",GetDefinitions:"GetDefinitions",GetUserLteState:"GetUserLteState",ClaimMilestonesBatch:"ClaimMilestonesBatch",ClaimAllMilestones:"ClaimAllMilestones",SpendTokensBatch:"SpendTokensBatch",GrantTokensBatch:"GrantTokensBatch"};var Ws=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=U(this.ctx.settings.titleID,"TimedEvent",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getActiveEvents(e){return this.send(we.GetActiveEvents,e,Lo)}getDefinitions(e){return this.send(we.GetDefinitions,e,_s)}getUserLteState(e){return this.send(we.GetUserLteState,e,Go)}grantTokens(e){return this.send(we.GrantTokens,e,x)}spendTokens(e){return this.send(we.SpendTokens,e,Si)}claimMilestone(e){return this.send(we.ClaimMilestone,e,xi)}claimMilestonesBatch(e){return this.send(we.ClaimMilestonesBatch,e,Di)}claimAllMilestones(e){return this.send(we.ClaimAllMilestones,e,Di)}spendTokensBatch(e){return this.send(we.SpendTokensBatch,e,No)}grantTokensBatch(e){return this.send(we.GrantTokensBatch,e,jo)}};var Id=z.object({UserID:z.string(),Score:M.nullish(),Rank:z.number().nullish(),LastScoreUpdateUtc:l.nullish(),IpHash:z.string().nullish(),PublicProfile:Ce.nullish(),SeasonTierAtCycleEnd:z.number().nullish()}).passthrough(),bt=z.object({LeaderboardID:z.string(),CycleVersion:z.number().nullish(),TotalParticipants:M.nullish(),CycleEndUtc:l.nullish(),TopUsers:z.array(Id).nullish(),BracketID:z.string().nullish()}),Md=z.object({CycleKey:z.string().nullish(),CycleEndUtc:l.nullish(),ClaimDeadlineUtc:l.nullish(),MilestoneTokensEarned:M.nullish(),ClaimableMilestoneIDs:z.array(z.string()).nullish(),CycleIndex:z.number().nullish(),ChainedEventID:z.string().nullish()}).passthrough(),Qs=z.object({LeaderboardID:z.string(),CurrentScore:M.nullish(),LastKnownRank:z.number().nullish(),HasUnclaimedReward:z.boolean().nullish(),ScoreEarnedThisCycle:M.nullish(),MilestoneTokensEarned:M.nullish(),NextMilestone:ye.nullish(),HasUnclaimedMilestone:z.boolean().nullish(),ClaimableGraceCycles:z.array(Md).nullish()}),Hs=z.object({LeaderboardID:z.string(),NewScore:M,CycleVersion:z.number()}),Ks=z.object({ServerTimeUtc:l,LeaderboardID:z.string(),Rank:z.number().nullish(),Resources:x.nullish()}),$s=z.object({ServerTimeUtc:l,LeaderboardID:z.string(),MilestoneID:z.string(),Resources:x.nullish()}),Fo=z.array(re(bt)),Vo=z.array(re(Qs)),_o=z.array(re(Ks)),Wo=z.array(re($s)),Qo=z.array(re(Hs)),kd=z.object({LeaderboardID:z.string(),CycleReward:re(Ks).nullish(),Milestones:z.array(re($s)).nullish()}),Ho=z.array(kd),Ad=z.object({LeaderboardID:z.string(),Leaderboard:re(bt).nullish(),Progress:re(Qs).nullish()}),Ko=z.array(Ad),Ud=z.string(),$o=z.object({Rank:z.string().nullish(),Rewards:G.nullish(),SeasonTierRewards:wr.nullish()}).passthrough(),Od=z.object({RankRewards:z.array($o).nullish()}).passthrough(),wd=z.object({ChainedEventID:z.string().nullish(),Order:z.number().nullish(),DurationSec:z.number().nullish(),ClaimGraceHours:z.number().nullish()}).passthrough(),Bd=z.object({Milestones:ne.nullish(),RankRewards:ne.nullish()}).passthrough(),qd=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:Ud.nullish(),Schedule:pe.nullish(),ChainEvents:z.array(wd).nullish(),Gate:Q.nullish(),TopUsersLimit:z.number().nullish(),MinScoreToEnterTop:z.number().nullish(),BracketSize:z.number().nullish(),LinkedSeasonChainID:z.string().nullish(),RankRewards:z.array($o).nullish(),Milestones:z.record(z.string(),ye).nullish(),Presets:Bd.nullish(),MilestoneClaimMode:z.string().nullish(),MilestoneClaimGraceHours:z.number().nullish(),ScoreSources:z.array(_e).nullish()}).passthrough(),Ed=z.object({Milestones:z.record(z.string(),Xe).nullish(),RankRewards:z.record(z.string(),Od).nullish()}).passthrough(),Zs=z.object({Definitions:z.record(z.string(),qd).nullish(),Presets:Ed.nullish()}).passthrough(),fe={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 Js=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=U(this.ctx.settings.titleID,"Leaderboard",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(fe.GetDefinitions,e,Zs)}getLeaderboard(e){return this.send(fe.GetLeaderboard,e,bt)}getMyProgress(e){return this.send(fe.GetMyProgress,e,Qs)}submitScore(e){return this.send(fe.SubmitScore,e,Hs)}submitScoreFromSource(e){return this.send(fe.SubmitScoreFromSource,e,Hs)}claimCycleReward(e){return this.send(fe.ClaimCycleReward,e,Ks)}claimMilestone(e){return this.send(fe.ClaimMilestone,e,$s)}getFriendsLeaderboard(e){return this.send(fe.GetFriendsLeaderboard,e,bt)}getLeaderboardsBatch(e){return this.send(fe.GetLeaderboardsBatch,e,Fo)}getProgressBatch(e){return this.send(fe.GetProgressBatch,e,Vo)}claimCycleRewardsBatch(e){return this.send(fe.ClaimCycleRewardsBatch,e,_o)}claimMilestonesBatch(e){return this.send(fe.ClaimMilestonesBatch,e,Wo)}submitScoresBatch(e){return this.send(fe.SubmitScoresBatch,e,Qo)}claimAllRewardsBatch(e){return this.send(fe.ClaimAllRewardsBatch,e,Ho)}getOverviewBatch(e){return this.send(fe.GetOverviewBatch,e,Ko)}};var bi=z.object({}).passthrough().transform(a=>a),Zo=z.object({SeasonChainID:z.string(),CycleIndex:z.number().nullish(),Season:z.lazy(()=>ea).nullish(),ComputedStartUtc:l.nullish(),ComputedEndUtc:l.nullish(),SecondsRemaining:M.nullish(),UserState:bi.nullish(),NextTier:z.lazy(()=>Xo).nullish()}).passthrough(),Jo=z.object({SeasonChainID:z.string(),CurrentSeasonID:z.string().nullish(),AmountGranted:M.nullish(),NewStatusTokens:M.nullish(),OldTier:z.number().nullish(),NewTier:z.number(),TierUp:z.boolean().nullish()}),Yo=z.object({SeasonChainID:z.string(),CurrentSeasonID:z.string().nullish(),TierNumber:z.number(),Resources:x.nullish()});var Xo=z.object({Tier:z.number().nullish(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),RequiredTokens:M.nullish(),TierReachedReward:G.nullish()}).passthrough(),ea=z.object({SeasonID:z.string().nullish(),Order:z.number().nullish(),DurationSec:M.nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Tiers:z.array(Xo).nullish(),LinkedCollectionID:z.string().nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough();var Ld=z.object({SeasonChainID:z.string().nullish(),DisplayName:z.string().nullish(),Schedule:pe.nullish(),Seasons:z.array(ea).nullish(),GrantTokensAccessMode:z.string().nullish(),Gate:Q.nullish()}).passthrough(),Ys=z.object({Chains:z.record(z.string(),Ld).nullish()}).passthrough(),nt={GetDefinitions:"GetDefinitions",GetActiveSeason:"GetActiveSeason",GetUserState:"GetUserState",GrantStatusTokens:"GrantStatusTokens",ClaimTierReward:"ClaimTierReward"};var Xs=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=U(this.ctx.settings.titleID,"Season",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(nt.GetDefinitions,e,Ys)}getActiveSeason(e){return this.send(nt.GetActiveSeason,e,Zo)}getUserState(e){return this.send(nt.GetUserState,e,bi)}grantStatusTokens(e){return this.send(nt.GrantStatusTokens,e,Jo)}claimTierReward(e){return this.send(nt.ClaimTierReward,e,Yo)}};var Gd={Apple:"Apple",Google:"Google"},ta=z.object({}).passthrough().transform(a=>a),Nd=z.object({PremiumID:z.string().nullish(),PurchaseDate:z.string().nullish(),ExpirationDate:z.string().nullish(),TransactionID:z.string().nullish(),IsAutoRenewEnabled:z.boolean().nullish()}).passthrough(),jd=z.object({OptionID:z.string().nullish(),Name:z.string().nullish(),RequiredResources:K.nullish()}).passthrough(),Fd=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(),jd).nullish(),AppleProductID:z.string().nullish(),GoogleProductID:z.string().nullish(),Benefits:z.record(z.string(),z.string()).nullish()}).passthrough(),vi=z.object({Definitions:z.record(z.string(),Fd).nullish()}).passthrough(),sa=z.object({Premium:vi.nullish()}),ra=z.object({ServerTimeUtc:l.nullish(),Premium:ta.nullish()}),er=z.object({ServerTimeUtc:l.nullish(),Premium:ta.nullish(),Subscription:Nd.nullish(),Resources:x.nullish()}),ot={GetDefinitions:"GetDefinitions",GetUserState:"GetUserState",ActivateTrial:"ActivateTrial",PurchaseWithResources:"PurchaseWithResources",PurchaseRealMoney:"PurchaseRealMoney"};var tr=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=U(this.ctx.settings.titleID,"Premium",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(ot.GetDefinitions,e,sa)}getUserState(e){return this.send(ot.GetUserState,e,ra)}activateTrial(e){return this.send(ot.ActivateTrial,e,er)}purchaseItemOrCurrency(e){return this.send(ot.PurchaseWithResources,e,er)}purchaseRealMoney(e){return this.send(ot.PurchaseRealMoney,e,er)}};var sr=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=U(this.ctx.settings.titleID,"Character",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getCharacterDefinitions(e){return this.send(Te.GetCharacterDefinitions,e,Ds)}getUserCharacters(e){return this.send(Te.GetUserCharacters,e,vn)}unlockCharacter(e){return this.send(Te.UnlockCharacter,e,Xr)}upgradeStatLevel(e){return this.send(Te.UpgradeStatLevel,e,Jr)}upgradeCharacterLevel(e){return this.send(Te.UpgradeCharacterLevel,e,Yr)}equipItems(e){return this.send(Te.EquipItems,e,zn)}unequipItems(e){return this.send(Te.UnequipItems,e,Tn)}unequipAllCharacters(e){return this.send(Te.UnequipAllCharacters,e,Pn)}unlockCharactersBatch(e){return this.send(Te.UnlockCharactersBatch,e,In)}upgradeCharacterLevelsBatch(e){return this.send(Te.UpgradeCharacterLevelsBatch,e,Mn)}upgradeStatLevelsBatch(e){return this.send(Te.UpgradeStatLevelsBatch,e,kn)}};var rr=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=U(this.ctx.settings.titleID,"Match",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}createMatch(e){return this.send(je.CreateMatch,e,eo)}updateMatch(e){return this.send(je.UpdateMatch,e,to)}cancelMatch(e){return this.send(je.CancelMatch,e,so)}instantBattle(e){return this.send(je.InstantBattle,e,ro)}saveStrategy(e){return this.send(je.SaveStrategy,e,Se)}getMyMatches(e){return this.send(je.GetMyMatches,e,oi)}getAvailableMatches(e){return this.send(je.GetAvailableMatches,e,oi)}getDefinitions(e){return this.send(je.GetDefinitions,e,ao)}};var Vd={TradeUpRarity:"TradeUpRarity",TradeUpCollection:"TradeUpCollection"},ia=z.enum(["TradeUpRarity","TradeUpCollection"]),_d=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()}),na=z.object({ServerTimeUtc:l,Type:ia.nullish(),CraftID:z.string(),CraftedCount:z.number().nullish(),SelectedOptionID:z.string().nullish(),InputRarity:z.string().nullish(),OutputRarity:z.string().nullish(),Resources:x.nullish(),Results:z.array(_d).nullish()}),Wd=z.object({OptionID:z.string().nullish(),RequiredResources:K.nullish()}).passthrough(),Qd=z.object({CraftID:z.string().nullish(),Type:ia.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(),Wd).nullish()}).passthrough(),zi=z.object({Definitions:z.record(z.string(),Qd).nullish()}).passthrough(),oa=z.object({ServerTimeUtc:l.nullish(),CraftDefinitions:zi.nullish()}),ir={GetDefinitions:"GetDefinitions",Craft:"Craft"};var nr=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=U(this.ctx.settings.titleID,"Craft",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(ir.GetDefinitions,e,oa)}craft(e){return this.send(ir.Craft,e,na)}};var Hd={Pending:"Pending",Accepted:"Accepted",Declined:"Declined",Cancelled:"Cancelled",Expired:"Expired"},Kd=z.enum(["Pending","Accepted","Declined","Cancelled","Expired"]),aa=z.object({}).passthrough().transform(a=>a),or=z.object({CollectibleID:z.string(),Rarity:z.number().nullish(),IsSpecial:z.boolean().nullish(),IsDuplicate:z.boolean().nullish(),CollectionCurrencyConverted:z.number().nullish()}),la=z.object({GrantedCollectibles:z.array(or).nullish(),DuplicateCollectibles:z.array(or).nullish(),CollectionCurrencyEarned:M.nullish(),NewCollectionCurrencyBalance:M.nullish(),NewlyCompletedSetIDs:z.array(z.string()).nullish(),CollectionJustCompleted:z.boolean().nullish(),Resources:x.nullish(),TriggeredPity:z.array(z.unknown()).nullish()}),ua=z.object({GrantedCollectibles:z.array(or).nullish(),DuplicateCollectibles:z.array(or).nullish(),CollectionCurrencyEarned:M.nullish(),NewCollectionCurrencyBalance:M.nullish(),Resources:x.nullish(),TriggeredPity:z.array(z.unknown()).nullish()}),ca=z.object({GrantedCollectibleID:z.string().nullish(),NewlyCompletedSetID:z.string().nullish(),CollectionJustCompleted:z.boolean().nullish(),Resources:x.nullish()}),Ti=z.object({SetID:z.string(),Resources:x.nullish()}),pa=z.array(re(Ti)),da=z.object({Resources:x.nullish()}),$d=z.object({OfferID:z.string(),TitleID:z.string().nullish(),CollectionID:z.string().nullish(),SenderUserID:z.string().nullish(),SenderPublicData:Ce.nullish(),OfferedCollectibleID:z.string().nullish(),OfferedCollectibleIsSpecial:z.boolean().nullish(),ReceiverUserID:z.string().nullish(),RequestedCollectibleID:z.string().nullish(),RequestedCollectibleIsSpecial:z.boolean().nullish(),Status:Kd.nullish(),CreatedAtUtc:l.nullish(),ExpiresAtUtc:l.nullish(),RespondedAtUtc:l.nullish(),DeclineReason:z.string().nullish(),IsSpecialTradeEvent:z.boolean().nullish(),SpecialTradeEventID:z.string().nullish()}).passthrough(),ha=z.object({OfferID:z.string(),ExpiresAtUtc:l.nullish(),Resources:x.nullish()}),ma=z.object({OfferID:z.string(),Resources:x.nullish()}),fa=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()}),ga=z.object({OfferID:z.string(),Resources:x.nullish()}),Pi=z.object({Offers:z.array($d).nullish()}),Zd=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(),Jd=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(Zd).nullish(),SetCompletionReward:G.nullish()}).passthrough(),Yd=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(Jd).nullish(),GrandPrize:G.nullish()}).passthrough(),Ra=z.object({BonusRewardSlots:ne.nullish(),PityRules:ne.nullish()}).passthrough(),Xd=z.object({PackTypeID:z.string().nullish(),Cost:K.nullish(),BonusRewardSlots:z.array(mt).nullish(),PityRules:z.array(ft).nullish(),Presets:Ra.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(),eh=z.object({Rarity:z.number().nullish(),CollectionCurrencyGranted:z.number().nullish()}).passthrough(),th=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(mt).nullish(),PityRules:z.array(ft).nullish(),Presets:Ra.nullish(),Tier:z.number().nullish()}).passthrough(),sh=z.object({SpecialTradeEventID:z.string().nullish(),StartUtc:l.nullish(),EndUtc:l.nullish(),AllowedSpecialCollectibleIDs:z.array(z.string()).nullish(),SpecialTradeEventDailyTradeLimit:z.number().nullish()}).passthrough(),ar=z.object({Collections:z.record(z.string(),Yd).nullish(),PackTypes:z.record(z.string(),Xd).nullish(),CollectionChests:z.array(th).nullish(),DuplicateConversions:z.array(eh).nullish(),DailyTradeLimit:z.number().nullish(),CollectibleJokerCatalogID:z.string().nullish(),CollectibleJokerItemID:z.string().nullish(),SpecialTradeEvents:z.array(sh).nullish(),RewardPools:Gs.nullish()}).passthrough(),xe={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 lr=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=U(this.ctx.settings.titleID,"Collection",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(xe.GetDefinitions,e,ar)}getUserState(e){return this.send(xe.GetUserState,e,aa)}openPack(e){return this.send(xe.OpenPack,e,la)}openCollectionChest(e){return this.send(xe.OpenCollectionChest,e,ua)}useCollectibleJoker(e){return this.send(xe.UseCollectibleJoker,e,ca)}claimSetReward(e){return this.send(xe.ClaimSetReward,e,Ti)}claimSetRewardsBatch(e){return this.send(xe.ClaimSetRewardsBatch,e,pa)}claimGrandPrize(e){return this.send(xe.ClaimGrandPrize,e,da)}sendTradeOffer(e){return this.send(xe.SendTradeOffer,e,ha)}cancelTradeOffer(e){return this.send(xe.CancelTradeOffer,e,ma)}acceptTradeOffer(e){return this.send(xe.AcceptTradeOffer,e,fa)}declineTradeOffer(e){return this.send(xe.DeclineTradeOffer,e,ga)}getMyTradeOffers(e){return this.send(xe.GetMyTradeOffers,e,Pi)}getIncomingTradeOffers(e){return this.send(xe.GetIncomingTradeOffers,e,Pi)}};var rh=z.object({}).passthrough().transform(a=>a),ih={Forming:"Forming",Active:"Active",Completed:"Completed",Failed:"Failed",Expired:"Expired"},nh={Active:"Active",Left:"Left",Replaced:"Replaced"},oh=z.object({ObjectIndex:z.number().nullish(),ObjectCompletionRewardClaimed:z.boolean().nullish()}).passthrough(),ah=z.object({UserID:z.string().nullish(),PublicData:Ce.nullish(),BuildObjectsProgress:oh.nullish(),IsBot:z.boolean().nullish(),SpinsCount:z.number().nullish(),TokensSpent:z.number().nullish(),MemberStatus:z.string().nullish(),GrandPrizeClaimed:z.boolean().nullish(),JoinedAtUtc:l.nullish(),LeftAtUtc:l.nullish()}).passthrough(),lh=z.object({Index:z.number().nullish(),OwnerUserID:z.string().nullish(),CurrentProgress:z.number().nullish(),MaxProgress:z.number().nullish(),IsCompleted:z.boolean().nullish()}).passthrough(),uh=z.object({Objects:z.array(lh).nullish()}).passthrough(),ya=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(ah).nullish(),BuildObjectsState:uh.nullish(),Status:z.string().nullish(),CreatedAtUtc:l.nullish(),ExpiresAtUtc:l.nullish(),Version:z.number().nullish()}).passthrough(),Ca=z.object({CoopChainID:z.string()}).passthrough(),ch=z.string(),Sa=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(),ph=z.object({Index:z.number().nullish(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),MaxProgress:z.number().nullish(),CompletionReward:G.nullish()}).passthrough(),dh=z.object({Objects:z.array(ph).nullish(),SpinCost:K.nullish(),SpinnerTable:z.array(Sa).nullish()}).passthrough(),hh=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:ch.nullish(),PartnerCount:z.number().nullish(),MatchmakingTimeoutMinutes:z.number().nullish(),MemberGracePeriodMinutes:z.number().nullish(),BuildObjects:dh.nullish(),GrandPrize:G.nullish()}).passthrough(),mh=z.object({CoopChainID:z.string().nullish(),DisplayName:z.string().nullish(),Schedule:pe.nullish(),Events:z.array(hh).nullish(),Gate:Q.nullish()}).passthrough(),xa=z.object({ServerTimeUtc:l.nullish(),UserState:rh.nullish(),ActiveGroup:ya.nullish()}),Ii=z.object({ServerTimeUtc:l.nullish(),Group:ya.nullish(),SecondsRemaining:M.nullish()}),Da=z.object({ServerTimeUtc:l.nullish(),GroupID:z.string().nullish(),Resources:x.nullish(),ObjectIndex:z.number().nullish(),Sector:Sa.nullish(),ProgressDelta:z.number().nullish(),NewProgress:M.nullish(),MaxProgress:M.nullish(),ObjectCompleted:z.boolean().nullish(),AllObjectsCompleted:z.boolean().nullish()}),Mi=z.object({ServerTimeUtc:l.nullish(),GroupID:z.string().nullish(),RewardType:z.string().nullish(),Resources:x.nullish()}),ba=z.object({ServerTimeUtc:l.nullish(),GroupID:z.string().nullish(),Success:z.boolean().nullish()}),ur=z.object({Chains:z.record(z.string(),mh).nullish()}).passthrough(),Ne={GetDefinitions:"GetDefinitions",GetActiveEvent:"GetActiveEvent",GetUserState:"GetUserState",GetGroupState:"GetGroupState",JoinOrCreateGroup:"JoinOrCreateGroup",Spin:"Spin",ClaimObjectReward:"ClaimObjectReward",ClaimGrandPrize:"ClaimGrandPrize",LeaveGroup:"LeaveGroup"};var cr=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=U(this.ctx.settings.titleID,"CoopEvent",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(Ne.GetDefinitions,e,ur)}getActiveEvent(e){return this.send(Ne.GetActiveEvent,e,Ca)}getUserState(e){return this.send(Ne.GetUserState,e,xa)}getGroupState(e){return this.send(Ne.GetGroupState,e,Ii)}joinOrCreateGroup(e){return this.send(Ne.JoinOrCreateGroup,e,Ii)}spin(e){return this.send(Ne.Spin,e,Da)}claimObjectReward(e){return this.send(Ne.ClaimObjectReward,e,Mi)}claimGrandPrize(e){return this.send(Ne.ClaimGrandPrize,e,Mi)}leaveGroup(e){return this.send(Ne.LeaveGroup,e,ba)}};var fh={Active:"Active",Exhausted:"Exhausted",Expired:"Expired",Dismissed:"Dismissed"},gh={Locked:"Locked",Available:"Available",InProgress:"InProgress",Completed:"Completed",Hidden:"Hidden"},Rh=z.object({NodeID:z.string().nullish(),Status:z.string().nullish(),ExecutionCount:z.number().nullish(),UnlockedAtUtc:l.nullish(),CompletedAtUtc:l.nullish(),LastExecutedAtUtc:l.nullish(),NextAvailableAtUtc:l.nullish(),LastExecutionRefID:z.string().nullish()}).passthrough(),yh=z.object({TrackID:z.string().nullish(),CurrentValue:z.number().nullish(),LastUpdatedUtc:l.nullish()}).passthrough(),va=z.object({OfferID:z.string().nullish(),InstanceKey:z.string().nullish(),SourceOfferVersion:z.number().nullish(),Status:z.string().nullish(),ActivatedAtUtc:l.nullish(),ExhaustedAtUtc:l.nullish(),ExpiredAtUtc:l.nullish(),DismissedAtUtc:l.nullish(),ShowCount:z.number().nullish(),LastShownAtUtc:l.nullish(),Nodes:z.record(z.string(),Rh).nullish(),Tracks:z.record(z.string(),yh).nullish(),SelectedChoiceNodeID:z.string().nullish()}).passthrough(),Ch=z.object({SlotID:z.string().nullish(),QueueIndex:z.number().nullish(),CycleIndex:z.number().nullish(),ActiveOfferID:z.string().nullish(),ActiveOfferStartedAtUtc:l.nullish(),ActiveOfferExpiresAtUtc:l.nullish(),ActiveOffer:va.nullish(),NextCycleStartsAtUtc:l.nullish(),LastUpdatedUtc:l.nullish(),DismissSkipAvailableAtUtc:l.nullish(),LastDismissedAtUtc:l.nullish()}).passthrough(),Sh=z.object({TotalExecutions:z.number().nullish(),DailyExecutions:z.number().nullish(),DailyResetUtc:l.nullish()}).passthrough(),xh=z.object({TotalActivations:z.number().nullish(),TotalExhausted:z.number().nullish(),TotalExpired:z.number().nullish(),TotalDismissed:z.number().nullish(),TotalShows:z.number().nullish(),LastShownAtUtc:l.nullish(),LastActivatedAtUtc:l.nullish(),LastExhaustedAtUtc:l.nullish(),NodeCounts:z.record(z.string(),Sh).nullish()}).passthrough(),Dh=z.object({Slots:z.record(z.string(),Ch).nullish(),OfferHistory:z.record(z.string(),xh).nullish(),LastUpdatedUtc:l.nullish()}).passthrough();var bh=z.object({Order:z.number().nullish(),OfferID:z.string().nullish(),DurationSec:z.number().nullish(),DelayBeforeActivationSec:z.number().nullish()}).passthrough(),vh=z.object({SlotID:z.string().nullish(),Enabled:z.boolean().nullish(),SortOrder:z.number().nullish(),Queue:z.array(bh).nullish(),Schedule:pe.nullish(),Gate:Q.nullish(),AllowDismissSkip:z.boolean().nullish(),DismissSkipDelaySec:z.number().nullish()}).passthrough(),zh=z.object({StoreOfferID:z.string().nullish(),BillingProductID:z.string().nullish(),DirectCost:K.nullish(),UseExternalRewards:z.boolean().nullish()}).passthrough(),Th=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(),Ph=z.object({Purchase:zh.nullish(),RewardedVideo:Th.nullish()}).passthrough(),Ih=z.object({TrackID:z.string().nullish(),Operator:z.string().nullish(),Value:z.number().nullish()}).passthrough(),Mh=z.object({Milestones:ne.nullish()}).passthrough(),kh=z.object({TrackID:z.string().nullish(),Amount:z.number().nullish(),RespectBounds:z.boolean().nullish()}).passthrough(),Ah=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(),Uh=z.object({RequiredCompletedNodeIDs:z.array(z.string()).nullish(),RequiredAnyCompletedNodeIDs:z.array(z.string()).nullish(),RequiredTracks:z.array(Ih).nullish(),VisibleWhileLocked:z.boolean().nullish()}).passthrough(),Oh=z.object({NodeID:z.string().nullish(),SortOrder:z.number().nullish(),Type:z.string().nullish(),Action:Ph.nullish(),Grants:G.nullish(),TrackChanges:z.array(kh).nullish(),MilestonePoints:z.number().nullish(),UnlockRules:Uh.nullish(),NextNodeIDs:z.array(z.string()).nullish(),ChoiceGroupID:z.string().nullish(),Limits:de.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(),za=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(Oh).nullish(),Tracks:z.array(Ah).nullish(),Milestones:z.record(z.string(),ye).nullish(),Presets:Mh.nullish(),MilestoneClaimMode:z.string().nullish(),MilestoneToken:rt.nullish(),ExhaustedWhenAllTerminalNodesCompleted:z.boolean().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Metadata:z.record(z.string(),z.string()).nullish()}).passthrough(),wh=z.object({Milestones:z.record(z.string(),Xe).nullish()}).passthrough(),ki=z.object({Slots:z.record(z.string(),vh).nullish(),Offers:z.record(z.string(),za).nullish(),Presets:wh.nullish()}).passthrough(),Ta=z.object({DealOfferDefinitions:ki.nullish()}),Pa=z.object({DealOffers:Dh.nullish()}),Bh=z.object({EntityID:z.string().nullish(),TotalEarned:z.number().nullish(),ClaimedIDs:z.array(z.string()).nullish(),ReachedUnclaimedIDs:z.array(z.string()).nullish()}).passthrough(),qh=z.object({SlotID:z.string().nullish(),SortOrder:z.number().nullish(),QueueIndex:z.number().nullish(),CycleIndex:z.number().nullish(),OfferDef:za.nullish(),ActivationState:va.nullish(),IsNewActivation:z.boolean().nullish(),ComputedExpiresAtUtc:l.nullish(),Cost:K.nullish(),Milestone:Bh.nullish()}).passthrough(),Ia=z.object({Slots:z.array(qh).nullish()}),Ma=z.object({ServerTimeUtc:l.nullish(),SlotID:z.string().nullish(),NodeID:z.string().nullish(),NodeCompleted:z.boolean().nullish(),OfferExhausted:z.boolean().nullish(),Idempotent:z.boolean().nullish(),Resources:x.nullish()}),ka=z.object({ServerTimeUtc:l.nullish(),SlotID:z.string().nullish(),Resources:x.nullish()}),Aa=z.object({ServerTimeUtc:l.nullish(),SlotID:z.string().nullish(),Resources:x.nullish()}),Ua=z.object({ServerTimeUtc:l.nullish(),SlotID:z.string().nullish(),MilestoneID:z.string().nullish(),Resources:x.nullish()}),Oa=z.object({ServerTimeUtc:l.nullish(),SlotID:z.string().nullish(),ClaimedIDs:z.array(z.string()).nullish(),Rejected:z.record(z.string(),z.string()).nullish(),Resources:x.nullish()}),Fe={GetDefinition:"GetDefinition",GetUserState:"GetUserState",GetActiveDeals:"GetActiveDeals",DismissDeal:"DismissDeal",ExecuteNode:"ExecuteNode",RecordShow:"RecordShow",ClaimMilestone:"ClaimMilestone",ClaimMilestonesBatch:"ClaimMilestonesBatch"};var pr=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=U(this.ctx.settings.titleID,"DealOffer",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getDefinition(e){return this.send(Fe.GetDefinition,e,Ta)}getUserState(e){return this.send(Fe.GetUserState,e,Pa)}getActiveDeals(e){return this.send(Fe.GetActiveDeals,e,Ia)}dismissDeal(e){return this.send(Fe.DismissDeal,e,ka)}executeNode(e){return this.send(Fe.ExecuteNode,e,Ma)}recordShow(e){return this.send(Fe.RecordShow,e,Aa)}claimMilestone(e){return this.send(Fe.ClaimMilestone,e,Ua)}claimMilestonesBatch(e){return this.send(Fe.ClaimMilestonesBatch,e,Oa)}};var Eh=z.object({}).passthrough().transform(a=>a),Lh=z.object({FeatureKey:z.string().nullish(),IsEnabled:z.boolean().nullish(),Percent:z.number().nullish(),SourceCurrencyID:z.string().nullish(),TargetCurrencyID:z.string().nullish()}).passthrough(),Ai=z.object({IsEnabled:z.boolean().nullish(),ActivationReward:G.nullish(),InviteRewards:z.record(z.string(),ye).nullish(),SpendRewards:z.array(Lh).nullish()}).passthrough(),wa=z.object({ReferralDefinitions:Ai.nullish()}),Ba=z.object({Referral:Eh.nullish()}),qa=z.object({ReferralCode:z.string().nullish(),IsFirstActivation:z.boolean().nullish(),Resources:x.nullish()}),Ea=z.object({RewardID:z.string().nullish(),Resources:x.nullish()}),gt={GetDefinitions:"GetDefinitions",GetUserState:"GetUserState",ActivateReferralCode:"ActivateReferralCode",ClaimInviteReward:"ClaimInviteReward"};var dr=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=U(this.ctx.settings.titleID,"Referral",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(gt.GetDefinitions,e,wa)}getUserState(e){return this.send(gt.GetUserState,e,Ba)}activateReferralCode(e){return this.send(gt.ActivateReferralCode,e,qa)}claimInviteReward(e){return this.send(gt.ClaimInviteReward,e,Ea)}};var Gh={RequestSent:"RequestSent",Accepted:"Accepted",Declined:"Declined",Removed:"Removed"},Nh={Attack:"Attack",Raid:"Raid",FriendAdd:"FriendAdd"},jh=z.object({UserID:z.string(),PublicData:Ce.nullish()}),Fh=z.object({OwnerUserID:z.string().nullish(),ActorUserID:z.string().nullish(),ActorProfile:Ce.nullish(),Type:z.string().nullish(),CreatedAt:l.nullish(),OwnerImpact:x.nullish(),IsBlocked:z.boolean().nullish(),TargetObjectName:z.string().nullish()}).passthrough(),hr=z.object({Friends:z.array(jh).nullish()}),vt=z.object({TargetUserID:z.string().nullish(),Status:z.string().nullish()}),La=z.object({Events:z.array(Fh).nullish()}),Ve={GetFriendsList:"GetFriendsList",GetIncomingRequests:"GetIncomingRequests",GetRecommendedFriends:"GetRecommendedFriends",SendFriendRequest:"SendFriendRequest",AcceptFriendRequest:"AcceptFriendRequest",DeclineFriendRequest:"DeclineFriendRequest",RemoveFriend:"RemoveFriend",GetTimeline:"GetTimeline"};var mr=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=U(this.ctx.settings.titleID,"Social",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getFriendsList(e){return this.send(Ve.GetFriendsList,e,hr)}getIncomingRequests(e){return this.send(Ve.GetIncomingRequests,e,hr)}getRecommendedFriends(e){return this.send(Ve.GetRecommendedFriends,e,hr)}sendFriendRequest(e){return this.send(Ve.SendFriendRequest,e,vt)}acceptFriendRequest(e){return this.send(Ve.AcceptFriendRequest,e,vt)}declineFriendRequest(e){return this.send(Ve.DeclineFriendRequest,e,vt)}removeFriend(e){return this.send(Ve.RemoveFriend,e,vt)}getTimeline(e){return this.send(Ve.GetTimeline,e,La)}};var Vh={Replace:"Replace",Refresh:"Refresh",KeepBest:"KeepBest",Stack:"Stack"};var Rt=z.object({Target:z.string().nullish(),Operation:z.string().nullish(),Value:z.number().nullish()}).passthrough(),_h=z.object({BoostID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),ActivationCost:K.nullish(),Effect:Rt.nullish(),DurationSeconds:z.number().nullish(),Charges:z.number().nullish(),StackingPolicy:z.string().nullish(),MaxActiveInstances:z.number().nullish(),Tags:z.array(z.string()).nullish()}).passthrough(),Wh=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:pe.nullish(),Effects:z.array(Rt).nullish(),Gate:Q.nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),Qh=z.object({ChainedBoostID:z.string().nullish(),Order:z.number().nullish(),DurationSec:z.number().nullish(),Effects:z.array(Rt).nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),Hh=z.object({ChainID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Schedule:pe.nullish(),Phases:z.array(Qh).nullish(),Gate:Q.nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),Kh=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(_e).nullish(),Effects:z.array(Rt).nullish(),DurationSeconds:z.number().nullish(),Charges:z.number().nullish(),StackingPolicy:z.string().nullish(),MaxActiveInstances:z.number().nullish(),Gate:Q.nullish()}).passthrough(),$h=z.object({MaxAddPercent:z.number().nullish(),MaxMultiply:z.number().nullish(),MaxAddFlat:z.number().nullish()}).passthrough(),Zh=z.object({StackingCaps:z.record(z.string(),$h).nullish()}).passthrough(),fr=z.object({Definitions:z.record(z.string(),_h).nullish(),ScheduledBoosts:z.record(z.string(),Wh).nullish(),BoostChains:z.record(z.string(),Hh).nullish(),TriggeredBoosts:z.record(z.string(),Kh).nullish(),Settings:Zh.nullish()}).passthrough(),Ga=z.object({InstanceID:z.string(),BoostID:z.string(),ActivatedAtUtc:l.nullish(),ExpiresAtUtc:l.nullish(),RemainingCharges:z.number().nullish(),EffectSnapshot:Rt.nullish(),SourceType:z.string().nullish(),SourceRef:z.string().nullish()}).passthrough();z.object({Date:l.nullish(),DailyCount:z.number().nullish(),LastFiredUtc:l.nullish()}).passthrough();var Na=z.object({ServerTimeUtc:l.nullish(),Active:z.record(z.string(),Ga).nullish()}),ja=z.object({ServerTimeUtc:l.nullish(),BoostID:z.string().nullish(),StackingPolicy:z.string().nullish(),ActivatedBoost:Ga.nullish(),Resources:x.nullish()}),Jh={Scheduled:"Scheduled",Chain:"Chain"},Yh=z.object({Kind:z.string().nullish(),SourceID:z.string().nullish(),PhaseID:z.string().nullish(),CycleIndex:z.number().nullish(),PhaseOrder:z.number().nullish(),StartUtc:l.nullish(),EndUtc:l.nullish(),Effects:z.array(Rt).nullish(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),Fa=z.object({ServerTimeUtc:l.nullish(),Windows:z.array(Yh).nullish()}),at={GetDefinitions:"GetDefinitions",GetActive:"GetActive",GetActiveWindows:"GetActiveWindows",Activate:"Activate",CleanupExpired:"CleanupExpired"};var gr=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=U(this.ctx.settings.titleID,"TimedBoost",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(at.GetDefinitions,e,fr)}getActive(e){return this.send(at.GetActive,e,Na)}getActiveWindows(e){return this.send(at.GetActiveWindows,e,Fa)}activate(e){return this.send(at.Activate,e,ja)}cleanupExpired(e){return this.send(at.CleanupExpired,e,Se)}};var Rr=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=U(this.ctx.settings.titleID,"UserCustomData",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getUserCustomDataDefinitions(e){return this.send(Ge.GetUserCustomDataDefinitions,e,ms)}getMyUserCustomData(e){return this.send(Ge.GetMyUserCustomData,e,dn)}getPublicUserCustomDataOf(e){return this.send(Ge.GetPublicUserCustomDataOf,e,Qr)}setPrivateData(e){return this.send(Ge.SetPrivateData,e,Hr)}setPublicData(e){return this.send(Ge.SetPublicData,e,Hr)}deleteKey(e){return this.send(Ge.DeleteKey,e,Se)}batchSet(e){return this.send(Ge.BatchSet,e,hn)}batchDelete(e){return this.send(Ge.BatchDelete,e,mn)}batchGetPublicUserCustomDataOf(e){return this.send(Ge.BatchGetPublicUserCustomDataOf,e,fn)}};var Xh={Static:"Static",Runtime:"Runtime"},em={Public:"Public",Private:"Private"},tm=z.enum(["Client","Server","System"]),sm=z.enum(["String","Int","Bool","Json"]),rm=z.object({Value:z.string().nullish(),UpdatedAt:l.nullish(),Version:z.number().nullish(),LastWriter:tm.nullish(),ExpiresAt:l.nullish()}).passthrough(),Va=z.record(z.string(),rm),Ui=z.object({StaticVersion:z.number().nullish(),RuntimeVersion:z.number().nullish(),Static:Va.nullish(),Runtime:Va.nullish(),NotModified:z.boolean().nullish()}),im=z.object({KeyID:z.string(),Scope:z.enum(["Static","Runtime"]).nullish(),Bucket:z.enum(["Public","Private"]).nullish(),ValueType:sm.nullish(),MaxValueLengthBytes:z.number().nullish(),TtlSeconds:z.number().nullish(),DefaultValue:z.string().nullish(),Description:z.string().nullish()}).passthrough(),yr=z.object({Keys:z.record(z.string(),im).nullish(),DefaultMaxValueLengthBytes:z.number().nullish(),DefaultTtlSeconds:z.number().nullish(),MaxKeysPerBucket:z.number().nullish(),MaxTotalSizeBytes:z.number().nullish(),RejectUnregisteredKeys:z.boolean().nullish()}).passthrough(),zt={GetTitleCustomDataDefinitions:"GetTitleCustomDataDefinitions",GetPublicTitleData:"GetPublicTitleData",GetPublicTitleDataKeys:"GetPublicTitleDataKeys"};var Cr=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=U(this.ctx.settings.titleID,"TitleCustomData",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getTitleCustomDataDefinitions(e){return this.send(zt.GetTitleCustomDataDefinitions,e,yr)}getPublicTitleData(e){return this.send(zt.GetPublicTitleData,e,Ui)}getPublicTitleDataKeys(e){return this.send(zt.GetPublicTitleDataKeys,e,Ui)}};var nm={Fast:"Fast",Sequential:"Sequential"},om={Instant:"Instant",Timed:"Timed"},am={Hit:"Hit",Blocked:"Blocked"},lm=z.object({SlotIndex:z.number(),Level:z.number().nullish(),IsDamaged:z.boolean().nullish(),MaxLevelRewardClaimed:z.boolean().nullish()}).passthrough(),um=z.object({Symbol:z.union([z.string(),z.number()]).nullish(),OnOpenBonus:G.nullish(),BonusTag:z.string().nullish()}).passthrough();z.object({ElapsedSeconds:z.number().nullish(),Reward:G.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 _a=z.object({}).passthrough().transform(a=>a),Wa=z.object({Min:z.number().nullish(),Max:z.number().nullish()}).passthrough(),ve=z.object({Operation:x.nullish(),ScaleWithRollMultiplier:z.boolean().nullish()}).passthrough(),cm=z.object({Count:z.number().nullish(),Sides:z.number().nullish()}).passthrough(),pm=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(),dm=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:ce.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(),hm=z.object({CostMatrix:z.array(z.array(z.number())).nullish(),PerBoardGrowth:z.number().nullish(),EconomyScale:z.number().nullish(),ScaledResources:ce.nullish()}).passthrough(),Qa=z.object({SlotIndex:z.number().nullish(),Name:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),MaxLevel:z.number().nullish(),MaxLevelReward:G.nullish()}).passthrough(),mm=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(),fm=z.object({Tiles:z.record(z.string(),mm).nullish()}).passthrough(),gm=z.object({Weight:z.number().nullish(),Bonus:ve.nullish(),Tag:z.string().nullish()}).passthrough(),Rm=z.object({Weight:z.number().nullish(),Tag:z.string().nullish(),MinBonusCells:z.number().nullish(),MaxBonusCells:z.number().nullish(),BonusPool:z.array(gm).nullish(),GuaranteedBonus:ve.nullish(),IsJackpot:z.boolean().nullish(),JackpotFinalMultiplier:z.number().nullish(),JackpotSymbolDistribution:z.record(z.string(),z.number()).nullish()}).passthrough(),ym=z.object({Variants:z.array(Rm).nullish()}).passthrough(),Cm=z.object({Weight:z.number().nullish(),OutcomeID:z.string().nullish(),Reward:ve.nullish(),ForceAction:z.string().nullish(),SpecialModeID:z.string().nullish()}).passthrough(),Sm=z.object({Outcomes:z.array(Cm).nullish()}).passthrough(),Ha=z.object({PerAdMultiplierRange:Wa.nullish(),MaxAdViews:z.number().nullish(),AdCreditCost:z.number().nullish(),FormulaKind:z.string().nullish(),ApplyMultiplierOnEarlyClaim:z.boolean().nullish()}).passthrough(),xm=z.object({ElapsedSeconds:z.number().nullish(),Reward:ve.nullish()}).passthrough(),Dm=z.object({Tiers:z.array(xm).nullish(),BelowFirstTierReward:ve.nullish()}).passthrough(),bm=z.object({ChoiceID:z.string().nullish(),Mode:z.string().nullish(),Reward:ve.nullish(),DurationSeconds:z.number().nullish(),EntryCost:K.nullish(),Multipliers:Ha.nullish(),Gradation:Dm.nullish()}).passthrough(),vm=z.object({Choices:z.array(bm).nullish(),OfferExpireSeconds:z.number().nullish(),ClaimExpireSeconds:z.number().nullish()}).passthrough(),zm=z.object({Chance:z.number().nullish(),RequiredOutcome:z.string().nullish(),Reward:ve.nullish(),Tag:z.string().nullish()}).passthrough(),Tm=z.object({OnPassStart:ve.nullish(),OnTileLanding:z.record(z.string(),ve).nullish(),OnAttack:z.record(z.string(),ve).nullish(),OnRaid:z.record(z.string(),ve).nullish(),OnBuild:ve.nullish(),OnStageComplete:ve.nullish(),OnAttackBonusDrops:z.array(zm).nullish(),ChanceTablesByID:z.record(z.string(),Sm).nullish(),SpecialModesByID:z.record(z.string(),vm).nullish()}).passthrough(),Ka=z.object({BaseAttackReward:G.nullish(),BaseRaidReward:G.nullish(),MaxRollMultiplier:z.number().nullish(),MaxShields:z.number().nullish(),Buildings:z.array(Qa).nullish(),HeistGridBonusConfig:ym.nullish(),StageOperations:Tm.nullish(),TileLandingMultiplier:Wa.nullish(),EconomyOverride:hm.nullish()}).passthrough(),Pm=z.object({Name:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),BoardTemplateID:z.string().nullish(),Buildings:z.array(Qa).nullish(),StageTemplateID:z.string().nullish(),CostMatrixTemplateID:z.string().nullish(),UnitValue:z.number().nullish(),Override:Ka.nullish()}).passthrough(),Sr=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(),fm).nullish(),StageTemplatesByID:z.record(z.string(),Ka).nullish(),StagesByLevel:z.record(z.string(),Pm).nullish(),SoftCurrencyID:z.string().nullish(),ProceduralEconomy:dm.nullish(),Dice:cm.nullish(),Bots:pm.nullish()}).passthrough(),Im=z.object({IsActive:z.boolean().nullish(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),AnchorUtc:l.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(),ye).nullish(),GrandPrize:G.nullish()}).passthrough(),xr=z.object({Board:Sr.nullish(),CommunityChest:Im.nullish()}).passthrough(),Mm=z.object({TargetUserID:z.string().nullish(),IsBot:z.boolean().nullish(),PublicData:Ce.nullish(),TargetBuildingStates:z.array(lm).nullish(),TargetHasShield:z.boolean().nullish()}).passthrough(),km=z.object({ChoiceID:z.string().nullish(),Mode:z.string().nullish(),Reward:ve.nullish(),DurationSeconds:z.number().nullish(),EntryCost:K.nullish(),Multipliers:Ha.nullish()}).passthrough(),Am=z.object({ModeID:z.string().nullish(),Choices:z.array(km).nullish()}).passthrough(),Um=z.object({GroupID:z.string().nullish(),Delta:M.nullish(),NewProgress:M.nullish(),MaxProgress:M.nullish(),UnlockedMilestoneIDs:z.array(z.string()).nullish(),Completed:z.boolean().nullish()}).passthrough(),$a=z.object({UsedMultiplier:z.number().nullish(),Steps:z.number().nullish(),OldPosition:z.number().nullish(),NewPosition:z.number(),CyclesCompletedDelta:M.nullish(),LandedTileType:z.string().nullish(),Operation:x.nullish(),ActionRequired:z.string().nullish(),ActionData:Mm.nullish(),SpecialModeOffer:Am.nullish(),CommunityChestContribution:Um.nullish()}).passthrough(),Za=z.object({Outcome:z.string().nullish(),IsBotTarget:z.boolean().nullish(),BuildingIndexHit:z.number().nullish(),Operation:x.nullish(),DualResult:st.nullish()}).passthrough(),Oi=z.object({Status:z.string().nullish(),Outcome:z.string().nullish(),FoundSymbol:z.union([z.string(),z.number()]).nullish(),FoundBonus:G.nullish(),OpenedIndex:z.number().nullish(),AttemptsLeft:z.number().nullish(),RaidLayout:z.array(um).nullish(),HeistVariantTag:z.string().nullish(),IsJackpot:z.boolean().nullish(),Operation:x.nullish(),DualResult:st.nullish()}).passthrough(),Ja=z.object({BuiltIndex:z.number(),NewLevel:z.number().nullish(),StageComplete:z.boolean().nullish(),MaxLevelRewardClaimed:z.boolean().nullish(),Operation:x.nullish()}).passthrough(),Ya=z.object({Mode:z.union([z.string(),z.number()]).nullish(),Operation:x.nullish(),DurationSeconds:z.number().nullish(),StartedAtUtc:l.nullish(),ExpiresAtUtc:l.nullish()}).passthrough(),Xa=z.object({AdViewsUsed:z.number().nullish(),RolledMultiplier:z.number().nullish(),AccumulatedMultiplier:z.number().nullish(),RemainingAdViews:z.number().nullish()}).passthrough(),el=z.object({FinalMultiplier:z.number().nullish(),AdViewsUsed:z.number().nullish(),AccumulatedMultiplier:z.number().nullish(),IsEarlyClaim:z.boolean().nullish(),Operation:x.nullish()}).passthrough(),Om={Forming:"Forming",Active:"Active",Completed:"Completed",Failed:"Failed",Expired:"Expired"},tl=z.enum(["Forming","Active","Completed","Failed","Expired"]),wm={Active:"Active",Left:"Left",Replaced:"Replaced"},Bm=z.enum(["Active","Left","Replaced"]),qm=z.object({CurrentProgress:M.nullish(),MaxProgress:M.nullish()}).passthrough(),Em=z.object({UserID:z.string().nullish(),PublicData:Ce.nullish(),IsBot:z.boolean().nullish(),ContributionPoints:M.nullish(),ClaimedMilestoneIDs:z.array(z.string()).nullish(),GrandPrizeClaimed:z.boolean().nullish(),MemberStatus:Bm.nullish(),JoinedAtUtc:l.nullish(),LeftAtUtc:l.nullish()}).passthrough(),sl=z.object({GroupID:z.string().nullish(),TitleID:z.string().nullish(),RoundIndex:z.number().nullish(),Members:z.array(Em).nullish(),SharedProgress:qm.nullish(),Status:tl.nullish(),CreatedAtUtc:l.nullish(),ExpiresAtUtc:l.nullish(),Version:z.number().nullish()}).passthrough(),Lm=z.object({GroupID:z.string().nullish(),RoundIndex:z.number().nullish(),FinalStatus:tl.nullish(),GrandPrizeReceived:z.boolean().nullish(),FinishedAtUtc:l.nullish()}).passthrough(),Gm=z.object({ActiveGroupID:z.string().nullish(),ActiveRoundIndex:z.number().nullish(),History:z.array(Lm).nullish()}).passthrough(),rl=z.object({ServerTimeUtc:l.nullish(),UserState:Gm.nullish(),ActiveGroup:sl.nullish(),SecondsRemaining:M.nullish()}),il=z.object({ServerTimeUtc:l.nullish(),Group:sl.nullish(),SecondsRemaining:M.nullish()}),wi=z.object({ServerTimeUtc:l.nullish(),GroupID:z.string().nullish(),RewardType:z.string().nullish(),MilestoneID:z.string().nullish(),Resources:x.nullish()}),nl=z.object({ServerTimeUtc:l.nullish(),GroupID:z.string().nullish(),Success:z.boolean().nullish()}),me={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 Nm=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(),jm=z.object({ExperimentID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),IsEnabled:z.boolean().nullish(),Schedule:pe.nullish(),Gate:Q.nullish(),Variants:z.array(Nm).nullish(),Salt:z.string().nullish(),LayerID:z.string().nullish(),StickyAssignment:z.boolean().nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),ol=z.object({Experiments:z.record(z.string(),jm).nullish()}).passthrough();var Fm={Mesh:"Mesh",Host:"Host"},Bi=z.enum(["Mesh","Host"]),Vm={ServerRelay:"ServerRelay",P2P:"P2P"},qi=z.enum(["ServerRelay","P2P"]),_m={Public:"Public",Private:"Private"},Wm=z.enum(["Public","Private"]),Qm={Signal:"Signal",Chat:"Chat",PlayerJoined:"PlayerJoined",PlayerLeft:"PlayerLeft",HostChanged:"HostChanged",RoomClosed:"RoomClosed",MemberState:"MemberState"},Hm=z.enum(["Signal","Chat","PlayerJoined","PlayerLeft","HostChanged","RoomClosed","MemberState"]),al=z.object({Urls:z.string().nullish(),Username:z.string().nullish(),Credential:z.string().nullish()}).passthrough(),Km=z.object({Enabled:z.boolean().nullish()}).passthrough(),ll=z.object({SystemState:Km.nullish(),DefaultTopology:Bi.nullish(),AllowCreatorTopologyOverride:z.boolean().nullish(),DefaultChatMode:qi.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(al).nullish()}).passthrough(),$m=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(),Zm=z.object({RoomID:z.string().nullish(),Name:z.string().nullish(),HostUserID:z.string().nullish(),Topology:Bi.nullish(),ChatMode:qi.nullish(),MaxPlayers:z.number().nullish(),MemberCount:z.number().nullish(),CreatedAt:z.number().nullish()}).passthrough(),Jm=z.object({Seq:z.number().nullish(),Type:Hm.nullish(),FromUserID:z.string().nullish(),ToUserID:z.string().nullish(),Kind:z.string().nullish(),Payload:z.string().nullish(),Ts:z.number().nullish()}).passthrough(),Dr=z.object({RoomID:z.string().nullish(),Name:z.string().nullish(),HostUserID:z.string().nullish(),OwnerUserID:z.string().nullish(),Topology:Bi.nullish(),ChatMode:qi.nullish(),Visibility:Wm.nullish(),Status:z.string().nullish(),MaxPlayers:z.number().nullish(),Members:z.array($m).nullish(),IceServers:z.array(al).nullish(),Seq:z.number().nullish()}).passthrough(),Ei=z.object({Closed:z.boolean().nullish(),NewHostUserID:z.string().nullish()}).passthrough(),ul=z.object({Rooms:z.array(Zm).nullish(),Page:z.number().nullish(),PageSize:z.number().nullish(),HasMore:z.boolean().nullish()}).passthrough(),cl=z.object({Envelopes:z.array(Jm).nullish(),MaxSeq:z.number().nullish()}).passthrough(),br=z.object({Seq:z.number().nullish()}).passthrough(),Be={CreateRoom:"CreateRoom",JoinRoom:"JoinRoom",LeaveRoom:"LeaveRoom",ListRooms:"ListRooms",GetRoom:"GetRoom",CloseRoom:"CloseRoom",Poll:"Poll",SendSignal:"SendSignal",SendChat:"SendChat",SetMemberState:"SetMemberState"};var Li=z.object({TitleCustomData:yr.nullish(),Character:Ds.nullish(),Item:Bs.nullish(),Currency:xs.nullish(),Store:Es.nullish(),Lootbox:Ri.nullish(),Quest:wt.nullish(),TimedEvent:_s.nullish(),Leaderboard:Zs.nullish(),Season:Ys.nullish(),Reward:yi.nullish(),Collection:ar.nullish(),Craft:zi.nullish(),DealOffer:ki.nullish(),Premium:vi.nullish(),TimedBoost:fr.nullish(),CoopEvent:ur.nullish(),GameLoop:xr.nullish(),Match:li.nullish(),Experiment:ol.nullish(),Blockchain:ti.nullish(),Marketplace:di.nullish(),Multiplayer:ll.nullish(),UserCustomData:ms.nullish(),Referral:Ai.nullish()}).passthrough();var lt={GetTitlePublicConfiguration:"GetTitlePublicConfiguration",GetTitlePublicConfigurationExcept:"GetTitlePublicConfigurationExcept",GetCurrencyDefinitions:"GetCurrencyDefinitions",GetItemDefinitions:"GetItemDefinitions",GetServerTime:"GetServerTime"};var vr=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=U(this.ctx.settings.titleID,"Title",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getTitlePublicConfiguration(e){return this.send(lt.GetTitlePublicConfiguration,e,Li)}getTitlePublicConfigurationExcept(e){return this.send(lt.GetTitlePublicConfigurationExcept,e,Li)}getCurrencyDefinitions(e){return this.send(lt.GetCurrencyDefinitions,e,xs)}getItemDefinitions(e){return this.send(lt.GetItemDefinitions,e,Bs)}getServerTime(e){return this.send(lt.GetServerTime,e,Se)}};var zr=class{constructor(e){this.ctx=e;}ctx;send(e,t,s,r=false){let i=U(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(me.GetGameLoops,e,xr)}getBoardDefinition(e,t=false){return this.send(me.GetBoardDefinition,e,Sr,t)}getBoardDefinitionForLevel(e,t=false){return this.send(me.GetBoardDefinitionForLevel,e,Sr,t)}getUserBoardState(e){return this.send(me.GetUserBoardState,e,_a)}boardLoopRoll(e){return this.send(me.BoardLoopRoll,e,$a)}boardLoopAttack(e){return this.send(me.BoardLoopAttack,e,Za)}boardLoopRaid(e){return this.send(me.BoardLoopRaid,e,Oi)}boardLoopRaidFast(e){return this.send(me.BoardLoopRaidFast,e,Oi)}boardLoopBuild(e){return this.send(me.BoardLoopBuild,e,Ja)}boardSpecialChoose(e){return this.send(me.BoardSpecialChoose,e,Ya)}boardSpecialApplyMultiplier(e){return this.send(me.BoardSpecialApplyMultiplier,e,Xa)}boardSpecialClaim(e){return this.send(me.BoardSpecialClaim,e,el)}getCommunityChestState(e){return this.send(me.GetCommunityChestState,e,rl)}joinOrCreateCommunityChest(e){return this.send(me.JoinOrCreateCommunityChest,e,il)}claimCommunityChestMilestone(e){return this.send(me.ClaimCommunityChestMilestone,e,wi)}claimCommunityChestGrandPrize(e){return this.send(me.ClaimCommunityChestGrandPrize,e,wi)}leaveCommunityChest(e){return this.send(me.LeaveCommunityChest,e,nl)}};var Tt=z.lazy(()=>z.union([z.string(),z.number(),z.boolean(),z.null(),z.array(Tt),z.record(z.string(),Tt)]));var Xm={Live:"Live",Latest:"Latest",Specific:"Specific"},ef={Debug:"Debug",Info:"Info",Warning:"Warning",Error:"Error"},tf=z.enum(["Debug","Info","Warning","Error"]),sf={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"},rf=z.enum(["None","Disabled","NoActiveRevision","RevisionNotFound","InvalidFieldName","RateLimited","HandlerNotFound","HandlerDisabled","Timeout","StatementCountExceeded","StackOverflow","ApiCallLimitExceeded","JavaScriptException","ExecutionError"]),nf=z.object({Level:tf,Message:z.string().nullish(),Data:Tt.nullish()}),of=z.object({Error:rf,Message:z.string().nullish(),StackTrace:z.string().nullish()}),pl=z.object({FunctionName:z.string().nullish(),Revision:z.number().nullish(),FunctionResult:Tt.nullish(),FunctionResultTooLarge:z.boolean().nullish(),Logs:z.array(nf).nullish(),LogsTooLarge:z.boolean().nullish(),ExecutionTimeSeconds:z.number().nullish(),APIRequestsIssued:z.number().nullish(),Error:of.nullish()}),Gi={Execute:"Execute"};var Tr=class{constructor(e){this.ctx=e;}ctx;execute(e){let t=U(this.ctx.settings.titleID,"CloudCode",Gi.Execute,e.UserID??"");return this.ctx.transport.post(t,e,pl,{ticket:e.ClientSessionTicket})}};var Pr=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=U(this.ctx.settings.titleID,"Blockchain",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(Pe.GetDefinitions,e,jn)}getUserState(e){return this.send(Pe.GetUserState,e,Fn)}depositToken(e){return this.send(Pe.DepositToken,e,Vn)}depositNFT(e){return this.send(Pe.DepositNFT,e,_n)}requestTokenWithdrawal(e){return this.send(Pe.RequestTokenWithdrawal,e,Wn)}requestNFTWithdrawal(e){return this.send(Pe.RequestNFTWithdrawal,e,Qn)}getTransactionHistory(e){return this.send(Pe.GetTransactionHistory,e,Hn)}retryWithdrawal(e){return this.send(Pe.RetryWithdrawal,e,Kn)}confirmWithdrawal(e){return this.send(Pe.ConfirmWithdrawal,e,$n)}donateToDeveloper(e){return this.send(Pe.DonateToDeveloper,e,ii)}donateToUsersPool(e){return this.send(Pe.DonateToUsersPool,e,ii)}};var Ir=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=U(this.ctx.settings.titleID,"Marketplace",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(ie.GetDefinitions,e,uo)}getGroupedOffers(e){return this.send(ie.GetGroupedOffers,e,co)}getOffersByItem(e){return this.send(ie.GetOffersByItem,e,hi)}getOffer(e){return this.send(ie.GetOffer,e,po)}getBuyOrders(e){return this.send(ie.GetBuyOrders,e,hi)}getMyState(e){return this.send(ie.GetMyState,e,mo)}getHistory(e){return this.send(ie.GetHistory,e,fo)}createListing(e){return this.send(ie.CreateListing,e,Dt)}cancelListing(e){return this.send(ie.CancelListing,e,Ue)}buy(e){return this.send(ie.Buy,e,Ue)}marketBuy(e){return this.send(ie.MarketBuy,e,Ue)}marketSell(e){return this.send(ie.MarketSell,e,Ue)}createAuction(e){return this.send(ie.CreateAuction,e,Dt)}placeBid(e){return this.send(ie.PlaceBid,e,ho)}claimAuction(e){return this.send(ie.ClaimAuction,e,Ue)}createBuyOrder(e){return this.send(ie.CreateBuyOrder,e,Dt)}cancelBuyOrder(e){return this.send(ie.CancelBuyOrder,e,Ue)}fillBuyOrder(e){return this.send(ie.FillBuyOrder,e,Ue)}createDirectTrade(e){return this.send(ie.CreateDirectTrade,e,Dt)}respondDirectTrade(e){return this.send(ie.RespondDirectTrade,e,Ue)}cancelDirectTrade(e){return this.send(ie.CancelDirectTrade,e,Ue)}claimBack(e){return this.send(ie.ClaimBack,e,Ue)}};var Mr=class{constructor(e){this.ctx=e;}ctx;send(e,t,s){let r=U(this.ctx.settings.titleID,"Multiplayer",e,t.UserID??"");return this.ctx.transport.post(r,t,s,{ticket:t.ClientSessionTicket})}createRoom(e){return this.send(Be.CreateRoom,e,Dr)}joinRoom(e){return this.send(Be.JoinRoom,e,Dr)}leaveRoom(e){return this.send(Be.LeaveRoom,e,Ei)}listRooms(e){return this.send(Be.ListRooms,e,ul)}getRoom(e){return this.send(Be.GetRoom,e,Dr)}closeRoom(e){return this.send(Be.CloseRoom,e,Ei)}poll(e){return this.send(Be.Poll,e,cl)}sendSignal(e){return this.send(Be.SendSignal,e,br)}sendChat(e){return this.send(Be.SendChat,e,br)}setMemberState(e){return this.send(Be.SetMemberState,e,br)}};var kr=class{settings;emitter;platform;transport;fetchImpl;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;titleCustomData;title;gameLoop;cloudCode;blockchain;marketplace;multiplayer;constructor(e$1){this.settings=_i(e$1),this.emitter=new Ct,this.platform=e$1.platform??new e,this.fetchImpl=e$1.fetch??globalThis.fetch.bind(globalThis),this.transport=new Et({baseUrl:this.settings.baseUrl,emitter:this.emitter,fetchImpl:e$1.fetch,debugLogging:this.settings.debugLogging,throttleMs:e$1.throttleMs}),this.data=new jt(this.emitter),this.emitter.on("quest:systemProgress",t=>{this.data.user.patchQuestProgressUpdates(t);}),this.emitter.on("user:stateVersions",({epoch:t,versions:s})=>{this.userService.noteStateVersions(t,s);}),this.authStore=new Ft(this.platform.storage,this.settings.titleID),this.api={authentication:new As(this),user:new Us(this),currency:new Os(this),item:new qs(this),store:new Ls(this),lootbox:new js(this),reward:new Fs(this),quest:new Vs(this),timedEvent:new Ws(this),leaderboard:new Js(this),season:new Xs(this),premium:new tr(this),character:new sr(this),match:new rr(this),craft:new nr(this),collection:new lr(this),coopEvent:new cr(this),dealOffer:new pr(this),referral:new dr(this),social:new mr(this),timedBoost:new gr(this),userCustomData:new Rr(this),titleCustomData:new Cr(this),title:new vr(this),gameLoop:new zr(this),cloudCode:new Tr(this),blockchain:new Pr(this),marketplace:new Ir(this),multiplayer:new Mr(this)},this.userService=new Qt(this),this.auth=new Vt(this),this.currency=new Kt(this),this.item=new $t(this),this.store=new Zt(this),this.lootbox=new Jt(this),this.reward=new Yt(this),this.quest=new Xt(this),this.timedEvent=new es(this),this.leaderboard=new ts(this),this.season=new ss(this),this.premium=new rs(this),this.character=new is(this),this.match=new ns(this),this.craft=new os(this),this.collection=new as(this),this.coopEvent=new ls(this),this.dealOffer=new us(this),this.referral=new cs(this),this.social=new ps(this),this.timedBoost=new ds(this),this.userCustomData=new fs(this),this.titleCustomData=new gs(this),this.title=new Rs(this),this.gameLoop=new ys(this),this.cloudCode=new Cs(this),this.blockchain=new zs(this),this.marketplace=new Ms(this),this.multiplayer=new ks(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 Ar=class{ctx;constructor(e){this.ctx=new kr(e);}get titleID(){return this.ctx.settings.titleID}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 titleCustomData(){return this.ctx.titleCustomData}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 af(a){return new Ar(a)}var dl="idos_sso",hl="state",Ni="idos:sso:state",lf="https://idosgames.com/sso/";function uf(){if(typeof window>"u")return null;let a=window.location.hash?.startsWith("#")?window.location.hash.slice(1):window.location.hash;if(!a)return null;let e=new URLSearchParams(a),t=e.get(dl);if(!t)return null;let s=e.get(hl)??"",r=mf();return gf(e),ff(),r&&s!==r?null:{code:t,state:s}}function cf(a){if(typeof window>"u")return;let e=a.returnTo??pf(),t=df();hf(t);let s=new URL(a.ssoUrl??lf);s.searchParams.set("title",a.titleID),s.searchParams.set("return_to",e),s.searchParams.set("state",t),window.location.assign(s.toString());}function pf(){let{origin:a,pathname:e,search:t}=window.location;return `${a}${e}${t}`}function df(){let a=new Uint8Array(16);if(typeof crypto<"u"&&crypto.getRandomValues)crypto.getRandomValues(a);else for(let e=0;e<a.length;e++)a[e]=Math.floor(Math.random()*256);return Array.from(a,e=>e.toString(16).padStart(2,"0")).join("")}function hf(a){try{window.sessionStorage.setItem(Ni,a);}catch{}}function mf(){try{return window.sessionStorage.getItem(Ni)}catch{return null}}function ff(){try{window.sessionStorage.removeItem(Ni);}catch{}}function gf(a){a.delete(dl),a.delete(hl);let e=a.toString(),{pathname:t,search:s}=window.location;window.history.replaceState(null,"",`${t}${s}${e?`#${e}`:""}`);}var Rf={Banner:"Banner",Interstitial:"Interstitial",RewardedVideo:"RewardedVideo",RewardedInterstitial:"RewardedInterstitial",AppOpen:"AppOpen",Native:"Native"},ji=z.enum(["Banner","Interstitial","RewardedVideo","RewardedInterstitial","AppOpen","Native"]),yf={Top:"Top",Bottom:"Bottom",Left:"Left",Right:"Right"},Cf=z.enum(["Top","Bottom","Left","Right"]),Sf=z.object({PlacementID:z.string().nullish(),Type:ji.nullish(),Enabled:z.boolean().nullish(),CooldownSeconds:z.number().nullish(),DailyImpressionCap:z.number().nullish(),CreditsRewarded:z.number().nullish(),AllowedProviderIDs:z.array(z.string()).nullish()}).passthrough(),xf=z.object({DefaultCreditsPerView:z.number().nullish(),MaxCreditsBalance:z.number().nullish(),DailyCreditEarnCap:z.number().nullish(),DailyViewCap:z.number().nullish(),MinSecondsBetweenViews:z.number().nullish()}).passthrough(),Df=z.object({CooldownSeconds:z.number().nullish(),MinSessionTimeBeforeFirstSeconds:z.number().nullish(),DailyImpressionCap:z.number().nullish(),MaxImpressionsPerSession:z.number().nullish()}).passthrough(),bf=z.object({Enabled:z.boolean().nullish(),Position:Cf.nullish(),RefreshIntervalSeconds:z.number().nullish()}).passthrough(),vf=z.object({Enabled:z.boolean().nullish(),CooldownSeconds:z.number().nullish(),DailyImpressionCap:z.number().nullish()}).passthrough(),zf=z.object({MaxImpressionsPerHour:z.number().nullish(),MaxImpressionsPerDay:z.number().nullish(),MaxImpressionsPerSession:z.number().nullish()}).passthrough(),Tf=z.object({MinPremiumTier:z.number().nullish(),RequiredPremiumID:z.string().nullish(),DisableInterstitials:z.boolean().nullish(),DisableBanners:z.boolean().nullish(),DisableAppOpen:z.boolean().nullish()}).passthrough(),Pf=z.object({RequirePersonalizedAdsConsent:z.boolean().nullish(),RequireTrackingConsent:z.boolean().nullish(),CurrentPolicyVersion:z.string().nullish(),RegulatedRegions:z.array(z.string()).nullish()}).passthrough(),If=z.object({RequireServerSideVerification:z.boolean().nullish(),PendingRequestTtlSeconds:z.number().nullish(),MaxPendingRequestsPerUser:z.number().nullish(),ProviderPublicKeys:z.record(z.string(),z.string()).nullish()}).passthrough(),Mf=z.object({AndroidUnitID:z.string().nullish(),IosUnitID:z.string().nullish(),WebUnitID:z.string().nullish(),Type:ji.nullish()}).passthrough(),kf=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(),Mf).nullish()}).passthrough();z.object({Enabled:z.boolean().nullish(),Placements:z.record(z.string(),Sf).nullish(),Providers:z.record(z.string(),kf).nullish(),RewardedVideo:xf.nullish(),Interstitial:Df.nullish(),Banner:bf.nullish(),AppOpen:vf.nullish(),FrequencyCapping:zf.nullish(),PremiumAdReductions:z.array(Tf).nullish(),Consent:Pf.nullish(),Verification:If.nullish()}).passthrough();var Af=z.object({RewardedVideoCredit:z.number().nullish(),TotalEarned:z.number().nullish(),TotalSpent:z.number().nullish()}).passthrough(),Uf=z.object({PlacementID:z.string().nullish(),LastShownAt:l.nullish(),LastCompletedAt:l.nullish(),TotalImpressions:z.number().nullish(),TotalCompletions:z.number().nullish(),ConsecutiveFailures:z.number().nullish()}).passthrough(),Of=z.object({Date:l.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(),wf=z.object({SessionID:z.string().nullish(),SessionStartAt:l.nullish(),Impressions:z.number().nullish(),InterstitialImpressions:z.number().nullish(),RewardedCompletions:z.number().nullish()}).passthrough(),Bf=z.object({PersonalizedAdsConsent:z.boolean().nullish(),TrackingConsent:z.boolean().nullish(),PolicyVersion:z.string().nullish(),Region:z.string().nullish(),ConsentGivenAt:l.nullish(),ConsentRevokedAt:l.nullish()}).passthrough(),qf=z.object({RequestID:z.string().nullish(),PlacementID:z.string().nullish(),ProviderID:z.string().nullish(),Type:ji.nullish(),IssuedAt:l.nullish(),ExpiresAt:l.nullish(),CreditsToAward:z.number().nullish()}).passthrough(),Ef=z.object({InvalidSsvCount:z.number().nullish(),OrphanCompletions:z.number().nullish(),FastCompletions:z.number().nullish(),LastFlaggedAt:l.nullish()}).passthrough();z.object({Credits:Af.nullish(),Placements:z.record(z.string(),Uf).nullish(),Daily:Of.nullish(),Session:wf.nullish(),LastImpressionAt:l.nullish(),LastInterstitialAt:l.nullish(),LastRewardedAt:l.nullish(),LastAppOpenAt:l.nullish(),TotalImpressions:z.number().nullish(),TotalRewardedCompletions:z.number().nullish(),AdsDisabledUntil:l.nullish(),Consent:Bf.nullish(),PendingRequests:z.record(z.string(),qf).nullish(),FraudFlags:Ef.nullish(),UpdatedAt:l.nullish()}).passthrough();var Lf={Unread:"Unread",Read:"Read",Deleted:"Deleted",Expired:"Expired"},Gf=z.enum(["Unread","Read","Deleted","Expired"]),Nf={Admin:"Admin",Leaderboard:"Leaderboard",CoopEvent:"CoopEvent",Season:"Season",Collection:"Collection",MilestoneEvent:"MilestoneEvent",PlayerGift:"PlayerGift",Social:"Social",Compensation:"Compensation",Referral:"Referral",Quest:"Quest"},jf=z.enum(["Admin","Leaderboard","CoopEvent","Season","Collection","MilestoneEvent","PlayerGift","Social","Compensation","Referral","Quest"]),Ff={Active:"Active",Paused:"Paused",Cancelled:"Cancelled",Completed:"Completed"},Vf=z.enum(["Active","Paused","Cancelled","Completed"]),_f=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(),Wf=z.object({SegmentID:z.string().nullish(),DisplayName:z.string().nullish(),Gate:Q.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(),_f).nullish(),Segments:z.array(Wf).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:jf.nullish(),RelatedEntityID:z.string().nullish(),SenderUserID:z.string().nullish(),SenderPublicData:Ce.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:G.nullish(),Claimed:z.boolean().nullish(),ClaimedAtUtc:l.nullish(),Status:Gf.nullish(),CreatedAtUtc:l.nullish(),ExpiresAtUtc:l.nullish(),ReadAtUtc:l.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:G.nullish(),TargetSegmentID:z.string().nullish(),TargetUserIDs:z.array(z.string()).nullish(),StartsAtUtc:l.nullish(),ExpiresAtUtc:l.nullish(),CreatedAtUtc:l.nullish(),CreatedByAdminID:z.string().nullish(),AdminComment:z.string().nullish(),Status:Vf.nullish(),DeliveredCount:z.number().nullish(),ClaimedCount:z.number().nullish()}).passthrough();z.object({UnreadCount:z.number().nullish(),UnclaimedRewardCount:z.number().nullish(),LastFetchCursor:l.nullish(),ReceivedBroadcastIDs:z.array(z.string()).nullish(),ClaimedBroadcastIDs:z.array(z.string()).nullish(),DailyP2PGiftsSent:z.number().nullish(),DailyGiftsResetDate:l.nullish(),LastOpenedAtUtc:l.nullish(),TotalMessagesReceived:z.number().nullish(),TotalRewardsClaimed:z.number().nullish()}).passthrough();
2
- export{Rf as AdType,am as AttackOutcome,ue as AuthType,Ie as AuthenticationAction,yf as BannerPosition,Pe as BlockchainAction,hc as BlockchainNetworkType,qn as BlockchainOperationCategory,Dc as BlockchainTransactionStatus,Rc as BlockchainTransactionType,Qc as BodyPart,Jh as BoostWindowKind,Ff as BroadcastStatus,Te as CharacterAction,Gi as CloudCodeAction,sf as CloudCodeErrorCode,ef as CloudCodeLogLevel,Xm as CloudCodeRevisionSelection,xe as CollectionAction,pp as CommissionSink,wm as CommunityChestMemberStatus,Om as CommunityChestStatus,_u as ConversionRateMode,Ne as CoopEventAction,ih as CoopGroupStatus,nh as CoopMemberStatus,ir as CraftAction,Vd as CraftType,Ss as CurrencyAction,Vu as CurrencyStatus,qe as CurrencyType,Qe as CustomDataBucket,Ou as CustomDataValueType,Mu as CustomDataWriter,Vi as DEFAULT_BASE_URL,gh as DealNodeRuntimeStatus,Fe as DealOfferAction,fh as DealOfferActivationStatus,Qm as EnvelopeType,bl as EventTokenType,Up as FodderSelectionMode,kp as FodderValuationMode,Gh as FriendActionStatus,me as GameLoopAction,Ar as IDosGamesClient,ws as ItemAction,yc as KycStatus,Sc as KycTier,fe as LeaderboardAction,Ns as LootboxAction,Nf as MailboxMessageSource,Lf as MailboxMessageStatus,Is as MarketGoodsType,cp as MarketOfferStatus,up as MarketOfferType,ie as MarketplaceAction,je as MatchAction,Hc as MatchStatus,Be as MultiplayerAction,Vm as MultiplayerChatMode,Fm as MultiplayerTopology,ot as PremiumAction,Le as QuestAction,Fl as QuestObjectiveSource,_l as QuestPrerequisiteMode,Gl as QuestStatus,nm as RaidMode,gt as ReferralAction,Dl as ResourceEntryType,$e as RewardAction,_m as RoomVisibility,vl as ScheduleMode,nt as SeasonAction,Ve as SocialAction,om as SpecialChoiceMode,ht as StoreAction,Gd as StoreType,at as TimedBoostAction,Vh as TimedBoostStackingPolicy,we as TimedEventAction,Nh as TimelineEventType,lt as TitleAction,zt as TitleCustomDataAction,em as TitleDataBucket,Xh as TitleDataScope,Hd as TradeOfferStatus,bc as TransactionDirection,Ct as TypedEmitter,Oe as UserAction,Ge as UserCustomDataAction,fc as WalletLinkType,cf as beginSsoRedirect,af as createIDosGamesClient,xl as isFail,Sl as isOk,bs as normalizeBlockchainCategory,uf as readSsoCodeFromUrl};
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 Yt from'decimal.js';var Ot=class{listeners=new Map;on(e,t){let i=this.listeners.get(e);return i||(i=new Set,this.listeners.set(e,i)),i.add(t),()=>{this.off(e,t);}}once(e,t){let i=this.on(e,r=>{i(),t(r);});return i}off(e,t){let i=this.listeners.get(e);i&&(i.delete(t),i.size===0&&this.listeners.delete(e));}emit(e,t){let i=this.listeners.get(e);if(i)for(let r of [...i])r(t);}removeAllListeners(){this.listeners.clear();}};function fu(){let a=new Map;return {get:e=>a.get(e)??null,set:(e,t)=>{a.set(e,t);},remove:e=>{a.delete(e);}}}function gn(){return gu()??fu()}function gu(){try{let a=globalThis.localStorage;if(!a)return null;let e="__idos_probe__";return a.setItem(e,"1"),a.removeItem(e),{get:t=>{try{return a.getItem(t)}catch{return null}},set:(t,i)=>{try{a.setItem(t,i);}catch{try{a.removeItem(t);}catch{}}},remove:t=>{try{a.removeItem(t);}catch{}}}}catch{return null}}var Rn="https://api.idosgames.com";function yn(a){return {titleID:a.titleID,titleTemplateID:a.titleTemplateID??"default",buildKey:a.buildKey??"",baseUrl:(a.baseUrl??Rn).replace(/\/+$/,""),devBuild:a.devBuild??false,debugLogging:a.debugLogging??false,configStorage:a.configStorage??gn(),locale:a.locale??Ru()}}function Ru(){try{return globalThis.navigator?.language??""}catch{return ""}}var je={Virtual:"Virtual",Crypto:"Crypto"},St=z.enum(["Virtual","Crypto"]),jt={Item:"Item",VirtualCurrency:"VirtualCurrency",CryptoCurrency:"CryptoCurrency",RewardedVideoCredit:"RewardedVideoCredit",Purchase:"Purchase"},Ft=z.enum(["Item","VirtualCurrency","CryptoCurrency","RewardedVideoCredit","Purchase"]),He={Unknown:"Unknown",Web:"Web",Android:"Android",Ios:"Ios"},Vt=z.enum(["Unknown","Web","Android","Ios"]),yu={GooglePlay:"GooglePlay",AppleAppStore:"AppleAppStore"},_t=z.enum(["GooglePlay","AppleAppStore"]),Cu={TimedEvent:"TimedEvent",Quest:"Quest",Leaderboard:"Leaderboard",CoopEvent:"CoopEvent",Season:"Season"},Wt=z.enum(["TimedEvent","Quest","Leaderboard","CoopEvent","Season"]),Su={Cyclic:"Cyclic",Scheduled:"Scheduled",Chained:"Chained"},At=z.enum(["Cyclic","Scheduled","Chained"]),me={None:"None",Device:"Device",Email:"Email",iDosGames:"iDosGames",Facebook:"Facebook",Google:"Google",GooglePlay:"GooglePlay",Telegram:"Telegram",Wallet:"Wallet"};function Sn(){let a=globalThis,e=a.Capacitor?.getPlatform?.();if(e)return Cn(e);let t=a.cordova?.platformId;return t?Cn(t):a.navigator?.userAgent??""?He.Web:He.Unknown}function Cn(a){let e=a.toLowerCase();return e==="android"?He.Android:e==="ios"?He.Ios:e==="web"?He.Web:He.Unknown}function xn(a){return {ok:true,data:a}}function n(a,e){return {ok:false,reason:a,error:e}}function xu(a){return a.ok}function Du(a){return !a.ok}var w=z.union([z.number(),z.string()]).transform((a,e)=>{let t=typeof a=="string"?Number(a):a;return Number.isFinite(t)?Math.trunc(t):(e.addIssue({code:z.ZodIssueCode.custom,message:`Invalid integer amount: ${String(a)}`}),z.NEVER)}),q=z.union([z.number(),z.string()]).transform((a,e)=>{let t=typeof a=="number"?String(a):a.trim();return t===""||Number.isNaN(Number(t))?(e.addIssue({code:z.ZodIssueCode.custom,message:`Invalid decimal: ${String(a)}`}),z.NEVER):t}),u=z.string();var ts=z.object({Type:Ft.nullish(),CurrencyID:z.string().nullish(),Amount:w.nullish(),CatalogID:z.string().nullish(),ItemID:z.string().nullish(),ProductID:z.string().nullish()}),bu=z.object({Type:Wt.nullish(),EntityID:z.string()}),zu=z.object({Address:bu.nullish(),Amount:w.nullish(),Source:z.string().nullish()}),fe=z.object({Entries:z.array(ts).nullish(),EventTokens:z.array(zu).nullish()}),Dn=z.object({MinPremiumTier:z.number().nullish(),RequiredPremiumID:z.string().nullish(),Resources:fe.nullish()}),L=z.object({Standard:fe.nullish(),PremiumBonuses:z.array(z.unknown()).nullish(),PremiumTiers:z.array(Dn).nullish()}),Ut=z.object({Standard:fe.nullish(),PremiumDiscounts:z.array(z.unknown()).nullish(),PremiumTiers:z.array(Dn).nullish()}),b=z.object({Grant:L.nullish(),Consume:Ut.nullish()}),dt=z.object({FromUserID:z.string().nullish(),ToUserID:z.string().nullish(),FromResult:b.nullish(),ToResult:b.nullish()});z.object({FromUserID:z.string().nullish(),ToUserID:z.string().nullish(),Transferred:fe.nullish()});var Tu=z.object({ExperimentID:z.string().nullish(),Variants:z.array(z.string()).nullish()}).passthrough(),vu={Completed:"Completed",Started:"Started",StepReached:"StepReached"},Pu=z.object({FlowIDs:z.array(z.string()).nullish(),Mode:z.enum(["Completed","Started","StepReached"]).nullish(),StepID:z.string().nullish(),Negate:z.boolean().nullish(),SkippedCountsAsCompleted:z.boolean().nullish()}).passthrough(),_=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:Tu.nullish(),Tutorial:Pu.nullish(),Platforms:z.array(Vt).nullish()}).passthrough();var ge=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 Iu=z.object({OffsetSecondsFromParentStart:z.number().nullish(),DurationSeconds:z.number().nullish(),AllowEarningAfterEnd:z.boolean().nullish(),ClaimGraceHours:z.number().nullish()}).passthrough(),ku=z.object({StartUtc:z.string().nullish(),EndUtc:z.string().nullish(),AllowEarningAfterEnd:z.boolean().nullish(),ClaimGraceHours:z.number().nullish()}).passthrough(),Mu=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 wu=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 Ue=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:ge.nullish()}).passthrough(),pe=z.object({Mode:z.string().nullish(),IsActive:z.boolean().nullish(),Scheduled:ku.nullish(),Chain:Mu.nullish(),Cyclic:wu.nullish(),ActivationTriggers:z.array(Ue).nullish(),Relative:Iu.nullish()}).passthrough();var Ou=z.object({SeasonChainID:z.string().nullish(),MinSeasonTier:z.number().nullish(),Rewards:L.nullish()}).passthrough(),Au=z.object({SeasonChainID:z.string().nullish(),MinSeasonTier:z.number().nullish(),Multiplier:z.number().nullish()}).passthrough(),is=z.object({Bundles:z.array(Ou).nullish(),Multipliers:z.array(Au).nullish()}).passthrough();var Uu=z.enum(["BoardStageLevel","BoardRank","BoardCyclesCompleted","CharacterLevel","SeasonTier","EventTokenTotalEarned","VirtualCurrencyBalance","PlayerLevel"]);var Bu=z.enum(["Tiered","Linear"]);var Lu=z.enum(["Step","Linear"]),qu=z.object({AtProgress:z.number().nullish(),Multiplier:z.number().nullish()}).passthrough(),Qt=z.object({Source:Uu.nullish(),SourceKey:z.string().nullish(),CurveType:Bu.nullish(),Tiers:z.array(qu).nullish(),TierMode:Lu.nullish(),BaseMultiplier:z.number().nullish(),PerUnit:z.number().nullish(),Anchor:z.number().nullish(),MinMultiplier:z.number().nullish(),MaxMultiplier:z.number().nullish(),IncludeRewards:fe.nullish(),ExcludeRewards:fe.nullish()}).passthrough(),De=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:is.nullish(),SortOrder:z.number().nullish(),IsFeatured:z.boolean().nullish()}).passthrough(),at=z.object({Milestones:z.record(z.string(),De).nullish()}).passthrough();var X=z.object({PresetID:z.string().nullish(),Remove:z.array(z.string()).nullish()}).passthrough();var Eu=z.object({TargetCurrencyID:z.string().nullish(),Rate:z.number().nullish(),MaxConvertAmount:z.number().nullish()}).passthrough(),ht=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:Eu.nullish()}).passthrough();var re=a=>z.object({Id:z.string(),Success:z.boolean(),Error:z.string().nullish(),Data:a.nullish()}),$e=a=>z.object({ServerTimeUtc:u,Items:z.array(re(a)),Resources:b.nullish()});var Gu={Active:"Active",Completed:"Completed",Claimed:"Claimed",Expired:"Expired"},bn=z.enum(["Active","Completed","Claimed","Expired"]),Nu=z.object({}).passthrough().transform(a=>a),ju=z.object({CycleID:z.string(),InstanceKey:z.string().nullish(),PhaseID:z.string().nullish(),CycleIndex:z.number().nullish(),CycleStartUtc:u.nullish(),CycleEndUtc:u.nullish(),PointsTotalEarned:w.nullish(),PointsCurrent:w.nullish(),ClaimedPointMilestoneIDs:z.array(z.string()).nullish()}),rs=z.object({QuestID:z.string(),CycleID:z.string().nullish(),ObjectiveID:z.string().nullish(),NewValue:w.nullish(),ObjectiveCompleted:z.boolean().nullish(),Status:bn}),zn=z.object({State:Nu.nullish(),PointsTracks:z.record(z.string(),ju).nullish()}),ss=z.object({ServerTimeUtc:u,QuestID:z.string(),CycleID:z.string().nullish(),NewStatus:bn.nullish(),Resources:b.nullish()}),ns=z.object({ServerTimeUtc:u,CycleID:z.string(),MilestoneID:z.string(),PointsTotalEarned:w.nullish(),Resources:b.nullish()}),Tn=z.object({ServerTimeUtc:u,CycleID:z.string(),GroupCompletionID:z.string(),GroupID:z.string().nullish(),CompletedGroupQuests:z.number().nullish(),RequiredGroupQuests:z.number().nullish(),Resources:b.nullish()}),vn=z.object({MetricID:z.string(),Updates:z.array(rs).nullish()}),Pn=z.array(re(ss)),In=z.array(re(ns)),Fu={ClientApi:"ClientApi",ServerApi:"ServerApi",SystemEvent:"SystemEvent"},Vu=z.enum(["ClientApi","ServerApi","SystemEvent"]),_u={BlockProgressAndClaim:"BlockProgressAndClaim",BlockClaimOnly:"BlockClaimOnly"},Wu=z.enum(["BlockProgressAndClaim","BlockClaimOnly"]),kn=z.object({ObjectiveID:z.string().nullish(),Source:Vu.nullish(),MaxProgressPerCall:z.number().nullish(),MetricID:z.string().nullish(),Triggers:z.array(Ue).nullish(),TargetValue:z.number().nullish(),AggregationMethod:z.string().nullish()}).passthrough(),os=z.object({Milestones:X.nullish(),Linking:X.nullish(),Availability:X.nullish(),Reward:X.nullish(),Objectives:X.nullish()}).passthrough(),Qu=z.object({DisplayName:z.string().nullish(),Description:z.string().nullish(),SortOrder:z.number().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),Mn=z.object({CycleIDs:z.array(z.string()).nullish(),GroupID:z.string().nullish(),PhaseIDs:z.array(z.string()).nullish(),RequiredQuestIDs:z.array(z.string()).nullish(),PrerequisiteMode:Wu.nullish()}).passthrough(),wn=z.object({Schedule:pe.nullish(),AccrueProgressWhenLocked:z.boolean().nullish(),Gate:_.nullish(),Limits:ge.nullish()}).passthrough(),On=z.object({Grant:L.nullish(),PointsReward:z.number().nullish()}).passthrough(),Ku=z.object({QuestID:z.string().nullish(),Identity:Qu.nullish(),Linking:Mn.nullish(),Availability:wn.nullish(),Objectives:z.record(z.string(),kn).nullish(),Reward:On.nullish(),Presets:os.nullish()}).passthrough(),Hu=z.object({CompletionID:z.string().nullish(),GroupID:z.string().nullish(),RequiredCompletedQuests:z.number().nullish(),Gate:_.nullish(),Reward:L.nullish(),PointsReward:z.number().nullish()}).passthrough(),$u=z.object({PhaseID:z.string().nullish(),Order:z.number().nullish(),DurationSec:z.number().nullish(),ClaimGraceHours:z.number().nullish(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),CustomParams:z.record(z.string(),z.string()).nullish(),Gate:_.nullish(),Milestones:z.record(z.string(),De).nullish(),Presets:os.nullish(),PointsToken:ht.nullish()}).passthrough(),Zu=z.object({Milestones:z.record(z.string(),at).nullish(),Linking:z.record(z.string(),Mn).nullish(),Availability:z.record(z.string(),wn).nullish(),Reward:z.record(z.string(),On).nullish(),Objectives:z.record(z.string(),z.record(z.string(),kn)).nullish()}).passthrough(),Ju=z.object({CycleID:z.string().nullish(),DisplayName:z.string().nullish(),Schedule:pe.nullish(),Milestones:z.record(z.string(),De).nullish(),Gate:_.nullish(),PointsToken:ht.nullish(),GroupCompletions:z.record(z.string(),Hu).nullish(),Phases:z.record(z.string(),$u).nullish(),Presets:os.nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),Ht=z.object({Cycles:z.record(z.string(),Ju).nullish(),Quests:z.record(z.string(),Ku).nullish(),Presets:Zu.nullish()}).passthrough(),Ve={GetQuestDefinitions:"GetQuestDefinitions",GetUserQuestState:"GetUserQuestState",RefreshQuestCycles:"RefreshQuestCycles",ClaimQuestReward:"ClaimQuestReward",ClaimMilestoneReward:"ClaimMilestoneReward",AddQuestProgress:"AddQuestProgress",ClaimQuestRewardsBatch:"ClaimQuestRewardsBatch",ClaimMilestoneRewardsBatch:"ClaimMilestoneRewardsBatch",ClaimGroupCompletionReward:"ClaimGroupCompletionReward"};var Yu={ClientAck:"ClientAck",SystemEvent:"SystemEvent",Auto:"Auto",Composite:"Composite"},Xu=z.enum(["ClientAck","SystemEvent","Auto","Composite"]),ec={Never:"Never",OnRequest:"OnRequest",Always:"Always"},tc=z.enum(["Never","OnRequest","Always"]),ic={NotStarted:"NotStarted",InProgress:"InProgress",Completed:"Completed",Skipped:"Skipped",Expired:"Expired"},rc=z.enum(["NotStarted","InProgress","Completed","Skipped","Expired"]),sc={GameLoop:"GameLoop"},nc={Raid:"Raid",Attack:"Attack"},oc=z.object({Title:z.string().nullish(),TitleKey:z.string().nullish(),Body:z.string().nullish(),BodyKey:z.string().nullish(),AnchorID:z.string().nullish(),HighlightTarget:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),UiHint:z.record(z.string(),z.string()).nullish()}).passthrough(),ac=z.object({Mode:Xu.nullish(),Triggers:z.array(Ue).nullish(),TargetValue:z.number().nullish(),RequireAllTriggers:z.boolean().nullish()}).passthrough(),lc=z.object({Grant:L.nullish(),UnlockFeatures:z.array(z.string()).nullish()}).passthrough(),uc=z.object({TileType:z.string().nullish(),TileIndex:z.number().nullish(),ChanceOutcomeID:z.string().nullish(),RandomActionType:z.enum(["Raid","Attack"]).nullish()}).passthrough(),cc=z.object({Module:z.enum(["GameLoop"]).nullish(),Board:uc.nullish(),MaxUses:z.number().nullish()}).passthrough(),pc=z.object({Skippable:z.boolean().nullish(),TimeoutSeconds:z.number().nullish()}).passthrough(),as=z.object({StepID:z.string().nullish(),Order:z.number().nullish(),Identity:oc.nullish(),Completion:ac.nullish(),Effects:lc.nullish(),Script:cc.nullish(),Policy:pc.nullish()}).passthrough(),dc=z.object({DisplayName:z.string().nullish(),DisplayNameKey:z.string().nullish(),Description:z.string().nullish(),DescriptionKey:z.string().nullish(),SortOrder:z.number().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),An=z.object({Schedule:pe.nullish(),Gate:_.nullish(),RequiredFlowIDs:z.array(z.string()).nullish(),AutoStart:z.boolean().nullish(),StartTrigger:Ue.nullish()}).passthrough(),Un=z.object({Skippable:z.boolean().nullish(),SkippableFromOrder:z.number().nullish(),RestartPolicy:tc.nullish(),ExpireAfterSeconds:z.number().nullish(),IsBlocking:z.boolean().nullish(),UnlockFeatures:z.array(z.string()).nullish()}).passthrough(),Bn=z.object({Grant:L.nullish(),AutoClaim:z.boolean().nullish()}).passthrough(),hc=z.object({Availability:X.nullish(),Policy:X.nullish(),Reward:X.nullish(),Steps:X.nullish()}).passthrough(),mc=z.object({FlowID:z.string().nullish(),Identity:dc.nullish(),Availability:An.nullish(),Policy:Un.nullish(),Steps:z.record(z.string(),as).nullish(),Reward:Bn.nullish(),Presets:hc.nullish()}).passthrough(),fc=z.object({BlockingFlowIDs:z.array(z.string()).nullish(),BlockedModules:z.array(z.string()).nullish(),BlockedActions:z.record(z.string(),z.array(z.string())).nullish(),BlockBeforeStart:z.boolean().nullish(),SkipLiftsBlock:z.boolean().nullish()}).passthrough(),gc=z.object({IsEnabled:z.boolean().nullish(),MaxActiveFlows:z.number().nullish(),Blocking:fc.nullish()}).passthrough(),Rc=z.object({Availability:z.record(z.string(),An).nullish(),Policy:z.record(z.string(),Un).nullish(),Reward:z.record(z.string(),Bn).nullish(),Steps:z.record(z.string(),z.record(z.string(),as)).nullish()}).passthrough(),Ln=z.object({Flows:z.record(z.string(),mc).nullish(),Settings:gc.nullish(),Presets:Rc.nullish()}).passthrough(),yc=z.object({}).passthrough().transform(a=>a),qn=z.object({FlowID:z.string(),Status:rc,CurrentStepID:z.string().nullish(),CurrentStep:as.nullish(),TotalSteps:z.number(),CompletedSteps:z.number(),CanSkip:z.boolean(),RewardClaimed:z.boolean(),RewardPending:z.boolean(),VariantID:z.string().nullish()}).passthrough(),En=z.object({State:yc.nullish(),Flows:z.array(qn).nullish(),UnlockedFeatures:z.array(z.string()).nullish()}).passthrough(),lt=z.object({Flow:qn.nullish()}).passthrough(),Gn=z.object({FlowID:z.string().nullish(),Granted:b.nullish()}).passthrough(),Nn=z.array(re(lt)),jn=z.object({FlowID:z.string(),StepID:z.string(),Progress:z.number(),Target:z.number(),Completed:z.boolean()}).passthrough(),Be={GetTutorialDefinitions:"GetTutorialDefinitions",GetUserTutorialState:"GetUserTutorialState",StartFlow:"StartFlow",ReportStepShown:"ReportStepShown",CompleteStep:"CompleteStep",CompleteStepsBatch:"CompleteStepsBatch",SkipStep:"SkipStep",SkipFlow:"SkipFlow",ClaimFlowReward:"ClaimFlowReward",ResetFlow:"ResetFlow"};var $t=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(),i=this.last.get(e);return i!==void 0&&t-i<this.windowMs?false:(this.last.set(e,t),true)}reset(){this.last.clear();}};var Zt=class{set=new Set;add(e){return this.set.has(e)?false:(this.set.add(e),true)}remove(e){this.set.delete(e);}};function Fn(a){return a===429||a>=500&&a<=599}function ls(a,e=Math.random){let t=Math.min(500*Math.pow(2,a-1),4e3),i=t*.2*(e()*2-1);return Math.max(50,t+i)}function us(a){return new Promise(e=>setTimeout(e,a))}var Cc=12e3,Sc=z.object({Success:z.boolean(),Error:z.string().nullish(),Data:z.unknown().optional(),QuestProgress:z.array(rs).nullish(),TutorialProgress:z.array(jn).nullish(),StateVersions:z.record(z.string(),z.number()).nullish(),StateEpoch:z.string().nullish()}).passthrough(),Jt=class{baseUrl;emitter;fetchImpl;debugLogging;throttler;clientPlatform;inflight=new Zt;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 $t(e.throttleMs),this.clientPlatform=e.clientPlatform??He.Unknown;}setSessionRefreshHandler(e){this.sessionRefreshHandler=e;}async post(e,t,i,r={}){let s=r.throttleKey??e;if(!this.throttler.tryAcquire(s))return n("throttled","Throttled");if(!this.inflight.add(s))return n("throttled","Duplicate request skipped");this.raiseBusy();try{let o=`${this.baseUrl}/${e}`,p=JSON.stringify(t),D=r.ticket??null,U=r.silent??!1,E=r.timeoutMs??Cc,de=r.autoRetry??!0,Re=!1,Pe=0;for(;;){let Qe;try{Qe=await this.doFetch(o,p,D,E);}catch{if(de&&Pe<3){Pe++,await us(ls(Pe));continue}return this.connectionFailure("Internet Connection Error",U)}let Ke=Qe.status;if(Ke>=200&&Ke<300)return await this.parseSuccess(Qe,i,U,e);if(Ke===401){if(!Re&&this.sessionRefreshHandler){Re=!0;let et=null;try{et=await this.sessionRefreshHandler();}catch{et=null;}if(et){D=et;continue}}return this.emitter.emit("auth:unauthorized",void 0),n("unauthorized","Unauthorized")}if(Fn(Ke)){if(de&&Pe<3){Pe++,await us(ls(Pe));continue}return this.connectionFailure(`Server temporarily unavailable (HTTP ${Ke})`,U)}return await this.handleWebError(Qe,Ke,U)}}finally{this.inflight.remove(s),this.lowerBusy();}}async doFetch(e,t,i,r){let s=new AbortController,o=setTimeout(()=>{s.abort();},r);try{let p={"Content-Type":"application/json","X-IG-Platform":this.clientPlatform};return i&&(p.Authorization=`Bearer ${i}`),await this.fetchImpl(e,{method:"POST",body:t,headers:p,signal:s.signal})}finally{clearTimeout(o);}}async parseSuccess(e,t,i,r){let s;try{s=await e.text();}catch{return this.globalError("Failed to read response body",i)}let o;try{o=JSON.parse(s);}catch{return this.globalError("JSON Parse Error",i)}let p=Sc.safeParse(o);if(!p.success)return this.globalError("Malformed response envelope",i);if(!p.data.Success){let Re=p.data.Error??"Server returned Success=false";return i||this.emitter.emit("error:global",Re),n("server",Re)}let D=p.data.QuestProgress;D&&D.length>0&&this.emitter.emit("quest:systemProgress",D);let U=p.data.TutorialProgress;U&&U.length>0&&this.emitter.emit("tutorial:systemProgress",U);let E=p.data.StateVersions;E&&Object.keys(E).length>0&&this.emitter.emit("user:stateVersions",{epoch:p.data.StateEpoch??null,versions:E});let de=t.safeParse(p.data.Data);if(!de.success){let Re=`Validation error (${r}): ${de.error.message}`;return this.debugLogging&&console.warn("[HttpTransport]",Re),i||this.emitter.emit("error:global",Re),n("validation",Re)}return xn(de.data)}async handleWebError(e,t,i){let r=`HTTP ${t}`;try{let s=await e.text();if(s)try{let p=JSON.parse(s).Error;r=typeof p=="string"&&p.length>0?`HTTP ${t}: ${p}`:`HTTP ${t}: ${s}`;}catch{r=`HTTP ${t}: ${s}`;}}catch{}return i||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 Dt(a){return (typeof a=="string"?a:a.toISOString()).slice(0,10)}function Bt(a){return `${Dt(a)}T00:00:00.000Z`}function _n(a){let e=new Date(a);return new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()+1)).toISOString()}function Wn(a,e){return new Date(a.getTime()+e*6e4).toISOString()}function Qn(a,e,t,i){let r={vcChanged:false,ccChanged:false,itemsChanged:false,tokensChanged:false};if(!e)return r;a.InventoryV2??={};let s=a.InventoryV2,o=i.toISOString(),p=new Map,D=new Map,U=new Map,E=new Map,de=new Map,Re=new Map,Pe=new Map,Qe=new Map,Ke=e.Grant?.PremiumTiers??[],et=Ke.length;for(let ne=0;;ne++){let he,Z;if(ne===0)he=e.Grant?.Standard?.Entries,Z=false;else if(ne-1<et)he=Ke[ne-1]?.Resources?.Entries,Z=false;else if(ne===1+et)he=e.Consume?.Standard?.Entries,Z=true;else break;if(he)for(let V of he){if(V.Type==null)continue;let H=Math.max(0,V.Amount??0);if(!(H<=0))switch(V.Type){case "VirtualCurrency":{if(!V.CurrencyID)continue;let $=Z?D:p;$.set(V.CurrencyID,($.get(V.CurrencyID)??0)+H);break}case "CryptoCurrency":{if(!V.CurrencyID)continue;let $=Z?E:U;$.set(V.CurrencyID,($.get(V.CurrencyID)??new Yt(0)).plus(H));break}case "Item":{if(!V.ItemID)continue;let $=Dc(t,V.CatalogID,V.ItemID),ee=($?$.IsStackable??true:true)?Z?Re:de:Z?Qe:Pe;ee.set(V.ItemID,(ee.get(V.ItemID)??0)+H);break}case "Purchase":case "RewardedVideoCredit":continue}}}if(r.vcChanged=p.size>0||D.size>0,r.vcChanged){s.VirtualCurrencies??={};for(let ne of new Set([...p.keys(),...D.keys()])){let he=p.get(ne)??0,Z=D.get(ne)??0,V=he-Z,H=s.VirtualCurrencies[ne];H?(H.Amount+=V,H.UpdatedAt=o,H.Daily&&Dt(H.Daily.PeriodStartUtc)===Dt(i)?(H.Daily.Earned+=he,H.Daily.Spent+=Z):H.Daily={PeriodStartUtc:Bt(i),Earned:he,Spent:Z}):s.VirtualCurrencies[ne]={Amount:V,CreatedAt:o,UpdatedAt:o,Daily:{PeriodStartUtc:Bt(i),Earned:he,Spent:Z}};}}if(r.ccChanged=U.size>0||E.size>0,r.ccChanged){s.CryptoCurrencies??={};for(let ne of new Set([...U.keys(),...E.keys()])){let he=U.get(ne)??new Yt(0),Z=E.get(ne)??new Yt(0),V=he.minus(Z),H=s.CryptoCurrencies[ne];H?(H.Amount=new Yt(H.Amount).plus(V).toString(),H.UpdatedAt=o):s.CryptoCurrencies[ne]={Amount:V.toString(),Frozen:"0",CreatedAt:o,UpdatedAt:o};}}if(r.itemsChanged=de.size>0||Re.size>0||Pe.size>0||Qe.size>0,r.itemsChanged){s.Items??={},s.UnstackableItems??={};let ne=s.UnstackableItems,he=new Set([...de.keys(),...Re.keys(),...Pe.keys(),...Qe.keys()]);for(let Z of he){let V=(de.get(Z)??0)-(Re.get(Z)??0),H=(Pe.get(Z)??0)-(Qe.get(Z)??0),$=V+H,Ae=s.Items[Z];Ae?(V!==0&&(Ae.StackableAmount+=V),H!==0&&(Ae.UnstackableAmount+=H),$!==0&&(Ae.TotalAmount+=$)):s.Items[Z]={StackableAmount:Math.max(0,V),UnstackableAmount:Math.max(0,H),TotalAmount:Math.max(0,$)};}for(let[Z,V]of Qe){if(V<=0)continue;let H=Object.values(ne).filter($=>$.ItemID===Z&&$.EquippedSlot==null&&($.ExpiresAt==null||new Date($.ExpiresAt)>i)).sort(xc).slice(0,V).map($=>$.ItemInstanceID);for(let $ of H)delete ne[$];}for(let[Z,V]of Pe){let H=bc(t,Z);for(let $=0;$<V;$++){let Ae=d();ne[Ae]={ItemInstanceID:Ae,ItemID:Z,CatalogID:H,RemainingUses:1,AcquiredAt:o};}}}a.EventToken??={};let pu=a.EventToken;for(let ne=0;;ne++){let he,Z;if(ne===0)he=e.Grant?.Standard?.EventTokens,Z=false;else if(ne-1<et)he=Ke[ne-1]?.Resources?.EventTokens,Z=false;else if(ne===1+et)he=e.Consume?.Standard?.EventTokens,Z=true;else break;if(!(!he||he.length===0))for(let V of he){let H=V.Address;if(!H||H.Type==null)continue;let $=V.Amount??0;if($<=0)continue;let Ae=zc(pu,H.Type);if(!Ae)continue;let ee=Ae[H.EntityID];ee||(ee={},Ae[H.EntityID]=ee),ee.Balance??={Current:0,TotalEarned:0,TotalSpent:0},ee.Daily??={Date:Bt(i),TotalEarned:0},ee.Meta??={};let wt=V.Source&&V.Source.length>0?V.Source:"CustomAction";Z?(ee.Balance.Current-=$,ee.Balance.TotalSpent+=$):(ee.Balance.Current+=$,ee.Balance.TotalEarned+=$,Dt(ee.Daily.Date)!==Dt(i)&&(ee.Daily={Date:Bt(i),TotalEarned:0}),ee.Daily.TotalEarned+=$,ee.Daily.EarnedBySource??={},ee.Daily.EarnedBySource[wt]=(ee.Daily.EarnedBySource[wt]??0)+$,ee.Daily.TriggersBySource??={},ee.Daily.TriggersBySource[wt]=(ee.Daily.TriggersBySource[wt]??0)+1,ee.Daily.LastTriggerBySource??={},ee.Daily.LastTriggerBySource[wt]=o,ee.Meta.JoinedAtUtc||(ee.Meta.JoinedAtUtc=o),ee.Meta.LastEarnedAtUtc=o),r.tokensChanged=true;}}return r}function xc(a,e){return a.AcquiredAt!==e.AcquiredAt?a.AcquiredAt<e.AcquiredAt?-1:1:a.ItemInstanceID===e.ItemInstanceID?0:a.ItemInstanceID<e.ItemInstanceID?-1:1}function Dc(a,e,t){let i=a?.Catalogs;if(i){if(e){let r=i[e]?.Items?.[t];if(r)return r}for(let r of Object.values(i)){let s=r.Items?.[t];if(s)return s}}}function bc(a,e){let t=a?.Catalogs;if(t){for(let[i,r]of Object.entries(t))if(r.Items&&e in r.Items)return i}}function zc(a,e){switch(e){case "TimedEvent":return a.TimedEvent??={};case "Quest":return a.Quest??={};case "Leaderboard":return a.Leaderboard??={};case "CoopEvent":return a.CoopEvent??={};case "Season":return a.Season??={};default:return null}}function cs(a,e){return a===e||a.startsWith(`${e}:`)}var Xt=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);}applyUserStateContainers(e,t){if(t.length!==0){this.currentState??={};for(let i of t)this.currentState[i]=e[i];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,i=new Date){if(!this.currentState)return;let r=Qn(this.currentState,e,t,i);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,i){if(!e||!this.currentState)return;this.currentState.InventoryV2??={},this.currentState.InventoryV2.CryptoCurrencies??={};let r=this.currentState.InventoryV2.CryptoCurrencies,s=t instanceof Yt?t:new Yt(t),o=i??new Date().toISOString(),p=r[e];p?(p.Amount=new Yt(p.Amount).plus(s).toString(),p.UpdatedAt=o):r[e]={Amount:s.toString(),Frozen:"0",CreatedAt:o,UpdatedAt:o},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,i){if(!e||t<1||!this.currentState)return;this.currentState.Store??={},this.currentState.Store.Purchases??={};let r=this.currentState.Store.Purchases,s=r[e];s||(s={OfferID:e,TotalPurchases:0,DailyPurchases:0,DailyResetUtc:"",LastPurchasedAt:""},r[e]=s),s.TotalPurchases+=t,s.LastPurchasedAt=i,i>=s.DailyResetUtc?(s.DailyPurchases=t,s.DailyResetUtc=_n(i)):s.DailyPurchases+=t,this.emitter.emit("user:storeUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}applyLootboxPityTriggers(e,t,i){if(!e||i<=0)return;this.currentState??={};let r=this.currentState.Lootbox??={};if(r.Pity??={},t){let s=new Date().toISOString();for(let o of t)o.RuleID&&(r.Pity[`${e}:${o.RuleID}`]={OpensSinceLastTrigger:0,LastTriggeredAtUtc:s});}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,i){if(!e)return;this.currentState??={},this.currentState.Quest??={};let r=this.currentState.Quest;if(t){r.Cycles??={};let s=r.Cycles[t];if(!s)return;s.Quests??={};let o=s.Quests[e]??={QuestID:e,Status:i};o.Status=i,i==="Claimed"&&(o.ClaimedAtUtc??=new Date().toISOString());}else {r.PermanentQuests??={};let s=r.PermanentQuests[e]??={QuestID:e,Status:i};s.Status=i,i==="Claimed"&&(s.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 i=this.getQuestPointsProgress(e);i&&(i.Milestone??={},i.Milestone.ClaimedIDs??=[],i.Milestone.ClaimedIDs.includes(t)||i.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 i of Object.values(e)){if(!i.CycleID)continue;let r=i.InstanceKey?`${i.CycleID}:${i.InstanceKey}`:i.CycleID,s=t[r]??={};s.Balance??={Current:0,TotalEarned:0,TotalSpent:0},s.Balance.Current=i.PointsCurrent??0,s.Balance.TotalEarned=i.PointsTotalEarned??0,s.Milestone??={},s.Milestone.ClaimedIDs=i.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 i=this.currentState.Quest.Cycles[e];i&&(i.ClaimedGroupCompletionIDs??=[],i.ClaimedGroupCompletionIDs.includes(t)||i.ClaimedGroupCompletionIDs.push(t),this.emitter.emit("user:questUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0));}applyTutorial(e){this.currentState??={},this.currentState.Tutorial=e??{},this.emitter.emit("user:tutorialUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}patchTutorialFlow(e){if(!e?.FlowID)return;this.currentState??={},this.currentState.Tutorial??={};let t=this.currentState.Tutorial;t.Flows??={};let i=t.Flows[e.FlowID]??={FlowID:e.FlowID};i.Status=e.Status,i.CurrentStepID=e.CurrentStepID??null,i.RewardClaimed=e.RewardClaimed,e.VariantID!==void 0&&(i.VariantID=e.VariantID),this.emitter.emit("user:tutorialUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}patchTutorialProgress(e){if(!e||e.length===0)return;this.currentState??={},this.currentState.Tutorial??={};let t=this.currentState.Tutorial;t.Flows??={};for(let i of e){if(!i.FlowID||!i.StepID)continue;let r=t.Flows[i.FlowID]??={FlowID:i.FlowID,Status:"InProgress"};r.Steps??={};let s=r.Steps[i.StepID]??={StepID:i.StepID};s.Progress=i.Progress,i.Completed&&(s.CompletedAtUtc??=new Date().toISOString(),r.CurrentStepID===i.StepID&&(r.CurrentStepID=null));}this.emitter.emit("user:tutorialUpdated",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 i of e){if(!i.QuestID)continue;let r;if(!i.CycleID)t.PermanentQuests??={},r=t.PermanentQuests[i.QuestID]??={QuestID:i.QuestID,Status:i.Status};else {t.Cycles??={};let s=t.Cycles[i.CycleID];if(!s)continue;s.Quests??={},r=s.Quests[i.QuestID]??={QuestID:i.QuestID,Status:i.Status};}if(r.Status=i.Status,i.ObjectiveID){r.Objectives??={};let s=r.Objectives[i.ObjectiveID]??={ObjectiveID:i.ObjectiveID,CurrentValue:0,Completed:false};s.CurrentValue=i.NewValue??0,i.ObjectiveCompleted&&(s.Completed=true,s.CompletedAtUtc??=new Date().toISOString());}i.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[i,r]of Object.entries(t))if(cs(i,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,i){if(!(!t||!i)){this.currentState??={},this.currentState.EventToken??={},this.currentState.EventToken.TimedEvent??={};for(let[r,s]of Object.entries(this.currentState.EventToken.TimedEvent))!cs(r,t)||!s||this.markMilestoneClaimed(s.Milestone??(s.Milestone={}),i);this.patchActiveEventMilestoneClaimed(e,t,i),this.emitter.emit("user:timedEventUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}}patchActiveEventMilestoneClaimed(e,t,i){let r=this.activeEventsCache?.ActiveEvents;if(r)for(let s of r)s.Type!==e||s.TimedEventID!==t||(s.Progress??={},this.markMilestoneClaimed(s.Progress.Milestone??(s.Progress.Milestone={}),i));}markMilestoneClaimed(e,t){if(e.ClaimedIDs??=[],e.ClaimedIDs.includes(t)||e.ClaimedIDs.push(t),e.UnlockedIDs){let i=e.UnlockedIDs.indexOf(t);i>=0&&e.UnlockedIDs.splice(i,1);}}patchLeaderboardMyProgress(e,t){if(!e||!t)return;let i=this.ensureLeaderboardProgress(e);i.CurrentScore=t.CurrentScore??0,i.LastKnownRank=t.LastKnownRank??0,i.ScoreEarnedThisCycle=t.ScoreEarnedThisCycle??0,i.UnclaimedRewardCycleVersion=t.HasUnclaimedReward?Math.max(1,i.UnclaimedRewardCycleVersion??0):0,this.emitter.emit("user:leaderboardUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}patchLeaderboardScoreSubmitted(e,t,i,r){if(!e)return;let s=this.ensureLeaderboardProgress(e);(s.ScoreCycleVersion??0)<r&&(s.ScoreEarnedThisCycle=0,s.ClaimedMilestoneIDs=[],s.BracketID=null),s.CurrentScore=t,s.ScoreEarnedThisCycle=(s.ScoreEarnedThisCycle??0)+i,s.ScoreCycleVersion=r,s.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 i=this.ensureLeaderboardProgress(e);i.ClaimedMilestoneIDs??=[],i.ClaimedMilestoneIDs.includes(t)||i.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,i=t[e];return i||(i={CurrentScore:0,ScoreEarnedThisCycle:0,ScoreCycleVersion:0,UnclaimedRewardCycleVersion:0,LastKnownRank:0},t[e]=i),i}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 i=this.ensureSeasonState(e);i.CurrentTier=t,this.emitter.emit("user:seasonUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}patchSeasonClaimedTier(e,t){if(!e)return;let i=this.ensureSeasonState(e);i.ClaimedTierRewards??=[],i.ClaimedTierRewards.includes(t)||i.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,i=t[e];return i||(i={SeasonChainID:e},t[e]=i),i}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 i=this.currentState.Character.Characters,r=i[e];r||(r={CharacterID:e},i[e]=r),t(r),this.emitter.emit("user:characterUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}patchCharacterEquipment(e,t,i){if(!e||!t)return;let r=this.currentState?.Character?.Characters?.[e];r&&(r.Equipment??={},i===null?delete r.Equipment[t]:r.Equipment[t]=i,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,i=false;for(let[r,s]of Object.entries(e.ChangedInstances??{}))t[r]=s,i=true;for(let r of e.RemovedInstanceIDs??[])r in t&&(delete t[r],i=true);i&&(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,i){this.currentState??={};let r=this.currentState.CoopEvent??={MyObjectIndex:-1};r.ActiveGroupID=e,r.ActiveCoopEventID=t,r.MyObjectIndex=i,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(i=>i!==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(i=>i!==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(i=>i!==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 i=this.currentState.TimedBoost.Active;if(t==="Replace"||t==="KeepBest")for(let r of Object.keys(i)){let s=i[r];s&&s.BoostID===e.BoostID&&r!==e.InstanceID&&delete i[r];}i[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,i,r,s){if(!t)return;this.currentState??={},this.currentState.CustomData??={};let o=this.currentState.CustomData,p={Value:i,UpdatedAt:new Date().toISOString(),Version:r,LastWriter:"Client",ExpiresAt:s??null};if(e==="Private")o.Private??={},o.Private[t]=p;else if(e==="Public")o.Public??={},o.Public[t]=p;else return;o.Version=(o.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 i=this.currentState.CustomData;if(e==="Private")i.Private&&delete i.Private[t];else if(e==="Public")i.Public&&delete i.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 i=this.ensureBoard();i.BuildingStates??=[];let r=i.BuildingStates.find(s=>s.SlotIndex===e);r||(r={SlotIndex:e},i.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 i=this.ensureBoard().Pending;!i||i.Type.toUpperCase()!=="SPECIAL"||(i.Special??={},e(i.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 ei=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 ti=class{user;config;constructor(e){this.user=new Xt(e),this.config=new ei;}reset(){this.user.clear(),this.config.applyTitlePublicConfiguration(null);}};var ii=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 Tc(e)?e:me.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 Tc(a){return a!==null&&Object.values(me).includes(a)}var vc=8,Pc=100,Ic=/^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/i,Kn=["GameLoop"],ri=class{constructor(e){this.ctx=e;}ctx;authContext=null;refreshing=false;rememberSession=true;sessionAuthType=me.None;sessionEmail="";sessionPassword="";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}setRememberSession(e){this.rememberSession=e;}get remembersSession(){return this.rememberSession}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(me.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 i=await this.ctx.api.authentication.loginWithTelegram(t);return i.ok?(this.applyAuthContext(i.data),this.fetchAndApplyClientState(me.Telegram)):i}async loginWithEmail(e,t){this.ctx.emitter.emit("auth:requestSent",void 0);let i=this.baseRequest();i.Email=e,i.Password=t;let r=await this.ctx.api.authentication.loginWithEmail(i);if(!r.ok)return r;this.applyAuthContext(r.data);let s=await this.fetchAndApplyClientState(me.Email);return s.ok&&this.keepEmailCredentials(e,t),s}async registerWithEmail(e,t){this.ctx.emitter.emit("auth:requestSent",void 0);let i=this.baseRequest();i.Email=e,i.Password=t,i.DeviceID=this.ctx.platform.getDeviceID(),i.Device=this.ctx.platform.getDeviceModel(),i.Platform=this.ctx.platform.getPlatform();let r=await this.ctx.api.authentication.registerWithEmail(i);if(!r.ok)return r;this.applyAuthContext(r.data);let s=await this.fetchAndApplyClientState(me.Email);return s.ok&&this.keepEmailCredentials(e,t),s}async loginWithGoogle(e){this.ctx.emitter.emit("auth:requestSent",void 0);let t=this.baseRequest();t.GoogleIDToken=e;let i=await this.ctx.api.authentication.loginWithGoogle(t);return i.ok?(this.applyAuthContext(i.data),this.fetchAndApplyClientState(me.Google)):i}async requestWalletChallenge(e,t){this.ctx.emitter.emit("auth:requestSent",void 0);let i=this.baseRequest();return i.WalletAddress=e,i.NetworkID=t,this.ctx.api.authentication.requestWalletChallenge(i)}async loginWithWallet(e,t,i){this.ctx.emitter.emit("auth:requestSent",void 0);let r=this.baseRequest();r.WalletAddress=e,r.NetworkID=t,r.WalletSignature=i,r.Platform=this.ctx.platform.getPlatform(),r.Device=this.ctx.platform.getDeviceModel(),r.DeviceID=this.ctx.platform.getDeviceID();let s=await this.ctx.api.authentication.loginWithWallet(r);return s.ok?(this.applyAuthContext(s.data),this.fetchAndApplyClientState(me.Wallet)):s}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 i=await this.ctx.api.authentication.loginWithPlatformToken(t);return i.ok?(this.applyAuthContext(i.data),this.fetchAndApplyClientState(me.iDosGames)):i}async loginWithSsoCode(e){if(!e)return n("client","SSO code is null or empty.");this.ctx.emitter.emit("auth:requestSent",void 0);let t=this.baseRequest();t.SsoCode=e,t.DeviceID=this.ctx.platform.getDeviceID(),t.Device=this.ctx.platform.getDeviceModel(),t.Platform=this.ctx.platform.getPlatform();let i=await this.ctx.api.authentication.loginWithSsoCode(t);return i.ok?(this.applyAuthContext(i.data),this.fetchAndApplyClientState(me.iDosGames)):i}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,i){this.ctx.emitter.emit("auth:requestSent",void 0);let r=this.baseRequest();return r.Email=e,r.ResetToken=t,r.Password=i,this.ctx.api.authentication.resetPassword(r)}autoLogin(){return this.replay(this.ctx.authStore.lastAuthType,this.ctx.authStore.savedEmail,this.ctx.authStore.savedPassword)}replay(e,t,i){switch(e){case me.Email:return this.loginWithEmail(t,i);case me.Device:case me.None:return this.loginWithDeviceID();case me.Telegram:return this.loginWithTelegram();default:return Promise.resolve(n("client",`Cannot auto-login: last session used "${e}", 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)return null;let e=this.sessionAuthType!==me.None?this.sessionAuthType:this.ctx.authStore.lastAuthType;if(e===me.None)return null;this.refreshing=true;try{return (await this.replay(e,this.sessionEmail||this.ctx.authStore.savedEmail,this.sessionPassword||this.ctx.authStore.savedPassword)).ok&&this.authContext?this.authContext.clientSessionTicket:null}catch{return null}finally{this.refreshing=false;}}logout(){this.authContext=null,this.forgetSession(),this.ctx.authStore.clear(),this.ctx.data.reset(),this.ctx.emitter.emit("auth:loggedOut",void 0);}static isValidEmail(e){return e.length>0&&Ic.test(e)}static isValidPasswordLength(e){return e.length>=vc&&e.length<=Pc}keepEmailCredentials(e,t){this.sessionEmail=e,this.sessionPassword=t,this.rememberSession&&this.ctx.authStore.saveEmailAndPassword(e,t);}forgetSession(){this.sessionAuthType=me.None,this.sessionEmail="",this.sessionPassword="";}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(Kn,Kn);return t.ok&&(this.sessionAuthType=e,this.rememberSession?this.ctx.authStore.saveAuthType(e):this.ctx.authStore.clear(),this.ctx.emitter.emit("auth:loggedIn",void 0)),t}};var kc="idos:cfg",bt=class{constructor(e,t){this.storage=e;this.titleId=t;}storage;titleId;static scopeOf(e,t){return t&&t.length>0?`x:${Hn(t)}`:e&&e.length>0?`f:${Hn(e)}`:t?"x:":"f:"}async read(e){try{let t=await this.storage.get(this.keyOf(e));if(!t)return null;let i=JSON.parse(t);return !i||typeof i!="object"||typeof i.v!="string"||!i.c?null:i}catch{return null}}async write(e,t,i){try{let r={v:t,c:i};await this.storage.set(this.keyOf(e),JSON.stringify(r));}catch{}}async clear(e){try{await this.storage.remove(this.keyOf(e));}catch{}}keyOf(e){return `${kc}:${this.titleId}:${e}`}};function Hn(a){return [...a].map(e=>e.toLowerCase()).sort().join(",")}var $n="idos:loc",zt=class{constructor(e,t){this.storage=e;this.titleId=t;}storage;titleId;async read(e){try{let t=await this.storage.get(this.keyOf(e));if(!t)return null;let i=JSON.parse(t);return !i||typeof i!="object"||typeof i.v!="number"||!i.t||typeof i.t!="object"?null:i}catch{return null}}async write(e,t,i){try{let r={v:t,t:i};await this.storage.set(this.keyOf(e),JSON.stringify(r)),await this.noteVersion(e,t);}catch{}}async readVersions(){try{let e=await this.storage.get(this.versionsKey());if(!e)return {};let t=JSON.parse(e);if(!t||typeof t!="object")return {};let i={};for(let[r,s]of Object.entries(t))typeof s=="number"&&s>0&&(i[r]=s);return i}catch{return {}}}async noteVersion(e,t){let i=await this.readVersions();i[e]!==t&&(i[e]=t,await this.storage.set(this.versionsKey(),JSON.stringify(i)));}keyOf(e){return `${$n}:${this.titleId}:${e}`}versionsKey(){return `${$n}:${this.titleId}:versions`}};var Mc="idos:state",si=class{constructor(e,t){this.storage=e;this.titleId=t;}storage;titleId;async read(e){if(!e)return null;try{let t=await this.storage.get(this.keyOf(e));if(!t)return null;let i=JSON.parse(t);return !i||typeof i!="object"||typeof i.e!="string"||!i.v||!i.s?null:i}catch{return null}}async write(e,t,i,r){if(!(!e||!t))try{let s={e:t,v:i,s:r};await this.storage.set(this.keyOf(e),JSON.stringify(s));}catch{}}keyOf(e){return `${Mc}:${this.titleId}:${e}`}};function wc(a,e){if(!a)return;let t=new Set((e??[]).map(r=>r.trim().toLowerCase()));if(t.size===0)return a;let i={};for(let[r,s]of Object.entries(a))t.has(r.toLowerCase())||(i[r]=s);return i}function ds(a,e,t,i){let r={...a??{}};if(!e||!t||!i)return r;for(let[s,o]of Object.entries(t))i[s]===o&&s in e&&(r[s]=e[s]);return r}function Oc(a){return {...a??{}}}function hs(a){return typeof a.StateEpoch=="string"&&a.StateEpoch.length>0?a.StateEpoch:null}var ni=class{constructor(e){this.cache=e;}cache;loadedFor=null;epoch=null;versions={};state=null;dirty=false;async load(e){if(this.loadedFor===e)return;let t=await this.cache.read(e);this.loadedFor=e,this.epoch=t?.e??null,this.versions=t?{...t.v}:{},this.state=t?.s??null,this.dirty=false;}get cachedState(){return this.state}get currentEpoch(){return this.epoch}versionsFor(e){if(!this.epoch)return;let t=wc(this.versions,e);return t&&Object.keys(t).length>0?t:void 0}noteMutation(e,t){if(!e||e!==this.epoch){e&&e!==this.epoch&&this.reset(e);return}for(let[i,r]of Object.entries(t)){let s=this.versions[i];s!==void 0&&r===s+1?this.versions[i]=r:delete this.versions[i],this.dirty=true;}}afterFullRead(e,t){e!==this.epoch&&this.reset(e),this.versions=Oc(t),this.dirty=true;}afterSliceRead(e,t){e!==this.epoch&&this.reset(e);for(let[i,r]of Object.entries(t??{}))this.versions[i]=r;this.dirty=true;}async flush(e,t){!this.dirty||!this.epoch||!e||(this.state=t??{},this.dirty=false,await this.cache.write(e,this.epoch,this.versions,this.state));}reset(e){this.epoch=e,this.versions={},this.state=null,this.dirty=true;}};var Zn=n("server","Title configuration is unavailable (CDN and API both failed)."),oi=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}get configCache(){return this.cache??=new bt(this.ctx.settings.configStorage,this.ctx.settings.titleID)}cache;get localizationCache(){return this.locCache??=new zt(this.ctx.settings.configStorage,this.ctx.settings.titleID)}locCache;get stateStore(){return this.versionStore??=new ni(new si(this.ctx.settings.configStorage,this.ctx.settings.titleID))}versionStore;noteStateVersions(e,t){this.ctx.auth.context?.userID&&this.stateStore.currentEpoch&&this.stateStore.noteMutation(e,t);}async getClientState(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=bt.scopeOf(e.TitleFields,null),i=await this.configCache.read(t);i&&(e.KnownTitleConfigVersion=i.v),await this.prepareLocalization(e);let r=await this.prepareStateHandshake(e,null),s=await this.ctx.api.user.getClientState(e);if(!s.ok)return s;let o=await this.resolveTitleConfig(s.data,t,i,{Fields:e.TitleFields});return o==null?Zn:(this.finishStateHandshake(s.data,r),await this.applyClientState(s.data,o,void 0,void 0),await this.applyLocalization(s.data.Localization),await this.flushState(r),s)}async prepareStateHandshake(e,t){let i=this.ctx.auth.context?.userID;if(!i)return {userId:null,cached:null,sent:void 0};await this.stateStore.load(i),await this.stateStore.flush(i,this.ctx.data.user.state);let r=this.stateStore.versionsFor(t);if(r){e.KnownStateVersions=r;let s=this.stateStore.currentEpoch;s&&(e.KnownStateEpoch=s);}return {userId:i,cached:this.stateStore.cachedState,sent:r}}finishStateHandshake(e,t){let i=ds(e.User,t.cached,t.sent,e.StateVersions);e.User=i;let r=hs(e);!r||!t.userId||this.stateStore.afterFullRead(r,e.StateVersions);}async resolveTitleConfig(e,t,i,r){let s=e.TitleConfigVersion;if(i&&s&&i.v===s)return i.c;if(e.TitleConfigUrl){let p=await this.fetchConfigFromCdn(e.TitleConfigUrl);if(p!=null)return s&&await this.configCache.write(t,s,p),p}let o=await this.fetchConfigFromApi(r);return o!=null?(s&&await this.configCache.write(t,s,o),o):i?.c??null}async fetchConfigFromCdn(e){try{let t=await this.ctx.fetchImpl(e);if(!t.ok)return null;let i=await t.json();return i&&typeof i=="object"?i:null}catch{return null}}async fetchConfigFromApi(e){let t=this.baseRequest();if(!t)return null;let i={...t,...e},r=e.ExcludeFields?await this.ctx.api.title.getTitlePublicConfigurationExcept(i):await this.ctx.api.title.getTitlePublicConfiguration(i);return r.ok?r.data:null}async getClientStateExcept(e,t){let i=this.baseRequest();if(!i)return n("unauthorized","Not logged in.");i.ExcludeFields=e,i.ExcludeTitleFields=t;let r=bt.scopeOf(null,t??[]),s=await this.configCache.read(r);s&&(i.KnownTitleConfigVersion=s.v),await this.prepareLocalization(i);let o=await this.prepareStateHandshake(i,e??null),p=await this.ctx.api.user.getClientStateExcept(i);if(!p.ok)return p;let D=await this.resolveTitleConfig(p.data,r,s,{ExcludeFields:t??[]});return D==null?Zn:(this.finishStateHandshake(p.data,o),await this.applyClientState(p.data,D,e,t),await this.applyLocalization(p.data.Localization),await this.flushState(o),p)}async prepareLocalization(e){let t=this.ctx.localization.locale??this.ctx.settings.locale;t&&(e.Locale=t);let i=await this.localizationCache.readVersions();Object.keys(i).length>0&&(e.KnownLocalizationVersions=i);}async applyLocalization(e){if(!e){this.ctx.localization.applyState(null,{table:null,fallbackTable:null});return}let t=await this.resolveLocalizationTable({Locale:e.Locale,Version:e.Version,Url:e.Url}),i=e.Fallback?await this.resolveLocalizationTable(e.Fallback):null;this.ctx.localization.applyState(e,{table:t,fallbackTable:i});}async resolveLocalizationTable(e){let t=e.Locale??null,i=e.Version??0;if(!t)return null;let r=await this.localizationCache.read(t);if(i<=0)return r?.t??null;if(r&&r.v===i)return r.t;if(e.Url){let o=await this.fetchLocalizationFromCdn(e.Url);if(o!=null)return await this.localizationCache.write(t,i,o),o}let s=await this.fetchLocalizationFromApi(t,r?.v??0);return s??r?.t??null}async fetchLocalizationFromCdn(e){try{let t=await this.ctx.fetchImpl(e);if(!t.ok)return null;let i=await t.json();return i&&typeof i=="object"?i:null}catch{return null}}async fetchLocalizationFromApi(e,t){let i=this.baseRequest();if(!i)return null;let r=await this.ctx.api.localization.getLocalizationTable({...i,Locale:e,KnownVersion:t});if(!r.ok)return null;let s=r.data;if(s.NotModified)return null;let o=s.Entries??{},p=s.Version??0,D=s.Locale??e;return p>0&&await this.localizationCache.write(D,p,o),o}async getStateVersions(e){let t=this.baseRequest();return t?(e&&e.length>0&&(t.Fields=e),this.ctx.api.user.getStateVersions(t)):n("unauthorized","Not logged in.")}async getUserState(e){let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");e&&e.length>0&&(t.Fields=e);let i=await this.prepareStateHandshake(t,null),r=await this.ctx.api.user.getUserState(t);if(!r.ok)return r;let s=ds(r.data.User,i.cached,i.sent,r.data.StateVersions);r.data.User=s;let o=Object.keys(r.data.StateVersions??{});this.ctx.data.user.applyUserStateContainers(s,o);let p=hs(r.data);return p&&(this.stateStore.afterSliceRead(p,r.data.StateVersions),await this.flushState(i)),r}async flushState(e){e.userId&&await this.stateStore.flush(e.userId,this.ctx.data.user.state);}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,i){let r=this.baseRequest();if(!r)return n("unauthorized","Not logged in.");r.UsageTime=e,r.IsNewSession=t,r.SessionDurationSeconds=i;let s=await this.ctx.api.user.addUsageTime(r);return s.ok&&this.ctx.emitter.emit("user:usageTimeAdded",s.data),s}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 i=await this.ctx.api.user.changeUsername(t);return i.ok&&this.ctx.emitter.emit("user:usernameChanged",i.data),i}async applyClientState(e,t,i,r){let s=i?.includes("GameLoop")===true,o=r?.includes("GameLoop")===true,p=s?this.ctx.data.user.state?.GameLoop:void 0,D=o?this.ctx.data.config.titlePublicConfiguration?.GameLoop:void 0;this.ctx.data.config.applyTitlePublicConfiguration(t),this.ctx.data.user.applyUserState(e.User??{});let U=this.ctx.data.user.state;s&&U&&U.GameLoop==null&&(U.GameLoop=p);let E=this.ctx.data.config.titlePublicConfiguration;o&&E&&E.GameLoop==null&&(E.GameLoop=D),this.ctx.emitter.emit("user:clientStateReceived",e);}};var li=class{constructor(e){this.ctx=e;}ctx;async convert(e,t,i,r,s,o){if(!t)return n("client","SourceID is required.");if(!r)return n("client","TargetID is required.");if(s<=0)return n("client","Amount must be positive.");if(e===i&&t===r)return n("client","Source and target must differ.");if(e===je.Crypto||i===je.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 p={...this.ctx.buildAuthedBaseRequest(),SourceType:e,SourceID:t,TargetType:i,TargetID:r,SourceAmount:String(Math.trunc(s)),TransactionID:o&&o.length>0?o:`convert_${e}_${t}_to_${i}_${r}_${d()}`},D=await this.ctx.api.currency.convert(p);if(D.ok){let U=D.data,E={Consume:{Standard:{Entries:[{Type:"VirtualCurrency",CurrencyID:U.SourceID,Amount:U.SourceSpent}]}},Grant:{Standard:{Entries:[{Type:"VirtualCurrency",CurrencyID:U.TargetID,Amount:U.TargetCredited}]}}};this.ctx.data.user.applyResourceOperation(E,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("currency:converted",U);}return D}async cryptoConvert(e,t,i,r,s,o){let p=s instanceof Yt?s:new Yt(s);if(!t)return n("client","SourceID is required.");if(!r)return n("client","TargetID is required.");if(p.lte(0))return n("client","SourceAmount must be a positive decimal.");if(e===i&&t===r)return n("client","Source and target must differ.");if(e===je.Virtual&&i===je.Virtual)return n("client","cryptoConvert requires at least one crypto side. Use convert for VC\u2194VC.");if(e===je.Virtual&&!p.isInteger())return n("client","Virtual currency source amount must be integer.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let D={...this.ctx.buildAuthedBaseRequest(),SourceType:e,SourceID:t,TargetType:i,TargetID:r,SourceAmount:p.toString(),TransactionID:o&&o.length>0?o:`crypto_convert_${e}_${t}_to_${i}_${r}_${d()}`},U=await this.ctx.api.currency.cryptoConvert(D);if(U.ok){let E=U.data,de=[],Re=[];if(E.SourceType===je.Virtual&&de.push({Type:"VirtualCurrency",CurrencyID:E.SourceID,Amount:Math.trunc(Number(E.SourceSpent))}),E.TargetType===je.Virtual&&Re.push({Type:"VirtualCurrency",CurrencyID:E.TargetID,Amount:Math.trunc(Number(E.TargetCredited))}),de.length>0||Re.length>0){let Pe={Consume:de.length>0?{Standard:{Entries:de}}:null,Grant:Re.length>0?{Standard:{Entries:Re}}:null};this.ctx.data.user.applyResourceOperation(Pe,this.ctx.data.config.itemDefinitions);}E.SourceType===je.Crypto&&this.ctx.data.user.patchCryptoCurrencyDelta(E.SourceID,new Yt(E.SourceSpent).negated(),E.ServerTimeUtc),E.TargetType===je.Crypto&&this.ctx.data.user.patchCryptoCurrencyDelta(E.TargetID,new Yt(E.TargetCredited),E.ServerTimeUtc),this.ctx.emitter.emit("currency:cryptoConverted",E);}return U}};var ui=class{constructor(e){this.ctx=e;}ctx;async upgradeLevel(e,t,i){let r=e.trim();if(!r)return n("client","ItemInstanceID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let s={...this.ctx.buildAuthedBaseRequest(),ItemInstanceID:r,SelectedOptionID:i,RelatedEntityID:`upgrade_item_${r}_${d()}`};t&&t.length>0&&(s.FodderInstanceIDs=[...t]);let o=await this.ctx.api.item.upgradeLevel(s);return o.ok&&(await this.ctx.userService.getUserInventory(),this.ctx.emitter.emit("item:levelUpgraded",o.data)),o}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},i=await this.ctx.api.item.upgradeLevelsBatch(t);return i.ok&&(await this.ctx.userService.getUserInventory(),this.ctx.emitter.emit("item:levelsUpgradedBatch",i.data)),i}};var Ac="Store",ci=class{constructor(e){this.ctx=e;}ctx;async purchase(e,t=1,i){if(!e)return n("client","OfferID is required.");if(t<1)return n("client","Count must be at least 1.");let r=this.ctx.auth.context;if(!r)return n("unauthorized","Not logged in.");let s={...this.ctx.buildAuthedBaseRequest(),OfferID:e,Count:t,SelectedOptionID:i?.selectedOptionID,Payment:i?.payment,RelatedEntityID:`store_buy_${e}_${r.userID}_${d()}`},o=await this.ctx.api.store.purchase(s);if(o.ok){let p=o.data;this.ctx.data.user.patchStorePurchase(e,t,p.ServerTimeUtc),this.ctx.data.user.applyResourceOperation(p.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("store:offerPurchased",p);}return o}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},i=await this.ctx.api.store.purchaseBatch(t);if(i.ok){let r=false;for(let s of i.data)!s.Success||!s.Data||!s.Data.OfferID||(this.ctx.data.user.patchStorePurchase(s.Data.OfferID,s.Data.Count,s.Data.ServerTimeUtc),!r&&s.Data.Resources&&(this.ctx.data.user.applyResourceOperation(s.Data.Resources,this.ctx.data.config.itemDefinitions),r=true));this.ctx.emitter.emit("store:offersPurchasedBatch",i.data);}return i}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(Ac,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 pi=class{constructor(e){this.ctx=e;}ctx;async getDefinitions(){if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let e={...this.ctx.buildAuthedBaseRequest()};return this.ctx.api.purchase.getDefinitions(e)}async getUserState(){if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let e={...this.ctx.buildAuthedBaseRequest()};return this.ctx.api.purchase.getUserState(e)}async validatePurchase(e,t,i){if(!t)return n("client","Receipt is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let r={...this.ctx.buildAuthedBaseRequest(),Store:e,Receipt:t,Signature:i?.signature,ProductID:i?.productID},s=await this.ctx.api.purchase.validatePurchase(r);return s.ok&&s.data.Granted&&this.ctx.data.user.applyResourceOperation(s.data.Resources,this.ctx.data.config.itemDefinitions),s}async validatePurchasesBatch(e){if(!e||e.length===0)return n("client","receipts is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),Receipts:e};return this.ctx.api.purchase.validatePurchasesBatch(t)}};var di=class{constructor(e){this.ctx=e;}ctx;get platform(){return this.ctx.clientPlatform}availableOptions(e){return e?Object.entries(e).filter(([,t])=>t!=null).map(([t,i])=>({...i,OptionID:i.OptionID||t})).filter(t=>this.isAvailable(t)).sort((t,i)=>(t.OptionID??"").localeCompare(i.OptionID??"")):[]}isAvailable(e){if(!e)return false;let t=e.AllowedPlatforms;return !t||t.length===0?true:t.includes(this.platform)}requirementOf(e){let t=this.storeProductOf(e.Cost);return t?{option:e,kind:"store",productID:t}:{option:e,kind:"resources",shortfall:this.cryptoShortfallOf(e.Cost)??void 0}}storeProductOf(e){let t=e?.Standard?.Entries;if(!t)return null;for(let i of t)if(i?.Type===jt.Purchase&&i.ProductID)return i.ProductID;return null}cryptoShortfallOf(e){let t=e?.Standard?.Entries;if(!t)return null;for(let i of t){if(i?.Type!==jt.CryptoCurrency||!i.CurrencyID)continue;let r=Number(i.Amount??0);if(!(r>0))continue;let s=this.cryptoBalance(i.CurrencyID);return s>=r?null:{currencyID:i.CurrencyID,required:r,available:s,missing:r-s}}return null}cryptoBalance(e){let i=this.ctx.data.user.state?.InventoryV2?.CryptoCurrencies?.[e];return Number(i?.Amount??0)}};var Uc="Lootbox",hi=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 i=t.data.LootboxDefinitions;i&&(this.ctx.data.config.patchSection(Uc,i),this.ctx.emitter.emit("lootbox:definitionsLoaded",i));}return t}async open(e,t,i,r){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 s={...this.ctx.buildAuthedBaseRequest(),LootboxID:e,Count:t,SelectedOptionID:i,Payment:r,RelatedEntityID:`lootbox_${e}_${i??"default"}_${d()}`},o=await this.ctx.api.lootbox.open(s);if(o.ok){let p=o.data;p.TriggeredPity&&p.TriggeredPity.length>0&&this.ctx.data.user.applyLootboxPityTriggers(e,p.TriggeredPity,t),this.ctx.data.user.applyResourceOperation(p.Resources,this.ctx.data.config.itemDefinitions),this.ctx.data.user.applyInventoryDelta(p.Inventory),this.ctx.emitter.emit("lootbox:opened",p);}return o}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var Bc="Reward";function ms(a){return a.length>0&&!a.includes(".")&&!a.includes("$")}var mi=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 i=t.data.RewardDefinitions;i&&(this.ctx.data.config.patchSection(Bc,i),this.ctx.emitter.emit("reward:definitionsLoaded",i));}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 i=t.data;this.multiplierEnabled=i.Enabled,this.multiplier=i.Enabled?i.Multiplier??1:1,this.ctx.emitter.emit("reward:milestoneMultiplierLoaded",i);}return t}async claimDailyReward(e){let t=this.ctx.auth.context;if(!t)return n("unauthorized","Not logged in.");let i={...this.ctx.buildAuthedBaseRequest(),CalendarID:e,RelatedEntityID:`dailyreward_${t.userID}_${e??"default"}_${d()}`},r=await this.ctx.api.reward.claimDailyReward(i);if(r.ok){let s=r.data;this.ctx.data.user.patchDailyCalendarState(s.CalendarID,s.DailyState),this.ctx.data.user.applyResourceOperation(s.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("reward:dailyClaimed",s);}return r}async collectIdleAccrual(e){if(!ms(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()}`},i=await this.ctx.api.reward.collectIdleAccrual(t);if(i.ok){let r=i.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 i}async claimComebackReward(e){if(!ms(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()}`},i=await this.ctx.api.reward.claimComebackReward(t);if(i.ok){let r=i.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 i}async claimReward(e){if(!ms(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()}`},i=await this.ctx.api.reward.claimReward(t);if(i.ok){let r=i.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 i}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var Lc="Tutorial",fi=class{constructor(e){this.ctx=e;}ctx;async getTutorialDefinitions(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.tutorial.getTutorialDefinitions(e);return t.ok&&(this.ctx.data.config.patchSection(Lc,t.data),this.ctx.emitter.emit("tutorial:definitionsLoaded",t.data)),t}async getUserTutorialState(e=true){let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.AutoStart=e;let i=await this.ctx.api.tutorial.getUserTutorialState(t);if(i.ok){let r=i.data.State??{};this.ctx.data.user.applyTutorial(r),this.ctx.emitter.emit("tutorial:userStateLoaded",i.data);}return i}async startFlow(e){return this.flowCall(e,t=>this.ctx.api.tutorial.startFlow(t),{event:"tutorial:flowStarted"})}async reportStepShown(e,t){return this.stepCall(e,t,i=>this.ctx.api.tutorial.reportStepShown(i))}async completeStep(e,t){return this.stepCall(e,t,i=>this.ctx.api.tutorial.completeStep(i),{relatedEntityID:`tutorial_step_${e}_${t}_${d()}`})}async completeStepsBatch(e,t){let i=e?.trim();if(!i)return n("client","FlowID is required.");if(!t||t.length===0)return n("client","stepIDs is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let r={...this.ctx.buildAuthedBaseRequest(),FlowID:i,StepIDs:t,RelatedEntityID:`tutorial_batch_${i}_${d()}`},s=await this.ctx.api.tutorial.completeStepsBatch(r);return s.ok&&(await this.refreshAfterMutation(),this.ctx.emitter.emit("tutorial:stepsCompletedBatch",s.data)),s}async skipStep(e,t){return this.stepCall(e,t,i=>this.ctx.api.tutorial.skipStep(i))}async skipFlow(e){return this.flowCall(e,t=>this.ctx.api.tutorial.skipFlow(t),{event:"tutorial:flowSkipped"})}async claimFlowReward(e){let t=e?.trim();if(!t)return n("client","FlowID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let i={...this.ctx.buildAuthedBaseRequest(),FlowID:t,RelatedEntityID:`tutorial_claim_${t}_${d()}`},r=await this.ctx.api.tutorial.claimFlowReward(i);return r.ok&&(this.ctx.data.user.applyResourceOperation(r.data.Granted,this.ctx.data.config.itemDefinitions),await this.refreshAfterMutation(),this.ctx.emitter.emit("tutorial:rewardClaimed",r.data)),r}async resetFlow(e){return this.flowCall(e,t=>this.ctx.api.tutorial.resetFlow(t),{event:"tutorial:flowReset"})}async flowCall(e,t,i){let r=e?.trim();if(!r)return n("client","FlowID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let s={...this.ctx.buildAuthedBaseRequest(),FlowID:r},o=await t(s);return o.ok&&(this.applyFlowView(o.data),this.ctx.emitter.emit(i.event,o.data)),o}async stepCall(e,t,i,r){let s=e?.trim(),o=t?.trim();if(!s)return n("client","FlowID is required.");if(!o)return n("client","StepID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let p={...this.ctx.buildAuthedBaseRequest(),FlowID:s,StepID:o};r?.relatedEntityID&&(p.RelatedEntityID=r.relatedEntityID);let D=await i(p);return D.ok&&(this.applyFlowView(D.data),this.ctx.emitter.emit("tutorial:stepChanged",D.data)),D}applyFlowView(e){e?.Flow&&this.ctx.data.user.patchTutorialFlow(e.Flow);}async refreshAfterMutation(){await this.getUserTutorialState(false).catch(()=>{});}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var gi=Object.freeze({}),Ri=class{constructor(e){this.ctx=e;}ctx;table={...gi};fallbackTable=null;currentLocale=null;currentFallbackLocale=null;pluralRules=null;get cache(){return this.tableCache??=new zt(this.ctx.settings.configStorage,this.ctx.settings.titleID)}tableCache;get locale(){return this.currentLocale}get fallbackLocale(){return this.currentFallbackLocale}get locales(){let e=this.ctx.data.config.titlePublicConfiguration?.Localization??null;return e?.Locales?Object.entries(e.Locales).filter(([,t])=>t?.IsEnabled!==false).map(([t,i])=>({Locale:i?.Locale??t,DisplayName:i?.DisplayName??null,Order:i?.Order??0})).sort((t,i)=>(t.Order??0)-(i.Order??0)):[]}has(e){return this.lookup(e)!==void 0}t(e,t){if(!e)return "";let i=this.resolveKey(e,t),r=this.lookup(i)??this.lookup(e);return r===void 0?this.onMissing(e):t?qc(r,t):r}applyState(e,t){if(!e){this.reset();return}let i=e.Locale??null;this.table=t.table??{...gi},this.fallbackTable=t.fallbackTable,this.currentFallbackLocale=e.Fallback?.Locale??null,this.setLocaleInternal(i),this.ctx.emitter.emit("localization:changed",{locale:i,fallbackLocale:this.currentFallbackLocale,entryCount:Object.keys(this.table).length});}async setLocale(e){if(!this.baseRequest())return n("unauthorized","Not logged in.");let i=await this.loadTableFromApi(e);if(!i.ok)return i;let{locale:r,table:s,fallbackLocale:o}=i.data,p=null;if(o){let D=await this.loadTableFromApi(o);D.ok&&(p=D.data.table);}return this.table=s,this.fallbackTable=p,this.currentFallbackLocale=o,this.setLocaleInternal(r),this.ctx.emitter.emit("localization:changed",{locale:r,fallbackLocale:o,entryCount:Object.keys(s).length}),{ok:true,data:r}}async getManifest(){let e=this.baseRequest();return e?(e.Locale=this.currentLocale??this.ctx.settings.locale,this.ctx.api.localization.getLocalizationManifest(e)):n("unauthorized","Not logged in.")}reset(){this.table={...gi},this.fallbackTable=null,this.currentFallbackLocale=null,this.setLocaleInternal(null);}setLocaleInternal(e){this.currentLocale=e,this.pluralRules=null;}baseRequest(){let e=this.ctx.auth.context;return e?{UserID:e.userID,ClientSessionTicket:e.clientSessionTicket,BuildKey:this.ctx.settings.buildKey,RelatedEntityID:d()}:null}async loadTableFromApi(e){let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.Locale=e;let i=await this.cache.read(Jn(e));i&&(t.KnownVersion=i.v);let r=await this.ctx.api.localization.getLocalizationTable(t);if(!r.ok)return r;let s=r.data,o=s.Locale??Jn(e),p=s.Version??0;if(s.NotModified){let U=i??await this.cache.read(o);return {ok:true,data:{locale:o,table:U?.t??{...gi},fallbackLocale:s.FallbackLocale??null}}}let D=s.Entries??{};return p>0&&await this.cache.write(o,p,D),{ok:true,data:{locale:o,table:D,fallbackLocale:s.FallbackLocale??null}}}lookup(e){let t=this.table[e];return t!==void 0?t:this.fallbackTable?.[e]}resolveKey(e,t){let i=t?.count;if(typeof i!="number")return e;let r=this.pluralCategory(i),s=`${e}.${r}`;if(this.lookup(s)!==void 0)return s;let o=`${e}.other`;return this.lookup(o)!==void 0?o:e}pluralCategory(e){try{return this.pluralRules??=new Intl.PluralRules(this.currentLocale??void 0),this.pluralRules.select(e)}catch{return "other"}}onMissing(e){let t=this.ctx.data.config.titlePublicConfiguration?.Localization?.MissingKeyMode??"ReturnKey";return t==="ReturnEmpty"?"":t==="ReturnMarkedKey"?`\u27E6${e}\u27E7`:e}};function qc(a,e){return a.replace(/\{(\w+)\}/g,(t,i)=>{let r=e[i];return r===void 0?t:String(r)})}function Jn(a){return a.trim().replace(/_/g,"-").toLowerCase()}var Ec="Quest",yi=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(Ec,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 i=await this.ctx.api.quest.getUserQuestState(t);if(i.ok){let r=i.data.State??{};this.ctx.data.user.applyQuest(r),this.ctx.data.user.patchQuestPointsTracks(i.data.PointsTracks),this.ctx.emitter.emit("quest:userStateLoaded",r);}return i}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 i=e.trim();if(!i)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,s={...this.ctx.buildAuthedBaseRequest(),QuestID:i,CycleID:r,RelatedEntityID:`quest_claim_${r??""}_${i}_${d()}`},o=await this.ctx.api.quest.claimQuestReward(s);if(o.ok){let p=o.data;this.ctx.data.user.patchQuestStatus(p.QuestID,p.CycleID,"Claimed"),this.ctx.data.user.applyResourceOperation(p.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("quest:rewardClaimed",p);}return o}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},i=await this.ctx.api.quest.claimQuestRewardsBatch(t);if(i.ok){let r=false;for(let s of i.data)!s.Success||!s.Data||(this.ctx.data.user.patchQuestStatus(s.Data.QuestID,s.Data.CycleID,"Claimed"),!r&&s.Data.Resources&&(this.ctx.data.user.applyResourceOperation(s.Data.Resources,this.ctx.data.config.itemDefinitions),r=true));this.ctx.emitter.emit("quest:rewardsClaimedBatch",i.data);}return i}async claimMilestoneReward(e,t){let i=e.trim(),r=t.trim();if(!i||!r)return n("client","CycleID and MilestoneID are required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let s={...this.ctx.buildAuthedBaseRequest(),CycleID:i,MilestoneID:r,RelatedEntityID:`milestone_claim_${i}_${r}_${d()}`},o=await this.ctx.api.quest.claimMilestoneReward(s);if(o.ok){let p=o.data;this.ctx.data.user.patchMilestoneClaimed(p.CycleID,p.MilestoneID),this.ctx.data.user.applyResourceOperation(p.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("quest:milestoneClaimed",p);}return o}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},i=await this.ctx.api.quest.claimMilestoneRewardsBatch(t);if(i.ok){let r=false;for(let s of i.data)!s.Success||!s.Data||(this.ctx.data.user.patchMilestoneClaimed(s.Data.CycleID,s.Data.MilestoneID),!r&&s.Data.Resources&&(this.ctx.data.user.applyResourceOperation(s.Data.Resources,this.ctx.data.config.itemDefinitions),r=true));this.ctx.emitter.emit("quest:milestonesClaimedBatch",i.data);}return i}async claimGroupCompletionReward(e,t){let i=e.trim(),r=t.trim();if(!i||!r)return n("client","CycleID and GroupCompletionID are required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let s={...this.ctx.buildAuthedBaseRequest(),CycleID:i,GroupCompletionID:r,RelatedEntityID:`group_completion_${i}_${r}_${d()}`},o=await this.ctx.api.quest.claimGroupCompletionReward(s);if(o.ok){let p=o.data;this.ctx.data.user.patchGroupCompletionClaimed(p.CycleID,p.GroupCompletionID),this.ctx.data.user.applyResourceOperation(p.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("quest:groupCompletionClaimed",p);}return o}async addQuestProgress(e,t){let i=e.trim();if(!i)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:i,ProgressValue:t},s=await this.ctx.api.quest.addQuestProgress(r);return s.ok&&(this.ctx.data.user.patchQuestProgressUpdates(s.data.Updates),this.ctx.emitter.emit("quest:progressAdded",s.data)),s}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var Gc="TimedEvent",Ci=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(Gc,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,i,r,s,o,p=1){if(!t)return n("client","LteID is required.");if(!i)return n("client","SourceType is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let D={...this.ctx.buildAuthedBaseRequest(),Type:e,LteID:t,SourceType:i,Outcome:r,AmountOverride:s,SourceParams:o,RollMultiplier:p},U=await this.ctx.api.timedEvent.grantTokens(D);return U.ok&&(this.ctx.data.user.applyResourceOperation(U.data,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("timedEvent:tokensGranted",U.data)),U}async spendTokens(e,t,i){if(!t)return n("client","LteID is required.");if(i<=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:i},s=await this.ctx.api.timedEvent.spendTokens(r);return s.ok&&(this.ctx.data.user.applyResourceOperation(s.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("timedEvent:tokensSpent",s.data)),s}async claimMilestone(e,t,i){if(!t||!i)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:i},s=await this.ctx.api.timedEvent.claimMilestone(r);if(s.ok){let o=s.data;this.ctx.data.user.applyResourceOperation(o.Rewards,this.ctx.data.config.itemDefinitions),this.ctx.data.user.patchTimedEventMilestoneClaimed(e,t,i),this.ctx.emitter.emit("timedEvent:milestoneClaimed",o);}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},i=await this.ctx.api.timedEvent.claimMilestonesBatch(t);return i.ok&&(this.applyMilestoneClaimBatch(i.data),this.ctx.emitter.emit("timedEvent:milestonesClaimedBatch",i.data)),i}async claimAllMilestones(e){let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");e&&e.length>0&&(t.Events=e);let i=await this.ctx.api.timedEvent.claimAllMilestones(t);return i.ok&&(this.applyMilestoneClaimBatch(i.data),this.ctx.emitter.emit("timedEvent:allMilestonesClaimed",i.data)),i}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},i=await this.ctx.api.timedEvent.spendTokensBatch(t);if(i.ok){let r=false;for(let s of i.data)!r&&s.Success&&s.Data?.Resources&&(this.ctx.data.user.applyResourceOperation(s.Data.Resources,this.ctx.data.config.itemDefinitions),r=true);this.ctx.emitter.emit("timedEvent:tokensSpentBatch",i.data);}return i}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},i=await this.ctx.api.timedEvent.grantTokensBatch(t);if(i.ok){let r=false;for(let s of i.data)!r&&s.Success&&s.Data?.Resources&&(this.ctx.data.user.applyResourceOperation(s.Data.Resources,this.ctx.data.config.itemDefinitions),r=true);this.ctx.emitter.emit("timedEvent:tokensGrantedBatch",i.data);}return i}applyMilestoneClaimBatch(e){let t=false;for(let i of e){if(!i.Success||!i.Data)continue;let r=i.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 Nc="Leaderboard",Si=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(Nc,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 i=await this.ctx.api.leaderboard.getLeaderboard(t);return i.ok&&this.ctx.emitter.emit("leaderboard:loaded",i.data),i}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 i=await this.ctx.api.leaderboard.getMyProgress(t);return i.ok&&(this.ctx.data.user.patchLeaderboardMyProgress(this.cycleDocID(e),i.data),this.ctx.emitter.emit("leaderboard:myProgressLoaded",i.data)),i}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 i={...this.ctx.buildAuthedBaseRequest(),LeaderboardID:e,Score:t},r=await this.ctx.api.leaderboard.submitScore(i);if(r.ok){let s=r.data;this.ctx.data.user.patchLeaderboardScoreSubmitted(this.cycleDocID(e),s.NewScore,t,s.CycleVersion),this.ctx.emitter.emit("leaderboard:scoreSubmitted",s);}return r}async submitScoreFromSource(e,t,i,r,s=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 o={...this.ctx.buildAuthedBaseRequest(),LeaderboardID:e,SourceType:t,Outcome:i,Params:r,RollMultiplier:s},p=await this.ctx.api.leaderboard.submitScoreFromSource(o);if(p.ok){let D=p.data;this.ctx.data.user.patchLeaderboardScoreSubmitted(this.cycleDocID(e),D.NewScore,D.NewScore,D.CycleVersion),this.ctx.emitter.emit("leaderboard:scoreSubmitted",D);}return p}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},i=await this.ctx.api.leaderboard.claimCycleReward(t);if(i.ok){let r=i.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 i}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 i={...this.ctx.buildAuthedBaseRequest(),LeaderboardID:e,MilestoneID:t},r=await this.ctx.api.leaderboard.claimMilestone(i);if(r.ok){let s=r.data;this.ctx.data.user.patchLeaderboardMilestoneClaimed(this.cycleDocID(e),t),this.ctx.data.user.applyResourceOperation(s.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("leaderboard:milestoneClaimed",s);}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 i=await this.ctx.api.leaderboard.getFriendsLeaderboard(t);return i.ok&&this.ctx.emitter.emit("leaderboard:friendsLoaded",i.data),i}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 i=await this.ctx.api.leaderboard.getLeaderboardsBatch(t);return i.ok&&this.ctx.emitter.emit("leaderboard:loadedBatch",i.data),i}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 i=await this.ctx.api.leaderboard.getProgressBatch(t);if(i.ok){for(let r of i.data)!r.Success||!r.Data||this.ctx.data.user.patchLeaderboardMyProgress(this.cycleDocID(r.Data.LeaderboardID),r.Data);this.ctx.emitter.emit("leaderboard:myProgressLoadedBatch",i.data);}return i}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},i=await this.ctx.api.leaderboard.claimCycleRewardsBatch(t);if(i.ok){for(let r of i.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",i.data);}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},i=await this.ctx.api.leaderboard.claimMilestonesBatch(t);if(i.ok){for(let r of i.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",i.data);}return i}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},i=await this.ctx.api.leaderboard.submitScoresBatch(t);if(i.ok){for(let r of i.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",i.data);}return i}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},i=await this.ctx.api.leaderboard.claimAllRewardsBatch(t);if(i.ok){for(let r of i.data){let s=this.cycleDocID(r.LeaderboardID);r.CycleReward?.Success&&r.CycleReward.Data&&(this.ctx.data.user.patchLeaderboardCycleRewardClaimed(s),r.CycleReward.Data.Resources&&this.ctx.data.user.applyResourceOperation(r.CycleReward.Data.Resources,this.ctx.data.config.itemDefinitions));for(let o of r.Milestones??[])!o.Success||!o.Data||(this.ctx.data.user.patchLeaderboardMilestoneClaimed(s,o.Data.MilestoneID),o.Data.Resources&&this.ctx.data.user.applyResourceOperation(o.Data.Resources,this.ctx.data.config.itemDefinitions));}this.ctx.emitter.emit("leaderboard:allRewardsClaimedBatch",i.data);}return i}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 i=await this.ctx.api.leaderboard.getOverviewBatch(t);if(i.ok){for(let r of i.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",i.data);}return i}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var jc="Season",xi=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(jc,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 i=await this.ctx.api.season.getActiveSeason(t);return i.ok&&(i.data.UserState&&this.ctx.data.user.patchSeasonState(e,i.data.UserState),this.ctx.emitter.emit("season:activeLoaded",i.data)),i}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 i=await this.ctx.api.season.getUserState(t);return i.ok&&(this.ctx.data.user.patchSeasonState(e,i.data),this.ctx.emitter.emit("season:userStateLoaded",i.data)),i}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 i={...this.ctx.buildAuthedBaseRequest(),SeasonChainID:e,Amount:t,RelatedEntityID:`season_grant_${e}_${d()}`},r=await this.ctx.api.season.grantStatusTokens(i);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 i={...this.ctx.buildAuthedBaseRequest(),SeasonChainID:e,TierNumber:t,RelatedEntityID:`season_tier_${e}_t${t}_${d()}`},r=await this.ctx.api.season.claimTierReward(i);if(r.ok){let s=r.data;this.ctx.data.user.patchSeasonClaimedTier(e,t),this.ctx.data.user.applyResourceOperation(s.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("season:tierRewardClaimed",s);}return r}async claimTierRewardsBatch(e,t){if(!e)return n("client","SeasonChainID is required.");let i=(t??[]).filter(o=>o>0);if(i.length===0)return n("client","TierNumbers is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let r={...this.ctx.buildAuthedBaseRequest(),SeasonChainID:e,TierNumbers:i,RelatedEntityID:`season_tier_batch_${e}_${d()}`},s=await this.ctx.api.season.claimTierRewardsBatch(r);if(s.ok){let o=s.data;for(let p of o.Items??[]){let D=p.Data?.TierNumber;p.Success&&typeof D=="number"&&this.ctx.data.user.patchSeasonClaimedTier(e,D);}this.ctx.data.user.applyResourceOperation(o.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("season:tierRewardsBatchClaimed",o);}return s}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var Fc="Premium",Di=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(Fc,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 i={...this.ctx.buildAuthedBaseRequest(),PremiumID:e,TransactionID:t,RelatedEntityID:`premium_trial_${e}_${t}`},r=await this.ctx.api.premium.activateTrial(i);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,i="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 s={...this.ctx.buildAuthedBaseRequest(),PremiumID:e,TransactionID:t,SelectedOptionID:i,Count:r,RelatedEntityID:`premium_purchase_${e}_${t}`},o=await this.ctx.api.premium.purchaseItemOrCurrency(s);if(o.ok){let p=o.data;p.Premium&&this.ctx.data.user.applyPremium(p.Premium),this.ctx.data.user.applyResourceOperation(p.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("premium:purchaseCompleted",p);}return o}async purchaseRealMoney(e,t,i,r,s,o,p,D){if(!e||!t)return n("client","PremiumID and TransactionID are required.");if(!r||!s)return n("client","ProductID and ReceiptData are required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let U={...this.ctx.buildAuthedBaseRequest(),PremiumID:e,TransactionID:t,Store:i,ProductID:r,ReceiptData:s,PurchaseToken:o,PackageName:p,AppStoreEnvironment:D,RelatedEntityID:`premium_iap_${e}_${t}`},E=await this.ctx.api.premium.purchaseRealMoney(U);if(E.ok){let de=E.data;de.Premium&&this.ctx.data.user.applyPremium(de.Premium),this.ctx.data.user.applyResourceOperation(de.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("premium:realMoneyPurchaseCompleted",de);}return E}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var Vc="Character",bi=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(Vc,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 i=t.data.Characters??{};this.ctx.data.user.applyCharacter(i),this.ctx.emitter.emit("character:userCharactersLoaded",i);}return t}async unlockCharacter(e,t){if(!e)return n("client","CharacterID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let i={...this.ctx.buildAuthedBaseRequest(),CharacterID:e,SelectedOptionID:t?.selectedOptionID,Payment:t?.payment,RelatedEntityID:`unlock_char_${e}_${d()}`},r=await this.ctx.api.character.unlockCharacter(i);if(r.ok){let s=r.data;this.ctx.data.user.patchCharacter(s.CharacterID,o=>{o.StatLevels??={},o.Equipment??={},s.Power!=null&&(o.Power=s.Power),o.UpdatedAt=s.ServerTimeUtc;}),this.ctx.data.user.applyResourceOperation(s.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("character:unlocked",s);}return r}async upgradeStatLevel(e,t,i){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()}`,...i?.levels!=null?{Levels:i.levels}:{},...i?.targetLevel!=null?{TargetLevel:i.targetLevel}:{}},s=await this.ctx.api.character.upgradeStatLevel(r);if(s.ok){let o=s.data;this.ctx.data.user.patchCharacter(o.CharacterID,p=>{p.StatLevels??={},p.StatLevels[o.StatID]=o.StatLevel,o.Power!=null&&(p.Power=o.Power),p.UpdatedAt=o.ServerTimeUtc;}),this.ctx.data.user.applyResourceOperation(o.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("character:statLevelUpgraded",o);}return s}async upgradeCharacterLevel(e,t){if(!e)return n("client","CharacterID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let i={...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(i);if(r.ok){let s=r.data;this.ctx.data.user.patchCharacter(s.CharacterID,o=>{o.Level=s.NewLevel,s.Power!=null&&(o.Power=s.Power),o.UpdatedAt=s.ServerTimeUtc,s.NewLevel===1&&(o.StatLevels??={},o.Equipment??={});}),this.ctx.data.user.applyResourceOperation(s.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("character:levelUpgraded",s);}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 i={...this.ctx.buildAuthedBaseRequest(),CharacterID:e,ItemsToEquip:t},r=await this.ctx.api.character.equipItems(i);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 i={...this.ctx.buildAuthedBaseRequest(),CharacterID:e,UnequipSlotIDs:t},r=await this.ctx.api.character.unequipItems(i);if(r.ok){let s=r.data;this.applyUnequipChangesLocally(e,s),this.ctx.emitter.emit("character:itemsUnequipped",{characterID:e,slotIDs:s.ClearedSlotIDs??[],power:s.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},i=await this.ctx.api.character.unlockCharactersBatch(t);return i.ok&&(this.applyBatchResults(i.data,r=>{this.ctx.data.user.patchCharacter(r.CharacterID,s=>{s.StatLevels??={},s.Equipment??={},r.Power!=null&&(s.Power=r.Power),s.UpdatedAt=r.ServerTimeUtc;});}),this.ctx.emitter.emit("character:charactersUnlocked",i.data)),i}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},i=await this.ctx.api.character.upgradeCharacterLevelsBatch(t);return i.ok&&(this.applyBatchResults(i.data,r=>{this.ctx.data.user.patchCharacter(r.CharacterID,s=>{s.Level=r.NewLevel,r.Power!=null&&(s.Power=r.Power),s.UpdatedAt=r.ServerTimeUtc,r.NewLevel===1&&(s.StatLevels??={},s.Equipment??={});});}),this.ctx.emitter.emit("character:levelsUpgraded",i.data)),i}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},i=await this.ctx.api.character.upgradeStatLevelsBatch(t);return i.ok&&(this.applyBatchResults(i.data,r=>{this.ctx.data.user.patchCharacter(r.CharacterID,s=>{s.StatLevels??={},s.StatLevels[r.StatID]=r.StatLevel,r.Power!=null&&(s.Power=r.Power),s.UpdatedAt=r.ServerTimeUtc;});}),this.ctx.emitter.emit("character:statLevelsUpgraded",i.data)),i}applyBatchResults(e,t){e.Resources&&this.ctx.data.user.applyResourceOperation(e.Resources,this.ctx.data.config.itemDefinitions);for(let i of e.Items??[])!i.Success||!i.Data||t(i.Data);}applyInventoryDelta(e){this.ctx.data.user.applyInventoryDelta(e);}applyEquipChangesLocally(e,t){let i=this.ctx.data.user;this.applyInventoryDelta(t.Inventory);for(let[r,s]of Object.entries(t.Equipment??{}))i.patchCharacterEquipment(e,r,s);i.patchCharacter(e,r=>{t.Power!=null&&(r.Power=t.Power),r.UpdatedAt=t.ServerTimeUtc;});}applyUnequipChangesLocally(e,t){let i=t.ClearedSlotIDs??[];if(i.length===0&&t.Power==null)return;let r=this.ctx.data.user;this.applyInventoryDelta(t.Inventory);for(let s of i)r.patchCharacterEquipment(e,s,null);r.patchCharacter(e,s=>{t.Power!=null&&(s.Power=t.Power),s.UpdatedAt=t.ServerTimeUtc;});}applyUnequipAllLocally(e){let t=this.ctx.data.user;this.applyInventoryDelta(e.Inventory);for(let[i,r]of Object.entries(e.Characters??{})){for(let s of r.ClearedSlotIDs??[])t.patchCharacterEquipment(i,s,null);t.patchCharacter(i,s=>{r.Power!=null&&(s.Power=r.Power),s.UpdatedAt=e.ServerTimeUtc;});}}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var _c="Match",zi=class{constructor(e){this.ctx=e;}ctx;async createMatch(e,t,i,r,s,o){let p=this.ctx.auth.context;if(!p)return n("unauthorized","Not logged in.");let D={...this.ctx.buildAuthedBaseRequest(),Entry:e,RuleID:t,CharacterID:i,BattleStrategy:r,TargetUserID:s,SelectedOptionID:o,RelatedEntityID:`pvp_create_${p.userID}_${d()}`},U=await this.ctx.api.match.createMatch(D);return U.ok&&(this.ctx.data.user.applyResourceOperation(U.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("match:created",U.data)),U}async updateMatch(e,t={}){if(!e)return n("client","MatchID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let i={...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(i);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},i=await this.ctx.api.match.cancelMatch(t);return i.ok&&(this.ctx.data.user.applyResourceOperation(i.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("match:cancelled",i.data)),i}async instantBattle(e,t,i,r){let s=this.ctx.auth.context;if(!s)return n("unauthorized","Not logged in.");let o={...this.ctx.buildAuthedBaseRequest(),MatchID:e,RuleID:t,CharacterID:i,BattleStrategy:r,RelatedEntityID:`pvp_battle_${e}_${d()}`},p=await this.ctx.api.match.instantBattle(o);if(p.ok){let D=p.data,U=this.ctx.data.config.itemDefinitions;if(D.Resources)this.ctx.data.user.applyResourceOperation(D.Resources,U);else if(D.ResourcesDual){let E=D.ResourcesDual;E.FromUserID===s.userID&&E.FromResult?this.ctx.data.user.applyResourceOperation(E.FromResult,U):E.ToUserID===s.userID&&E.ToResult&&this.ctx.data.user.applyResourceOperation(E.ToResult,U);}this.ctx.emitter.emit("match:instantBattleCompleted",D);}return p}async saveStrategy(e){if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),BattleStrategy:e},i=await this.ctx.api.match.saveStrategy(t);return i.ok&&(this.ctx.data.user.patchMatchStrategy(e),this.ctx.emitter.emit("match:strategySaved",e)),i}async getMyMatches(e=0,t=20,i){let r=this.baseRequest();if(!r)return n("unauthorized","Not logged in.");r.Page=e,r.PageSize=t,r.Statuses=i;let s=await this.ctx.api.match.getMyMatches(r);return s.ok&&this.ctx.emitter.emit("match:myMatchesLoaded",s.data),s}async getAvailableMatches(e=0,t=20,i=false){let r=this.baseRequest();if(!r)return n("unauthorized","Not logged in.");r.Page=e,r.PageSize=t,r.OnlyPublic=i;let s=await this.ctx.api.match.getAvailableMatches(r);return s.ok&&this.ctx.emitter.emit("match:availableMatchesLoaded",s.data),s}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(_c,t.data),this.ctx.emitter.emit("match:definitionsLoaded",t.data)),t}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var Wc="Craft",Ti=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(Wc,t.data.CraftDefinitions),this.ctx.emitter.emit("craft:definitionsLoaded",t.data.CraftDefinitions)),t}async craft(e,t,i=1,r){if(!e)return n("client","CraftID is required.");let s=this.ctx.auth.context;if(!s)return n("unauthorized","Not logged in.");let o={...this.ctx.buildAuthedBaseRequest(),CraftID:e,InputItemIDs:t,Count:i,SelectedOptionID:r,RelatedEntityID:`craft_${e}_${s.userID}_${d()}`},p=await this.ctx.api.craft.craft(o);return p.ok&&(this.ctx.data.user.applyResourceOperation(p.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("craft:completed",p.data)),p}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var Qc="Collection",vi=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(Qc,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,i=1,r){let s=this.ctx.auth.context;if(!s)return n("unauthorized","Not logged in.");let o={...this.ctx.buildAuthedBaseRequest(),CollectionID:e,PackTypeID:t,Count:i,SelectedOptionID:r?.selectedOptionID,Payment:r?.payment,RelatedEntityID:`open_pack_${e}_${t}_${s.userID}_${d()}`},p=await this.ctx.api.collection.openPack(o);return p.ok&&(this.ctx.data.user.applyResourceOperation(p.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("collection:packOpened",p.data)),p}async openCollectionChest(e,t,i=1){let r=this.ctx.auth.context;if(!r)return n("unauthorized","Not logged in.");let s={...this.ctx.buildAuthedBaseRequest(),CollectionID:e,CollectionChestID:t,Count:i,RelatedEntityID:`open_chest_${e}_${t}_${r.userID}_${d()}`},o=await this.ctx.api.collection.openCollectionChest(s);return o.ok&&(this.ctx.data.user.applyResourceOperation(o.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("collection:chestOpened",o.data)),o}async useCollectibleJoker(e,t){let i=this.ctx.auth.context;if(!i)return n("unauthorized","Not logged in.");let r={...this.ctx.buildAuthedBaseRequest(),CollectionID:e,CollectibleID:t,CollectibleIsSpecial:false,RelatedEntityID:`use_joker_${e}_${t}_${i.userID}_${d()}`},s=await this.ctx.api.collection.useCollectibleJoker(r);return s.ok&&(this.ctx.data.user.applyResourceOperation(s.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("collection:jokerUsed",s.data)),s}async claimSetReward(e,t){let i=this.ctx.auth.context;if(!i)return n("unauthorized","Not logged in.");let r={...this.ctx.buildAuthedBaseRequest(),CollectionID:e,SetID:t,RelatedEntityID:`claim_set_${e}_${t}_${i.userID}_${d()}`},s=await this.ctx.api.collection.claimSetReward(r);return s.ok&&(this.ctx.data.user.applyResourceOperation(s.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("collection:setRewardClaimed",s.data)),s}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},i=await this.ctx.api.collection.claimSetRewardsBatch(t);if(i.ok){let r=false;for(let s of i.data)!r&&s.Success&&s.Data?.Resources&&(this.ctx.data.user.applyResourceOperation(s.Data.Resources,this.ctx.data.config.itemDefinitions),r=true);this.ctx.emitter.emit("collection:setRewardsClaimedBatch",i.data);}return i}async claimGrandPrize(e){let t=this.ctx.auth.context;if(!t)return n("unauthorized","Not logged in.");let i={...this.ctx.buildAuthedBaseRequest(),CollectionID:e,RelatedEntityID:`grand_prize_${e}_${t.userID}_${d()}`},r=await this.ctx.api.collection.claimGrandPrize(i);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,i,r,s,o=false){let p=this.ctx.auth.context;if(!p)return n("unauthorized","Not logged in.");let D={...this.ctx.buildAuthedBaseRequest(),CollectionID:e,CollectibleID:t,CollectibleIsSpecial:i,ReceiverUserID:r,RequestedCollectibleID:s,RequestedCollectibleIsSpecial:o,RelatedEntityID:`trade_send_${p.userID}_${r}_${d()}`},U=await this.ctx.api.collection.sendTradeOffer(D);return U.ok&&this.ctx.emitter.emit("collection:tradeOfferSent",U.data),U}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()}`},i=await this.ctx.api.collection.cancelTradeOffer(t);return i.ok&&this.ctx.emitter.emit("collection:tradeOfferCancelled",i.data),i}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()}`},i=await this.ctx.api.collection.acceptTradeOffer(t);return i.ok&&this.ctx.emitter.emit("collection:tradeOfferAccepted",i.data),i}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()}`},i=await this.ctx.api.collection.declineTradeOffer(t);return i.ok&&this.ctx.emitter.emit("collection:tradeOfferDeclined",i.data),i}async getMyTradeOffers(e){let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.CollectionID=e;let i=await this.ctx.api.collection.getMyTradeOffers(t);return i.ok&&this.ctx.emitter.emit("collection:myTradeOffersLoaded",i.data),i}async getIncomingTradeOffers(e){let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.CollectionID=e;let i=await this.ctx.api.collection.getIncomingTradeOffers(t);return i.ok&&this.ctx.emitter.emit("collection:incomingTradeOffersLoaded",i.data),i}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var Kc="CoopEvent",Pi=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(Kc,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 i=await this.ctx.api.coopEvent.getActiveEvent(t);return i.ok&&this.ctx.emitter.emit("coopEvent:activeEventLoaded",i.data),i}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 i=await this.ctx.api.coopEvent.getGroupState(t);return i.ok&&this.ctx.emitter.emit("coopEvent:groupStateLoaded",i.data),i}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},i=await this.ctx.api.coopEvent.joinOrCreateGroup(t);if(i.ok){let r=i.data.Group;r&&this.ctx.data.user.patchCoopEventActiveGroup(r.GroupID??null,r.CoopEventID??null,-1),this.ctx.emitter.emit("coopEvent:groupJoined",i.data);}return i}async spin(e,t,i=1,r){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,Count:i,SelectedOptionID:r,RelatedEntityID:d()},o=await this.ctx.api.coopEvent.spin(s);return o.ok&&(this.ctx.data.user.applyResourceOperation(o.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("coopEvent:spinCompleted",o.data)),o}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},i=await this.ctx.api.coopEvent.claimObjectReward(t);return i.ok&&(this.ctx.data.user.applyResourceOperation(i.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("coopEvent:objectRewardClaimed",i.data)),i}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},i=await this.ctx.api.coopEvent.claimGrandPrize(t);return i.ok&&(this.ctx.data.user.applyResourceOperation(i.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.data.user.patchCoopEventActiveGroup(null,null,-1),this.ctx.emitter.emit("coopEvent:grandPrizeClaimed",i.data)),i}async leaveGroup(e){if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),GroupID:e},i=await this.ctx.api.coopEvent.leaveGroup(t);return i.ok&&(this.ctx.data.user.patchCoopEventActiveGroup(null,null,-1),this.ctx.emitter.emit("coopEvent:groupLeft",i.data)),i}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var Hc="DealOffer",Ii=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(Hc,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()}`},i=await this.ctx.api.dealOffer.dismissDeal(t);return i.ok&&(this.ctx.data.user.applyResourceOperation(i.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("dealOffer:dealDismissed",i.data)),i}async executeNode(e,t,i,r){if(!e||!t)return n("client","SlotID and NodeID are required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let s=i&&i.trim().length>0?i.trim():void 0,o={...this.ctx.buildAuthedBaseRequest(),SlotID:e,NodeID:t,SelectedOptionID:r?.selectedOptionID,Payment:r?.payment,RelatedEntityID:s??`deal_exec_${e}_${t}_${d()}`},p=await this.ctx.api.dealOffer.executeNode(o);return p.ok&&(p.data.Idempotent||this.ctx.data.user.applyResourceOperation(p.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("dealOffer:nodeExecuted",p.data)),p}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()}`},i=await this.ctx.api.dealOffer.recordShow(t);return i.ok&&(this.ctx.data.user.applyResourceOperation(i.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("dealOffer:showRecorded",i.data)),i}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 i={...this.ctx.buildAuthedBaseRequest(),SlotID:e,MilestoneID:t,RelatedEntityID:`deal_milestone_${e}_${t}_${d()}`},r=await this.ctx.api.dealOffer.claimMilestone(i);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 i=[...new Set(t.map(o=>o.trim()).filter(o=>o.length>0))],r={...this.ctx.buildAuthedBaseRequest(),SlotID:e,MilestoneIDs:i,RelatedEntityID:`deal_milestone_batch_${e}_${d()}`},s=await this.ctx.api.dealOffer.claimMilestonesBatch(r);return s.ok&&(this.ctx.data.user.applyResourceOperation(s.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("dealOffer:milestonesBatchClaimed",s.data)),s}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var $c="Referral",ki=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($c,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 i=this.ctx.auth.context;if(!i)return n("unauthorized","Not logged in.");let r={...this.ctx.buildAuthedBaseRequest(),ReferralCode:t,RelatedEntityID:`referral_activation_${i.userID}`},s=await this.ctx.api.referral.activateReferralCode(r);if(s.ok){let o=s.data;o.ReferralCode&&this.ctx.data.user.patchReferralSubscription(o.ReferralCode),this.ctx.data.user.applyResourceOperation(o.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("referral:codeActivated",o);}return s}async claimInviteReward(e){let t=e.trim();if(!t)return n("client","InviteRewardID is required.");let i=this.ctx.auth.context;if(!i)return n("unauthorized","Not logged in.");let r={...this.ctx.buildAuthedBaseRequest(),InviteRewardID:t,RelatedEntityID:`referral_invite_${t}_${i.userID}`},s=await this.ctx.api.referral.claimInviteReward(r);if(s.ok){let o=s.data;o.RewardID&&this.ctx.data.user.patchReferralInviteRewardClaimed(o.RewardID),this.ctx.data.user.applyResourceOperation(o.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("referral:inviteRewardClaimed",o);}return s}async claimInviteRewardsBatch(e){let t=(e??[]).map(o=>o?.trim()).filter(Boolean);if(t.length===0)return n("client","InviteRewardIDs is required.");let i=this.ctx.auth.context;if(!i)return n("unauthorized","Not logged in.");let r={...this.ctx.buildAuthedBaseRequest(),InviteRewardIDs:t,RelatedEntityID:`referral_invite_batch_${t.join("_")}_${i.userID}`},s=await this.ctx.api.referral.claimInviteRewardsBatch(r);if(s.ok){let o=s.data;for(let p of o.Items??[])p.Success&&p.Id&&this.ctx.data.user.patchReferralInviteRewardClaimed(p.Id);this.ctx.data.user.applyResourceOperation(o.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("referral:inviteRewardsBatchClaimed",o);}return s}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var Mi=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 i=await this.ctx.api.social.getRecommendedFriends(t);return i.ok&&this.ctx.emitter.emit("social:recommendedFriendsLoaded",i.data),i}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},i=await this.ctx.api.social.sendFriendRequest(t);return i.ok&&(this.ctx.data.user.patchSocialAddOutgoingRequest(e),this.ctx.emitter.emit("social:friendRequestSent",i.data)),i}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},i=await this.ctx.api.social.acceptFriendRequest(t);return i.ok&&(this.ctx.data.user.patchSocialAcceptFriend(e),this.ctx.emitter.emit("social:friendRequestAccepted",i.data)),i}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},i=await this.ctx.api.social.declineFriendRequest(t);return i.ok&&(this.ctx.data.user.patchSocialRemoveIncomingRequest(e),this.ctx.emitter.emit("social:friendRequestDeclined",i.data)),i}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},i=await this.ctx.api.social.removeFriend(t);return i.ok&&(this.ctx.data.user.patchSocialRemoveFriend(e),this.ctx.emitter.emit("social:friendRemoved",i.data)),i}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 Zc="TimedBoost";function Jc(a){return a.length>0&&!a.includes(".")&&!a.includes("$")}var wi=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(Zc,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,t){let i=e.trim();if(!Jc(i))return n("client",'BoostID is required and must not contain "." or "$".');if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let r={...this.ctx.buildAuthedBaseRequest(),BoostID:i,SelectedOptionID:t?.selectedOptionID,Payment:t?.payment,RelatedEntityID:`timed_boost_activate_${i}_${d()}`},s=await this.ctx.api.timedBoost.activate(r);if(s.ok){let o=s.data;if(o.ActivatedBoost){let p=o.StackingPolicy??"Replace";this.ctx.data.user.patchActiveTimedBoost(o.ActivatedBoost,p);}this.ctx.data.user.applyResourceOperation(o.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("timedBoost:activated",o);}return s}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 tt={Private:"Private",Public:"Public",ReadOnly:"ReadOnly",Internal:"Internal"},Yc={Client:"Client",Server:"Server",System:"System"},Xc=z.enum(["Client","Server","System"]),ep=z.object({Value:z.string().nullish(),UpdatedAt:u.nullish(),Version:z.number().nullish(),LastWriter:Xc.nullish(),ExpiresAt:u.nullish()}).passthrough(),Oi=z.record(z.string(),ep),Yn=z.object({Version:z.number().nullish(),Private:Oi.nullish(),Public:Oi.nullish(),ReadOnly:Oi.nullish()}),fs=z.object({UserID:z.string().nullish(),Version:z.number().nullish(),Public:Oi.nullish()}),gs=z.object({ServerTimeUtc:u.nullish(),Bucket:z.string().nullish(),KeyID:z.string(),Version:z.number().nullish(),ExpiresAt:u.nullish()}),tp=z.object({Bucket:z.string().nullish(),KeyID:z.string(),Version:z.number().nullish(),ExpiresAt:u.nullish()}),Xn=z.object({ServerTimeUtc:u.nullish(),Results:z.array(tp).nullish()}),eo=z.object({ServerTimeUtc:u.nullish(),DeletedCount:z.number().nullish()}),to=z.object({Results:z.array(fs).nullish(),NotFoundUserIDs:z.array(z.string()).nullish()}),ip={String:"String",Int:"Int",Bool:"Bool",Json:"Json"},rp=z.enum(["String","Int","Bool","Json"]),sp=z.object({KeyID:z.string(),Bucket:z.string().nullish(),ValueType:rp.nullish(),MaxValueLengthBytes:z.number().nullish(),TtlSeconds:z.number().nullish(),DefaultValue:z.string().nullish(),Description:z.string().nullish()}).passthrough(),Ai=z.object({Keys:z.record(z.string(),sp).nullish(),DefaultMaxValueLengthBytes:z.number().nullish(),DefaultTtlSeconds:z.number().nullish(),MaxKeysPerBucket:z.number().nullish(),MaxTotalSizeBytes:z.number().nullish(),RejectUnregisteredKeys:z.boolean().nullish()}).passthrough(),_e={GetUserCustomDataDefinitions:"GetUserCustomDataDefinitions",GetMyUserCustomData:"GetMyUserCustomData",GetPublicUserCustomDataOf:"GetPublicUserCustomDataOf",SetPrivateData:"SetPrivateData",SetPublicData:"SetPublicData",DeleteKey:"DeleteKey",BatchSet:"BatchSet",BatchDelete:"BatchDelete",BatchGetPublicUserCustomDataOf:"BatchGetPublicUserCustomDataOf"};var np="UserCustomData";function io(a){return a.length>0&&!a.includes(".")&&!a.includes("$")}var Ui=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(np,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 i=this.baseRequest();if(!i)return n("unauthorized","Not logged in.");i.TargetUserID=t;let r=await this.ctx.api.userCustomData.getPublicUserCustomDataOf(i);return r.ok&&this.ctx.emitter.emit("userCustomData:publicDataLoaded",r.data),r}async setPrivateData(e,t){return this.setData(e,t,tt.Private)}async setPublicData(e,t){return this.setData(e,t,tt.Public)}async setData(e,t,i){let r=e.trim();if(!io(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 s={...this.ctx.buildAuthedBaseRequest(),KeyID:r,Value:t},p=await(i===tt.Private?this.ctx.api.userCustomData.setPrivateData(s):this.ctx.api.userCustomData.setPublicData(s));if(p.ok){let D=p.data;this.ctx.data.user.patchUserCustomDataKey(i,D.KeyID,t,D.Version??0,D.ExpiresAt),this.ctx.emitter.emit(i===tt.Private?"userCustomData:privateDataSet":"userCustomData:publicDataSet",D);}return p}async deleteKey(e,t){let i=e.trim();if(!io(i))return n("client",'KeyID is required and must not contain "." or "$".');if(t!==tt.Private&&t!==tt.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:i,Bucket:t},s=await this.ctx.api.userCustomData.deleteKey(r);return s.ok&&(this.ctx.data.user.removeUserCustomDataKey(t,i),this.ctx.emitter.emit("userCustomData:keyDeleted",void 0)),s}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},i=await this.ctx.api.userCustomData.batchSet(t);if(i.ok){for(let r of i.data.Results??[]){let s=r.Bucket??tt.Private,o=e.find(p=>p.Bucket===s&&p.KeyID===r.KeyID);o&&this.ctx.data.user.patchUserCustomDataKey(s,r.KeyID,o.Value,r.Version??0,r.ExpiresAt);}this.ctx.emitter.emit("userCustomData:batchSet",i.data);}return i}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},i=await this.ctx.api.userCustomData.batchDelete(t);if(i.ok){for(let r of e)this.ctx.data.user.removeUserCustomDataKey(r.Bucket,r.KeyID.trim());this.ctx.emitter.emit("userCustomData:batchDeleted",i.data);}return i}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 i=await this.ctx.api.userCustomData.batchGetPublicUserCustomDataOf(t);return i.ok&&this.ctx.emitter.emit("userCustomData:batchPublicDataLoaded",i.data),i}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var op="TitleCustomDataDefinitions",ro=50;function ap(a){return a.length>0&&!a.includes(".")&&!a.includes("$")}function Rs(a){if(a.ExpiresAt==null)return false;let e=Date.parse(a.ExpiresAt);return !Number.isNaN(e)&&e<=Date.now()}function lp(a){let e={};for(let[t,i]of Object.entries(a))Rs(i)||(e[t]=i);return e}var Bi=class{constructor(e){this.ctx=e;}ctx;lastRuntimeVersion=null;runtimeCache={};async getTitleCustomDataDefinitions(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.titleCustomData.getTitleCustomDataDefinitions(e);return t.ok&&(this.ctx.data.config.patchSection(op,t.data),this.ctx.emitter.emit("titleCustomData:definitionsLoaded",t.data)),t}async getPublicTitleData(e=true){let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");e&&this.lastRuntimeVersion!=null&&(t.KnownRuntimeVersion=this.lastRuntimeVersion);let i=await this.ctx.api.titleCustomData.getPublicTitleData(t);return i.ok&&this.absorb(i.data),i}async getPublicTitleDataKeys(e){let t=e.map(s=>s.trim()).filter(s=>s.length>0);if(!t.length)return n("client","At least one KeyID is required.");if(t.some(s=>!ap(s)))return n("client",'KeyID must not contain "." or "$".');if(t.length>ro)return n("client",`At most ${ro} keys per call \u2014 request them in chunks.`);let i=this.baseRequest();if(!i)return n("unauthorized","Not logged in.");i.KeyIDs=t;let r=await this.ctx.api.titleCustomData.getPublicTitleDataKeys(i);return r.ok&&this.ctx.emitter.emit("titleCustomData:publicDataLoaded",r.data),r}getValue(e){let t=this.runtimeCache[e];if(t?.Value!=null&&!Rs(t))return t.Value;let i=this.staticCache[e];if(i?.Value!=null&&!Rs(i))return i.Value}get runtimeVersion(){return this.lastRuntimeVersion}staticCache={};absorb(e){e.Static&&(this.staticCache=e.Static),e.NotModified?(this.runtimeCache=lp(this.runtimeCache),e.Runtime=this.runtimeCache):e.Runtime&&(this.runtimeCache=e.Runtime),e.RuntimeVersion!=null&&(this.lastRuntimeVersion=e.RuntimeVersion),this.ctx.emitter.emit("titleCustomData:publicDataLoaded",e);}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var Li=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 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 up=15,cp="GameLoop",pp="BoardDefinition",qi=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(cp,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 i=await this.ctx.api.gameLoop.getBoardDefinition(t,e);return i.ok&&(this.ctx.data.config.patchSection(pp,i.data),this.ctx.emitter.emit("gameLoop:boardDefinitionLoaded",i.data)),i}async getBoardDefinitionForLevel(e,t=false){if(e<=0)return n("client","stageLevel must be > 0.");let i=this.baseRequest();if(!i)return n("unauthorized","Not logged in.");i.StageLevel=e;let r=await this.ctx.api.gameLoop.getBoardDefinitionForLevel(i,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 i={...this.ctx.buildAuthedBaseRequest(),RollMultiplier:e,RelatedEntityID:`roll_${t.userID}_${d()}`},r=await this.ctx.api.gameLoop.boardLoopRoll(i);if(r.ok){let s=r.data,o=Wn(new Date,up);this.ctx.data.user.patchBoardState(p=>{p.Position=s.NewPosition,p.CyclesCompleted=(p.CyclesCompleted??0)+(s.CyclesCompletedDelta??0),p.LastRollAtUtc=new Date().toISOString(),s.ActionRequired&&s.ActionData?p.Pending={Type:s.ActionRequired,TargetUserID:s.ActionData.TargetUserID,TargetPublicData:s.ActionData.PublicData,TargetBuildingStates:s.ActionData.TargetBuildingStates??void 0,TargetHasShield:s.ActionData.TargetHasShield??void 0,RollMultiplier:s.UsedMultiplier??1,ExpiresAtUtc:o}:s.SpecialModeOffer&&(p.Pending={Type:"SPECIAL",RollMultiplier:s.UsedMultiplier??1,ExpiresAtUtc:o,Special:{ModeID:s.SpecialModeOffer.ModeID??void 0,Choices:s.SpecialModeOffer.Choices??void 0}});}),s.Operation&&this.ctx.data.user.applyResourceOperation(s.Operation,this.itemDefs),s.ActionRequired==="RAID"&&await this.getUserBoardState(),this.ctx.emitter.emit("gameLoop:boardRolled",s);}return r}async boardLoopAttack(e=-1){let t=this.ctx.auth.context;if(!t)return n("unauthorized","Not logged in.");let i={...this.ctx.buildAuthedBaseRequest(),BuildingIndex:e,RelatedEntityID:`attack_${t.userID}_${d()}`},r=await this.ctx.api.gameLoop.boardLoopAttack(i);if(r.ok){let s=r.data;this.ctx.data.user.clearBoardPending(),s.IsBotTarget&&s.Operation?this.ctx.data.user.applyResourceOperation(s.Operation,this.itemDefs):!s.IsBotTarget&&s.DualResult?.FromResult&&this.ctx.data.user.applyResourceOperation(s.DualResult.FromResult,this.itemDefs),this.ctx.emitter.emit("gameLoop:boardAttacked",s);}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 i=this.ctx.auth.context;if(!i)return n("unauthorized","Not logged in.");let r={...this.ctx.buildAuthedBaseRequest(),DigIndex:e,RelatedEntityID:t??`raid_${i.userID}_${d()}`},s=await this.ctx.api.gameLoop.boardLoopRaid(r);if(s.ok){let o=s.data;o.Status==="CONTINUE"?this.ctx.data.user.patchBoardPendingRaidLayout(o.RaidLayout,o.OpenedIndex??-1):(this.ctx.data.user.clearBoardPending(),this.applyRaidResources(o)),this.ctx.emitter.emit("gameLoop:boardRaided",o);}else await this.getUserBoardState();return s}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 i={...this.ctx.buildAuthedBaseRequest(),DigIndices:e,RelatedEntityID:`raidfast_${t.userID}_${d()}`},r=await this.ctx.api.gameLoop.boardLoopRaidFast(i);if(r.ok){let s=r.data;s.Status!=="CONTINUE"&&(this.ctx.data.user.clearBoardPending(),this.applyRaidResources(s)),this.ctx.emitter.emit("gameLoop:boardRaidedFast",s);}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 i={...this.ctx.buildAuthedBaseRequest(),BuildingIndex:e,RelatedEntityID:`build_${t.userID}_${e}_${d()}`},r=await this.ctx.api.gameLoop.boardLoopBuild(i);if(r.ok){let s=r.data;s.StageComplete?this.ctx.data.user.patchBoardState(o=>{o.StageLevel=(o.StageLevel??1)+1,o.Position=0,o.Pending=null,o.BuildingStates=null;}):this.ctx.data.user.patchBoardBuilding(s.BuiltIndex,o=>{s.NewLevel!=null&&(o.Level=s.NewLevel),o.IsDamaged=false,s.MaxLevelRewardClaimed&&(o.MaxLevelRewardClaimed=true);}),s.Operation&&this.ctx.data.user.applyResourceOperation(s.Operation,this.itemDefs),this.ctx.emitter.emit("gameLoop:boardBuilt",s);}return r}async boardSpecialChoose(e,t){if(!e)return n("client","choiceID must not be empty.");let i=this.ctx.auth.context;if(!i)return n("unauthorized","Not logged in.");let r={...this.ctx.buildAuthedBaseRequest(),ChoiceID:e,SelectedOptionID:t,RelatedEntityID:`special_choose_${i.userID}_${d()}`},s=await this.ctx.api.gameLoop.boardSpecialChoose(r);if(s.ok){let o=s.data;o.Mode==="Instant"||o.Mode===0?this.ctx.data.user.clearBoardPending():this.ctx.data.user.patchBoardSpecialPending(D=>{D.ChoiceID=e,D.ChosenMode=o.Mode??"Timed",D.StartedAtUtc=o.StartedAtUtc??null,D.DurationSeconds=o.DurationSeconds??null,D.AdViewsUsed=0;}),o.Operation&&this.ctx.data.user.applyResourceOperation(o.Operation,this.itemDefs),this.ctx.emitter.emit("gameLoop:boardSpecialChose",o);}return s}async boardSpecialApplyMultiplier(e){let t=this.ctx.auth.context;if(!t)return n("unauthorized","Not logged in.");let i={...this.ctx.buildAuthedBaseRequest(),RelatedEntityID:e??`special_ad_${t.userID}_${d()}`},r=await this.ctx.api.gameLoop.boardSpecialApplyMultiplier(i);if(r.ok){let s=r.data;this.ctx.data.user.patchBoardSpecialPending(o=>{o.AdViewsUsed=s.AdViewsUsed??0,o.AccumulatedMultiplier=s.AccumulatedMultiplier??0;}),this.ctx.emitter.emit("gameLoop:boardSpecialApplyMultiplier",s);}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()}`},i=await this.ctx.api.gameLoop.boardSpecialClaim(t);if(i.ok){let r=i.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 i}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 i=t.data.Group;i?.GroupID&&this.ctx.data.user.applyCommunityChestUserState({ActiveGroupID:i.GroupID,ActiveRoundIndex:i.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 i={...this.ctx.buildAuthedBaseRequest(),MilestoneID:e,GroupID:t},r=await this.ctx.api.gameLoop.claimCommunityChestMilestone(i);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},i=await this.ctx.api.gameLoop.claimCommunityChestGrandPrize(t);return i.ok&&(i.data.Resources&&this.ctx.data.user.applyResourceOperation(i.data.Resources,this.itemDefs),this.ctx.emitter.emit("gameLoop:communityChestGrandPrizeClaimed",i.data)),i}async leaveCommunityChest(e){if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),GroupID:e},i=await this.ctx.api.gameLoop.leaveCommunityChest(t);return i.ok&&(i.data.Success&&this.ctx.data.user.applyCommunityChestUserState({ActiveGroupID:void 0,ActiveRoundIndex:-1}),this.ctx.emitter.emit("gameLoop:communityChestLeft",i.data)),i}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 Ei=class{constructor(e){this.ctx=e;}ctx;async execute(e,t,i,r){let s=e.trim();if(!s)return n("client","FunctionName is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let o={...this.ctx.buildAuthedBaseRequest(),FunctionName:s,FunctionParameter:t,RevisionSelection:i,SpecificRevision:r},p=await this.ctx.api.cloudCode.execute(o);return p.ok&&this.ctx.emitter.emit("cloudCode:executed",p.data),p}};var so=z.object({ServerTimeUtc:u,SourceType:St,SourceID:z.string(),TargetType:St,TargetID:z.string(),SourceSpent:w,FeeAmount:w,RateApplied:q,TargetCredited:w}),no=z.object({ServerTimeUtc:u,SourceType:St,SourceID:z.string(),TargetType:St,TargetID:z.string(),SourceSpent:q,FeeAmount:q,RateApplied:q,TargetCredited:q}),Gi={Convert:"Convert",CryptoConvert:"CryptoConvert"},dp={Active:"Active",Hidden:"Hidden",Deprecated:"Deprecated",Maintenance:"Maintenance"},oo=z.enum(["Active","Hidden","Deprecated","Maintenance"]),hp={Automatic:"Automatic",Manual:"Manual"},mp=z.enum(["Automatic","Manual"]),fp=z.object({ValueInUSD:q.nullish(),ValueInUSDUpdatedAt:u.nullish(),InitialDeposit:z.number().nullish(),MinBalance:z.number().nullish(),MaxBalance:z.number().nullish(),DailyEarnLimit:z.number().nullish(),DailySpendLimit:z.number().nullish()}).passthrough(),gp=z.object({Rate:z.number().nullish(),Max:z.number().nullish(),Period:z.number().nullish()}).passthrough(),Rp=z.object({IsTradable:z.boolean().nullish(),IsPurchasable:z.boolean().nullish(),IsRefundable:z.boolean().nullish()}).passthrough(),yp=z.object({TargetCurrencyType:St.nullish(),TargetCurrencyID:z.string(),Rate:q.nullish(),MinAmount:z.number().nullish(),MaxAmount:z.number().nullish(),DailyLimit:z.number().nullish()}).passthrough(),ao=z.object({Enabled:z.boolean().nullish(),RateMode:mp.nullish(),FeePercent:q.nullish(),Targets:z.array(yp).nullish()}).passthrough(),lo=z.object({CreatedAt:u.nullish(),UpdatedAt:u.nullish()}).passthrough(),Cp=z.object({CurrencyID:z.string(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Economy:fp.nullish(),Recharge:gp.nullish(),Conversion:ao.nullish(),Permissions:Rp.nullish(),Audit:lo.nullish(),Status:oo.nullish()}).passthrough(),Sp=z.object({NetworkID:z.string(),ContractAddress:z.string().nullish(),Decimals:z.number().nullish(),MinDeposit:q.nullish(),MinWithdraw:q.nullish(),WithdrawFee:q.nullish(),DepositsEnabled:z.boolean().nullish(),WithdrawalsEnabled:z.boolean().nullish()}).passthrough(),xp=z.object({DailyWithdrawUsd:q.nullish(),MonthlyWithdrawUsd:q.nullish(),KycRequiredAboveUsd:q.nullish()}).passthrough(),Dp=z.object({DepositsEnabled:z.boolean().nullish(),WithdrawalsEnabled:z.boolean().nullish(),SpendableInGame:z.boolean().nullish(),ConvertibleToVirtual:z.boolean().nullish()}).passthrough(),ys=z.object({CurrencyID:z.string(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),DisplayDecimals:z.number().nullish(),ValueInUSD:q.nullish(),ValueInUSDUpdatedAt:u.nullish(),DeveloperDepositSharePercent:q.nullish(),CommunityMarketingDepositSharePercent:q.nullish(),WithdrawalBurnPercent:q.nullish(),Networks:z.array(Sp).nullish(),Limits:xp.nullish(),Permissions:Dp.nullish(),Conversion:ao.nullish(),Audit:lo.nullish(),Status:oo.nullish()}).passthrough(),Ni=z.object({VirtualCurrencies:z.record(z.string(),Cp).nullish(),CryptoCurrencies:z.record(z.string(),ys).nullish()}).passthrough();var uo=z.object({OptionID:z.string().nullish(),Name:z.string().nullish(),Cost:Ut.nullish(),AllowedPlatforms:z.array(Vt).nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),Y=z.record(z.string(),uo),bp=z.object({Store:_t,Receipt:z.string(),Signature:z.string().nullish()}).passthrough();var co=z.object({CatalogID:z.string().nullish(),ItemID:z.string().nullish(),ItemInstanceID:z.string().nullish(),EquippedAt:u.nullish()}),Cs=z.object({CharacterID:z.string(),Level:z.number().nullish(),Experience:w.nullish(),Power:z.number().nullish(),StatLevels:z.record(z.string(),z.number()).nullish(),Equipment:z.record(z.string(),co).nullish(),UpdatedAt:u.nullish()}).passthrough(),zp=z.object({CharacterID:z.string().nullish(),SlotID:z.string().nullish()}).passthrough(),Tp=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:u,ExpiresAt:u.nullish(),EquippedSlot:zp.nullish(),CustomData:z.string().nullish()}).passthrough().transform(a=>a),ut=z.object({ChangedInstances:z.record(z.string(),Tp).nullish(),RemovedInstanceIDs:z.array(z.string()).nullish()}),po=z.object({Characters:z.record(z.string(),Cs).nullish()}),Ss=z.object({ServerTimeUtc:u,CharacterID:z.string(),StatID:z.string(),StatLevel:z.number(),Power:z.number().nullish(),Resources:b.nullish()}),xs=z.object({ServerTimeUtc:u,CharacterID:z.string(),NewLevel:z.number(),Power:z.number().nullish(),Resources:b.nullish()}),ho=z.object({ServerTimeUtc:u,CharacterID:z.string(),Equipment:z.record(z.string(),co).nullish(),ReplacedInstanceIDs:z.array(z.string()).nullish(),Power:z.number().nullish(),Inventory:ut.nullish()}),mo=z.object({ServerTimeUtc:u,CharacterID:z.string(),ClearedSlotIDs:z.array(z.string()).nullish(),Power:z.number().nullish(),Inventory:ut.nullish()}),vp=z.object({ClearedSlotIDs:z.array(z.string()).nullish(),Power:z.number().nullish()}),fo=z.object({ServerTimeUtc:u,Characters:z.record(z.string(),vp).nullish(),Inventory:ut.nullish()}),Ds=z.object({ServerTimeUtc:u,CharacterID:z.string(),Power:z.number().nullish(),Resources:b.nullish()}),go=$e(Ds),Ro=$e(xs),yo=$e(Ss),Co=z.object({RequiredStatID:z.string(),RequiredLevel:z.number()}).passthrough(),So=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(),PriceOptions:Y.nullish(),CostScalingFactor:z.number().nullish(),BaseStatValue:z.number().nullish(),StatScalingFactor:z.number().nullish(),CharacterLevelScalingFactor:z.number().nullish(),Requirements:z.array(Co).nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),xo=z.object({Level:z.number().nullish(),PriceOptions:Y.nullish(),GlobalStatMultiplier:z.number().nullish(),StatMaxLevelMultiplier:z.number().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),Pp=z.object({SlotID:z.string(),MinCharacterLevel:z.number().nullish(),StatRequirements:z.array(Co).nullish(),AllowedRarityIDs:z.array(z.string()).nullish(),AllowedItemTags:z.array(z.string()).nullish(),MinItemLevel:z.number().nullish(),MaxItemLevel:z.number().nullish()}).passthrough(),Do=z.object({Slots:z.record(z.string(),Pp).nullish()}).passthrough(),Ip=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(),kp=z.object({ClassID:z.string().nullish(),RarityID:z.string().nullish(),Tags:z.array(z.string()).nullish()}).passthrough(),Mp=z.object({UnlockedByDefault:z.boolean().nullish(),PriceOptions:Y.nullish()}).passthrough(),wp=z.object({Stats:X.nullish(),Levels:X.nullish(),Equipment:X.nullish()}).passthrough(),Op=z.object({CharacterID:z.string(),Identity:Ip.nullish(),Classification:kp.nullish(),Unlock:Mp.nullish(),Presets:wp.nullish(),Equipment:Do.nullish(),Stats:z.record(z.string(),So).nullish(),Levels:z.record(z.string(),xo).nullish()}).passthrough(),Ap=z.object({Stats:z.record(z.string(),So).nullish()}).passthrough(),Up=z.object({Levels:z.record(z.string(),xo).nullish()}).passthrough(),Bp=z.object({Equipment:Do.nullish()}).passthrough(),Lp=z.object({Stats:z.record(z.string(),Ap).nullish(),Levels:z.record(z.string(),Up).nullish(),Equipment:z.record(z.string(),Bp).nullish()}).passthrough(),ji=z.object({Definitions:z.record(z.string(),Op).nullish(),Presets:Lp.nullish()}).passthrough(),Me={GetCharacterDefinitions:"GetCharacterDefinitions",GetUserCharacters:"GetUserCharacters",UnlockCharacter:"UnlockCharacter",UpgradeStatLevel:"UpgradeStatLevel",UpgradeCharacterLevel:"UpgradeCharacterLevel",EquipItems:"EquipItems",UnequipItems:"UnequipItems",UnequipAllCharacters:"UnequipAllCharacters",UnlockCharactersBatch:"UnlockCharactersBatch",UpgradeCharacterLevelsBatch:"UpgradeCharacterLevelsBatch",UpgradeStatLevelsBatch:"UpgradeStatLevelsBatch"};var qp={EVM:"EVM",Solana:"Solana"},Ep=z.enum(["EVM","Solana"]),Gp={AutoLinkedFromTransaction:"AutoLinkedFromTransaction",SignatureVerified:"SignatureVerified",ManuallyLinked:"ManuallyLinked"},Np=z.enum(["AutoLinkedFromTransaction","SignatureVerified","ManuallyLinked"]),jp={Token:"Token",Nft:"Nft"},bo=z.enum(["Token","Nft"]),Fp={NotRequested:"NotRequested",Pending:"Pending",Verified:"Verified",Rejected:"Rejected",Expired:"Expired"},Vp=z.enum(["NotRequested","Pending","Verified","Rejected","Expired"]),_p={None:"None",Tier1:"Tier1",Tier2:"Tier2",Tier3:"Tier3"},Wp=z.enum(["None","Tier1","Tier2","Tier3"]),Qp={Pending:"Pending",Completed:"Completed",Failed:"Failed",Expired:"Expired",Abandoned:"Abandoned"},bs=z.enum(["Pending","Completed","Failed","Expired","Abandoned"]),zo={GameTopUp:"game_topup",CommunityReward:"community_reward"};function Fi(a){let e=a?.trim();return e||zo.GameTopUp}var Kp={UsersCryptoWallet:"UsersCryptoWallet",Game:"Game"},To=z.enum(["UsersCryptoWallet","Game"]),Hp=z.object({ContractAddress:z.string().nullish(),ItemCatalogID:z.string().nullish(),DisplayName:z.string().nullish(),DepositsEnabled:z.boolean().nullish(),WithdrawalsEnabled:z.boolean().nullish()}).passthrough(),vo=z.object({Ios:z.boolean().nullish(),Android:z.boolean().nullish(),Web:z.boolean().nullish()}).passthrough(),$p=z.object({NetworkID:z.string().nullish(),DisplayName:z.string().nullish(),Type:Ep.nullish(),ChainID:z.number().nullish(),ChainTicker:z.string().nullish(),RewardPoolAddress: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:vo.nullish(),NftCollections:z.array(Hp).nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),Zp=z.object({DepositsEnabled:z.boolean().nullish(),WithdrawalsEnabled:z.boolean().nullish(),NftDepositsEnabled:z.boolean().nullish(),NftWithdrawalsEnabled:z.boolean().nullish(),PlatformOverrides:vo.nullish()}).passthrough(),Jp=z.object({MinAccountAgeDays:z.number().nullish(),MultiAccountCheckEnabled:z.boolean().nullish(),BanOnSharedWithdrawalAddress:z.boolean().nullish(),PendingWithdrawalTtlHours:z.number().nullish()}).passthrough();var Yp=z.enum(["OnChain","Combined"]),Xp=z.object({Enabled:z.boolean().nullish(),NetworkID:z.string().nullish(),CurrencyID:z.string().nullish(),MinBalance:q.nullish(),BalanceSource:Yp.nullish(),DenyMessage:z.string().nullish()}).passthrough(),ed=z.object({Enabled:z.boolean().nullish(),TokenGates:z.array(Xp).nullish(),WalletConnectProjectId:z.string().nullish()}).passthrough(),zs=z.object({SystemState:Zp.nullish(),Networks:z.record(z.string(),$p).nullish(),AccountSafety:Jp.nullish(),WalletLogin:ed.nullish()}).passthrough(),td=z.object({NetworkID:z.string().nullish(),Address:z.string().nullish(),LinkedAt:u.nullish(),LastUsedAt:u.nullish(),LinkType:Np.nullish(),IsSignatureVerified:z.boolean().nullish()}).passthrough(),Po=z.object({TitleTransactionID:z.string().nullish(),Type:bo.nullish(),NetworkID:z.string().nullish(),AssetID:z.string().nullish(),Amount:q.nullish(),CreatedAt:u.nullish(),ExpiresAt:u.nullish()}).passthrough(),id=z.object({Status:Vp.nullish(),Tier:Wp.nullish(),VerifiedAt:u.nullish(),ExpiresAt:u.nullish(),RejectedAt:u.nullish(),ProviderReference:z.string().nullish(),RejectionReason:z.string().nullish()}).passthrough(),rd=z.object({CurrencyID:z.string().nullish(),Deposits:z.number().nullish(),DepositsVolumeNative:q.nullish(),DepositsVolumeUsd:q.nullish(),Withdrawals:z.number().nullish(),WithdrawalsVolumeNative:q.nullish(),WithdrawalsVolumeUsd:q.nullish(),FailedWithdrawals:z.number().nullish(),RejectedDeposits:z.number().nullish(),FirstDepositAt:u.nullish(),LastDepositAt:u.nullish(),FirstWithdrawalAt:u.nullish(),LastWithdrawalAt:u.nullish()}).passthrough(),sd=z.object({TotalDeposits:z.number().nullish(),TotalWithdrawals:z.number().nullish(),FailedWithdrawals:z.number().nullish(),RejectedDeposits:z.number().nullish(),TotalDepositsVolumeUsd:q.nullish(),TotalWithdrawalsVolumeUsd:q.nullish(),PerCurrency:z.record(z.string(),rd).nullish()}).passthrough(),nd=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:u.nullish(),LastDepositAt:u.nullish(),FirstWithdrawalAt:u.nullish(),LastWithdrawalAt:u.nullish()}).passthrough(),od=z.object({TotalDeposits:z.number().nullish(),TotalWithdrawals:z.number().nullish(),FailedWithdrawals:z.number().nullish(),RejectedDeposits:z.number().nullish(),PerCollection:z.record(z.string(),nd).nullish()}).passthrough(),ad=z.object({Tokens:sd.nullish(),Nfts:od.nullish()}).passthrough(),ld=z.object({CurrencyID:z.string().nullish(),Balance:q.nullish(),MinBalance:q.nullish()}).passthrough(),ud=z.object({NetworkID:z.string().nullish(),Address:z.string().nullish(),CheckedAt:u.nullish(),LoggedInAt:u.nullish(),GatePassed:z.boolean().nullish(),GatedBalances:z.array(ld).nullish()}).passthrough(),cd=z.object({Version:z.number().nullish(),Stats:ad.nullish(),LinkedWallets:z.record(z.string(),td).nullish(),LastWalletLogin:ud.nullish(),PendingWithdrawals:z.array(Po).nullish(),Kyc:id.nullish(),FirstActivityAt:u.nullish(),LastActivityAt:u.nullish(),IsFlagged:z.boolean().nullish(),FlagReason:z.string().nullish()}).passthrough(),pd=z.object({CurrencyID:z.string(),AmountDelta:q,FrozenDelta:q,UpdatedAt:u}).passthrough(),Vi=z.object({CryptoBalances:z.record(z.string(),pd).nullish(),PendingAdded:Po.nullish(),PendingRemovedIDs:z.array(z.string()).nullish()}).passthrough(),dd=z.object({Amount:q,Frozen:q,CreatedAt:u.nullish(),UpdatedAt:u.nullish()}).passthrough().transform(a=>a),hd=z.object({ID:z.string().nullish(),TitleID:z.string().nullish(),CreatedAt:u.nullish(),UpdatedAt:u.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:To.nullish(),From:z.string().nullish(),To:z.string().nullish(),Amount:q.nullish(),Status:bs.nullish(),SignatureData:z.string().nullish(),CompletedAt:u.nullish(),ExpiresAt:u.nullish(),FailReason:z.string().nullish(),Reason:z.string().nullish(),Category:z.string().nullish(),TokenID:z.string().nullish(),CurrencyID:z.string().nullish(),AmountUsd:q.nullish(),NetPayoutAmount:q.nullish()}).passthrough(),md=z.object({ID:z.string().nullish(),TitleID:z.string().nullish(),CreatedAt:u.nullish(),UpdatedAt:u.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:To.nullish(),From:z.string().nullish(),To:z.string().nullish(),Amount:q.nullish(),Status:bs.nullish(),SignatureData:z.string().nullish(),CompletedAt:u.nullish(),ExpiresAt:u.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(),Io=z.object({To:z.string().nullish(),Amount:z.union([z.string(),z.number()]).nullish()}).passthrough(),Ts=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(),SignatureEpoch:z.string().nullish(),Splits:z.array(Io).nullish(),Signature:z.string().nullish()}).passthrough(),vs=z.object({Mint:z.string().nullish(),WalletAddress:z.string().nullish(),Amount:z.string().nullish(),BurnAmount:z.string().nullish(),Nonce:z.string().nullish(),ExpiresAt:z.string().nullish(),ProgramID:z.string().nullish(),SignatureEpoch:z.string().nullish(),Domain:z.string().nullish(),Splits:z.array(Io).nullish(),SignatureHex:z.string().nullish(),SigIxIndex:z.number().nullish(),Ed25519PublicKey:z.string().nullish(),Ed25519Message:z.string().nullish(),UserID:z.string().nullish(),TitleID:z.string().nullish(),Category:z.string().nullish()}).passthrough(),ko=z.object({Blockchain:zs.nullish(),CryptoCurrencies:z.record(z.string(),ys).nullish()}).passthrough(),Mo=z.object({State:cd.nullish(),CryptoBalances:z.record(z.string(),dd).nullish()}).passthrough(),wo=z.object({ServerTimeUtc:u.nullish(),TransactionHash:z.string().nullish(),NetworkID:z.string().nullish(),CurrencyID:z.string().nullish(),AmountNative:q.nullish(),AmountUsd:q.nullish(),StateDelta:Vi.nullish()}).passthrough(),Oo=z.object({ServerTimeUtc:u.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:b.nullish(),Inventory:ut.nullish()}).passthrough(),Ao=z.object({ServerTimeUtc:u.nullish(),TitleTransactionID:z.string().nullish(),NetworkID:z.string().nullish(),CurrencyID:z.string().nullish(),AmountNative:q.nullish(),NetAmountNative:q.nullish(),BurnAmountNative:q.nullish(),AmountUsd:q.nullish(),ExpiresAt:u.nullish(),EvmSignature:Ts.nullish(),SolanaSignature:vs.nullish(),StateDelta:Vi.nullish()}).passthrough(),Uo=z.object({ServerTimeUtc:u.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:u.nullish(),Resources:b.nullish(),EvmSignature:Ts.nullish(),SolanaSignature:vs.nullish(),StateDelta:Vi.nullish(),Inventory:ut.nullish()}).passthrough(),Bo=z.object({TokenTransactions:z.array(hd).nullish(),NFTTransactions:z.array(md).nullish()}).passthrough(),Ps=z.object({ServerTimeUtc:u.nullish(),TransactionHash:z.string().nullish(),NetworkID:z.string().nullish(),CurrencyID:z.string().nullish(),AmountNative:q.nullish(),AmountUsd:q.nullish(),Target:z.string().nullish()}).passthrough(),Lo=z.object({TitleTransactionID:z.string().nullish(),Kind:bo.nullish(),EvmSignature:Ts.nullish(),SolanaSignature:vs.nullish()}).passthrough(),qo=z.object({TitleTransactionID:z.string().nullish(),OnChainTxHash:z.string().nullish(),Status:bs.nullish(),StateDelta:Vi.nullish()}).passthrough(),we={GetDefinitions:"GetDefinitions",GetUserState:"GetUserState",DepositToken:"DepositToken",DepositNFT:"DepositNFT",RequestTokenWithdrawal:"RequestTokenWithdrawal",RequestNFTWithdrawal:"RequestNFTWithdrawal",GetTransactionHistory:"GetTransactionHistory",RetryWithdrawal:"RetryWithdrawal",ConfirmWithdrawal:"ConfirmWithdrawal",DonateToDeveloper:"DonateToDeveloper",DonateToUsersPool:"DonateToUsersPool"};var fd="Blockchain",_i=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(fd,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 i=this.baseRequest();if(!i)return n("unauthorized","Not logged in.");i.NetworkID=e,i.TransactionHash=t;let r=await this.ctx.api.blockchain.depositToken(i);return r.ok&&r.data.CurrencyID&&(this.ctx.data.user.patchCryptoCurrencyDelta(r.data.CurrencyID,new Yt(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 i=this.baseRequest();if(!i)return n("unauthorized","Not logged in.");i.NetworkID=e,i.TransactionHash=t;let r=await this.ctx.api.blockchain.depositNFT(i);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,i,r,s){if(!e)return n("client","CurrencyID is required.");if(!t)return n("client","NetworkID is required.");if(!i)return n("client","WalletAddress is required.");if(!r)return n("client","Amount is required.");let o=this.baseRequest();if(!o)return n("unauthorized","Not logged in.");o.CurrencyID=e,o.NetworkID=t,o.WalletAddress=i,o.Amount=r,o.Category=Fi(s);let p=await this.ctx.api.blockchain.requestTokenWithdrawal(o);return p.ok&&p.data.CurrencyID&&(this.ctx.data.user.patchCryptoCurrencyDelta(p.data.CurrencyID,new Yt(p.data.AmountNative??0).negated(),p.data.ServerTimeUtc??void 0),this.ctx.emitter.emit("blockchain:tokenWithdrawalRequested",p.data)),p}async requestNFTWithdrawal(e,t,i,r,s,o,p){if(!e)return n("client","ItemID is required.");if(!t)return n("client","NetworkID is required.");if(!i)return n("client","WalletAddress is required.");if(!r)return n("client","Amount is required.");let D=this.baseRequest();if(!D)return n("unauthorized","Not logged in.");D.ItemID=e,D.NetworkID=t,D.WalletAddress=i,D.Amount=r,D.Category=Fi(s),o!==void 0&&(D.Level=o),p&&(D.ItemInstanceID=p);let U=await this.ctx.api.blockchain.requestNFTWithdrawal(D);return U.ok&&(this.ctx.data.user.applyResourceOperation(U.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("blockchain:nftWithdrawalRequested",U.data)),U}async getTransactionHistory(e=50){let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.Amount=String(e);let i=await this.ctx.api.blockchain.getTransactionHistory(t);return i.ok&&this.ctx.emitter.emit("blockchain:transactionHistoryLoaded",i.data),i}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 i=await this.ctx.api.blockchain.retryWithdrawal(t);return i.ok&&this.ctx.emitter.emit("blockchain:withdrawalRetried",i.data),i}async confirmWithdrawal(e,t){if(!e)return n("client","TitleTransactionID is required.");if(!t)return n("client","On-chain TransactionHash is required.");let i=this.baseRequest();if(!i)return n("unauthorized","Not logged in.");i.TitleTransactionID=e,i.TransactionHash=t;let r=await this.ctx.api.blockchain.confirmWithdrawal(i);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 i=this.baseRequest();if(!i)return n("unauthorized","Not logged in.");i.NetworkID=e,i.TransactionHash=t;let r=await this.ctx.api.blockchain.donateToDeveloper(i);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 i=this.baseRequest();if(!i)return n("unauthorized","Not logged in.");i.NetworkID=e,i.TransactionHash=t;let r=await this.ctx.api.blockchain.donateToUsersPool(i);return r.ok&&this.ctx.emitter.emit("blockchain:donatedToUsersPool",r.data),r}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var be=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 gd={Head:"Head",Torso:"Torso",Legs:"Legs"},Wi=z.enum(["Head","Torso","Legs"]),Rd={Open:"Open",InProgress:"InProgress",Cancelled:"Cancelled",Completed:"Completed"},Is=z.enum(["Open","InProgress","Cancelled","Completed"]),No=z.object({AttackTarget:Wi,DefenseTarget:Wi});var yd=z.enum(["Hit","Critical","Block","Dodge"]),Cd=z.object({RoundIndex:z.number().nullish(),AttackerID:z.string().nullish(),DefenderID:z.string().nullish(),AttackZone:Wi.nullish(),DefenseZone:Wi.nullish(),HitType:yd.nullish(),DamageDealt:z.number().nullish(),DefenderHpRemaining:z.number().nullish()}).passthrough(),Sd=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(),xd=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:u,ExpiresAt:u.nullish(),CustomData:z.string().nullish()}).passthrough().transform(a=>a),Go=z.object({UserID:z.string().nullish(),SelectedCharacterID:z.string().nullish(),SelectedCharacter:Cs.nullish(),BattleStrategy:z.array(No).nullish(),UnstackableItems:z.record(z.string(),xd).nullish(),Stats:Sd.nullish()}).passthrough(),Dd=z.object({WinnerUserID:z.string().nullish(),LoserUserID:z.string().nullish(),Entry:fe.nullish(),NetReward:fe.nullish(),BattleLog:z.array(Cd).nullish(),IsDraw:z.boolean().nullish(),P1BattleProfile:Go.nullish(),P2BattleProfile:Go.nullish()}).passthrough(),jo=z.object({MatchID:z.string(),TitleID:z.string().nullish(),RuleID:z.string().nullish(),CreatedAt:u.nullish(),CreatorID:z.string().nullish(),CreatorCharacterID:z.string().nullish(),CreatorStrategy:z.array(No).nullish(),TargetUserID:z.string().nullish(),Entry:fe.nullish(),CreationCostPaid:fe.nullish(),RefundCreationCostOnCancel:z.boolean().nullish(),JoinedByUserID:z.string().nullish(),JoinedByCharacterID:z.string().nullish(),JoinedAt:u.nullish(),Status:Is.nullish(),WinnerUserID:z.string().nullish(),CompletedAt:u.nullish(),IsRewardDistributed:z.boolean().nullish(),RewardDistributedAt:u.nullish()}).passthrough(),Fo=z.object({Status:Is,MatchID:z.string(),Entry:fe.nullish(),Resources:b.nullish()}),Vo=z.object({Match:jo.nullish()}),_o=z.object({MatchID:z.string(),Status:Is,Resources:b.nullish()}),Wo=z.object({Battle:Dd.nullish(),Resources:b.nullish(),ResourcesDual:dt.nullish()}),ks=z.object({Matches:z.array(jo).nullish(),Page:z.number().nullish(),PageSize:z.number().nullish(),HasMore:z.boolean().nullish()}),Je={CreateMatch:"CreateMatch",UpdateMatch:"UpdateMatch",CancelMatch:"CancelMatch",InstantBattle:"InstantBattle",SaveStrategy:"SaveStrategy",GetMyMatches:"GetMyMatches",GetAvailableMatches:"GetAvailableMatches",GetDefinitions:"GetDefinitions"};var bd=z.enum(["VirtualCurrency","Item","EventToken"]);var zd=z.enum(["Constant","Stat","RankMultiplier","AllMight","GearFlat","GearPercent"]),Td=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(),vd=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(),Pd=z.object({Source:zd.nullish(),StatID:z.string().nullish(),Value:z.number().nullish(),OnePlus:z.boolean().nullish()}).passthrough(),Id=z.object({Coefficient:z.number().nullish(),Factors:z.array(Pd).nullish()}).passthrough(),mt=z.object({Terms:z.array(Id).nullish()}).passthrough(),kd=z.object({Health:mt.nullish(),Damage:mt.nullish(),Armor:mt.nullish(),AttackSpeed:mt.nullish(),CritChance:mt.nullish(),CritDamage:mt.nullish(),Dodge:mt.nullish()}).passthrough(),Qo=z.object({StatMapping:Td.nullish(),Combat:vd.nullish(),Formula:kd.nullish()}).passthrough(),Md=z.object({BurnRate:z.number().nullish()}).passthrough(),Ms=z.object({Kind:bd.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(),Ko=z.object({AllowVirtualCurrency:z.boolean().nullish(),AllowItems:z.boolean().nullish(),AllowEventTokens:z.boolean().nullish(),Allowed:z.array(Ms).nullish(),MaxPositions:z.number().nullish()}).passthrough(),Ho=z.object({PriceOptions:Y.nullish(),RefundCostOnCancel:z.boolean().nullish(),MaxOpenMatches:z.number().nullish(),Limits:ge.nullish(),AllowPrivateMatches:z.boolean().nullish(),MaxMatchesPerOpponentPerDay:z.number().nullish()}).passthrough(),wd=z.object({RuleID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),Economy:Md.nullish(),Entry:Ko.nullish(),Creation:Ho.nullish(),Settings:Qo.nullish()}).passthrough(),Od=z.object({Rules:z.record(z.string(),wd).nullish(),Defaults:Qo.nullish(),EntryDefaults:Ko.nullish(),CreationDefaults:Ho.nullish()}).passthrough(),ws=z.object({InstantBattle:Od.nullish()}).passthrough(),$o=ws;var Ad={Listing:"Listing",Auction:"Auction",BuyOrder:"BuyOrder",DirectTrade:"DirectTrade"},Os=z.enum(["Listing","Auction","BuyOrder","DirectTrade"]),Ud={Active:"Active",Completed:"Completed",Cancelled:"Cancelled",Declined:"Declined",Expired:"Expired"},As=z.enum(["Active","Completed","Cancelled","Declined","Expired"]),Bd={Burn:"Burn",Ledger:"Ledger"},Ld=z.enum(["Burn","Ledger"]),Ki={Item:"Item",VirtualCurrency:"VirtualCurrency"},Us=z.enum(["Item","VirtualCurrency"]),qd=z.object({Percent:z.number().nullish(),MinPerPosition:w.nullish()}).passthrough(),Ed=z.object({AllowVirtualCurrency:z.boolean().nullish(),AllowItems:z.boolean().nullish(),AllowEventTokens:z.boolean().nullish(),Allowed:z.array(Ms).nullish(),MaxPositions:z.number().nullish()}).passthrough(),Gd=z.object({Percent:z.number().nullish(),MinPerPosition:w.nullish(),Sink:Ld.nullish(),LedgerAccountID:z.string().nullish(),PerCatalogOverrides:z.record(z.string(),qd).nullish(),ApplyToDirectTrades:z.boolean().nullish()}).passthrough(),Nd=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(),jd=z.object({Enabled:z.boolean().nullish(),AllowedDurationsHours:z.array(z.number()).nullish(),MaxActiveListings:z.number().nullish(),CreateLimits:ge.nullish(),BuyLimits:ge.nullish(),ListingFeeOptions:Y.nullish(),RefundListingFeeOnCancel:z.boolean().nullish()}).passthrough(),Fd=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:w.nullish(),BidLimits:ge.nullish()}).passthrough(),Vd=z.object({Enabled:z.boolean().nullish(),MaxActiveOrders:z.number().nullish(),AllowedDurationsHours:z.array(z.number()).nullish(),CreateLimits:ge.nullish(),FillLimits:ge.nullish()}).passthrough(),_d=z.object({Enabled:z.boolean().nullish(),OfferExpirationHours:z.number().nullish(),MaxPendingOutgoing:z.number().nullish(),AllowGifts:z.boolean().nullish(),CreateLimits:ge.nullish()}).passthrough(),Wd=z.object({Enabled:z.boolean().nullish()}).passthrough(),Bs=z.object({Enabled:z.boolean().nullish(),Gate:_.nullish(),Schedule:pe.nullish(),PricePolicy:Ed.nullish(),Commission:Gd.nullish(),Tradability:Nd.nullish(),Listings:jd.nullish(),Auctions:Fd.nullish(),BuyOrders:Vd.nullish(),DirectTrades:_d.nullish(),Matching:Wd.nullish()}).passthrough(),Zo=z.object({BidIndex:z.number().nullish(),UserID:z.string().nullish(),Amount:w.nullish(),Settled:z.boolean().nullish(),SettledAt:u.nullish()}).passthrough(),Qd=z.object({BidAxisType:Ft.nullish(),BidCurrencyID:z.string().nullish(),BidCatalogID:z.string().nullish(),BidItemID:z.string().nullish(),StartingBid:w.nullish(),CurrentBid:w.nullish(),CurrentBidderID:z.string().nullish(),BidCount:z.number().nullish(),ExtensionCount:z.number().nullish(),PendingRefunds:z.array(Zo).nullish()}).passthrough(),Qi=z.object({LastAt:u.nullish(),DailyCount:z.number().nullish(),DailyResetUtc:u.nullish()}).passthrough(),Kd=z.object({Create:Qi.nullish(),Buy:Qi.nullish(),Sell:Qi.nullish(),Bid:Qi.nullish()}).passthrough(),Hd=z.object({CharacterID:z.string().nullish(),SlotID:z.string().nullish()}).passthrough(),$d=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:u,ExpiresAt:u.nullish(),EquippedSlot:Hd.nullish(),CustomData:z.string().nullish()}).passthrough().transform(a=>a),it=z.object({OfferID:z.string().nullish(),OfferType:Os.nullish(),Status:As.nullish(),CreatorUserID:z.string().nullish(),CreatorPublicData:be.nullish(),TargetUserID:z.string().nullish(),GoodsType:Us.nullish(),GoodsCatalogID:z.string().nullish(),GoodsItemID:z.string().nullish(),GoodsCurrencyID:z.string().nullish(),GoodsAmount:w.nullish(),GoodsInstances:z.array($d).nullish(),Price:fe.nullish(),Auction:Qd.nullish(),CreatedAt:u.nullish(),ExpiresAt:u.nullish()}).passthrough(),Zd=z.object({GoodsType:Us.nullish(),GoodsCatalogID:z.string().nullish(),GoodsItemID:z.string().nullish(),GoodsCurrencyID:z.string().nullish(),CountsByType:z.record(Os,w).nullish(),ListingCount:w.nullish(),AuctionCount:w.nullish(),BuyOrderCount:w.nullish()}).passthrough(),Jo=z.object({Definitions:Bs.nullish(),IsOpenNow:z.boolean().nullish(),GatePassed:z.boolean().nullish()}).passthrough(),Ls=z.object({Offers:z.array(it).nullish(),ContinuationToken:z.string().nullish()}).passthrough(),Yo=z.object({Groups:z.array(Zd).nullish()}).passthrough(),Xo=z.object({Offer:it.nullish()}).passthrough(),qe=z.object({OfferID:z.string().nullish(),Status:As.nullish(),Settlement:dt.nullish(),Resources:b.nullish(),CommissionTaken:fe.nullish()}).passthrough(),Lt=z.object({OfferID:z.string().nullish(),Offer:it.nullish(),Resources:b.nullish(),Matched:z.boolean().nullish(),Settlement:qe.nullish()}).passthrough(),ea=z.object({OfferID:z.string().nullish(),CurrentBid:w.nullish(),BidCount:z.number().nullish(),ExpiresAt:u.nullish(),Resources:b.nullish()}).passthrough(),ta=z.object({MyOffers:z.array(it).nullish(),MyLeadingBids:z.array(it).nullish(),MyBuyOrders:z.array(it).nullish(),IncomingTrades:z.array(it).nullish(),OutgoingTrades:z.array(it).nullish(),Claimables:z.array(it).nullish(),DrainedRefunds:z.array(Zo).nullish(),Limits:Kd.nullish()}).passthrough(),Jd=z.object({OfferID:z.string().nullish(),OfferType:Os.nullish(),FinalStatus:As.nullish(),SellerUserID:z.string().nullish(),BuyerUserID:z.string().nullish(),GoodsType:Us.nullish(),GoodsCatalogID:z.string().nullish(),GoodsItemID:z.string().nullish(),GoodsCurrencyID:z.string().nullish(),GoodsAmount:w.nullish(),PricePaid:fe.nullish(),CommissionTaken:fe.nullish(),CompletedAt:u.nullish()}).passthrough(),ia=z.object({Entries:z.array(Jd).nullish(),ContinuationToken:z.string().nullish()}).passthrough(),ae={GetDefinitions:"GetDefinitions",GetGroupedOffers:"GetGroupedOffers",GetOffersByItem:"GetOffersByItem",GetOffer:"GetOffer",GetBuyOrders:"GetBuyOrders",GetMyState:"GetMyState",GetHistory:"GetHistory",CreateListing:"CreateListing",CancelListing:"CancelListing",Buy:"Buy",MarketBuy:"MarketBuy",MarketSell:"MarketSell",CreateAuction:"CreateAuction",PlaceBid:"PlaceBid",ClaimAuction:"ClaimAuction",CreateBuyOrder:"CreateBuyOrder",CancelBuyOrder:"CancelBuyOrder",FillBuyOrder:"FillBuyOrder",CreateDirectTrade:"CreateDirectTrade",RespondDirectTrade:"RespondDirectTrade",CancelDirectTrade:"CancelDirectTrade",ClaimBack:"ClaimBack"};var Yd="Marketplace",Hi=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(Yd,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,i,r=20){if(!e)return n("client","ItemID is required.");let s=this.baseRequest();if(!s)return n("unauthorized","Not logged in.");s.ItemID=e,s.OfferTypeFilter=t,s.ContinuationToken=i,s.PageSize=r;let o=await this.ctx.api.marketplace.getOffersByItem(s);return o.ok&&this.ctx.emitter.emit("marketplace:offersByItemLoaded",o.data),o}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 i=await this.ctx.api.marketplace.getOffer(t);return i.ok&&this.ctx.emitter.emit("marketplace:offerLoaded",i.data),i}async getBuyOrders(e,t,i=20){let r=this.baseRequest();if(!r)return n("unauthorized","Not logged in.");r.ItemID=e,r.ContinuationToken=t,r.PageSize=i;let s=await this.ctx.api.marketplace.getBuyOrders(r);return s.ok&&this.ctx.emitter.emit("marketplace:buyOrdersLoaded",s.data),s}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 i=this.baseRequest();if(!i)return n("unauthorized","Not logged in.");i.ContinuationToken=e,i.PageSize=t;let r=await this.ctx.api.marketplace.getHistory(i);return r.ok&&this.ctx.emitter.emit("marketplace:historyLoaded",r.data),r}async createListing(e,t,i,r,s,o,p){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 D=this.baseRequest();if(!D)return n("unauthorized","Not logged in.");D.ItemID=e,D.CatalogID=t,D.GoodsAmount=i,D.PriceBundle=r,D.DurationHours=s,D.ItemInstanceIDs=o,D.SelectedOptionID=p;let U=await this.ctx.api.marketplace.createListing(D);return this.applyCreateOfferResult(U,"marketplace:listingCreated"),U}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 i=await this.ctx.api.marketplace.buy(t);return i.ok&&(this.applyDualPartySettlement(i.data.Settlement),this.ctx.emitter.emit("marketplace:bought",i.data)),i}async marketBuy(e,t,i){if(!e||e<=0)return n("client","GoodsAmount must be positive.");if(!t)return n("client","PriceBundle is required.");let r=this.baseRequest();if(!r)return n("unauthorized","Not logged in.");let s=this.applyGoodsSelector(r,i);if(s)return s;r.GoodsAmount=e,r.PriceBundle=t;let o=await this.ctx.api.marketplace.marketBuy(r);return o.ok&&(this.applyDualPartySettlement(o.data.Settlement),this.ctx.emitter.emit("marketplace:marketBought",o.data)),o}async marketSell(e,t,i){if(!e||e<=0)return n("client","GoodsAmount must be positive.");if(!t)return n("client","PriceBundle is required.");let r=this.baseRequest();if(!r)return n("unauthorized","Not logged in.");let s=this.applyGoodsSelector(r,i);if(s)return s;r.GoodsAmount=e,r.PriceBundle=t;let o=await this.ctx.api.marketplace.marketSell(r);return o.ok&&(this.applyDualPartySettlement(o.data.Settlement),this.ctx.emitter.emit("marketplace:marketSold",o.data)),o}async createAuction(e,t,i,r,s,o,p={}){if(!e)return n("client","ItemID is required.");if(!t)return n("client","CatalogID is required.");let D=this.baseRequest();if(!D)return n("unauthorized","Not logged in.");D.ItemID=e,D.CatalogID=t,D.GoodsAmount=i,D.BidAxisType=r,D.BidCurrencyID=p.bidCurrencyID,D.BidCatalogID=p.bidCatalogID,D.BidItemID=p.bidItemID,D.StartingBid=s,D.DurationHours=o,D.ItemInstanceIDs=p.itemInstanceIDs,D.SelectedOptionID=p.selectedOptionID;let U=await this.ctx.api.marketplace.createAuction(D);return this.applyCreateOfferResult(U,"marketplace:auctionCreated"),U}async placeBid(e,t){if(!e)return n("client","OfferID is required.");if(!t||t<=0)return n("client","BidAmount must be positive.");let i=this.baseRequest();if(!i)return n("unauthorized","Not logged in.");i.OfferID=e,i.BidAmount=t;let r=await this.ctx.api.marketplace.placeBid(i);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 i=await this.ctx.api.marketplace.claimAuction(t);return i.ok&&(this.ctx.data.user.applyResourceOperation(i.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("marketplace:auctionClaimed",i.data)),i}async createBuyOrder(e,t,i,r,s){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 o=this.baseRequest();if(!o)return n("unauthorized","Not logged in.");o.ItemID=e,o.CatalogID=t,o.GoodsAmount=i,o.PriceBundle=r,o.DurationHours=s;let p=await this.ctx.api.marketplace.createBuyOrder(o);return this.applyCreateOfferResult(p,"marketplace:buyOrderCreated"),p}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 i=await this.ctx.api.marketplace.fillBuyOrder(t);return i.ok&&(this.applyDualPartySettlement(i.data.Settlement),this.ctx.emitter.emit("marketplace:buyOrderFilled",i.data)),i}async createDirectTrade(e,t,i,r,s){if(!e)return n("client","TargetUserID is required.");if(!t)return n("client","CatalogID is required.");if(!i)return n("client","ItemID is required.");let o=this.baseRequest();if(!o)return n("unauthorized","Not logged in.");o.TargetUserID=e,o.CatalogID=t,o.ItemID=i,o.ItemInstanceIDs=r,o.RequestedBundle=s;let p=await this.ctx.api.marketplace.createDirectTrade(o);return this.applyCreateOfferResult(p,"marketplace:directTradeCreated"),p}async respondDirectTrade(e,t){if(!e)return n("client","OfferID is required.");let i=this.baseRequest();if(!i)return n("unauthorized","Not logged in.");i.OfferID=e,i.Accept=t;let r=await this.ctx.api.marketplace.respondDirectTrade(i);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 i=await this.ctx.api.marketplace.claimBack(t);return i.ok&&(this.ctx.data.user.applyResourceOperation(i.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("marketplace:claimedBack",i.data)),i}async cancelOffer(e,t,i){if(!e)return n("client","OfferID is required.");let r=this.baseRequest();if(!r)return n("unauthorized","Not logged in.");r.OfferID=e;let s=await t(r);return s.ok&&(this.ctx.data.user.applyResourceOperation(s.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit(i,s.data)),s}applyCreateOfferResult(e,t){e.ok&&(e.data.Matched&&e.data.Settlement?this.applyDualPartySettlement(e.data.Settlement.Settlement):this.ctx.data.user.applyResourceOperation(e.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit(t,e.data));}applyGoodsSelector(e,t){return "goodsCurrencyID"in t&&t.goodsCurrencyID?(e.GoodsType=Ki.VirtualCurrency,e.GoodsCurrencyID=t.goodsCurrencyID,null):"itemID"in t&&t.itemID&&t.catalogID?(e.GoodsType=Ki.Item,e.ItemID=t.itemID,e.CatalogID=t.catalogID,null):n("client","Either itemID+catalogID or goodsCurrencyID is required.")}applyDualPartySettlement(e){let t=this.ctx.auth.context?.userID;if(!e||!t)return;let i=this.ctx.data.config.itemDefinitions;e.FromUserID===t&&e.FromResult?this.ctx.data.user.applyResourceOperation(e.FromResult,i):e.ToUserID===t&&e.ToResult&&this.ctx.data.user.applyResourceOperation(e.ToResult,i);}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var $i=class{constructor(e){this.ctx=e;}ctx;async createRoom(e,t={}){if(!e)return n("client","RoomName is required.");let i=this.baseRequest();if(!i)return n("unauthorized","Not logged in.");i.RoomName=e,i.Topology=t.topology,i.ChatMode=t.chatMode,i.MaxPlayers=t.maxPlayers,i.Visibility=t.visibility,i.JoinCode=t.joinCode;let r=await this.ctx.api.multiplayer.createRoom(i);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 i=this.baseRequest();if(!i)return n("unauthorized","Not logged in.");i.RoomID=e,i.JoinCode=t;let r=await this.ctx.api.multiplayer.joinRoom(i);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 i=await this.ctx.api.multiplayer.leaveRoom(t);return i.ok&&this.ctx.emitter.emit("multiplayer:roomLeft",i.data),i}async listRooms(e=0,t=20){let i=this.baseRequest();if(!i)return n("unauthorized","Not logged in.");i.Page=e,i.PageSize=t;let r=await this.ctx.api.multiplayer.listRooms(i);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 i=await this.ctx.api.multiplayer.getRoom(t);return i.ok&&this.ctx.emitter.emit("multiplayer:roomLoaded",i.data),i}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 i=await this.ctx.api.multiplayer.closeRoom(t);return i.ok&&this.ctx.emitter.emit("multiplayer:roomClosed",i.data),i}async poll(e,t){if(!e)return n("client","RoomID is required.");let i=this.baseRequest();if(!i)return n("unauthorized","Not logged in.");i.RoomID=e,i.LastSeq=t;let r=await this.ctx.api.multiplayer.poll(i);return r.ok&&this.ctx.emitter.emit("multiplayer:polled",r.data),r}async sendSignal(e,t,i,r){if(!e)return n("client","RoomID is required.");if(!t)return n("client","TargetUserID is required.");if(!i)return n("client","SignalKind is required.");let s=this.baseRequest();if(!s)return n("unauthorized","Not logged in.");s.RoomID=e,s.TargetUserID=t,s.SignalKind=i,s.Payload=r;let o=await this.ctx.api.multiplayer.sendSignal(s);return o.ok&&this.ctx.emitter.emit("multiplayer:signalSent",o.data),o}async sendChat(e,t){if(!e)return n("client","RoomID is required.");if(!t)return n("client","ChatText is required.");let i=this.baseRequest();if(!i)return n("unauthorized","Not logged in.");i.RoomID=e,i.ChatText=t;let r=await this.ctx.api.multiplayer.sendChat(i);return r.ok&&this.ctx.emitter.emit("multiplayer:chatSent",r.data),r}async setMemberState(e,t,i){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=i;let s=await this.ctx.api.multiplayer.setMemberState(r);return s.ok&&this.ctx.emitter.emit("multiplayer:memberStateSet",s.data),s}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var ra=z.object({PlatformUserID:z.string().nullish(),PlatformAuthToken:z.string().nullish(),PlatformAuthTokenExpiration:u.nullish(),TitleUserID:z.string(),TitleClientSessionTicket:z.string(),TitleClientSessionTicketExpiration:u}),ze=z.object({IsCompleted:z.boolean().nullish(),ServerTime:u.nullish()}),sa=z.object({Message:z.string(),ExpiresAt:u}),Oe={LoginWithDeviceID:"LoginWithDeviceID",LoginWithTelegram:"LoginWithTelegram",LoginWithEmail:"LoginWithEmail",LoginWithGoogle:"LoginWithGoogle",LoginWithPlatformToken:"LoginWithPlatformToken",LoginWithSsoCode:"LoginWithSsoCode",RegisterWithEmail:"RegisterWithEmail",RequestWalletChallenge:"RequestWalletChallenge",LoginWithWallet:"LoginWithWallet",ForgotPassword:"ForgotPassword",ResetPassword:"ResetPassword"};function O(a,e,t,i){let s=`api/v2/${a&&a.length>0?a:"0"}/Client/${e}/${t}`;return i==null?s:`${s}/${i}`}var Zi=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,ra,{ticket:null})}loginWithDeviceID(e){return this.login(Oe.LoginWithDeviceID,e)}loginWithTelegram(e){return this.login(Oe.LoginWithTelegram,e)}loginWithEmail(e){return this.login(Oe.LoginWithEmail,e)}loginWithGoogle(e){return this.login(Oe.LoginWithGoogle,e)}loginWithPlatformToken(e){return this.login(Oe.LoginWithPlatformToken,e)}loginWithSsoCode(e){return this.login(Oe.LoginWithSsoCode,e)}registerWithEmail(e){return this.login(Oe.RegisterWithEmail,e)}requestWalletChallenge(e){return this.ctx.transport.post(this.endpoint(Oe.RequestWalletChallenge),e,sa,{ticket:null})}loginWithWallet(e){return this.login(Oe.LoginWithWallet,e)}forgotPassword(e){return this.ctx.transport.post(this.endpoint(Oe.ForgotPassword),e,ze,{ticket:null})}resetPassword(e){return this.ctx.transport.post(this.endpoint(Oe.ResetPassword),e,ze,{ticket:null})}};var Xd={ReturnKey:"ReturnKey",ReturnMarkedKey:"ReturnMarkedKey",ReturnEmpty:"ReturnEmpty"},na=z.enum(["ReturnKey","ReturnMarkedKey","ReturnEmpty"]),eh=z.object({Locale:z.string().nullish(),DisplayName:z.string().nullish(),IsEnabled:z.boolean().nullish(),Order:z.number().nullish()}).passthrough(),oa=z.object({IsEnabled:z.boolean().nullish(),DefaultLocale:z.string().nullish(),Locales:z.record(z.string(),eh).nullish(),MissingKeyMode:na.nullish(),MaxEntriesPerLocale:z.number().nullish(),MaxValueLengthBytes:z.number().nullish()}).passthrough(),th=z.object({Locale:z.string().nullish(),Version:z.number().nullish(),Url:z.string().nullish()}).passthrough(),aa=z.object({Locale:z.string().nullish(),Version:z.number().nullish(),Url:z.string().nullish(),Fallback:th.nullish()}).passthrough(),Ji={GetLocalizationManifest:"GetLocalizationManifest",GetLocalizationTable:"GetLocalizationTable"},ih=z.object({Locale:z.string().nullish(),DisplayName:z.string().nullish(),Order:z.number().nullish(),Version:z.number().nullish()}).passthrough(),la=z.object({IsEnabled:z.boolean().nullish(),DefaultLocale:z.string().nullish(),MissingKeyMode:na.nullish(),ResolvedLocale:z.string().nullish(),Locales:z.array(ih).nullish()}).passthrough(),ua=z.object({RequestedLocale:z.string().nullish(),Locale:z.string().nullish(),Version:z.number().nullish(),NotModified:z.boolean().nullish(),Entries:z.record(z.string(),z.string()).nullish(),FallbackLocale:z.string().nullish(),FallbackVersion:z.number().nullish()}).passthrough();var qs=z.object({TitleConfigVersion:z.string().nullish(),TitleConfigUrl:z.string().nullish(),User:z.unknown().nullish(),StateVersions:z.record(z.string(),z.number()).nullish(),StateEpoch:z.string().nullish(),Localization:aa.nullish()}).passthrough().transform(a=>a),ca=z.object({StateEpoch:z.string().nullish(),StateVersions:z.record(z.string(),z.number()).nullish()}).passthrough().transform(a=>a),pa=z.object({StateEpoch:z.string().nullish(),StateVersions:z.record(z.string(),z.number()).nullish(),User:z.unknown().nullish()}).passthrough().transform(a=>a),da=z.object({}).passthrough().transform(a=>a),ha=z.object({}).passthrough().transform(a=>a),ma=z.object({Today:z.number(),Yesterday:z.number(),CurrentWeek:z.number(),CurrentMonth:z.number(),Total:z.number(),TotalSessions:z.number(),FirstActiveAt:u.nullish(),LastActiveAt:u.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(),fa=z.object({Username:z.string()}),Ee={GetClientState:"GetClientState",GetClientStateExcept:"GetClientStateExcept",GetStateVersions:"GetStateVersions",GetUserState:"GetUserState",GetInventory:"GetInventory",GetEventTokens:"GetEventTokens",GetUsageTime:"GetUsageTime",AddUsageTime:"AddUsageTime",DeleteUserAccount:"DeleteUserAccount",ChangeUsername:"ChangeUsername"};var Yi=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(Ee.GetClientState,e.UserID),e,qs,{ticket:e.ClientSessionTicket})}getClientStateExcept(e){return this.ctx.transport.post(this.endpoint(Ee.GetClientStateExcept,e.UserID),e,qs,{ticket:e.ClientSessionTicket})}getStateVersions(e){return this.ctx.transport.post(this.endpoint(Ee.GetStateVersions,e.UserID),e,ca,{ticket:e.ClientSessionTicket})}getUserState(e){return this.ctx.transport.post(this.endpoint(Ee.GetUserState,e.UserID),e,pa,{ticket:e.ClientSessionTicket})}getInventory(e){return this.ctx.transport.post(this.endpoint(Ee.GetInventory,e.UserID),e,da,{ticket:e.ClientSessionTicket})}getEventTokens(e){return this.ctx.transport.post(this.endpoint(Ee.GetEventTokens,e.UserID),e,ha,{ticket:e.ClientSessionTicket})}getUsageTime(e){return this.ctx.transport.post(this.endpoint(Ee.GetUsageTime,e.UserID),e,ma,{ticket:e.ClientSessionTicket})}addUsageTime(e){return this.ctx.transport.post(this.endpoint(Ee.AddUsageTime,e.UserID),e,ze,{ticket:e.ClientSessionTicket,silent:true})}deleteUserAccount(e){return this.ctx.transport.post(this.endpoint(Ee.DeleteUserAccount,e.UserID),e,ze,{ticket:e.ClientSessionTicket})}changeUsername(e){return this.ctx.transport.post(this.endpoint(Ee.ChangeUsername,e.UserID),e,fa,{ticket:e.ClientSessionTicket})}};var Xi=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=O(this.ctx.settings.titleID,"Currency",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}convert(e){return this.send(Gi.Convert,e,so)}cryptoConvert(e){return this.send(Gi.CryptoConvert,e,no)}};var rh=z.object({ItemInstanceID:z.string(),Units:z.number(),Level:z.number()}),Es=z.object({ServerTimeUtc:u,ItemInstanceID:z.string(),ItemID:z.string(),CatalogID:z.string().nullish(),Level:z.number(),Resources:b.nullish(),FodderConsumed:z.array(rh).nullish()}),ga=z.array(re(Es)),er={UpgradeLevel:"UpgradeLevel",UpgradeLevelsBatch:"UpgradeLevelsBatch"},sh={FlatCount:"FlatCount",Merge:"Merge",InvestmentRefund:"InvestmentRefund"},nh=z.enum(["FlatCount","Merge","InvestmentRefund"]),oh={ProtectLeveled:"ProtectLeveled",CheapestFirst:"CheapestFirst",ClientSelected:"ClientSelected"},ah=z.enum(["ProtectLeveled","CheapestFirst","ClientSelected"]),lh=z.object({ContractAddress:z.string().nullish(),TokenID:z.string().nullish(),TokenStandard:z.string().nullish()}).passthrough(),uh=z.object({Networks:z.record(z.string(),lh).nullish(),MetadataUrl:z.string().nullish()}).passthrough(),ch=z.object({FlatBonuses:z.record(z.string(),z.number()).nullish(),PercentBonuses:z.record(z.string(),z.number()).nullish(),Power:z.number().nullish()}).passthrough(),ph=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(),dh=z.object({ValuationMode:nh.nullish(),MergeRatio:z.number().nullish(),Selection:ah.nullish()}).passthrough(),hh=z.object({MaxLevel:z.number().nullish(),PriceOptions:Y.nullish(),CostScalingFactor:z.number().nullish(),FlatScalingFactor:z.number().nullish(),PercentScalingFactor:z.number().nullish(),PowerScalingFactor:z.number().nullish(),Fodder:dh.nullish()}).passthrough(),mh=z.object({RarityID:z.string().nullish(),CollectionID:z.string().nullish(),AuthorID:z.string().nullish()}).passthrough(),fh=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:uh.nullish(),Stats:ch.nullish(),Equipment:ph.nullish(),Upgrade:hh.nullish(),Metadata:mh.nullish(),ExpirationDurationSeconds:z.number().nullish()}).passthrough(),gh=z.object({Items:z.record(z.string(),fh).nullish()}).passthrough(),tr=z.object({Catalogs:z.record(z.string(),gh).nullish()}).passthrough();var ir=class{constructor(e){this.ctx=e;}ctx;upgradeLevel(e){let t=O(this.ctx.settings.titleID,"Item",er.UpgradeLevel,e.UserID??"");return this.ctx.transport.post(t,e,Es,{ticket:e.ClientSessionTicket})}upgradeLevelsBatch(e){let t=O(this.ctx.settings.titleID,"Item",er.UpgradeLevelsBatch,e.UserID??"");return this.ctx.transport.post(t,e,ga,{ticket:e.ClientSessionTicket})}};var Gs=z.object({ServerTimeUtc:u,OfferID:z.string(),Count:z.number(),Resources:b.nullish()}),Ra=z.array(re(Gs)),Rh=z.object({OfferID:z.string(),TotalPurchases:z.number(),DailyPurchases:z.number(),DailyResetUtc:u,LastPurchasedAt:u}),ya=z.object({Purchases:z.record(z.string(),Rh).nullish()}).passthrough().transform(a=>a),yh=z.object({StartUtc:u.nullish(),EndUtc:u.nullish(),RequiredFlags:z.array(z.string()).nullish()}).passthrough(),Ch=z.object({StoreID:z.string(),Type:z.string().nullish(),Name:z.string().nullish(),Description:z.string().nullish(),Rules:yh.nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),Sh=z.object({StartUtc:u.nullish(),EndUtc:u.nullish(),Gate:_.nullish(),Limits:ge.nullish()}).passthrough(),xh=z.object({OfferID:z.string(),StoreIDs:z.array(z.string()).nullish(),Name:z.string().nullish(),PriceOptions:Y.nullish(),Rewards:L.nullish(),Rules:Sh.nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),rr=z.object({Stores:z.record(z.string(),Ch).nullish(),StoreOffers:z.record(z.string(),xh).nullish()}).passthrough(),Tt={Purchase:"Purchase",GetDefinitions:"GetDefinitions",GetUserState:"GetUserState",PurchaseBatch:"PurchaseBatch"};var sr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=O(this.ctx.settings.titleID,"Store",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}purchase(e){return this.send(Tt.Purchase,e,Gs)}purchaseBatch(e){return this.send(Tt.PurchaseBatch,e,Ra)}getDefinitions(e){return this.send(Tt.GetDefinitions,e,rr)}getUserState(e){return this.send(Tt.GetUserState,e,ya)}};var Dh={Consumable:"Consumable",NonConsumable:"NonConsumable",Subscription:"Subscription"},bh=z.enum(["Consumable","NonConsumable","Subscription"]),zh=z.object({StartUtc:u.nullish(),EndUtc:u.nullish(),Gate:_.nullish(),Limits:ge.nullish()}).passthrough(),Th=z.object({ProductID:z.string().nullish(),Name:z.string().nullish(),Type:bh.nullish(),Enabled:z.boolean().nullish(),StoreProductIDs:z.record(z.string(),z.string()).nullish(),Rewards:L.nullish(),PriceUsdCents:z.number().nullish(),Rules:zh.nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),Ca=z.object({Enabled:z.boolean().nullish(),Products:z.record(z.string(),Th).nullish()}).passthrough(),Sa=z.object({ProductID:z.string().nullish(),TotalPurchases:z.number().nullish(),DailyPurchases:z.number().nullish(),DailyResetUtc:u.nullish(),LastPurchasedAt:u.nullish(),Owned:z.boolean().nullish()}).passthrough(),xa=z.object({Products:z.record(z.string(),Sa).nullish(),LifetimeSpendUsdCents:z.number().nullish()}).passthrough(),vh={Granted:"Granted",Restored:"Restored",AlreadyProcessed:"AlreadyProcessed"},Ph=z.enum(["Granted","Restored","AlreadyProcessed"]),Ns=z.object({ServerTimeUtc:u,Store:_t.nullish(),ProductID:z.string().nullish(),TransactionID:z.string().nullish(),Status:Ph.nullish(),Granted:z.boolean().nullish(),Quantity:z.number().nullish(),Resources:b.nullish(),ProductState:Sa.nullish()}).passthrough(),Da=$e(Ns),vt={GetDefinitions:"GetDefinitions",GetUserState:"GetUserState",ValidatePurchase:"ValidatePurchase",ValidatePurchasesBatch:"ValidatePurchasesBatch"};var nr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=O(this.ctx.settings.titleID,"Purchase",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(vt.GetDefinitions,e,Ca)}getUserState(e){return this.send(vt.GetUserState,e,xa)}validatePurchase(e){return this.send(vt.ValidatePurchase,e,Ns)}validatePurchasesBatch(e){return this.send(vt.ValidatePurchasesBatch,e,Da)}};var Ih=z.object({Min:z.number().nullish(),Max:z.number().nullish()}).passthrough(),ba=z.object({Reward:L.nullish(),Weight:z.number().nullish(),AmountRange:Ih.nullish()}).passthrough(),Pt=z.object({SlotID:z.string().nullish(),MinRolls:z.number().nullish(),MaxRolls:z.number().nullish(),Pool:z.array(ba).nullish()}).passthrough(),It=z.object({RuleID:z.string().nullish(),Threshold:z.number().nullish(),Pool:z.array(ba).nullish()}).passthrough(),kh=z.object({RewardSlots:z.array(Pt).nullish()}).passthrough(),Mh=z.object({PityRules:z.array(It).nullish()}).passthrough(),or=z.object({SlotPresets:z.record(z.string(),kh).nullish(),PityPresets:z.record(z.string(),Mh).nullish()}).passthrough();var wh=z.object({RuleID:z.string(),BoxIndex:z.number().nullish()}),za=z.object({ServerTimeUtc:u,LootboxID:z.string(),OpenedCount:z.number().nullish(),SelectedOptionID:z.string().nullish(),Resources:b.nullish(),Inventory:ut.nullish(),Results:z.array(b).nullish(),TriggeredPity:z.array(wh).nullish()}),Oh=z.object({RewardSlots:X.nullish(),PityRules:X.nullish()}).passthrough(),Ah=z.object({CatalogID:z.string().nullish(),ItemID:z.string().nullish(),MaxDrops:w.nullish()}).passthrough(),Uh=z.object({LootboxID:z.string(),AssetPaths:z.record(z.string(),z.string()).nullish(),PriceOptions:Y.nullish(),RewardSlots:z.array(Pt).nullish(),PityRules:z.array(It).nullish(),Presets:Oh.nullish(),RewardMultiplier:Qt.nullish(),SupplyLimits:z.array(Ah).nullish(),MaxOpenCount:z.number().nullish()}).passthrough(),js=z.object({Definitions:z.record(z.string(),Uh).nullish(),RewardPools:or.nullish()}).passthrough(),Ta=z.object({LootboxDefinitions:js.nullish()}),ar={GetDefinitions:"GetDefinitions",Open:"Open"};var lr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=O(this.ctx.settings.titleID,"Lootbox",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(ar.GetDefinitions,e,Ta)}open(e){return this.send(ar.Open,e,za)}};var Bh=z.object({}).passthrough().transform(a=>a),Lh=z.object({}).passthrough().transform(a=>a),qh=z.object({}).passthrough().transform(a=>a),Eh=z.object({}).passthrough().transform(a=>a),Gh=z.object({}).passthrough().transform(a=>a),va=z.object({ServerTimeUtc:u,CalendarID:z.string(),DayNumber:z.number().nullish(),DailyState:Bh,Resources:b.nullish()}),Pa=z.object({ServerTimeUtc:u,AccrualID:z.string(),AccruedSeconds:w.nullish(),AppliedRatePerSecond:z.number().nullish(),IdleState:Lh,Resources:b.nullish()}),Ia=z.object({ServerTimeUtc:u,ComebackID:z.string(),ClaimedTierIndex:z.number().nullish(),ComebackState:qh,Resources:b.nullish()}),ka=z.object({ServerTimeUtc:u,ClaimID:z.string(),ClaimState:Eh,Resources:b.nullish()}),Ma=z.object({Enabled:z.boolean(),Multiplier:z.number().nullish(),Progress:w.nullish(),Source:z.string().nullish(),SourceKey:z.string().nullish()}),Nh=z.object({RewardMode:z.string().nullish(),RewardStackLowerTiers:z.boolean().nullish()}).passthrough(),jh=z.object({DayNumber:z.number().nullish(),Rewards:L.nullish(),IsMilestone:z.boolean().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),Fh=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(jh).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:_.nullish(),AvailableFromUtc:z.string().nullish(),AvailableUntilUtc:z.string().nullish()}).passthrough(),Vh=z.object({MinPremiumTier:z.number().nullish(),RequiredPremiumID:z.string().nullish(),Multiplier:z.number().nullish()}).passthrough(),_h=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(Vh).nullish()}).passthrough(),Wh=z.object({MinCharacterLevel:z.number().nullish(),RequirementsCharacterID:z.string().nullish(),Gate:_.nullish(),RequiredItemIDs:z.array(z.string()).nullish(),RequiredEquippedItemIDs:z.array(z.string()).nullish()}).passthrough(),Qh=z.object({AccrualID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Rate:_h.nullish(),Rewards:L.nullish(),MaxAccumulationSeconds:z.number().nullish(),MinClaimSeconds:z.number().nullish(),Requirements:Wh.nullish(),FirstClaimMode:z.string().nullish(),AvailableFromUtc:z.string().nullish(),AvailableUntilUtc:z.string().nullish()}).passthrough(),Kh=z.object({MinAbsenceSeconds:z.number().nullish(),Rewards:L.nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),Hh=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(Kh).nullish(),ClaimCooldownSeconds:z.number().nullish(),ClaimWindowSeconds:z.number().nullish(),TrackPresenceOnRead:z.boolean().nullish(),Gate:_.nullish(),AvailableFromUtc:z.string().nullish(),AvailableUntilUtc:z.string().nullish()}).passthrough(),$h=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(),Zh=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:ge.nullish(),PremiumLimitOverrides:z.array($h).nullish(),Gate:_.nullish(),AvailableFromUtc:z.string().nullish(),AvailableUntilUtc:z.string().nullish()}).passthrough(),Fs=z.object({TierRewards:Nh.nullish(),MilestoneRewardMultiplier:Qt.nullish(),DailyCalendars:z.record(z.string(),Fh).nullish(),IdleAccruals:z.record(z.string(),Qh).nullish(),Comebacks:z.record(z.string(),Hh).nullish(),Claims:z.record(z.string(),Zh).nullish()}).passthrough(),wa=z.object({RewardDefinitions:Fs.nullish()}),Oa=z.object({Rewards:Gh.nullish()}),st={GetRewardDefinitions:"GetRewardDefinitions",GetUserRewardsState:"GetUserRewardsState",ClaimDailyReward:"ClaimDailyReward",CollectIdleAccrual:"CollectIdleAccrual",ClaimComebackReward:"ClaimComebackReward",ClaimReward:"ClaimReward",ClaimRewardsBatch:"ClaimRewardsBatch",GetMilestoneRewardMultiplier:"GetMilestoneRewardMultiplier"};var ur=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=O(this.ctx.settings.titleID,"Reward",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getRewardDefinitions(e){return this.send(st.GetRewardDefinitions,e,wa)}getUserRewardsState(e){return this.send(st.GetUserRewardsState,e,Oa)}getMilestoneRewardMultiplier(e){return this.send(st.GetMilestoneRewardMultiplier,e,Ma)}claimDailyReward(e){return this.send(st.ClaimDailyReward,e,va)}collectIdleAccrual(e){return this.send(st.CollectIdleAccrual,e,Pa)}claimComebackReward(e){return this.send(st.ClaimComebackReward,e,Ia)}claimReward(e){return this.send(st.ClaimReward,e,ka)}};var cr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=O(this.ctx.settings.titleID,"Tutorial",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getTutorialDefinitions(e){return this.send(Be.GetTutorialDefinitions,e,Ln)}getUserTutorialState(e){return this.send(Be.GetUserTutorialState,e,En)}startFlow(e){return this.send(Be.StartFlow,e,lt)}reportStepShown(e){return this.send(Be.ReportStepShown,e,lt)}completeStep(e){return this.send(Be.CompleteStep,e,lt)}completeStepsBatch(e){return this.send(Be.CompleteStepsBatch,e,Nn)}skipStep(e){return this.send(Be.SkipStep,e,lt)}skipFlow(e){return this.send(Be.SkipFlow,e,lt)}claimFlowReward(e){return this.send(Be.ClaimFlowReward,e,Gn)}resetFlow(e){return this.send(Be.ResetFlow,e,lt)}};var pr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=O(this.ctx.settings.titleID,"Localization",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket,throttleKey:t.Locale?`${r}:${t.Locale}`:r})}getLocalizationManifest(e){return this.send(Ji.GetLocalizationManifest,e,la)}getLocalizationTable(e){return this.send(Ji.GetLocalizationTable,e,ua)}};var dr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=O(this.ctx.settings.titleID,"Quest",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getQuestDefinitions(e){return this.send(Ve.GetQuestDefinitions,e,Ht)}getUserQuestState(e){return this.send(Ve.GetUserQuestState,e,zn)}refreshQuestCycles(e){return this.send(Ve.RefreshQuestCycles,e,ze)}claimQuestReward(e){return this.send(Ve.ClaimQuestReward,e,ss)}claimQuestRewardsBatch(e){return this.send(Ve.ClaimQuestRewardsBatch,e,Pn)}claimMilestoneReward(e){return this.send(Ve.ClaimMilestoneReward,e,ns)}claimMilestoneRewardsBatch(e){return this.send(Ve.ClaimMilestoneRewardsBatch,e,In)}claimGroupCompletionReward(e){return this.send(Ve.ClaimGroupCompletionReward,e,Tn)}addQuestProgress(e){return this.send(Ve.AddQuestProgress,e,vn)}};var Aa=z.object({}).passthrough().transform(a=>a);var Jh=z.object({Order:z.number().nullish(),Type:z.string().nullish(),DurationSec:z.number().nullish(),BonusMultiplier:z.number().nullish()}).passthrough(),Yh=z.object({Schedule:z.array(Jh).nullish(),RepeatCycle:z.boolean().nullish(),MaxCycles:z.number().nullish()}).passthrough(),Xh=z.object({IsActive:z.boolean().nullish(),CurrentPhaseEndUtc:u.nullish(),NextBonusStartUtc:u.nullish(),CurrentCycleIndex:z.number().nullish(),CurrentPhaseIndex:z.number().nullish(),ActiveBonusMultiplier:z.number().nullish()}).passthrough(),em=z.object({Milestones:X.nullish()}).passthrough(),Vs=z.object({DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Category:z.string().nullish(),Token:ht.nullish(),TokenSources:z.array(Ue).nullish(),ClaimMode:z.string().nullish(),Milestones:z.record(z.string(),De).nullish(),Presets:em.nullish(),BonusWindow:Yh.nullish()}).passthrough(),tm=z.object({ChainedEventID:z.string().nullish(),Order:z.number().nullish(),DurationSec:z.number().nullish(),Content:Vs.nullish(),ClaimGraceHours:z.number().nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),im=z.object({TimedEventID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Schedule:pe.nullish(),Content:Vs.nullish(),Events:z.array(tm).nullish(),Gate:_.nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),rm=z.object({MaxConcurrentEvents:z.number().nullish()}).passthrough(),sm=z.object({Milestones:z.record(z.string(),at).nullish()}).passthrough(),hr=z.object({Definitions:z.record(z.string(),im).nullish(),Settings:rm.nullish(),Presets:sm.nullish()}).passthrough(),nm=z.object({Type:At,TimedEventID:z.string(),CurrentChainedEventID:z.string().nullish(),Content:Vs.nullish(),Progress:Aa.nullish(),ComputedStartUtc:u.nullish(),ComputedEndUtc:u.nullish(),CanEarn:z.boolean().nullish(),CanClaim:z.boolean().nullish(),NextMilestone:De.nullish(),BonusWindow:Xh.nullish(),CurrentCycleIndex:z.number().nullish(),CurrentEventOrder:z.number().nullish(),TotalEventsInChain:z.number().nullish()}).passthrough(),Ua=z.object({ActiveEvents:z.array(nm).nullish()}).passthrough(),Ba=z.object({Tokens:z.record(z.string(),Aa).nullish()}),_s=z.object({Type:At.nullish(),LteID:z.string().nullish(),Resources:b.nullish()}),Ws=z.object({Type:At.nullish(),LteID:z.string().nullish(),MilestoneID:z.string().nullish(),Rewards:b.nullish()}),om=z.object({Type:At.nullish(),LteID:z.string().nullish(),Resources:b.nullish()}),Qs=z.array(re(Ws)),La=z.array(re(_s)),qa=z.array(re(om)),Ge={GetActiveEvents:"GetActiveEvents",GrantTokens:"GrantTokens",SpendTokens:"SpendTokens",ClaimMilestone:"ClaimMilestone",GetDefinitions:"GetDefinitions",GetUserLteState:"GetUserLteState",ClaimMilestonesBatch:"ClaimMilestonesBatch",ClaimAllMilestones:"ClaimAllMilestones",SpendTokensBatch:"SpendTokensBatch",GrantTokensBatch:"GrantTokensBatch"};var mr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=O(this.ctx.settings.titleID,"TimedEvent",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getActiveEvents(e){return this.send(Ge.GetActiveEvents,e,Ua)}getDefinitions(e){return this.send(Ge.GetDefinitions,e,hr)}getUserLteState(e){return this.send(Ge.GetUserLteState,e,Ba)}grantTokens(e){return this.send(Ge.GrantTokens,e,b)}spendTokens(e){return this.send(Ge.SpendTokens,e,_s)}claimMilestone(e){return this.send(Ge.ClaimMilestone,e,Ws)}claimMilestonesBatch(e){return this.send(Ge.ClaimMilestonesBatch,e,Qs)}claimAllMilestones(e){return this.send(Ge.ClaimAllMilestones,e,Qs)}spendTokensBatch(e){return this.send(Ge.SpendTokensBatch,e,La)}grantTokensBatch(e){return this.send(Ge.GrantTokensBatch,e,qa)}};var am=z.object({UserID:z.string(),Score:w.nullish(),Rank:z.number().nullish(),LastScoreUpdateUtc:u.nullish(),IpHash:z.string().nullish(),PublicProfile:be.nullish(),SeasonTierAtCycleEnd:z.number().nullish()}).passthrough(),qt=z.object({LeaderboardID:z.string(),CycleVersion:z.number().nullish(),TotalParticipants:w.nullish(),CycleEndUtc:u.nullish(),TopUsers:z.array(am).nullish(),BracketID:z.string().nullish()}),lm=z.object({CycleKey:z.string().nullish(),CycleEndUtc:u.nullish(),ClaimDeadlineUtc:u.nullish(),MilestoneTokensEarned:w.nullish(),ClaimableMilestoneIDs:z.array(z.string()).nullish(),CycleIndex:z.number().nullish(),ChainedEventID:z.string().nullish()}).passthrough(),fr=z.object({LeaderboardID:z.string(),CurrentScore:w.nullish(),LastKnownRank:z.number().nullish(),HasUnclaimedReward:z.boolean().nullish(),ScoreEarnedThisCycle:w.nullish(),MilestoneTokensEarned:w.nullish(),NextMilestone:De.nullish(),HasUnclaimedMilestone:z.boolean().nullish(),ClaimableGraceCycles:z.array(lm).nullish()}),gr=z.object({LeaderboardID:z.string(),NewScore:w,CycleVersion:z.number()}),Rr=z.object({ServerTimeUtc:u,LeaderboardID:z.string(),Rank:z.number().nullish(),Resources:b.nullish()}),yr=z.object({ServerTimeUtc:u,LeaderboardID:z.string(),MilestoneID:z.string(),Resources:b.nullish()}),Ea=z.array(re(qt)),Ga=z.array(re(fr)),Na=z.array(re(Rr)),ja=z.array(re(yr)),Fa=z.array(re(gr)),um=z.object({LeaderboardID:z.string(),CycleReward:re(Rr).nullish(),Milestones:z.array(re(yr)).nullish()}),Va=z.array(um),cm=z.object({LeaderboardID:z.string(),Leaderboard:re(qt).nullish(),Progress:re(fr).nullish()}),_a=z.array(cm),pm=z.string(),Wa=z.object({Rank:z.string().nullish(),Rewards:L.nullish(),SeasonTierRewards:is.nullish()}).passthrough(),dm=z.object({RankRewards:z.array(Wa).nullish()}).passthrough(),hm=z.object({ChainedEventID:z.string().nullish(),Order:z.number().nullish(),DurationSec:z.number().nullish(),ClaimGraceHours:z.number().nullish()}).passthrough(),mm=z.object({Milestones:X.nullish(),RankRewards:X.nullish()}).passthrough(),fm=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:pm.nullish(),Schedule:pe.nullish(),ChainEvents:z.array(hm).nullish(),Gate:_.nullish(),TopUsersLimit:z.number().nullish(),MinScoreToEnterTop:z.number().nullish(),BracketSize:z.number().nullish(),LinkedSeasonChainID:z.string().nullish(),RankRewards:z.array(Wa).nullish(),Milestones:z.record(z.string(),De).nullish(),Presets:mm.nullish(),MilestoneClaimMode:z.string().nullish(),MilestoneClaimGraceHours:z.number().nullish(),ScoreSources:z.array(Ue).nullish()}).passthrough(),gm=z.object({Milestones:z.record(z.string(),at).nullish(),RankRewards:z.record(z.string(),dm).nullish()}).passthrough(),Cr=z.object({Definitions:z.record(z.string(),fm).nullish(),Presets:gm.nullish()}).passthrough(),xe={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 Sr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=O(this.ctx.settings.titleID,"Leaderboard",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(xe.GetDefinitions,e,Cr)}getLeaderboard(e){return this.send(xe.GetLeaderboard,e,qt)}getMyProgress(e){return this.send(xe.GetMyProgress,e,fr)}submitScore(e){return this.send(xe.SubmitScore,e,gr)}submitScoreFromSource(e){return this.send(xe.SubmitScoreFromSource,e,gr)}claimCycleReward(e){return this.send(xe.ClaimCycleReward,e,Rr)}claimMilestone(e){return this.send(xe.ClaimMilestone,e,yr)}getFriendsLeaderboard(e){return this.send(xe.GetFriendsLeaderboard,e,qt)}getLeaderboardsBatch(e){return this.send(xe.GetLeaderboardsBatch,e,Ea)}getProgressBatch(e){return this.send(xe.GetProgressBatch,e,Ga)}claimCycleRewardsBatch(e){return this.send(xe.ClaimCycleRewardsBatch,e,Na)}claimMilestonesBatch(e){return this.send(xe.ClaimMilestonesBatch,e,ja)}submitScoresBatch(e){return this.send(xe.SubmitScoresBatch,e,Fa)}claimAllRewardsBatch(e){return this.send(xe.ClaimAllRewardsBatch,e,Va)}getOverviewBatch(e){return this.send(xe.GetOverviewBatch,e,_a)}};var Ks=z.object({}).passthrough().transform(a=>a),Qa=z.object({SeasonChainID:z.string(),CycleIndex:z.number().nullish(),Season:z.lazy(()=>Za).nullish(),ComputedStartUtc:u.nullish(),ComputedEndUtc:u.nullish(),SecondsRemaining:w.nullish(),UserState:Ks.nullish(),NextTier:z.lazy(()=>$a).nullish()}).passthrough(),Ka=z.object({SeasonChainID:z.string(),CurrentSeasonID:z.string().nullish(),AmountGranted:w.nullish(),NewStatusTokens:w.nullish(),OldTier:z.number().nullish(),NewTier:z.number(),TierUp:z.boolean().nullish()}),Hs=z.object({SeasonChainID:z.string(),CurrentSeasonID:z.string().nullish(),TierNumber:z.number(),Resources:b.nullish()}),Ha=$e(Hs);var $a=z.object({Tier:z.number().nullish(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),RequiredTokens:w.nullish(),TierReachedReward:L.nullish()}).passthrough(),Za=z.object({SeasonID:z.string().nullish(),Order:z.number().nullish(),DurationSec:w.nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Tiers:z.array($a).nullish(),LinkedCollectionID:z.string().nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough();var Rm=z.object({SeasonChainID:z.string().nullish(),DisplayName:z.string().nullish(),Schedule:pe.nullish(),Seasons:z.array(Za).nullish(),GrantTokensAccessMode:z.string().nullish(),Gate:_.nullish()}).passthrough(),xr=z.object({Chains:z.record(z.string(),Rm).nullish()}).passthrough(),pt={GetDefinitions:"GetDefinitions",GetActiveSeason:"GetActiveSeason",GetUserState:"GetUserState",GrantStatusTokens:"GrantStatusTokens",ClaimTierReward:"ClaimTierReward",ClaimTierRewardsBatch:"ClaimTierRewardsBatch"};var Dr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=O(this.ctx.settings.titleID,"Season",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(pt.GetDefinitions,e,xr)}getActiveSeason(e){return this.send(pt.GetActiveSeason,e,Qa)}getUserState(e){return this.send(pt.GetUserState,e,Ks)}grantStatusTokens(e){return this.send(pt.GrantStatusTokens,e,Ka)}claimTierReward(e){return this.send(pt.ClaimTierReward,e,Hs)}claimTierRewardsBatch(e){return this.send(pt.ClaimTierRewardsBatch,e,Ha)}};var ym={Apple:"Apple",Google:"Google"},Ja=z.object({}).passthrough().transform(a=>a),Cm=z.object({PremiumID:z.string().nullish(),PurchaseDate:z.string().nullish(),ExpirationDate:z.string().nullish(),TransactionID:z.string().nullish(),IsAutoRenewEnabled:z.boolean().nullish()}).passthrough(),Sm=z.object({PremiumID:z.string().nullish(),DisplayName:z.string().nullish(),Tier:z.number().nullish(),DurationDays:z.number().nullish(),TrialDurationDays:z.number().nullish(),PriceOptions:Y.nullish(),AppleProductID:z.string().nullish(),GoogleProductID:z.string().nullish(),Benefits:z.record(z.string(),z.string()).nullish()}).passthrough(),$s=z.object({Definitions:z.record(z.string(),Sm).nullish()}).passthrough(),Ya=z.object({Premium:$s.nullish()}),Xa=z.object({ServerTimeUtc:u.nullish(),Premium:Ja.nullish()}),br=z.object({ServerTimeUtc:u.nullish(),Premium:Ja.nullish(),Subscription:Cm.nullish(),Resources:b.nullish()}),ft={GetDefinitions:"GetDefinitions",GetUserState:"GetUserState",ActivateTrial:"ActivateTrial",PurchaseWithResources:"PurchaseWithResources",PurchaseRealMoney:"PurchaseRealMoney"};var zr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=O(this.ctx.settings.titleID,"Premium",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(ft.GetDefinitions,e,Ya)}getUserState(e){return this.send(ft.GetUserState,e,Xa)}activateTrial(e){return this.send(ft.ActivateTrial,e,br)}purchaseItemOrCurrency(e){return this.send(ft.PurchaseWithResources,e,br)}purchaseRealMoney(e){return this.send(ft.PurchaseRealMoney,e,br)}};var Tr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=O(this.ctx.settings.titleID,"Character",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getCharacterDefinitions(e){return this.send(Me.GetCharacterDefinitions,e,ji)}getUserCharacters(e){return this.send(Me.GetUserCharacters,e,po)}unlockCharacter(e){return this.send(Me.UnlockCharacter,e,Ds)}upgradeStatLevel(e){return this.send(Me.UpgradeStatLevel,e,Ss)}upgradeCharacterLevel(e){return this.send(Me.UpgradeCharacterLevel,e,xs)}equipItems(e){return this.send(Me.EquipItems,e,ho)}unequipItems(e){return this.send(Me.UnequipItems,e,mo)}unequipAllCharacters(e){return this.send(Me.UnequipAllCharacters,e,fo)}unlockCharactersBatch(e){return this.send(Me.UnlockCharactersBatch,e,go)}upgradeCharacterLevelsBatch(e){return this.send(Me.UpgradeCharacterLevelsBatch,e,Ro)}upgradeStatLevelsBatch(e){return this.send(Me.UpgradeStatLevelsBatch,e,yo)}};var vr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=O(this.ctx.settings.titleID,"Match",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}createMatch(e){return this.send(Je.CreateMatch,e,Fo)}updateMatch(e){return this.send(Je.UpdateMatch,e,Vo)}cancelMatch(e){return this.send(Je.CancelMatch,e,_o)}instantBattle(e){return this.send(Je.InstantBattle,e,Wo)}saveStrategy(e){return this.send(Je.SaveStrategy,e,ze)}getMyMatches(e){return this.send(Je.GetMyMatches,e,ks)}getAvailableMatches(e){return this.send(Je.GetAvailableMatches,e,ks)}getDefinitions(e){return this.send(Je.GetDefinitions,e,$o)}};var xm={TradeUpRarity:"TradeUpRarity",TradeUpCollection:"TradeUpCollection"},el=z.enum(["TradeUpRarity","TradeUpCollection"]),Dm=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:ts.nullish()}),tl=z.object({ServerTimeUtc:u,Type:el.nullish(),CraftID:z.string(),CraftedCount:z.number().nullish(),SelectedOptionID:z.string().nullish(),InputRarity:z.string().nullish(),OutputRarity:z.string().nullish(),Resources:b.nullish(),Results:z.array(Dm).nullish()}),bm=z.object({CraftID:z.string().nullish(),Type:el.nullish(),CatalogID:z.string().nullish(),CollectionID:z.string().nullish(),InputRarityID:z.string().nullish(),OutputRarityID:z.string().nullish(),RequiredItemCount:z.number().nullish(),PriceOptions:Y.nullish()}).passthrough(),Zs=z.object({Definitions:z.record(z.string(),bm).nullish()}).passthrough(),il=z.object({ServerTimeUtc:u.nullish(),CraftDefinitions:Zs.nullish()}),Pr={GetDefinitions:"GetDefinitions",Craft:"Craft"};var Ir=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=O(this.ctx.settings.titleID,"Craft",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(Pr.GetDefinitions,e,il)}craft(e){return this.send(Pr.Craft,e,tl)}};var zm={Pending:"Pending",Accepted:"Accepted",Declined:"Declined",Cancelled:"Cancelled",Expired:"Expired"},Tm=z.enum(["Pending","Accepted","Declined","Cancelled","Expired"]),rl=z.object({}).passthrough().transform(a=>a),kt=z.object({CollectibleID:z.string(),Rarity:z.number().nullish(),IsSpecial:z.boolean().nullish(),IsDuplicate:z.boolean().nullish(),CollectionCurrencyConverted:z.number().nullish()}),sl=z.object({GrantedCollectibles:z.array(kt).nullish(),DuplicateCollectibles:z.array(kt).nullish(),CollectionCurrencyEarned:w.nullish()}),nl=z.object({OpenedCount:z.number().nullish(),Packs:z.array(sl).nullish(),GrantedCollectibles:z.array(kt).nullish(),DuplicateCollectibles:z.array(kt).nullish(),CollectionCurrencyEarned:w.nullish(),NewCollectionCurrencyBalance:w.nullish(),NewlyCompletedSetIDs:z.array(z.string()).nullish(),CollectionJustCompleted:z.boolean().nullish(),Resources:b.nullish(),TriggeredPity:z.array(z.unknown()).nullish()}),ol=z.object({OpenedCount:z.number().nullish(),Chests:z.array(sl).nullish(),GrantedCollectibles:z.array(kt).nullish(),DuplicateCollectibles:z.array(kt).nullish(),CollectionCurrencyEarned:w.nullish(),NewCollectionCurrencyBalance:w.nullish(),Resources:b.nullish(),TriggeredPity:z.array(z.unknown()).nullish()}),al=z.object({GrantedCollectibleID:z.string().nullish(),NewlyCompletedSetID:z.string().nullish(),CollectionJustCompleted:z.boolean().nullish(),Resources:b.nullish()}),Js=z.object({SetID:z.string(),Resources:b.nullish()}),ll=z.array(re(Js)),ul=z.object({Resources:b.nullish()}),vm=z.object({OfferID:z.string(),TitleID:z.string().nullish(),CollectionID:z.string().nullish(),SenderUserID:z.string().nullish(),SenderPublicData:be.nullish(),OfferedCollectibleID:z.string().nullish(),OfferedCollectibleIsSpecial:z.boolean().nullish(),ReceiverUserID:z.string().nullish(),RequestedCollectibleID:z.string().nullish(),RequestedCollectibleIsSpecial:z.boolean().nullish(),Status:Tm.nullish(),CreatedAtUtc:u.nullish(),ExpiresAtUtc:u.nullish(),RespondedAtUtc:u.nullish(),DeclineReason:z.string().nullish(),IsSpecialTradeEvent:z.boolean().nullish(),SpecialTradeEventID:z.string().nullish()}).passthrough(),cl=z.object({OfferID:z.string(),ExpiresAtUtc:u.nullish(),Resources:b.nullish()}),pl=z.object({OfferID:z.string(),Resources:b.nullish()}),dl=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()}),hl=z.object({OfferID:z.string(),Resources:b.nullish()}),Ys=z.object({Offers:z.array(vm).nullish()}),Pm=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(),Im=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(Pm).nullish(),SetCompletionReward:L.nullish()}).passthrough(),km=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(Im).nullish(),GrandPrize:L.nullish()}).passthrough(),ml=z.object({BonusRewardSlots:X.nullish(),PityRules:X.nullish()}).passthrough(),Mm=z.object({PackTypeID:z.string().nullish(),PriceOptions:Y.nullish(),BonusRewardSlots:z.array(Pt).nullish(),PityRules:z.array(It).nullish(),Presets:ml.nullish(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),CollectibleCount:z.number().nullish(),MaxOpenCount:z.number().nullish(),GuaranteedMinRarity:z.number().nullish(),GuaranteeMaxRarity:z.boolean().nullish(),RarityWeights:z.record(z.string(),z.number()).nullish(),ColorTier:z.number().nullish()}).passthrough(),wm=z.object({Rarity:z.number().nullish(),CollectionCurrencyGranted:z.number().nullish()}).passthrough(),Om=z.object({CollectionChestID:z.string().nullish(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),CollectionCurrencyCost:z.number().nullish(),MaxOpenCount:z.number().nullish(),MinCollectibleCount:z.number().nullish(),MaxCollectibleCount:z.number().nullish(),GuaranteedMinRarity:z.number().nullish(),BonusRewardSlots:z.array(Pt).nullish(),PityRules:z.array(It).nullish(),Presets:ml.nullish(),Tier:z.number().nullish()}).passthrough(),Am=z.object({SpecialTradeEventID:z.string().nullish(),StartUtc:u.nullish(),EndUtc:u.nullish(),AllowedSpecialCollectibleIDs:z.array(z.string()).nullish(),SpecialTradeEventDailyTradeLimit:z.number().nullish()}).passthrough(),kr=z.object({Collections:z.record(z.string(),km).nullish(),PackTypes:z.record(z.string(),Mm).nullish(),CollectionChests:z.array(Om).nullish(),DuplicateConversions:z.array(wm).nullish(),DailyTradeLimit:z.number().nullish(),CollectibleJokerCatalogID:z.string().nullish(),CollectibleJokerItemID:z.string().nullish(),SpecialTradeEvents:z.array(Am).nullish(),RewardPools:or.nullish()}).passthrough(),Te={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 Mr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=O(this.ctx.settings.titleID,"Collection",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(Te.GetDefinitions,e,kr)}getUserState(e){return this.send(Te.GetUserState,e,rl)}openPack(e){return this.send(Te.OpenPack,e,nl)}openCollectionChest(e){return this.send(Te.OpenCollectionChest,e,ol)}useCollectibleJoker(e){return this.send(Te.UseCollectibleJoker,e,al)}claimSetReward(e){return this.send(Te.ClaimSetReward,e,Js)}claimSetRewardsBatch(e){return this.send(Te.ClaimSetRewardsBatch,e,ll)}claimGrandPrize(e){return this.send(Te.ClaimGrandPrize,e,ul)}sendTradeOffer(e){return this.send(Te.SendTradeOffer,e,cl)}cancelTradeOffer(e){return this.send(Te.CancelTradeOffer,e,pl)}acceptTradeOffer(e){return this.send(Te.AcceptTradeOffer,e,dl)}declineTradeOffer(e){return this.send(Te.DeclineTradeOffer,e,hl)}getMyTradeOffers(e){return this.send(Te.GetMyTradeOffers,e,Ys)}getIncomingTradeOffers(e){return this.send(Te.GetIncomingTradeOffers,e,Ys)}};var Um=z.object({}).passthrough().transform(a=>a),Bm={Forming:"Forming",Active:"Active",Completed:"Completed",Failed:"Failed",Expired:"Expired"},Lm={Active:"Active",Left:"Left",Replaced:"Replaced"},qm=z.object({ObjectIndex:z.number().nullish(),ObjectCompletionRewardClaimed:z.boolean().nullish()}).passthrough(),Em=z.object({UserID:z.string().nullish(),PublicData:be.nullish(),BuildObjectsProgress:qm.nullish(),IsBot:z.boolean().nullish(),SpinsCount:z.number().nullish(),TokensSpent:z.number().nullish(),MemberStatus:z.string().nullish(),GrandPrizeClaimed:z.boolean().nullish(),JoinedAtUtc:u.nullish(),LeftAtUtc:u.nullish()}).passthrough(),Gm=z.object({Index:z.number().nullish(),OwnerUserID:z.string().nullish(),CurrentProgress:z.number().nullish(),MaxProgress:z.number().nullish(),IsCompleted:z.boolean().nullish()}).passthrough(),Nm=z.object({Objects:z.array(Gm).nullish()}).passthrough(),fl=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(Em).nullish(),BuildObjectsState:Nm.nullish(),Status:z.string().nullish(),CreatedAtUtc:u.nullish(),ExpiresAtUtc:u.nullish(),Version:z.number().nullish()}).passthrough(),gl=z.object({CoopChainID:z.string()}).passthrough(),jm=z.string(),Xs=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(),Fm=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(),Vm=z.object({Objects:z.array(Fm).nullish(),PriceOptions:Y.nullish(),SpinnerTable:z.array(Xs).nullish(),MaxSpinsPerCall:z.number().nullish()}).passthrough(),_m=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:jm.nullish(),PartnerCount:z.number().nullish(),MatchmakingTimeoutMinutes:z.number().nullish(),MemberGracePeriodMinutes:z.number().nullish(),BuildObjects:Vm.nullish(),GrandPrize:L.nullish()}).passthrough(),Wm=z.object({CoopChainID:z.string().nullish(),DisplayName:z.string().nullish(),Schedule:pe.nullish(),Events:z.array(_m).nullish(),Gate:_.nullish()}).passthrough(),Rl=z.object({ServerTimeUtc:u.nullish(),UserState:Um.nullish(),ActiveGroup:fl.nullish()}),en=z.object({ServerTimeUtc:u.nullish(),Group:fl.nullish(),SecondsRemaining:w.nullish()}),yl=z.object({ServerTimeUtc:u.nullish(),GroupID:z.string().nullish(),Resources:b.nullish(),ObjectIndex:z.number().nullish(),Sector:Xs.nullish(),RequestedSpins:z.number().nullish(),SpinsUsed:z.number().nullish(),Sectors:z.array(Xs).nullish(),ProgressDelta:z.number().nullish(),NewProgress:w.nullish(),MaxProgress:w.nullish(),ObjectCompleted:z.boolean().nullish(),AllObjectsCompleted:z.boolean().nullish()}),tn=z.object({ServerTimeUtc:u.nullish(),GroupID:z.string().nullish(),RewardType:z.string().nullish(),Resources:b.nullish()}),Cl=z.object({ServerTimeUtc:u.nullish(),GroupID:z.string().nullish(),Success:z.boolean().nullish()}),wr=z.object({Chains:z.record(z.string(),Wm).nullish()}).passthrough(),We={GetDefinitions:"GetDefinitions",GetActiveEvent:"GetActiveEvent",GetUserState:"GetUserState",GetGroupState:"GetGroupState",JoinOrCreateGroup:"JoinOrCreateGroup",Spin:"Spin",ClaimObjectReward:"ClaimObjectReward",ClaimGrandPrize:"ClaimGrandPrize",LeaveGroup:"LeaveGroup"};var Or=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=O(this.ctx.settings.titleID,"CoopEvent",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(We.GetDefinitions,e,wr)}getActiveEvent(e){return this.send(We.GetActiveEvent,e,gl)}getUserState(e){return this.send(We.GetUserState,e,Rl)}getGroupState(e){return this.send(We.GetGroupState,e,en)}joinOrCreateGroup(e){return this.send(We.JoinOrCreateGroup,e,en)}spin(e){return this.send(We.Spin,e,yl)}claimObjectReward(e){return this.send(We.ClaimObjectReward,e,tn)}claimGrandPrize(e){return this.send(We.ClaimGrandPrize,e,tn)}leaveGroup(e){return this.send(We.LeaveGroup,e,Cl)}};var Qm={Active:"Active",Exhausted:"Exhausted",Expired:"Expired",Dismissed:"Dismissed"},Km={Locked:"Locked",Available:"Available",InProgress:"InProgress",Completed:"Completed",Hidden:"Hidden"},Hm=z.object({NodeID:z.string().nullish(),Status:z.string().nullish(),ExecutionCount:z.number().nullish(),UnlockedAtUtc:u.nullish(),CompletedAtUtc:u.nullish(),LastExecutedAtUtc:u.nullish(),NextAvailableAtUtc:u.nullish(),LastExecutionRefID:z.string().nullish()}).passthrough(),$m=z.object({TrackID:z.string().nullish(),CurrentValue:z.number().nullish(),LastUpdatedUtc:u.nullish()}).passthrough(),Sl=z.object({OfferID:z.string().nullish(),InstanceKey:z.string().nullish(),SourceOfferVersion:z.number().nullish(),Status:z.string().nullish(),ActivatedAtUtc:u.nullish(),ExhaustedAtUtc:u.nullish(),ExpiredAtUtc:u.nullish(),DismissedAtUtc:u.nullish(),ShowCount:z.number().nullish(),LastShownAtUtc:u.nullish(),Nodes:z.record(z.string(),Hm).nullish(),Tracks:z.record(z.string(),$m).nullish(),SelectedChoiceNodeID:z.string().nullish()}).passthrough(),Zm=z.object({SlotID:z.string().nullish(),QueueIndex:z.number().nullish(),CycleIndex:z.number().nullish(),ActiveOfferID:z.string().nullish(),ActiveOfferStartedAtUtc:u.nullish(),ActiveOfferExpiresAtUtc:u.nullish(),ActiveOffer:Sl.nullish(),NextCycleStartsAtUtc:u.nullish(),LastUpdatedUtc:u.nullish(),DismissSkipAvailableAtUtc:u.nullish(),LastDismissedAtUtc:u.nullish()}).passthrough(),Jm=z.object({TotalExecutions:z.number().nullish(),DailyExecutions:z.number().nullish(),DailyResetUtc:u.nullish()}).passthrough(),Ym=z.object({TotalActivations:z.number().nullish(),TotalExhausted:z.number().nullish(),TotalExpired:z.number().nullish(),TotalDismissed:z.number().nullish(),TotalShows:z.number().nullish(),LastShownAtUtc:u.nullish(),LastActivatedAtUtc:u.nullish(),LastExhaustedAtUtc:u.nullish(),NodeCounts:z.record(z.string(),Jm).nullish()}).passthrough(),Xm=z.object({Slots:z.record(z.string(),Zm).nullish(),OfferHistory:z.record(z.string(),Ym).nullish(),LastUpdatedUtc:u.nullish()}).passthrough();var ef=z.object({Order:z.number().nullish(),OfferID:z.string().nullish(),DurationSec:z.number().nullish(),DelayBeforeActivationSec:z.number().nullish()}).passthrough(),tf=z.object({SlotID:z.string().nullish(),Enabled:z.boolean().nullish(),SortOrder:z.number().nullish(),Queue:z.array(ef).nullish(),Schedule:pe.nullish(),Gate:_.nullish(),AllowDismissSkip:z.boolean().nullish(),DismissSkipDelaySec:z.number().nullish()}).passthrough(),rf=z.object({StoreOfferID:z.string().nullish(),BillingProductID:z.string().nullish(),PriceOptions:Y.nullish(),UseExternalRewards:z.boolean().nullish()}).passthrough(),sf=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(),nf=z.object({Purchase:rf.nullish(),RewardedVideo:sf.nullish()}).passthrough(),of=z.object({TrackID:z.string().nullish(),Operator:z.string().nullish(),Value:z.number().nullish()}).passthrough(),af=z.object({Milestones:X.nullish()}).passthrough(),lf=z.object({TrackID:z.string().nullish(),Amount:z.number().nullish(),RespectBounds:z.boolean().nullish()}).passthrough(),uf=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(),cf=z.object({RequiredCompletedNodeIDs:z.array(z.string()).nullish(),RequiredAnyCompletedNodeIDs:z.array(z.string()).nullish(),RequiredTracks:z.array(of).nullish(),VisibleWhileLocked:z.boolean().nullish()}).passthrough(),pf=z.object({NodeID:z.string().nullish(),SortOrder:z.number().nullish(),Type:z.string().nullish(),Action:nf.nullish(),Grants:L.nullish(),TrackChanges:z.array(lf).nullish(),MilestonePoints:z.number().nullish(),UnlockRules:cf.nullish(),NextNodeIDs:z.array(z.string()).nullish(),ChoiceGroupID:z.string().nullish(),Limits:ge.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(),xl=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(pf).nullish(),Tracks:z.array(uf).nullish(),Milestones:z.record(z.string(),De).nullish(),Presets:af.nullish(),MilestoneClaimMode:z.string().nullish(),MilestoneToken:ht.nullish(),ExhaustedWhenAllTerminalNodesCompleted:z.boolean().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Metadata:z.record(z.string(),z.string()).nullish()}).passthrough(),df=z.object({Milestones:z.record(z.string(),at).nullish()}).passthrough(),rn=z.object({Slots:z.record(z.string(),tf).nullish(),Offers:z.record(z.string(),xl).nullish(),Presets:df.nullish()}).passthrough(),Dl=z.object({DealOfferDefinitions:rn.nullish()}),bl=z.object({DealOffers:Xm.nullish()}),hf=z.object({EntityID:z.string().nullish(),TotalEarned:z.number().nullish(),ClaimedIDs:z.array(z.string()).nullish(),ReachedUnclaimedIDs:z.array(z.string()).nullish()}).passthrough(),mf=z.object({SlotID:z.string().nullish(),SortOrder:z.number().nullish(),QueueIndex:z.number().nullish(),CycleIndex:z.number().nullish(),OfferDef:xl.nullish(),ActivationState:Sl.nullish(),IsNewActivation:z.boolean().nullish(),ComputedExpiresAtUtc:u.nullish(),Cost:Ut.nullish(),Milestone:hf.nullish()}).passthrough(),zl=z.object({Slots:z.array(mf).nullish()}),Tl=z.object({ServerTimeUtc:u.nullish(),SlotID:z.string().nullish(),NodeID:z.string().nullish(),NodeCompleted:z.boolean().nullish(),OfferExhausted:z.boolean().nullish(),Idempotent:z.boolean().nullish(),Resources:b.nullish()}),vl=z.object({ServerTimeUtc:u.nullish(),SlotID:z.string().nullish(),Resources:b.nullish()}),Pl=z.object({ServerTimeUtc:u.nullish(),SlotID:z.string().nullish(),Resources:b.nullish()}),Il=z.object({ServerTimeUtc:u.nullish(),SlotID:z.string().nullish(),MilestoneID:z.string().nullish(),Resources:b.nullish()}),kl=z.object({ServerTimeUtc:u.nullish(),SlotID:z.string().nullish(),ClaimedIDs:z.array(z.string()).nullish(),Rejected:z.record(z.string(),z.string()).nullish(),Resources:b.nullish()}),Ye={GetDefinition:"GetDefinition",GetUserState:"GetUserState",GetActiveDeals:"GetActiveDeals",DismissDeal:"DismissDeal",ExecuteNode:"ExecuteNode",RecordShow:"RecordShow",ClaimMilestone:"ClaimMilestone",ClaimMilestonesBatch:"ClaimMilestonesBatch"};var Ar=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=O(this.ctx.settings.titleID,"DealOffer",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getDefinition(e){return this.send(Ye.GetDefinition,e,Dl)}getUserState(e){return this.send(Ye.GetUserState,e,bl)}getActiveDeals(e){return this.send(Ye.GetActiveDeals,e,zl)}dismissDeal(e){return this.send(Ye.DismissDeal,e,vl)}executeNode(e){return this.send(Ye.ExecuteNode,e,Tl)}recordShow(e){return this.send(Ye.RecordShow,e,Pl)}claimMilestone(e){return this.send(Ye.ClaimMilestone,e,Il)}claimMilestonesBatch(e){return this.send(Ye.ClaimMilestonesBatch,e,kl)}};var ff=z.object({}).passthrough().transform(a=>a),gf=z.object({FeatureKey:z.string().nullish(),IsEnabled:z.boolean().nullish(),Percent:z.number().nullish(),SourceCurrencyID:z.string().nullish(),TargetCurrencyID:z.string().nullish()}).passthrough(),sn=z.object({IsEnabled:z.boolean().nullish(),ActivationReward:L.nullish(),InviteRewards:z.record(z.string(),De).nullish(),SpendRewards:z.array(gf).nullish()}).passthrough(),Ml=z.object({ReferralDefinitions:sn.nullish()}),wl=z.object({Referral:ff.nullish()}),Ol=z.object({ReferralCode:z.string().nullish(),IsFirstActivation:z.boolean().nullish(),Resources:b.nullish()}),nn=z.object({RewardID:z.string().nullish(),Resources:b.nullish()}),Al=$e(nn),gt={GetDefinitions:"GetDefinitions",GetUserState:"GetUserState",ActivateReferralCode:"ActivateReferralCode",ClaimInviteReward:"ClaimInviteReward",ClaimInviteRewardsBatch:"ClaimInviteRewardsBatch"};var Ur=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=O(this.ctx.settings.titleID,"Referral",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(gt.GetDefinitions,e,Ml)}getUserState(e){return this.send(gt.GetUserState,e,wl)}activateReferralCode(e){return this.send(gt.ActivateReferralCode,e,Ol)}claimInviteReward(e){return this.send(gt.ClaimInviteReward,e,nn)}claimInviteRewardsBatch(e){return this.send(gt.ClaimInviteRewardsBatch,e,Al)}};var Rf={RequestSent:"RequestSent",Accepted:"Accepted",Declined:"Declined",Removed:"Removed"},yf={Attack:"Attack",Raid:"Raid",FriendAdd:"FriendAdd"},Ul=z.object({UserID:z.string(),PublicData:be.nullish()}),Cf=z.object({OwnerUserID:z.string().nullish(),ActorUserID:z.string().nullish(),ActorProfile:be.nullish(),Type:z.string().nullish(),CreatedAt:u.nullish(),OwnerImpact:b.nullish(),IsBlocked:z.boolean().nullish(),TargetObjectName:z.string().nullish()}).passthrough(),Br=z.object({Friends:z.array(Ul).nullish()}),Sf=z.object({FriendsCount:z.number().nullish(),IncomingRequestsCount:z.number().nullish(),OutgoingRequestsCount:z.number().nullish()}),Et=z.object({TargetUserID:z.string().nullish(),Status:z.string().nullish(),Target:Ul.nullish(),Counters:Sf.nullish()}),Bl=z.object({Events:z.array(Cf).nullish()}),Xe={GetFriendsList:"GetFriendsList",GetIncomingRequests:"GetIncomingRequests",GetRecommendedFriends:"GetRecommendedFriends",SendFriendRequest:"SendFriendRequest",AcceptFriendRequest:"AcceptFriendRequest",DeclineFriendRequest:"DeclineFriendRequest",RemoveFriend:"RemoveFriend",GetTimeline:"GetTimeline"};var Lr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=O(this.ctx.settings.titleID,"Social",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getFriendsList(e){return this.send(Xe.GetFriendsList,e,Br)}getIncomingRequests(e){return this.send(Xe.GetIncomingRequests,e,Br)}getRecommendedFriends(e){return this.send(Xe.GetRecommendedFriends,e,Br)}sendFriendRequest(e){return this.send(Xe.SendFriendRequest,e,Et)}acceptFriendRequest(e){return this.send(Xe.AcceptFriendRequest,e,Et)}declineFriendRequest(e){return this.send(Xe.DeclineFriendRequest,e,Et)}removeFriend(e){return this.send(Xe.RemoveFriend,e,Et)}getTimeline(e){return this.send(Xe.GetTimeline,e,Bl)}};var xf={Replace:"Replace",Refresh:"Refresh",KeepBest:"KeepBest",Stack:"Stack"};var Mt=z.object({Target:z.string().nullish(),Operation:z.string().nullish(),Value:z.number().nullish()}).passthrough(),Df=z.object({BoostID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),PriceOptions:Y.nullish(),Effect:Mt.nullish(),DurationSeconds:z.number().nullish(),Charges:z.number().nullish(),StackingPolicy:z.string().nullish(),MaxActiveInstances:z.number().nullish(),Tags:z.array(z.string()).nullish()}).passthrough(),bf=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:pe.nullish(),Effects:z.array(Mt).nullish(),Gate:_.nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),zf=z.object({ChainedBoostID:z.string().nullish(),Order:z.number().nullish(),DurationSec:z.number().nullish(),Effects:z.array(Mt).nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),Tf=z.object({ChainID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Schedule:pe.nullish(),Phases:z.array(zf).nullish(),Gate:_.nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),vf=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(Ue).nullish(),Effects:z.array(Mt).nullish(),DurationSeconds:z.number().nullish(),Charges:z.number().nullish(),StackingPolicy:z.string().nullish(),MaxActiveInstances:z.number().nullish(),Gate:_.nullish()}).passthrough(),Pf=z.object({MaxAddPercent:z.number().nullish(),MaxMultiply:z.number().nullish(),MaxAddFlat:z.number().nullish()}).passthrough(),If=z.object({StackingCaps:z.record(z.string(),Pf).nullish()}).passthrough(),qr=z.object({Definitions:z.record(z.string(),Df).nullish(),ScheduledBoosts:z.record(z.string(),bf).nullish(),BoostChains:z.record(z.string(),Tf).nullish(),TriggeredBoosts:z.record(z.string(),vf).nullish(),Settings:If.nullish()}).passthrough(),Ll=z.object({InstanceID:z.string(),BoostID:z.string(),ActivatedAtUtc:u.nullish(),ExpiresAtUtc:u.nullish(),RemainingCharges:z.number().nullish(),EffectSnapshot:Mt.nullish(),SourceType:z.string().nullish(),SourceRef:z.string().nullish()}).passthrough();z.object({Date:u.nullish(),DailyCount:z.number().nullish(),LastFiredUtc:u.nullish()}).passthrough();var ql=z.object({ServerTimeUtc:u.nullish(),Active:z.record(z.string(),Ll).nullish()}),El=z.object({ServerTimeUtc:u.nullish(),BoostID:z.string().nullish(),StackingPolicy:z.string().nullish(),ActivatedBoost:Ll.nullish(),Resources:b.nullish()}),kf={Scheduled:"Scheduled",Chain:"Chain"},Mf=z.object({Kind:z.string().nullish(),SourceID:z.string().nullish(),PhaseID:z.string().nullish(),CycleIndex:z.number().nullish(),PhaseOrder:z.number().nullish(),StartUtc:u.nullish(),EndUtc:u.nullish(),Effects:z.array(Mt).nullish(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),Gl=z.object({ServerTimeUtc:u.nullish(),Windows:z.array(Mf).nullish()}),Rt={GetDefinitions:"GetDefinitions",GetActive:"GetActive",GetActiveWindows:"GetActiveWindows",Activate:"Activate",CleanupExpired:"CleanupExpired"};var Er=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=O(this.ctx.settings.titleID,"TimedBoost",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(Rt.GetDefinitions,e,qr)}getActive(e){return this.send(Rt.GetActive,e,ql)}getActiveWindows(e){return this.send(Rt.GetActiveWindows,e,Gl)}activate(e){return this.send(Rt.Activate,e,El)}cleanupExpired(e){return this.send(Rt.CleanupExpired,e,ze)}};var Gr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=O(this.ctx.settings.titleID,"UserCustomData",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getUserCustomDataDefinitions(e){return this.send(_e.GetUserCustomDataDefinitions,e,Ai)}getMyUserCustomData(e){return this.send(_e.GetMyUserCustomData,e,Yn)}getPublicUserCustomDataOf(e){return this.send(_e.GetPublicUserCustomDataOf,e,fs)}setPrivateData(e){return this.send(_e.SetPrivateData,e,gs)}setPublicData(e){return this.send(_e.SetPublicData,e,gs)}deleteKey(e){return this.send(_e.DeleteKey,e,ze)}batchSet(e){return this.send(_e.BatchSet,e,Xn)}batchDelete(e){return this.send(_e.BatchDelete,e,eo)}batchGetPublicUserCustomDataOf(e){return this.send(_e.BatchGetPublicUserCustomDataOf,e,to)}};var wf={Static:"Static",Runtime:"Runtime"},Of={Public:"Public",Private:"Private"},Af=z.enum(["Client","Server","System"]),Uf=z.enum(["String","Int","Bool","Json"]),Bf=z.object({Value:z.string().nullish(),UpdatedAt:u.nullish(),Version:z.number().nullish(),LastWriter:Af.nullish(),ExpiresAt:u.nullish()}).passthrough(),Nl=z.record(z.string(),Bf),on=z.object({StaticVersion:z.number().nullish(),RuntimeVersion:z.number().nullish(),Static:Nl.nullish(),Runtime:Nl.nullish(),NotModified:z.boolean().nullish()}),Lf=z.object({KeyID:z.string(),Scope:z.enum(["Static","Runtime"]).nullish(),Bucket:z.enum(["Public","Private"]).nullish(),ValueType:Uf.nullish(),MaxValueLengthBytes:z.number().nullish(),TtlSeconds:z.number().nullish(),DefaultValue:z.string().nullish(),Description:z.string().nullish()}).passthrough(),Nr=z.object({Keys:z.record(z.string(),Lf).nullish(),DefaultMaxValueLengthBytes:z.number().nullish(),DefaultTtlSeconds:z.number().nullish(),MaxKeysPerBucket:z.number().nullish(),MaxTotalSizeBytes:z.number().nullish(),RejectUnregisteredKeys:z.boolean().nullish()}).passthrough(),Gt={GetTitleCustomDataDefinitions:"GetTitleCustomDataDefinitions",GetPublicTitleData:"GetPublicTitleData",GetPublicTitleDataKeys:"GetPublicTitleDataKeys"};var jr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=O(this.ctx.settings.titleID,"TitleCustomData",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getTitleCustomDataDefinitions(e){return this.send(Gt.GetTitleCustomDataDefinitions,e,Nr)}getPublicTitleData(e){return this.send(Gt.GetPublicTitleData,e,on)}getPublicTitleDataKeys(e){return this.send(Gt.GetPublicTitleDataKeys,e,on)}};var qf={Fast:"Fast",Sequential:"Sequential"},Ef={Instant:"Instant",Timed:"Timed"},Gf={Hit:"Hit",Blocked:"Blocked"},Nf=z.object({SlotIndex:z.number(),Level:z.number().nullish(),IsDamaged:z.boolean().nullish(),MaxLevelRewardClaimed:z.boolean().nullish()}).passthrough(),jf=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 jl=z.object({}).passthrough().transform(a=>a),Fl=z.object({Min:z.number().nullish(),Max:z.number().nullish()}).passthrough(),Ie=z.object({Operation:b.nullish(),ScaleWithRollMultiplier:z.boolean().nullish()}).passthrough(),Ff=z.object({Count:z.number().nullish(),Sides:z.number().nullish()}).passthrough(),Vf=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(),_f=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:fe.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(),Wf=z.object({CostMatrix:z.array(z.array(z.number())).nullish(),PerBoardGrowth:z.number().nullish(),EconomyScale:z.number().nullish(),ScaledResources:fe.nullish()}).passthrough(),Vl=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(),Qf=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(),Kf=z.object({Tiles:z.record(z.string(),Qf).nullish()}).passthrough(),Hf=z.object({Weight:z.number().nullish(),Bonus:Ie.nullish(),Tag:z.string().nullish()}).passthrough(),$f=z.object({Weight:z.number().nullish(),Tag:z.string().nullish(),MinBonusCells:z.number().nullish(),MaxBonusCells:z.number().nullish(),BonusPool:z.array(Hf).nullish(),GuaranteedBonus:Ie.nullish(),IsJackpot:z.boolean().nullish(),JackpotFinalMultiplier:z.number().nullish(),JackpotSymbolDistribution:z.record(z.string(),z.number()).nullish()}).passthrough(),Zf=z.object({Variants:z.array($f).nullish()}).passthrough(),Jf=z.object({Weight:z.number().nullish(),OutcomeID:z.string().nullish(),Reward:Ie.nullish(),ForceAction:z.string().nullish(),SpecialModeID:z.string().nullish()}).passthrough(),Yf=z.object({Outcomes:z.array(Jf).nullish()}).passthrough(),_l=z.object({PerAdMultiplierRange:Fl.nullish(),MaxAdViews:z.number().nullish(),AdCreditCost:z.number().nullish(),FormulaKind:z.string().nullish(),ApplyMultiplierOnEarlyClaim:z.boolean().nullish()}).passthrough(),Xf=z.object({ElapsedSeconds:z.number().nullish(),Reward:Ie.nullish()}).passthrough(),eg=z.object({Tiers:z.array(Xf).nullish(),BelowFirstTierReward:Ie.nullish()}).passthrough(),tg=z.object({ChoiceID:z.string().nullish(),Mode:z.string().nullish(),Reward:Ie.nullish(),DurationSeconds:z.number().nullish(),PriceOptions:Y.nullish(),Multipliers:_l.nullish(),Gradation:eg.nullish()}).passthrough(),ig=z.object({Choices:z.array(tg).nullish(),OfferExpireSeconds:z.number().nullish(),ClaimExpireSeconds:z.number().nullish()}).passthrough(),rg=z.object({Chance:z.number().nullish(),RequiredOutcome:z.string().nullish(),Reward:Ie.nullish(),Tag:z.string().nullish()}).passthrough(),sg=z.object({OnPassStart:Ie.nullish(),OnTileLanding:z.record(z.string(),Ie).nullish(),OnAttack:z.record(z.string(),Ie).nullish(),OnRaid:z.record(z.string(),Ie).nullish(),OnBuild:Ie.nullish(),OnStageComplete:Ie.nullish(),OnAttackBonusDrops:z.array(rg).nullish(),ChanceTablesByID:z.record(z.string(),Yf).nullish(),SpecialModesByID:z.record(z.string(),ig).nullish()}).passthrough(),Wl=z.object({BaseAttackReward:L.nullish(),BaseRaidReward:L.nullish(),MaxRollMultiplier:z.number().nullish(),MaxShields:z.number().nullish(),Buildings:z.array(Vl).nullish(),HeistGridBonusConfig:Zf.nullish(),StageOperations:sg.nullish(),TileLandingMultiplier:Fl.nullish(),EconomyOverride:Wf.nullish()}).passthrough(),ng=z.object({Name:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),BoardTemplateID:z.string().nullish(),Buildings:z.array(Vl).nullish(),StageTemplateID:z.string().nullish(),CostMatrixTemplateID:z.string().nullish(),UnitValue:z.number().nullish(),Override:Wl.nullish()}).passthrough(),Fr=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(),Kf).nullish(),StageTemplatesByID:z.record(z.string(),Wl).nullish(),StagesByLevel:z.record(z.string(),ng).nullish(),SoftCurrencyID:z.string().nullish(),ProceduralEconomy:_f.nullish(),Dice:Ff.nullish(),Bots:Vf.nullish()}).passthrough(),og=z.object({IsActive:z.boolean().nullish(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),AnchorUtc:u.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(),De).nullish(),GrandPrize:L.nullish()}).passthrough(),Vr=z.object({Board:Fr.nullish(),CommunityChest:og.nullish()}).passthrough(),ag=z.object({TargetUserID:z.string().nullish(),IsBot:z.boolean().nullish(),PublicData:be.nullish(),TargetBuildingStates:z.array(Nf).nullish(),TargetHasShield:z.boolean().nullish()}).passthrough(),lg=z.object({ChoiceID:z.string().nullish(),Mode:z.string().nullish(),Reward:Ie.nullish(),DurationSeconds:z.number().nullish(),PriceOptions:Y.nullish(),Multipliers:_l.nullish()}).passthrough(),ug=z.object({ModeID:z.string().nullish(),Choices:z.array(lg).nullish()}).passthrough(),cg=z.object({GroupID:z.string().nullish(),Delta:w.nullish(),NewProgress:w.nullish(),MaxProgress:w.nullish(),UnlockedMilestoneIDs:z.array(z.string()).nullish(),Completed:z.boolean().nullish()}).passthrough(),Ql=z.object({UsedMultiplier:z.number().nullish(),Steps:z.number().nullish(),OldPosition:z.number().nullish(),NewPosition:z.number(),CyclesCompletedDelta:w.nullish(),LandedTileType:z.string().nullish(),Operation:b.nullish(),ActionRequired:z.string().nullish(),ActionData:ag.nullish(),SpecialModeOffer:ug.nullish(),CommunityChestContribution:cg.nullish()}).passthrough(),Kl=z.object({Outcome:z.string().nullish(),IsBotTarget:z.boolean().nullish(),BuildingIndexHit:z.number().nullish(),Operation:b.nullish(),DualResult:dt.nullish()}).passthrough(),an=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(jf).nullish(),HeistVariantTag:z.string().nullish(),IsJackpot:z.boolean().nullish(),Operation:b.nullish(),DualResult:dt.nullish()}).passthrough(),Hl=z.object({BuiltIndex:z.number(),NewLevel:z.number().nullish(),StageComplete:z.boolean().nullish(),MaxLevelRewardClaimed:z.boolean().nullish(),Operation:b.nullish()}).passthrough(),$l=z.object({Mode:z.union([z.string(),z.number()]).nullish(),Operation:b.nullish(),DurationSeconds:z.number().nullish(),StartedAtUtc:u.nullish(),ExpiresAtUtc:u.nullish()}).passthrough(),Zl=z.object({AdViewsUsed:z.number().nullish(),RolledMultiplier:z.number().nullish(),AccumulatedMultiplier:z.number().nullish(),RemainingAdViews:z.number().nullish()}).passthrough(),Jl=z.object({FinalMultiplier:z.number().nullish(),AdViewsUsed:z.number().nullish(),AccumulatedMultiplier:z.number().nullish(),IsEarlyClaim:z.boolean().nullish(),Operation:b.nullish()}).passthrough(),pg={Forming:"Forming",Active:"Active",Completed:"Completed",Failed:"Failed",Expired:"Expired"},Yl=z.enum(["Forming","Active","Completed","Failed","Expired"]),dg={Active:"Active",Left:"Left",Replaced:"Replaced"},hg=z.enum(["Active","Left","Replaced"]),mg=z.object({CurrentProgress:w.nullish(),MaxProgress:w.nullish()}).passthrough(),fg=z.object({UserID:z.string().nullish(),PublicData:be.nullish(),IsBot:z.boolean().nullish(),ContributionPoints:w.nullish(),ClaimedMilestoneIDs:z.array(z.string()).nullish(),GrandPrizeClaimed:z.boolean().nullish(),MemberStatus:hg.nullish(),JoinedAtUtc:u.nullish(),LeftAtUtc:u.nullish()}).passthrough(),Xl=z.object({GroupID:z.string().nullish(),TitleID:z.string().nullish(),RoundIndex:z.number().nullish(),Members:z.array(fg).nullish(),SharedProgress:mg.nullish(),Status:Yl.nullish(),CreatedAtUtc:u.nullish(),ExpiresAtUtc:u.nullish(),Version:z.number().nullish()}).passthrough(),gg=z.object({GroupID:z.string().nullish(),RoundIndex:z.number().nullish(),FinalStatus:Yl.nullish(),GrandPrizeReceived:z.boolean().nullish(),FinishedAtUtc:u.nullish()}).passthrough(),Rg=z.object({ActiveGroupID:z.string().nullish(),ActiveRoundIndex:z.number().nullish(),History:z.array(gg).nullish()}).passthrough(),eu=z.object({ServerTimeUtc:u.nullish(),UserState:Rg.nullish(),ActiveGroup:Xl.nullish(),SecondsRemaining:w.nullish()}),tu=z.object({ServerTimeUtc:u.nullish(),Group:Xl.nullish(),SecondsRemaining:w.nullish()}),ln=z.object({ServerTimeUtc:u.nullish(),GroupID:z.string().nullish(),RewardType:z.string().nullish(),MilestoneID:z.string().nullish(),Resources:b.nullish()}),iu=z.object({ServerTimeUtc:u.nullish(),GroupID:z.string().nullish(),Success:z.boolean().nullish()}),Se={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 yg=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(),Cg=z.object({ExperimentID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),IsEnabled:z.boolean().nullish(),Schedule:pe.nullish(),Gate:_.nullish(),Variants:z.array(yg).nullish(),Salt:z.string().nullish(),LayerID:z.string().nullish(),StickyAssignment:z.boolean().nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),ru=z.object({Experiments:z.record(z.string(),Cg).nullish()}).passthrough();var Sg={Mesh:"Mesh",Host:"Host"},un=z.enum(["Mesh","Host"]),xg={ServerRelay:"ServerRelay",P2P:"P2P"},cn=z.enum(["ServerRelay","P2P"]),Dg={Public:"Public",Private:"Private"},bg=z.enum(["Public","Private"]),zg={Signal:"Signal",Chat:"Chat",PlayerJoined:"PlayerJoined",PlayerLeft:"PlayerLeft",HostChanged:"HostChanged",RoomClosed:"RoomClosed",MemberState:"MemberState"},Tg=z.enum(["Signal","Chat","PlayerJoined","PlayerLeft","HostChanged","RoomClosed","MemberState"]),su=z.object({Urls:z.string().nullish(),Username:z.string().nullish(),Credential:z.string().nullish()}).passthrough(),vg=z.object({Enabled:z.boolean().nullish()}).passthrough(),nu=z.object({SystemState:vg.nullish(),DefaultTopology:un.nullish(),AllowCreatorTopologyOverride:z.boolean().nullish(),DefaultChatMode:cn.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(su).nullish()}).passthrough(),Pg=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(),Ig=z.object({RoomID:z.string().nullish(),Name:z.string().nullish(),HostUserID:z.string().nullish(),Topology:un.nullish(),ChatMode:cn.nullish(),MaxPlayers:z.number().nullish(),MemberCount:z.number().nullish(),CreatedAt:z.number().nullish()}).passthrough(),kg=z.object({Seq:z.number().nullish(),Type:Tg.nullish(),FromUserID:z.string().nullish(),ToUserID:z.string().nullish(),Kind:z.string().nullish(),Payload:z.string().nullish(),Ts:z.number().nullish()}).passthrough(),_r=z.object({RoomID:z.string().nullish(),Name:z.string().nullish(),HostUserID:z.string().nullish(),OwnerUserID:z.string().nullish(),Topology:un.nullish(),ChatMode:cn.nullish(),Visibility:bg.nullish(),Status:z.string().nullish(),MaxPlayers:z.number().nullish(),Members:z.array(Pg).nullish(),IceServers:z.array(su).nullish(),Seq:z.number().nullish()}).passthrough(),pn=z.object({Closed:z.boolean().nullish(),NewHostUserID:z.string().nullish()}).passthrough(),ou=z.object({Rooms:z.array(Ig).nullish(),Page:z.number().nullish(),PageSize:z.number().nullish(),HasMore:z.boolean().nullish()}).passthrough(),au=z.object({Envelopes:z.array(kg).nullish(),MaxSeq:z.number().nullish()}).passthrough(),Wr=z.object({Seq:z.number().nullish()}).passthrough(),Ne={CreateRoom:"CreateRoom",JoinRoom:"JoinRoom",LeaveRoom:"LeaveRoom",ListRooms:"ListRooms",GetRoom:"GetRoom",CloseRoom:"CloseRoom",Poll:"Poll",SendSignal:"SendSignal",SendChat:"SendChat",SetMemberState:"SetMemberState"};var dn=z.object({TitleCustomData:Nr.nullish(),Character:ji.nullish(),Item:tr.nullish(),Currency:Ni.nullish(),Store:rr.nullish(),Lootbox:js.nullish(),Quest:Ht.nullish(),TimedEvent:hr.nullish(),Leaderboard:Cr.nullish(),Season:xr.nullish(),Reward:Fs.nullish(),Collection:kr.nullish(),Craft:Zs.nullish(),DealOffer:rn.nullish(),Premium:$s.nullish(),TimedBoost:qr.nullish(),CoopEvent:wr.nullish(),GameLoop:Vr.nullish(),Match:ws.nullish(),Experiment:ru.nullish(),Blockchain:zs.nullish(),Marketplace:Bs.nullish(),Multiplayer:nu.nullish(),UserCustomData:Ai.nullish(),Referral:sn.nullish(),Localization:oa.nullish()}).passthrough();var yt={GetTitlePublicConfiguration:"GetTitlePublicConfiguration",GetTitlePublicConfigurationExcept:"GetTitlePublicConfigurationExcept",GetCurrencyDefinitions:"GetCurrencyDefinitions",GetItemDefinitions:"GetItemDefinitions",GetServerTime:"GetServerTime"};var Qr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=O(this.ctx.settings.titleID,"Title",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getTitlePublicConfiguration(e){return this.send(yt.GetTitlePublicConfiguration,e,dn)}getTitlePublicConfigurationExcept(e){return this.send(yt.GetTitlePublicConfigurationExcept,e,dn)}getCurrencyDefinitions(e){return this.send(yt.GetCurrencyDefinitions,e,Ni)}getItemDefinitions(e){return this.send(yt.GetItemDefinitions,e,tr)}getServerTime(e){return this.send(yt.GetServerTime,e,ze)}};var Kr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i,r=false){let s=O(this.ctx.settings.titleID,"GameLoop",e,t.UserID??"");return this.ctx.transport.post(s,t,i,{ticket:t.ClientSessionTicket,silent:r})}getGameLoops(e){return this.send(Se.GetGameLoops,e,Vr)}getBoardDefinition(e,t=false){return this.send(Se.GetBoardDefinition,e,Fr,t)}getBoardDefinitionForLevel(e,t=false){return this.send(Se.GetBoardDefinitionForLevel,e,Fr,t)}getUserBoardState(e){return this.send(Se.GetUserBoardState,e,jl)}boardLoopRoll(e){return this.send(Se.BoardLoopRoll,e,Ql)}boardLoopAttack(e){return this.send(Se.BoardLoopAttack,e,Kl)}boardLoopRaid(e){return this.send(Se.BoardLoopRaid,e,an)}boardLoopRaidFast(e){return this.send(Se.BoardLoopRaidFast,e,an)}boardLoopBuild(e){return this.send(Se.BoardLoopBuild,e,Hl)}boardSpecialChoose(e){return this.send(Se.BoardSpecialChoose,e,$l)}boardSpecialApplyMultiplier(e){return this.send(Se.BoardSpecialApplyMultiplier,e,Zl)}boardSpecialClaim(e){return this.send(Se.BoardSpecialClaim,e,Jl)}getCommunityChestState(e){return this.send(Se.GetCommunityChestState,e,eu)}joinOrCreateCommunityChest(e){return this.send(Se.JoinOrCreateCommunityChest,e,tu)}claimCommunityChestMilestone(e){return this.send(Se.ClaimCommunityChestMilestone,e,ln)}claimCommunityChestGrandPrize(e){return this.send(Se.ClaimCommunityChestGrandPrize,e,ln)}leaveCommunityChest(e){return this.send(Se.LeaveCommunityChest,e,iu)}};var Nt=z.lazy(()=>z.union([z.string(),z.number(),z.boolean(),z.null(),z.array(Nt),z.record(z.string(),Nt)]));var wg={Live:"Live",Latest:"Latest",Specific:"Specific"},Og={Debug:"Debug",Info:"Info",Warning:"Warning",Error:"Error"},Ag=z.enum(["Debug","Info","Warning","Error"]),Ug={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"},Bg=z.enum(["None","Disabled","NoActiveRevision","RevisionNotFound","InvalidFieldName","RateLimited","HandlerNotFound","HandlerDisabled","Timeout","StatementCountExceeded","StackOverflow","ApiCallLimitExceeded","JavaScriptException","ExecutionError"]),Lg=z.object({Level:Ag,Message:z.string().nullish(),Data:Nt.nullish()}),qg=z.object({Error:Bg,Message:z.string().nullish(),StackTrace:z.string().nullish()}),lu=z.object({FunctionName:z.string().nullish(),Revision:z.number().nullish(),FunctionResult:Nt.nullish(),FunctionResultTooLarge:z.boolean().nullish(),Logs:z.array(Lg).nullish(),LogsTooLarge:z.boolean().nullish(),ExecutionTimeSeconds:z.number().nullish(),APIRequestsIssued:z.number().nullish(),Error:qg.nullish()}),hn={Execute:"Execute"};var Hr=class{constructor(e){this.ctx=e;}ctx;execute(e){let t=O(this.ctx.settings.titleID,"CloudCode",hn.Execute,e.UserID??"");return this.ctx.transport.post(t,e,lu,{ticket:e.ClientSessionTicket})}};var $r=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=O(this.ctx.settings.titleID,"Blockchain",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(we.GetDefinitions,e,ko)}getUserState(e){return this.send(we.GetUserState,e,Mo)}depositToken(e){return this.send(we.DepositToken,e,wo)}depositNFT(e){return this.send(we.DepositNFT,e,Oo)}requestTokenWithdrawal(e){return this.send(we.RequestTokenWithdrawal,e,Ao)}requestNFTWithdrawal(e){return this.send(we.RequestNFTWithdrawal,e,Uo)}getTransactionHistory(e){return this.send(we.GetTransactionHistory,e,Bo)}retryWithdrawal(e){return this.send(we.RetryWithdrawal,e,Lo)}confirmWithdrawal(e){return this.send(we.ConfirmWithdrawal,e,qo)}donateToDeveloper(e){return this.send(we.DonateToDeveloper,e,Ps)}donateToUsersPool(e){return this.send(we.DonateToUsersPool,e,Ps)}};var Zr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=O(this.ctx.settings.titleID,"Marketplace",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(ae.GetDefinitions,e,Jo)}getGroupedOffers(e){return this.send(ae.GetGroupedOffers,e,Yo)}getOffersByItem(e){return this.send(ae.GetOffersByItem,e,Ls)}getOffer(e){return this.send(ae.GetOffer,e,Xo)}getBuyOrders(e){return this.send(ae.GetBuyOrders,e,Ls)}getMyState(e){return this.send(ae.GetMyState,e,ta)}getHistory(e){return this.send(ae.GetHistory,e,ia)}createListing(e){return this.send(ae.CreateListing,e,Lt)}cancelListing(e){return this.send(ae.CancelListing,e,qe)}buy(e){return this.send(ae.Buy,e,qe)}marketBuy(e){return this.send(ae.MarketBuy,e,qe)}marketSell(e){return this.send(ae.MarketSell,e,qe)}createAuction(e){return this.send(ae.CreateAuction,e,Lt)}placeBid(e){return this.send(ae.PlaceBid,e,ea)}claimAuction(e){return this.send(ae.ClaimAuction,e,qe)}createBuyOrder(e){return this.send(ae.CreateBuyOrder,e,Lt)}cancelBuyOrder(e){return this.send(ae.CancelBuyOrder,e,qe)}fillBuyOrder(e){return this.send(ae.FillBuyOrder,e,qe)}createDirectTrade(e){return this.send(ae.CreateDirectTrade,e,Lt)}respondDirectTrade(e){return this.send(ae.RespondDirectTrade,e,qe)}cancelDirectTrade(e){return this.send(ae.CancelDirectTrade,e,qe)}claimBack(e){return this.send(ae.ClaimBack,e,qe)}};var Jr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=O(this.ctx.settings.titleID,"Multiplayer",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}createRoom(e){return this.send(Ne.CreateRoom,e,_r)}joinRoom(e){return this.send(Ne.JoinRoom,e,_r)}leaveRoom(e){return this.send(Ne.LeaveRoom,e,pn)}listRooms(e){return this.send(Ne.ListRooms,e,ou)}getRoom(e){return this.send(Ne.GetRoom,e,_r)}closeRoom(e){return this.send(Ne.CloseRoom,e,pn)}poll(e){return this.send(Ne.Poll,e,au)}sendSignal(e){return this.send(Ne.SendSignal,e,Wr)}sendChat(e){return this.send(Ne.SendChat,e,Wr)}setMemberState(e){return this.send(Ne.SetMemberState,e,Wr)}};var Yr=class{settings;emitter;platform;clientPlatform;transport;fetchImpl;data;authStore;api;auth;userService;currency;item;store;purchase;checkout;lootbox;reward;quest;tutorial;localization;timedEvent;leaderboard;season;premium;character;match;craft;collection;coopEvent;dealOffer;referral;social;timedBoost;userCustomData;titleCustomData;title;gameLoop;cloudCode;blockchain;marketplace;multiplayer;constructor(e$1){this.settings=yn(e$1),this.emitter=new Ot,this.platform=e$1.platform??new e,this.clientPlatform=e$1.clientPlatform??Sn(),this.fetchImpl=e$1.fetch??globalThis.fetch.bind(globalThis),this.transport=new Jt({baseUrl:this.settings.baseUrl,emitter:this.emitter,fetchImpl:e$1.fetch,debugLogging:this.settings.debugLogging,throttleMs:e$1.throttleMs,clientPlatform:this.clientPlatform}),this.data=new ti(this.emitter),this.emitter.on("quest:systemProgress",t=>{this.data.user.patchQuestProgressUpdates(t);}),this.emitter.on("tutorial:systemProgress",t=>{this.data.user.patchTutorialProgress(t);}),this.emitter.on("user:stateVersions",({epoch:t,versions:i})=>{this.userService.noteStateVersions(t,i);}),this.authStore=new ii(this.platform.storage,this.settings.titleID),this.api={authentication:new Zi(this),user:new Yi(this),currency:new Xi(this),item:new ir(this),store:new sr(this),purchase:new nr(this),lootbox:new lr(this),reward:new ur(this),quest:new dr(this),tutorial:new cr(this),localization:new pr(this),timedEvent:new mr(this),leaderboard:new Sr(this),season:new Dr(this),premium:new zr(this),character:new Tr(this),match:new vr(this),craft:new Ir(this),collection:new Mr(this),coopEvent:new Or(this),dealOffer:new Ar(this),referral:new Ur(this),social:new Lr(this),timedBoost:new Er(this),userCustomData:new Gr(this),titleCustomData:new jr(this),title:new Qr(this),gameLoop:new Kr(this),cloudCode:new Hr(this),blockchain:new $r(this),marketplace:new Zr(this),multiplayer:new Jr(this)},this.userService=new oi(this),this.auth=new ri(this),this.currency=new li(this),this.item=new ui(this),this.store=new ci(this),this.purchase=new pi(this),this.checkout=new di(this),this.lootbox=new hi(this),this.reward=new mi(this),this.quest=new yi(this),this.tutorial=new fi(this),this.localization=new Ri(this),this.timedEvent=new Ci(this),this.leaderboard=new Si(this),this.season=new xi(this),this.premium=new Di(this),this.character=new bi(this),this.match=new zi(this),this.craft=new Ti(this),this.collection=new vi(this),this.coopEvent=new Pi(this),this.dealOffer=new Ii(this),this.referral=new ki(this),this.social=new Mi(this),this.timedBoost=new wi(this),this.userCustomData=new Ui(this),this.titleCustomData=new Bi(this),this.title=new Li(this),this.gameLoop=new qi(this),this.cloudCode=new Ei(this),this.blockchain=new _i(this),this.marketplace=new Hi(this),this.multiplayer=new $i(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 Xr=class{ctx;constructor(e){this.ctx=new Yr(e);}get titleID(){return this.ctx.settings.titleID}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 purchase(){return this.ctx.purchase}get checkout(){return this.ctx.checkout}get lootbox(){return this.ctx.lootbox}get reward(){return this.ctx.reward}get quest(){return this.ctx.quest}get tutorial(){return this.ctx.tutorial}get localization(){return this.ctx.localization}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 titleCustomData(){return this.ctx.titleCustomData}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 Eg(a){return new Xr(a)}var uu="idos_sso",cu="state",mn="idos:sso:state",Gg="https://idosgames.com/sso/";function Ng(){if(typeof window>"u")return null;let a=window.location.hash?.startsWith("#")?window.location.hash.slice(1):window.location.hash;if(!a)return null;let e=new URLSearchParams(a),t=e.get(uu);if(!t)return null;let i=e.get(cu)??"",r=Wg();return Kg(e),Qg(),r&&i!==r?null:{code:t,state:i}}function jg(a){if(typeof window>"u")return;let e=a.returnTo??Fg(),t=Vg();_g(t);let i=new URL(a.ssoUrl??Gg);i.searchParams.set("title",a.titleID),i.searchParams.set("return_to",e),i.searchParams.set("state",t),window.location.assign(i.toString());}function Fg(){let{origin:a,pathname:e,search:t}=window.location;return `${a}${e}${t}`}function Vg(){let a=new Uint8Array(16);if(typeof crypto<"u"&&crypto.getRandomValues)crypto.getRandomValues(a);else for(let e=0;e<a.length;e++)a[e]=Math.floor(Math.random()*256);return Array.from(a,e=>e.toString(16).padStart(2,"0")).join("")}function _g(a){try{window.sessionStorage.setItem(mn,a);}catch{}}function Wg(){try{return window.sessionStorage.getItem(mn)}catch{return null}}function Qg(){try{window.sessionStorage.removeItem(mn);}catch{}}function Kg(a){a.delete(uu),a.delete(cu);let e=a.toString(),{pathname:t,search:i}=window.location;window.history.replaceState(null,"",`${t}${i}${e?`#${e}`:""}`);}var Hg={Banner:"Banner",Interstitial:"Interstitial",RewardedVideo:"RewardedVideo",RewardedInterstitial:"RewardedInterstitial",AppOpen:"AppOpen",Native:"Native"},fn=z.enum(["Banner","Interstitial","RewardedVideo","RewardedInterstitial","AppOpen","Native"]),$g={Top:"Top",Bottom:"Bottom",Left:"Left",Right:"Right"},Zg=z.enum(["Top","Bottom","Left","Right"]),Jg=z.object({PlacementID:z.string().nullish(),Type:fn.nullish(),Enabled:z.boolean().nullish(),CooldownSeconds:z.number().nullish(),DailyImpressionCap:z.number().nullish(),CreditsRewarded:z.number().nullish(),AllowedProviderIDs:z.array(z.string()).nullish()}).passthrough(),Yg=z.object({DefaultCreditsPerView:z.number().nullish(),MaxCreditsBalance:z.number().nullish(),DailyCreditEarnCap:z.number().nullish(),DailyViewCap:z.number().nullish(),MinSecondsBetweenViews:z.number().nullish()}).passthrough(),Xg=z.object({CooldownSeconds:z.number().nullish(),MinSessionTimeBeforeFirstSeconds:z.number().nullish(),DailyImpressionCap:z.number().nullish(),MaxImpressionsPerSession:z.number().nullish()}).passthrough(),eR=z.object({Enabled:z.boolean().nullish(),Position:Zg.nullish(),RefreshIntervalSeconds:z.number().nullish()}).passthrough(),tR=z.object({Enabled:z.boolean().nullish(),CooldownSeconds:z.number().nullish(),DailyImpressionCap:z.number().nullish()}).passthrough(),iR=z.object({MaxImpressionsPerHour:z.number().nullish(),MaxImpressionsPerDay:z.number().nullish(),MaxImpressionsPerSession:z.number().nullish()}).passthrough(),rR=z.object({MinPremiumTier:z.number().nullish(),RequiredPremiumID:z.string().nullish(),DisableInterstitials:z.boolean().nullish(),DisableBanners:z.boolean().nullish(),DisableAppOpen:z.boolean().nullish()}).passthrough(),sR=z.object({RequirePersonalizedAdsConsent:z.boolean().nullish(),RequireTrackingConsent:z.boolean().nullish(),CurrentPolicyVersion:z.string().nullish(),RegulatedRegions:z.array(z.string()).nullish()}).passthrough(),nR=z.object({RequireServerSideVerification:z.boolean().nullish(),PendingRequestTtlSeconds:z.number().nullish(),MaxPendingRequestsPerUser:z.number().nullish(),ProviderPublicKeys:z.record(z.string(),z.string()).nullish()}).passthrough(),oR=z.object({AndroidUnitID:z.string().nullish(),IosUnitID:z.string().nullish(),WebUnitID:z.string().nullish(),Type:fn.nullish()}).passthrough(),aR=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(),oR).nullish()}).passthrough();z.object({Enabled:z.boolean().nullish(),Placements:z.record(z.string(),Jg).nullish(),Providers:z.record(z.string(),aR).nullish(),RewardedVideo:Yg.nullish(),Interstitial:Xg.nullish(),Banner:eR.nullish(),AppOpen:tR.nullish(),FrequencyCapping:iR.nullish(),PremiumAdReductions:z.array(rR).nullish(),Consent:sR.nullish(),Verification:nR.nullish()}).passthrough();var lR=z.object({RewardedVideoCredit:z.number().nullish(),TotalEarned:z.number().nullish(),TotalSpent:z.number().nullish()}).passthrough(),uR=z.object({PlacementID:z.string().nullish(),LastShownAt:u.nullish(),LastCompletedAt:u.nullish(),TotalImpressions:z.number().nullish(),TotalCompletions:z.number().nullish(),ConsecutiveFailures:z.number().nullish()}).passthrough(),cR=z.object({Date:u.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(),pR=z.object({SessionID:z.string().nullish(),SessionStartAt:u.nullish(),Impressions:z.number().nullish(),InterstitialImpressions:z.number().nullish(),RewardedCompletions:z.number().nullish()}).passthrough(),dR=z.object({PersonalizedAdsConsent:z.boolean().nullish(),TrackingConsent:z.boolean().nullish(),PolicyVersion:z.string().nullish(),Region:z.string().nullish(),ConsentGivenAt:u.nullish(),ConsentRevokedAt:u.nullish()}).passthrough(),hR=z.object({RequestID:z.string().nullish(),PlacementID:z.string().nullish(),ProviderID:z.string().nullish(),Type:fn.nullish(),IssuedAt:u.nullish(),ExpiresAt:u.nullish(),CreditsToAward:z.number().nullish()}).passthrough(),mR=z.object({InvalidSsvCount:z.number().nullish(),OrphanCompletions:z.number().nullish(),FastCompletions:z.number().nullish(),LastFlaggedAt:u.nullish()}).passthrough();z.object({Credits:lR.nullish(),Placements:z.record(z.string(),uR).nullish(),Daily:cR.nullish(),Session:pR.nullish(),LastImpressionAt:u.nullish(),LastInterstitialAt:u.nullish(),LastRewardedAt:u.nullish(),LastAppOpenAt:u.nullish(),TotalImpressions:z.number().nullish(),TotalRewardedCompletions:z.number().nullish(),AdsDisabledUntil:u.nullish(),Consent:dR.nullish(),PendingRequests:z.record(z.string(),hR).nullish(),FraudFlags:mR.nullish(),UpdatedAt:u.nullish()}).passthrough();var fR={Unread:"Unread",Read:"Read",Deleted:"Deleted",Expired:"Expired"},gR=z.enum(["Unread","Read","Deleted","Expired"]),RR={Admin:"Admin",Leaderboard:"Leaderboard",CoopEvent:"CoopEvent",Season:"Season",Collection:"Collection",MilestoneEvent:"MilestoneEvent",PlayerGift:"PlayerGift",Social:"Social",Compensation:"Compensation",Referral:"Referral",Quest:"Quest"},yR=z.enum(["Admin","Leaderboard","CoopEvent","Season","Collection","MilestoneEvent","PlayerGift","Social","Compensation","Referral","Quest"]),CR={Active:"Active",Paused:"Paused",Cancelled:"Cancelled",Completed:"Completed"},SR=z.enum(["Active","Paused","Cancelled","Completed"]),xR=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(),DR=z.object({SegmentID:z.string().nullish(),DisplayName:z.string().nullish(),Gate:_.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(),xR).nullish(),Segments:z.array(DR).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:yR.nullish(),RelatedEntityID:z.string().nullish(),SenderUserID:z.string().nullish(),SenderPublicData:be.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:u.nullish(),Status:gR.nullish(),CreatedAtUtc:u.nullish(),ExpiresAtUtc:u.nullish(),ReadAtUtc:u.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:u.nullish(),ExpiresAtUtc:u.nullish(),CreatedAtUtc:u.nullish(),CreatedByAdminID:z.string().nullish(),AdminComment:z.string().nullish(),Status:SR.nullish(),DeliveredCount:z.number().nullish(),ClaimedCount:z.number().nullish()}).passthrough();z.object({UnreadCount:z.number().nullish(),UnclaimedRewardCount:z.number().nullish(),LastFetchCursor:u.nullish(),ReceivedBroadcastIDs:z.array(z.string()).nullish(),ClaimedBroadcastIDs:z.array(z.string()).nullish(),DailyP2PGiftsSent:z.number().nullish(),DailyGiftsResetDate:u.nullish(),LastOpenedAtUtc:u.nullish(),TotalMessagesReceived:z.number().nullish(),TotalRewardsClaimed:z.number().nullish()}).passthrough();
2
+ export{Hg as AdType,Gf as AttackOutcome,me as AuthType,Oe as AuthenticationAction,$g as BannerPosition,we as BlockchainAction,qp as BlockchainNetworkType,zo as BlockchainOperationCategory,Qp as BlockchainTransactionStatus,jp as BlockchainTransactionType,gd as BodyPart,kf as BoostWindowKind,CR as BroadcastStatus,Me as CharacterAction,He as ClientPlatform,hn as CloudCodeAction,Ug as CloudCodeErrorCode,Og as CloudCodeLogLevel,wg as CloudCodeRevisionSelection,Te as CollectionAction,Bd as CommissionSink,dg as CommunityChestMemberStatus,pg as CommunityChestStatus,hp as ConversionRateMode,We as CoopEventAction,Bm as CoopGroupStatus,Lm as CoopMemberStatus,Pr as CraftAction,xm as CraftType,Gi as CurrencyAction,dp as CurrencyStatus,je as CurrencyType,tt as CustomDataBucket,ip as CustomDataValueType,Yc as CustomDataWriter,Rn as DEFAULT_BASE_URL,Km as DealNodeRuntimeStatus,Ye as DealOfferAction,Qm as DealOfferActivationStatus,zg as EnvelopeType,Cu as EventTokenType,oh as FodderSelectionMode,sh as FodderValuationMode,Rf as FriendActionStatus,Se as GameLoopAction,Xr as IDosGamesClient,Dh as IapProductType,vh as IapPurchaseStatus,yu as IapStoreValues,er as ItemAction,Fp as KycStatus,_p as KycTier,xe as LeaderboardAction,Ji as LocalizationAction,Xd as LocalizationMissingKeyMode,ar as LootboxAction,RR as MailboxMessageSource,fR as MailboxMessageStatus,Ki as MarketGoodsType,Ud as MarketOfferStatus,Ad as MarketOfferType,ae as MarketplaceAction,Je as MatchAction,Rd as MatchStatus,Ne as MultiplayerAction,xg as MultiplayerChatMode,Sg as MultiplayerTopology,ft as PremiumAction,vt as PurchaseAction,Ve as QuestAction,Fu as QuestObjectiveSource,_u as QuestPrerequisiteMode,Gu as QuestStatus,qf as RaidMode,gt as ReferralAction,jt as ResourceEntryType,st as RewardAction,Dg as RoomVisibility,Su as ScheduleMode,pt as SeasonAction,Xe as SocialAction,Ef as SpecialChoiceMode,Tt as StoreAction,ym as StoreType,Rt as TimedBoostAction,xf as TimedBoostStackingPolicy,Ge as TimedEventAction,yf as TimelineEventType,yt as TitleAction,Gt as TitleCustomDataAction,Of as TitleDataBucket,wf as TitleDataScope,zm as TradeOfferStatus,Kp as TransactionDirection,Be as TutorialAction,nc as TutorialBoardAction,ic as TutorialFlowStatus,vu as TutorialGateMode,ec as TutorialRestartPolicy,sc as TutorialScriptModule,Yu as TutorialStepCompletionMode,Ot as TypedEmitter,Ee as UserAction,_e as UserCustomDataAction,Gp as WalletLinkType,jg as beginSsoRedirect,Eg as createIDosGamesClient,Du as isFail,xu as isOk,Fi as normalizeBlockchainCategory,Ng as readSsoCodeFromUrl,bp as zPaymentProof,uo as zPriceOption,Y as zPriceOptions};