@idosgames/core 0.8.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +112 -0
- package/dist/chunk-MEUEUF7D.js +1 -0
- package/dist/index.cjs +2 -2
- package/dist/index.d.cts +455 -23
- package/dist/index.d.ts +455 -23
- package/dist/index.js +2 -2
- package/dist/platform/index.cjs +1 -1
- package/dist/platform/index.d.cts +9 -0
- package/dist/platform/index.d.ts +9 -0
- package/dist/platform/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-QJVWT32O.js +0 -1
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 er from'decimal.js';var Ut=class{listeners=new Map;on(e,t){let r=this.listeners.get(e);return r||(r=new Set,this.listeners.set(e,r)),r.add(t),()=>{this.off(e,t);}}once(e,t){let r=this.on(e,i=>{r(),t(i);});return r}off(e,t){let r=this.listeners.get(e);r&&(r.delete(t),r.size===0&&this.listeners.delete(e));}emit(e,t){let r=this.listeners.get(e);if(r)for(let i of [...r])i(t);}removeAllListeners(){this.listeners.clear();}};function Su(){let o=new Map;return {get:e=>o.get(e)??null,set:(e,t)=>{o.set(e,t);},remove:e=>{o.delete(e);}}}function yn(){return xu()??Su()}function xu(){try{let o=globalThis.localStorage;if(!o)return null;let e="__idos_probe__";return o.setItem(e,"1"),o.removeItem(e),{get:t=>{try{return o.getItem(t)}catch{return null}},set:(t,r)=>{try{o.setItem(t,r);}catch{try{o.removeItem(t);}catch{}}},remove:t=>{try{o.removeItem(t);}catch{}}}}catch{return null}}var Cn="https://api.idosgames.com";function Sn(o){return {titleID:o.titleID,titleTemplateID:o.titleTemplateID??"default",buildKey:o.buildKey??"",baseUrl:(o.baseUrl??Cn).replace(/\/+$/,""),devBuild:o.devBuild??false,debugLogging:o.debugLogging??false,configStorage:o.configStorage??yn(),locale:o.locale??Du()}}function Du(){try{return globalThis.navigator?.language??""}catch{return ""}}var Ve={Virtual:"Virtual",Crypto:"Crypto"},Dt=z.enum(["Virtual","Crypto"]),Vt={Item:"Item",VirtualCurrency:"VirtualCurrency",CryptoCurrency:"CryptoCurrency",RewardedVideoCredit:"RewardedVideoCredit",Purchase:"Purchase"},_t=z.enum(["Item","VirtualCurrency","CryptoCurrency","RewardedVideoCredit","Purchase"]),Ze={Unknown:"Unknown",Web:"Web",Android:"Android",Ios:"Ios"},Wt=z.enum(["Unknown","Web","Android","Ios"]),bu={GooglePlay:"GooglePlay",AppleAppStore:"AppleAppStore"},Qt=z.enum(["GooglePlay","AppleAppStore"]),zu={TimedEvent:"TimedEvent",Quest:"Quest",Leaderboard:"Leaderboard",CoopEvent:"CoopEvent",Season:"Season"},Kt=z.enum(["TimedEvent","Quest","Leaderboard","CoopEvent","Season"]),Tu={Cyclic:"Cyclic",Scheduled:"Scheduled",Chained:"Chained"},Bt=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 Dn(){let o=globalThis,e=o.Capacitor?.getPlatform?.();if(e)return xn(e);let t=o.cordova?.platformId;return t?xn(t):o.navigator?.userAgent??""?Ze.Web:Ze.Unknown}function xn(o){let e=o.toLowerCase();return e==="android"?Ze.Android:e==="ios"?Ze.Ios:e==="web"?Ze.Web:Ze.Unknown}function bn(o){return {ok:true,data:o}}function n(o,e){return {ok:false,reason:o,error:e}}function vu(o){return o.ok}function Pu(o){return !o.ok}var M=z.union([z.number(),z.string()]).transform((o,e)=>{let t=typeof o=="string"?Number(o):o;return Number.isFinite(t)?Math.trunc(t):(e.addIssue({code:z.ZodIssueCode.custom,message:`Invalid integer amount: ${String(o)}`}),z.NEVER)}),q=z.union([z.number(),z.string()]).transform((o,e)=>{let t=typeof o=="number"?String(o):o.trim();return t===""||Number.isNaN(Number(t))?(e.addIssue({code:z.ZodIssueCode.custom,message:`Invalid decimal: ${String(o)}`}),z.NEVER):t}),u=z.string();var is=z.object({Type:_t.nullish(),CurrencyID:z.string().nullish(),Amount:M.nullish(),CatalogID:z.string().nullish(),ItemID:z.string().nullish(),ProductID:z.string().nullish()}),Iu=z.object({Type:Kt.nullish(),EntityID:z.string()}),ku=z.object({Address:Iu.nullish(),Amount:M.nullish(),Source:z.string().nullish()}),fe=z.object({Entries:z.array(is).nullish(),EventTokens:z.array(ku).nullish()}),zn=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(zn).nullish()}),Lt=z.object({Standard:fe.nullish(),PremiumDiscounts:z.array(z.unknown()).nullish(),PremiumTiers:z.array(zn).nullish()}),b=z.object({Grant:L.nullish(),Consume:Lt.nullish()}),mt=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 Mu=z.object({ExperimentID:z.string().nullish(),Variants:z.array(z.string()).nullish()}).passthrough(),wu={Completed:"Completed",Started:"Started",StepReached:"StepReached"},Au=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(),W=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:Mu.nullish(),Tutorial:Au.nullish(),Platforms:z.array(Wt).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 Ou=z.object({OffsetSecondsFromParentStart:z.number().nullish(),DurationSeconds:z.number().nullish(),AllowEarningAfterEnd:z.boolean().nullish(),ClaimGraceHours:z.number().nullish()}).passthrough(),Uu=z.object({StartUtc:z.string().nullish(),EndUtc:z.string().nullish(),AllowEarningAfterEnd:z.boolean().nullish(),ClaimGraceHours:z.number().nullish()}).passthrough(),Bu=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 Lu=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 Le=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(),ce=z.object({Mode:z.string().nullish(),IsActive:z.boolean().nullish(),Scheduled:Uu.nullish(),Chain:Bu.nullish(),Cyclic:Lu.nullish(),ActivationTriggers:z.array(Le).nullish(),Relative:Ou.nullish()}).passthrough();var qu={Flat:"Flat",PerStep:"PerStep",PerStepRate:"PerStepRate",Geometric:"Geometric",Table:"Table",TableAbsolute:"TableAbsolute"},Eu=z.enum(["Flat","PerStep","PerStepRate","Geometric","Table","TableAbsolute"]),Gu={Step:"Step",Linear:"Linear",Geometric:"Geometric"},Nu=z.enum(["Step","Linear","Geometric"]),ju=z.object({AtStep:z.number().nullish(),Value:z.number().nullish()}).passthrough(),xe=z.object({Base:z.number().nullish(),Shape:Eu.nullish(),PerStep:z.number().nullish(),PerStepRate:z.number().nullish(),GrowthRate:z.number().nullish(),Points:z.array(ju).nullish(),Interpolation:Nu.nullish(),TailGrowthRate:z.number().nullish(),MinResult:z.number().nullish(),MaxResult:z.number().nullish()}).passthrough();var Fu=z.object({SeasonChainID:z.string().nullish(),MinSeasonTier:z.number().nullish(),Rewards:L.nullish()}).passthrough(),Vu=z.object({SeasonChainID:z.string().nullish(),MinSeasonTier:z.number().nullish(),Multiplier:z.number().nullish()}).passthrough(),ss=z.object({Bundles:z.array(Fu).nullish(),Multipliers:z.array(Vu).nullish()}).passthrough();var _u=z.enum(["BoardStageLevel","BoardRank","BoardCyclesCompleted","CharacterLevel","SeasonTier","EventTokenTotalEarned","VirtualCurrencyBalance","PlayerLevel"]),Ht=z.object({Source:_u.nullish(),SourceKey:z.string().nullish(),Curve:xe.nullish(),Anchor:z.number().nullish(),IncludeRewards:fe.nullish(),ExcludeRewards:fe.nullish()}).passthrough(),be=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:ss.nullish(),SortOrder:z.number().nullish(),IsFeatured:z.boolean().nullish()}).passthrough(),ut=z.object({Milestones:z.record(z.string(),be).nullish()}).passthrough();var Y=z.object({PresetID:z.string().nullish(),Remove:z.array(z.string()).nullish()}).passthrough();var Wu=z.object({TargetCurrencyID:z.string().nullish(),Rate:z.number().nullish(),MaxConvertAmount:z.number().nullish()}).passthrough(),ft=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:Wu.nullish()}).passthrough();var ie=o=>z.object({Id:z.string(),Success:z.boolean(),Error:z.string().nullish(),Data:o.nullish()}),Je=o=>z.object({ServerTimeUtc:u,Items:z.array(ie(o)),Resources:b.nullish()});var Qu={Active:"Active",Completed:"Completed",Claimed:"Claimed",Expired:"Expired"},Tn=z.enum(["Active","Completed","Claimed","Expired"]),Ku=z.object({}).passthrough().transform(o=>o),Hu=z.object({CycleID:z.string(),InstanceKey:z.string().nullish(),PhaseID:z.string().nullish(),CycleIndex:z.number().nullish(),CycleStartUtc:u.nullish(),CycleEndUtc:u.nullish(),PointsTotalEarned:M.nullish(),PointsCurrent:M.nullish(),ClaimedPointMilestoneIDs:z.array(z.string()).nullish()}),ns=z.object({QuestID:z.string(),CycleID:z.string().nullish(),ObjectiveID:z.string().nullish(),NewValue:M.nullish(),ObjectiveCompleted:z.boolean().nullish(),Status:Tn}),vn=z.object({State:Ku.nullish(),PointsTracks:z.record(z.string(),Hu).nullish()}),os=z.object({ServerTimeUtc:u,QuestID:z.string(),CycleID:z.string().nullish(),NewStatus:Tn.nullish(),Resources:b.nullish()}),as=z.object({ServerTimeUtc:u,CycleID:z.string(),MilestoneID:z.string(),PointsTotalEarned:M.nullish(),Resources:b.nullish()}),Pn=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()}),In=z.object({MetricID:z.string(),Updates:z.array(ns).nullish()}),kn=z.array(ie(os)),Mn=z.array(ie(as)),$u={ClientApi:"ClientApi",ServerApi:"ServerApi",SystemEvent:"SystemEvent"},Zu=z.enum(["ClientApi","ServerApi","SystemEvent"]),Ju={BlockProgressAndClaim:"BlockProgressAndClaim",BlockClaimOnly:"BlockClaimOnly"},Yu=z.enum(["BlockProgressAndClaim","BlockClaimOnly"]),wn=z.object({ObjectiveID:z.string().nullish(),Source:Zu.nullish(),MaxProgressPerCall:z.number().nullish(),MetricID:z.string().nullish(),Triggers:z.array(Le).nullish(),TargetValue:z.number().nullish(),AggregationMethod:z.string().nullish()}).passthrough(),ls=z.object({Milestones:Y.nullish(),Linking:Y.nullish(),Availability:Y.nullish(),Reward:Y.nullish(),Objectives:Y.nullish()}).passthrough(),Xu=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(),An=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:Yu.nullish()}).passthrough(),On=z.object({Schedule:ce.nullish(),AccrueProgressWhenLocked:z.boolean().nullish(),Gate:W.nullish(),Limits:ge.nullish()}).passthrough(),Un=z.object({Grant:L.nullish(),PointsReward:z.number().nullish()}).passthrough(),ec=z.object({QuestID:z.string().nullish(),Identity:Xu.nullish(),Linking:An.nullish(),Availability:On.nullish(),Objectives:z.record(z.string(),wn).nullish(),Reward:Un.nullish(),Presets:ls.nullish()}).passthrough(),tc=z.object({CompletionID:z.string().nullish(),GroupID:z.string().nullish(),RequiredCompletedQuests:z.number().nullish(),Gate:W.nullish(),Reward:L.nullish(),PointsReward:z.number().nullish()}).passthrough(),rc=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:W.nullish(),Milestones:z.record(z.string(),be).nullish(),Presets:ls.nullish(),PointsToken:ft.nullish()}).passthrough(),ic=z.object({Milestones:z.record(z.string(),ut).nullish(),Linking:z.record(z.string(),An).nullish(),Availability:z.record(z.string(),On).nullish(),Reward:z.record(z.string(),Un).nullish(),Objectives:z.record(z.string(),z.record(z.string(),wn)).nullish()}).passthrough(),sc=z.object({CycleID:z.string().nullish(),DisplayName:z.string().nullish(),Schedule:ce.nullish(),Milestones:z.record(z.string(),be).nullish(),Gate:W.nullish(),PointsToken:ft.nullish(),GroupCompletions:z.record(z.string(),tc).nullish(),Phases:z.record(z.string(),rc).nullish(),Presets:ls.nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),Zt=z.object({Cycles:z.record(z.string(),sc).nullish(),Quests:z.record(z.string(),ec).nullish(),Presets:ic.nullish()}).passthrough(),We={GetQuestDefinitions:"GetQuestDefinitions",GetUserQuestState:"GetUserQuestState",RefreshQuestCycles:"RefreshQuestCycles",ClaimQuestReward:"ClaimQuestReward",ClaimMilestoneReward:"ClaimMilestoneReward",AddQuestProgress:"AddQuestProgress",ClaimQuestRewardsBatch:"ClaimQuestRewardsBatch",ClaimMilestoneRewardsBatch:"ClaimMilestoneRewardsBatch",ClaimGroupCompletionReward:"ClaimGroupCompletionReward"};var nc={ClientAck:"ClientAck",SystemEvent:"SystemEvent",Auto:"Auto",Composite:"Composite"},oc=z.enum(["ClientAck","SystemEvent","Auto","Composite"]),ac={Never:"Never",OnRequest:"OnRequest",Always:"Always"},lc=z.enum(["Never","OnRequest","Always"]),uc={NotStarted:"NotStarted",InProgress:"InProgress",Completed:"Completed",Skipped:"Skipped",Expired:"Expired"},cc=z.enum(["NotStarted","InProgress","Completed","Skipped","Expired"]),pc={GameLoop:"GameLoop"},dc={Raid:"Raid",Attack:"Attack"},hc=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(),mc=z.object({Mode:oc.nullish(),Triggers:z.array(Le).nullish(),TargetValue:z.number().nullish(),RequireAllTriggers:z.boolean().nullish()}).passthrough(),fc=z.object({Grant:L.nullish(),UnlockFeatures:z.array(z.string()).nullish()}).passthrough(),gc=z.object({TileType:z.string().nullish(),TileIndex:z.number().nullish(),ChanceOutcomeID:z.string().nullish(),RandomActionType:z.enum(["Raid","Attack"]).nullish()}).passthrough(),Rc=z.object({Module:z.enum(["GameLoop"]).nullish(),Board:gc.nullish(),MaxUses:z.number().nullish()}).passthrough(),yc=z.object({Skippable:z.boolean().nullish(),TimeoutSeconds:z.number().nullish()}).passthrough(),us=z.object({StepID:z.string().nullish(),Order:z.number().nullish(),Identity:hc.nullish(),Completion:mc.nullish(),Effects:fc.nullish(),Script:Rc.nullish(),Policy:yc.nullish()}).passthrough(),Cc=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(),Bn=z.object({Schedule:ce.nullish(),Gate:W.nullish(),RequiredFlowIDs:z.array(z.string()).nullish(),AutoStart:z.boolean().nullish(),StartTrigger:Le.nullish()}).passthrough(),Ln=z.object({Skippable:z.boolean().nullish(),SkippableFromOrder:z.number().nullish(),RestartPolicy:lc.nullish(),ExpireAfterSeconds:z.number().nullish(),IsBlocking:z.boolean().nullish(),UnlockFeatures:z.array(z.string()).nullish()}).passthrough(),qn=z.object({Grant:L.nullish(),AutoClaim:z.boolean().nullish()}).passthrough(),Sc=z.object({Availability:Y.nullish(),Policy:Y.nullish(),Reward:Y.nullish(),Steps:Y.nullish()}).passthrough(),xc=z.object({FlowID:z.string().nullish(),Identity:Cc.nullish(),Availability:Bn.nullish(),Policy:Ln.nullish(),Steps:z.record(z.string(),us).nullish(),Reward:qn.nullish(),Presets:Sc.nullish()}).passthrough(),Dc=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(),bc=z.object({IsEnabled:z.boolean().nullish(),MaxActiveFlows:z.number().nullish(),Blocking:Dc.nullish()}).passthrough(),zc=z.object({Availability:z.record(z.string(),Bn).nullish(),Policy:z.record(z.string(),Ln).nullish(),Reward:z.record(z.string(),qn).nullish(),Steps:z.record(z.string(),z.record(z.string(),us)).nullish()}).passthrough(),En=z.object({Flows:z.record(z.string(),xc).nullish(),Settings:bc.nullish(),Presets:zc.nullish()}).passthrough(),Tc=z.object({}).passthrough().transform(o=>o),Gn=z.object({FlowID:z.string(),Status:cc,CurrentStepID:z.string().nullish(),CurrentStep:us.nullish(),TotalSteps:z.number(),CompletedSteps:z.number(),CanSkip:z.boolean(),RewardClaimed:z.boolean(),RewardPending:z.boolean(),VariantID:z.string().nullish()}).passthrough(),Nn=z.object({State:Tc.nullish(),Flows:z.array(Gn).nullish(),UnlockedFeatures:z.array(z.string()).nullish()}).passthrough(),ct=z.object({Flow:Gn.nullish()}).passthrough(),jn=z.object({FlowID:z.string().nullish(),Granted:b.nullish()}).passthrough(),Fn=z.array(ie(ct)),Vn=z.object({FlowID:z.string(),StepID:z.string(),Progress:z.number(),Target:z.number(),Completed:z.boolean()}).passthrough(),qe={GetTutorialDefinitions:"GetTutorialDefinitions",GetUserTutorialState:"GetUserTutorialState",StartFlow:"StartFlow",ReportStepShown:"ReportStepShown",CompleteStep:"CompleteStep",CompleteStepsBatch:"CompleteStepsBatch",SkipStep:"SkipStep",SkipFlow:"SkipFlow",ClaimFlowReward:"ClaimFlowReward",ResetFlow:"ResetFlow"};var Jt=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(),r=this.last.get(e);return r!==void 0&&t-r<this.windowMs?false:(this.last.set(e,t),true)}reset(){this.last.clear();}};var Yt=class{set=new Set;add(e){return this.set.has(e)?false:(this.set.add(e),true)}remove(e){this.set.delete(e);}};function _n(o){return o===429||o>=500&&o<=599}function cs(o,e=Math.random){let t=Math.min(500*Math.pow(2,o-1),4e3),r=t*.2*(e()*2-1);return Math.max(50,t+r)}function ps(o){return new Promise(e=>setTimeout(e,o))}var vc=12e3,Pc=z.object({Success:z.boolean(),Error:z.string().nullish(),Data:z.unknown().optional(),QuestProgress:z.array(ns).nullish(),TutorialProgress:z.array(Vn).nullish(),StateVersions:z.record(z.string(),z.number()).nullish(),StateEpoch:z.string().nullish()}).passthrough(),Xt=class{baseUrl;emitter;fetchImpl;debugLogging;throttler;clientPlatform;inflight=new Yt;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 Jt(e.throttleMs),this.clientPlatform=e.clientPlatform??Ze.Unknown;}setSessionRefreshHandler(e){this.sessionRefreshHandler=e;}async post(e,t,r,i={}){let s=i.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 a=`${this.baseUrl}/${e}`,p=JSON.stringify(t),D=i.ticket??null,U=i.silent??!1,E=i.timeoutMs??vc,de=i.autoRetry??!0,Re=!1,Ie=0;for(;;){let He;try{He=await this.doFetch(a,p,D,E);}catch{if(de&&Ie<3){Ie++,await ps(cs(Ie));continue}return this.connectionFailure("Internet Connection Error",U)}let $e=He.status;if($e>=200&&$e<300)return await this.parseSuccess(He,r,U,e);if($e===401){if(!Re&&this.sessionRefreshHandler){Re=!0;let rt=null;try{rt=await this.sessionRefreshHandler();}catch{rt=null;}if(rt){D=rt;continue}}return this.emitter.emit("auth:unauthorized",void 0),n("unauthorized","Unauthorized")}if(_n($e)){if(de&&Ie<3){Ie++,await ps(cs(Ie));continue}return this.connectionFailure(`Server temporarily unavailable (HTTP ${$e})`,U)}return await this.handleWebError(He,$e,U)}}finally{this.inflight.remove(s),this.lowerBusy();}}async doFetch(e,t,r,i){let s=new AbortController,a=setTimeout(()=>{s.abort();},i);try{let p={"Content-Type":"application/json","X-IG-Platform":this.clientPlatform};return r&&(p.Authorization=`Bearer ${r}`),await this.fetchImpl(e,{method:"POST",body:t,headers:p,signal:s.signal})}finally{clearTimeout(a);}}async parseSuccess(e,t,r,i){let s;try{s=await e.text();}catch{return this.globalError("Failed to read response body",r)}let a;try{a=JSON.parse(s);}catch{return this.globalError("JSON Parse Error",r)}let p=Pc.safeParse(a);if(!p.success)return this.globalError("Malformed response envelope",r);if(!p.data.Success){let Re=p.data.Error??"Server returned Success=false";return r||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 (${i}): ${de.error.message}`;return this.debugLogging&&console.warn("[HttpTransport]",Re),r||this.emitter.emit("error:global",Re),n("validation",Re)}return bn(de.data)}async handleWebError(e,t,r){let i=`HTTP ${t}`;try{let s=await e.text();if(s)try{let p=JSON.parse(s).Error;i=typeof p=="string"&&p.length>0?`HTTP ${t}: ${p}`:`HTTP ${t}: ${s}`;}catch{i=`HTTP ${t}: ${s}`;}}catch{}return r||this.emitter.emit("error:global",i),n("server",i)}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 zt(o){return (typeof o=="string"?o:o.toISOString()).slice(0,10)}function qt(o){return `${zt(o)}T00:00:00.000Z`}function Qn(o){let e=new Date(o);return new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()+1)).toISOString()}function Kn(o,e){return new Date(o.getTime()+e*6e4).toISOString()}function Hn(o,e,t,r){let i={vcChanged:false,ccChanged:false,itemsChanged:false,tokensChanged:false};if(!e)return i;o.InventoryV2??={};let s=o.InventoryV2,a=r.toISOString(),p=new Map,D=new Map,U=new Map,E=new Map,de=new Map,Re=new Map,Ie=new Map,He=new Map,$e=e.Grant?.PremiumTiers??[],rt=$e.length;for(let ne=0;;ne++){let he,$;if(ne===0)he=e.Grant?.Standard?.Entries,$=false;else if(ne-1<rt)he=$e[ne-1]?.Resources?.Entries,$=false;else if(ne===1+rt)he=e.Consume?.Standard?.Entries,$=true;else break;if(he)for(let _ of he){if(_.Type==null)continue;let K=Math.max(0,_.Amount??0);if(!(K<=0))switch(_.Type){case "VirtualCurrency":{if(!_.CurrencyID)continue;let H=$?D:p;H.set(_.CurrencyID,(H.get(_.CurrencyID)??0)+K);break}case "CryptoCurrency":{if(!_.CurrencyID)continue;let H=$?E:U;H.set(_.CurrencyID,(H.get(_.CurrencyID)??new er(0)).plus(K));break}case "Item":{if(!_.ItemID)continue;let H=kc(t,_.CatalogID,_.ItemID),X=(H?H.IsStackable??true:true)?$?Re:de:$?He:Ie;X.set(_.ItemID,(X.get(_.ItemID)??0)+K);break}case "Purchase":case "RewardedVideoCredit":continue}}}if(i.vcChanged=p.size>0||D.size>0,i.vcChanged){s.VirtualCurrencies??={};for(let ne of new Set([...p.keys(),...D.keys()])){let he=p.get(ne)??0,$=D.get(ne)??0,_=he-$,K=s.VirtualCurrencies[ne];K?(K.Amount+=_,K.UpdatedAt=a,K.Daily&&zt(K.Daily.PeriodStartUtc)===zt(r)?(K.Daily.Earned+=he,K.Daily.Spent+=$):K.Daily={PeriodStartUtc:qt(r),Earned:he,Spent:$}):s.VirtualCurrencies[ne]={Amount:_,CreatedAt:a,UpdatedAt:a,Daily:{PeriodStartUtc:qt(r),Earned:he,Spent:$}};}}if(i.ccChanged=U.size>0||E.size>0,i.ccChanged){s.CryptoCurrencies??={};for(let ne of new Set([...U.keys(),...E.keys()])){let he=U.get(ne)??new er(0),$=E.get(ne)??new er(0),_=he.minus($),K=s.CryptoCurrencies[ne];K?(K.Amount=new er(K.Amount).plus(_).toString(),K.UpdatedAt=a):s.CryptoCurrencies[ne]={Amount:_.toString(),Frozen:"0",CreatedAt:a,UpdatedAt:a};}}if(i.itemsChanged=de.size>0||Re.size>0||Ie.size>0||He.size>0,i.itemsChanged){s.Items??={},s.UnstackableItems??={};let ne=s.UnstackableItems,he=new Set([...de.keys(),...Re.keys(),...Ie.keys(),...He.keys()]);for(let $ of he){let _=(de.get($)??0)-(Re.get($)??0),K=(Ie.get($)??0)-(He.get($)??0),H=_+K,Be=s.Items[$];Be?(_!==0&&(Be.StackableAmount+=_),K!==0&&(Be.UnstackableAmount+=K),H!==0&&(Be.TotalAmount+=H)):s.Items[$]={StackableAmount:Math.max(0,_),UnstackableAmount:Math.max(0,K),TotalAmount:Math.max(0,H)};}for(let[$,_]of He){if(_<=0)continue;let K=Object.values(ne).filter(H=>H.ItemID===$&&H.EquippedSlot==null&&(H.ExpiresAt==null||new Date(H.ExpiresAt)>r)).sort(Ic).slice(0,_).map(H=>H.ItemInstanceID);for(let H of K)delete ne[H];}for(let[$,_]of Ie){let K=Mc(t,$);for(let H=0;H<_;H++){let Be=d();ne[Be]={ItemInstanceID:Be,ItemID:$,CatalogID:K,RemainingUses:1,AcquiredAt:a};}}}o.EventToken??={};let gu=o.EventToken;for(let ne=0;;ne++){let he,$;if(ne===0)he=e.Grant?.Standard?.EventTokens,$=false;else if(ne-1<rt)he=$e[ne-1]?.Resources?.EventTokens,$=false;else if(ne===1+rt)he=e.Consume?.Standard?.EventTokens,$=true;else break;if(!(!he||he.length===0))for(let _ of he){let K=_.Address;if(!K||K.Type==null)continue;let H=_.Amount??0;if(H<=0)continue;let Be=wc(gu,K.Type);if(!Be)continue;let X=Be[K.EntityID];X||(X={},Be[K.EntityID]=X),X.Balance??={Current:0,TotalEarned:0,TotalSpent:0},X.Daily??={Date:qt(r),TotalEarned:0},X.Meta??={};let Ot=_.Source&&_.Source.length>0?_.Source:"CustomAction";$?(X.Balance.Current-=H,X.Balance.TotalSpent+=H):(X.Balance.Current+=H,X.Balance.TotalEarned+=H,zt(X.Daily.Date)!==zt(r)&&(X.Daily={Date:qt(r),TotalEarned:0}),X.Daily.TotalEarned+=H,X.Daily.EarnedBySource??={},X.Daily.EarnedBySource[Ot]=(X.Daily.EarnedBySource[Ot]??0)+H,X.Daily.TriggersBySource??={},X.Daily.TriggersBySource[Ot]=(X.Daily.TriggersBySource[Ot]??0)+1,X.Daily.LastTriggerBySource??={},X.Daily.LastTriggerBySource[Ot]=a,X.Meta.JoinedAtUtc||(X.Meta.JoinedAtUtc=a),X.Meta.LastEarnedAtUtc=a),i.tokensChanged=true;}}return i}function Ic(o,e){return o.AcquiredAt!==e.AcquiredAt?o.AcquiredAt<e.AcquiredAt?-1:1:o.ItemInstanceID===e.ItemInstanceID?0:o.ItemInstanceID<e.ItemInstanceID?-1:1}function kc(o,e,t){let r=o?.Catalogs;if(r){if(e){let i=r[e]?.Items?.[t];if(i)return i}for(let i of Object.values(r)){let s=i.Items?.[t];if(s)return s}}}function Mc(o,e){let t=o?.Catalogs;if(t){for(let[r,i]of Object.entries(t))if(i.Items&&e in i.Items)return r}}function wc(o,e){switch(e){case "TimedEvent":return o.TimedEvent??={};case "Quest":return o.Quest??={};case "Leaderboard":return o.Leaderboard??={};case "CoopEvent":return o.CoopEvent??={};case "Season":return o.Season??={};default:return null}}function ds(o,e){return o===e||o.startsWith(`${e}:`)}var tr=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 r of t)this.currentState[r]=e[r];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,r=new Date){if(!this.currentState)return;let i=Hn(this.currentState,e,t,r);i.vcChanged&&this.emitter.emit("user:virtualCurrencyUpdated",void 0),(i.vcChanged||i.ccChanged||i.itemsChanged)&&this.emitter.emit("user:inventoryUpdated",void 0),i.tokensChanged&&this.emitter.emit("user:eventTokenUpdated",void 0),(i.vcChanged||i.ccChanged||i.itemsChanged||i.tokensChanged)&&this.emitter.emit("user:anyUpdated",void 0);}patchCryptoCurrencyDelta(e,t,r){if(!e||!this.currentState)return;this.currentState.InventoryV2??={},this.currentState.InventoryV2.CryptoCurrencies??={};let i=this.currentState.InventoryV2.CryptoCurrencies,s=t instanceof er?t:new er(t),a=r??new Date().toISOString(),p=i[e];p?(p.Amount=new er(p.Amount).plus(s).toString(),p.UpdatedAt=a):i[e]={Amount:s.toString(),Frozen:"0",CreatedAt:a,UpdatedAt:a},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,r){if(!e||t<1||!this.currentState)return;this.currentState.Store??={},this.currentState.Store.Purchases??={};let i=this.currentState.Store.Purchases,s=i[e];s||(s={OfferID:e,TotalPurchases:0,DailyPurchases:0,DailyResetUtc:"",LastPurchasedAt:""},i[e]=s),s.TotalPurchases+=t,s.LastPurchasedAt=r,r>=s.DailyResetUtc?(s.DailyPurchases=t,s.DailyResetUtc=Qn(r)):s.DailyPurchases+=t,this.emitter.emit("user:storeUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}applyLootboxPityTriggers(e,t,r){if(!e||r<=0)return;this.currentState??={};let i=this.currentState.Lootbox??={};if(i.Pity??={},t){let s=new Date().toISOString();for(let a of t)a.RuleID&&(i.Pity[`${e}:${a.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,r){if(!e)return;this.currentState??={},this.currentState.Quest??={};let i=this.currentState.Quest;if(t){i.Cycles??={};let s=i.Cycles[t];if(!s)return;s.Quests??={};let a=s.Quests[e]??={QuestID:e,Status:r};a.Status=r,r==="Claimed"&&(a.ClaimedAtUtc??=new Date().toISOString());}else {i.PermanentQuests??={};let s=i.PermanentQuests[e]??={QuestID:e,Status:r};s.Status=r,r==="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 r=this.getQuestPointsProgress(e);r&&(r.Milestone??={},this.markMilestoneClaimed(r.Milestone,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 r of Object.values(e)){if(!r.CycleID)continue;let i=r.InstanceKey?`${r.CycleID}:${r.InstanceKey}`:r.CycleID,s=t[i]??={};s.Balance??={Current:0,TotalEarned:0,TotalSpent:0},s.Balance.Current=r.PointsCurrent??0,s.Balance.TotalEarned=r.PointsTotalEarned??0,s.Milestone??={};for(let a of r.ClaimedPointMilestoneIDs??[])this.markMilestoneClaimed(s.Milestone,a);}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 r=this.currentState.Quest.Cycles[e];r&&(r.ClaimedGroupCompletionIDs??=[],r.ClaimedGroupCompletionIDs.includes(t)||r.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 r=t.Flows[e.FlowID]??={FlowID:e.FlowID};r.Status=e.Status,r.CurrentStepID=e.CurrentStepID??null,r.RewardClaimed=e.RewardClaimed,e.VariantID!==void 0&&(r.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 r of e){if(!r.FlowID||!r.StepID)continue;let i=t.Flows[r.FlowID]??={FlowID:r.FlowID,Status:"InProgress"};i.Steps??={};let s=i.Steps[r.StepID]??={StepID:r.StepID};s.Progress=r.Progress,r.Completed&&(s.CompletedAtUtc??=new Date().toISOString(),i.CurrentStepID===r.StepID&&(i.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 r of e){if(!r.QuestID)continue;let i;if(!r.CycleID)t.PermanentQuests??={},i=t.PermanentQuests[r.QuestID]??={QuestID:r.QuestID,Status:r.Status};else {t.Cycles??={};let s=t.Cycles[r.CycleID];if(!s)continue;s.Quests??={},i=s.Quests[r.QuestID]??={QuestID:r.QuestID,Status:r.Status};}if(i.Status=r.Status,r.ObjectiveID){i.Objectives??={};let s=i.Objectives[r.ObjectiveID]??={ObjectiveID:r.ObjectiveID,CurrentValue:0,Completed:false};s.CurrentValue=r.NewValue??0,r.ObjectiveCompleted&&(s.Completed=true,s.CompletedAtUtc??=new Date().toISOString());}r.Status==="Completed"&&(i.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[r,i]of Object.entries(t))if(ds(r,e)&&i)return i;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,r){if(!(!t||!r)){this.currentState??={},this.currentState.EventToken??={},this.currentState.EventToken.TimedEvent??={};for(let[i,s]of Object.entries(this.currentState.EventToken.TimedEvent))!ds(i,t)||!s||this.markMilestoneClaimed(s.Milestone??(s.Milestone={}),r);this.patchActiveEventMilestoneClaimed(e,t,r),this.emitter.emit("user:timedEventUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}}patchActiveEventMilestoneClaimed(e,t,r){let i=this.activeEventsCache?.ActiveEvents;if(i)for(let s of i)s.Type!==e||s.TimedEventID!==t||(s.Progress??={},this.markMilestoneClaimed(s.Progress.Milestone??(s.Progress.Milestone={}),r));}markMilestoneClaimed(e,t){e.Claims??={};let r=e.Claims[t]??={};r.ClaimedAt??=new Date().toISOString(),r.Unlocked=false;}patchLeaderboardMyProgress(e,t){if(!e||!t)return;let r=this.ensureLeaderboardProgress(e);r.CurrentScore=t.CurrentScore??0,r.LastKnownRank=t.LastKnownRank??0,r.ScoreEarnedThisCycle=t.ScoreEarnedThisCycle??0,r.UnclaimedRewardCycleVersion=t.HasUnclaimedReward?Math.max(1,r.UnclaimedRewardCycleVersion??0):0,this.emitter.emit("user:leaderboardUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}patchLeaderboardScoreSubmitted(e,t,r,i){if(!e)return;let s=this.ensureLeaderboardProgress(e);(s.ScoreCycleVersion??0)<i&&(s.ScoreEarnedThisCycle=0,s.ClaimedMilestoneIDs=[],s.BracketID=null),s.CurrentScore=t,s.ScoreEarnedThisCycle=(s.ScoreEarnedThisCycle??0)+r,s.ScoreCycleVersion=i,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 r=this.ensureLeaderboardProgress(e);r.ClaimedMilestoneIDs??=[],r.ClaimedMilestoneIDs.includes(t)||r.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,r=t[e];return r||(r={CurrentScore:0,ScoreEarnedThisCycle:0,ScoreCycleVersion:0,UnclaimedRewardCycleVersion:0,LastKnownRank:0},t[e]=r),r}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 r=this.ensureSeasonState(e);r.CurrentTier=t,this.emitter.emit("user:seasonUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}patchSeasonClaimedTier(e,t){if(!e)return;let r=this.ensureSeasonState(e);r.ClaimedTierRewards??=[],r.ClaimedTierRewards.includes(t)||r.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,r=t[e];return r||(r={SeasonChainID:e},t[e]=r),r}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 r=this.currentState.Character.Characters,i=r[e];i||(i={CharacterID:e},r[e]=i),t(i),this.emitter.emit("user:characterUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}patchCharacterEquipment(e,t,r){if(!e||!t)return;let i=this.currentState?.Character?.Characters?.[e];i&&(i.Equipment??={},r===null?delete i.Equipment[t]:i.Equipment[t]=r,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,r=false;for(let[i,s]of Object.entries(e.ChangedInstances??{}))t[i]=s,r=true;for(let i of e.RemovedInstanceIDs??[])i in t&&(delete t[i],r=true);r&&(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,r){this.currentState??={};let i=this.currentState.CoopEvent??={MyObjectIndex:-1};i.ActiveGroupID=e,i.ActiveCoopEventID=t,i.MyObjectIndex=r,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(r=>r!==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(r=>r!==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(r=>r!==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 r=this.currentState.TimedBoost.Active;if(t==="Replace"||t==="KeepBest")for(let i of Object.keys(r)){let s=r[i];s&&s.BoostID===e.BoostID&&i!==e.InstanceID&&delete r[i];}r[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,r,i,s){if(!t)return;this.currentState??={},this.currentState.CustomData??={};let a=this.currentState.CustomData,p={Value:r,UpdatedAt:new Date().toISOString(),Version:i,LastWriter:"Client",ExpiresAt:s??null};if(e==="Private")a.Private??={},a.Private[t]=p;else if(e==="Public")a.Public??={},a.Public[t]=p;else return;a.Version=(a.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 r=this.currentState.CustomData;if(e==="Private")r.Private&&delete r.Private[t];else if(e==="Public")r.Public&&delete r.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 r=this.ensureBoard();r.BuildingStates??=[];let i=r.BuildingStates.find(s=>s.SlotIndex===e);i||(i={SlotIndex:e},r.BuildingStates.push(i)),t(i),this.emitter.emit("user:gameLoopUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0);}patchBoardPendingRaidLayout(e,t){let i=this.ensureBoard().Pending;i&&(e&&(i.RaidLayout=e),t>=0&&(i.OpenedIndices??=[],i.OpenedIndices.includes(t)||i.OpenedIndices.push(t)),this.emitter.emit("user:gameLoopUpdated",void 0),this.emitter.emit("user:anyUpdated",void 0));}patchBoardSpecialPending(e){let r=this.ensureBoard().Pending;!r||r.Type.toUpperCase()!=="SPECIAL"||(r.Special??={},e(r.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 rr=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 ir=class{user;config;constructor(e){this.user=new tr(e),this.config=new rr;}reset(){this.user.clear(),this.config.applyTitlePublicConfiguration(null);}};var sr=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 Ac(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 Ac(o){return o!==null&&Object.values(me).includes(o)}var Oc=8,Uc=100,Bc=/^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/i,$n=["GameLoop"],nr=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 r=await this.ctx.api.authentication.loginWithTelegram(t);return r.ok?(this.applyAuthContext(r.data),this.fetchAndApplyClientState(me.Telegram)):r}async loginWithEmail(e,t){this.ctx.emitter.emit("auth:requestSent",void 0);let r=this.baseRequest();r.Email=e,r.Password=t;let i=await this.ctx.api.authentication.loginWithEmail(r);if(!i.ok)return i;this.applyAuthContext(i.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 r=this.baseRequest();r.Email=e,r.Password=t,r.DeviceID=this.ctx.platform.getDeviceID(),r.Device=this.ctx.platform.getDeviceModel(),r.Platform=this.ctx.platform.getPlatform();let i=await this.ctx.api.authentication.registerWithEmail(r);if(!i.ok)return i;this.applyAuthContext(i.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 r=await this.ctx.api.authentication.loginWithGoogle(t);return r.ok?(this.applyAuthContext(r.data),this.fetchAndApplyClientState(me.Google)):r}async requestWalletChallenge(e,t){this.ctx.emitter.emit("auth:requestSent",void 0);let r=this.baseRequest();return r.WalletAddress=e,r.NetworkID=t,this.ctx.api.authentication.requestWalletChallenge(r)}async loginWithWallet(e,t,r){this.ctx.emitter.emit("auth:requestSent",void 0);let i=this.baseRequest();i.WalletAddress=e,i.NetworkID=t,i.WalletSignature=r,i.Platform=this.ctx.platform.getPlatform(),i.Device=this.ctx.platform.getDeviceModel(),i.DeviceID=this.ctx.platform.getDeviceID();let s=await this.ctx.api.authentication.loginWithWallet(i);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 r=await this.ctx.api.authentication.loginWithPlatformToken(t);return r.ok?(this.applyAuthContext(r.data),this.fetchAndApplyClientState(me.iDosGames)):r}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 r=await this.ctx.api.authentication.loginWithSsoCode(t);return r.ok?(this.applyAuthContext(r.data),this.fetchAndApplyClientState(me.iDosGames)):r}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,r){this.ctx.emitter.emit("auth:requestSent",void 0);let i=this.baseRequest();return i.Email=e,i.ResetToken=t,i.Password=r,this.ctx.api.authentication.resetPassword(i)}autoLogin(){return this.replay(this.ctx.authStore.lastAuthType,this.ctx.authStore.savedEmail,this.ctx.authStore.savedPassword)}replay(e,t,r){switch(e){case me.Email:return this.loginWithEmail(t,r);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&&Bc.test(e)}static isValidPasswordLength(e){return e.length>=Oc&&e.length<=Uc}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($n,$n);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 Lc="idos:cfg",Tt=class{constructor(e,t){this.storage=e;this.titleId=t;}storage;titleId;static scopeOf(e,t){return t&&t.length>0?`x:${Zn(t)}`:e&&e.length>0?`f:${Zn(e)}`:t?"x:":"f:"}async read(e){try{let t=await this.storage.get(this.keyOf(e));if(!t)return null;let r=JSON.parse(t);return !r||typeof r!="object"||typeof r.v!="string"||!r.c?null:r}catch{return null}}async write(e,t,r){try{let i={v:t,c:r};await this.storage.set(this.keyOf(e),JSON.stringify(i));}catch{}}async clear(e){try{await this.storage.remove(this.keyOf(e));}catch{}}keyOf(e){return `${Lc}:${this.titleId}:${e}`}};function Zn(o){return [...o].map(e=>e.toLowerCase()).sort().join(",")}var Jn="idos:loc",vt=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 r=JSON.parse(t);return !r||typeof r!="object"||typeof r.v!="number"||!r.t||typeof r.t!="object"?null:r}catch{return null}}async write(e,t,r){try{let i={v:t,t:r};await this.storage.set(this.keyOf(e),JSON.stringify(i)),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 r={};for(let[i,s]of Object.entries(t))typeof s=="number"&&s>0&&(r[i]=s);return r}catch{return {}}}async noteVersion(e,t){let r=await this.readVersions();r[e]!==t&&(r[e]=t,await this.storage.set(this.versionsKey(),JSON.stringify(r)));}keyOf(e){return `${Jn}:${this.titleId}:${e}`}versionsKey(){return `${Jn}:${this.titleId}:versions`}};var qc="idos:state",or=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 r=JSON.parse(t);return !r||typeof r!="object"||typeof r.e!="string"||!r.v||!r.s?null:r}catch{return null}}async write(e,t,r,i){if(!(!e||!t))try{let s={e:t,v:r,s:i};await this.storage.set(this.keyOf(e),JSON.stringify(s));}catch{}}keyOf(e){return `${qc}:${this.titleId}:${e}`}};function Ec(o,e){if(!o)return;let t=new Set((e??[]).map(i=>i.trim().toLowerCase()));if(t.size===0)return o;let r={};for(let[i,s]of Object.entries(o))t.has(i.toLowerCase())||(r[i]=s);return r}function ms(o,e,t,r){let i={...o??{}};if(!e||!t||!r)return i;for(let[s,a]of Object.entries(t))r[s]===a&&s in e&&(i[s]=e[s]);return i}function Gc(o){return {...o??{}}}function fs(o){return typeof o.StateEpoch=="string"&&o.StateEpoch.length>0?o.StateEpoch:null}var ar=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=Ec(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[r,i]of Object.entries(t)){let s=this.versions[r];s!==void 0&&i===s+1?this.versions[r]=i:delete this.versions[r],this.dirty=true;}}afterFullRead(e,t){e!==this.epoch&&this.reset(e),this.versions=Gc(t),this.dirty=true;}afterSliceRead(e,t){e!==this.epoch&&this.reset(e);for(let[r,i]of Object.entries(t??{}))this.versions[r]=i;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 Yn=n("server","Title configuration is unavailable (CDN and API both failed)."),lr=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 Tt(this.ctx.settings.configStorage,this.ctx.settings.titleID)}cache;get localizationCache(){return this.locCache??=new vt(this.ctx.settings.configStorage,this.ctx.settings.titleID)}locCache;get stateStore(){return this.versionStore??=new ar(new or(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=Tt.scopeOf(e.TitleFields,null),r=await this.configCache.read(t);r&&(e.KnownTitleConfigVersion=r.v),await this.prepareLocalization(e);let i=await this.prepareStateHandshake(e,null),s=await this.ctx.api.user.getClientState(e);if(!s.ok)return s;let a=await this.resolveTitleConfig(s.data,t,r,{Fields:e.TitleFields});return a==null?Yn:(this.finishStateHandshake(s.data,i),await this.applyClientState(s.data,a,void 0,void 0),await this.applyLocalization(s.data.Localization),await this.flushState(i),s)}async prepareStateHandshake(e,t){let r=this.ctx.auth.context?.userID;if(!r)return {userId:null,cached:null,sent:void 0};await this.stateStore.load(r),await this.stateStore.flush(r,this.ctx.data.user.state);let i=this.stateStore.versionsFor(t);if(i){e.KnownStateVersions=i;let s=this.stateStore.currentEpoch;s&&(e.KnownStateEpoch=s);}return {userId:r,cached:this.stateStore.cachedState,sent:i}}finishStateHandshake(e,t){let r=ms(e.User,t.cached,t.sent,e.StateVersions);e.User=r;let i=fs(e);!i||!t.userId||this.stateStore.afterFullRead(i,e.StateVersions);}async resolveTitleConfig(e,t,r,i){let s=e.TitleConfigVersion;if(r&&s&&r.v===s)return r.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 a=await this.fetchConfigFromApi(i);return a!=null?(s&&await this.configCache.write(t,s,a),a):r?.c??null}async fetchConfigFromCdn(e){try{let t=await this.ctx.fetchImpl(e);if(!t.ok)return null;let r=await t.json();return r&&typeof r=="object"?r:null}catch{return null}}async fetchConfigFromApi(e){let t=this.baseRequest();if(!t)return null;let r={...t,...e},i=e.ExcludeFields?await this.ctx.api.title.getTitlePublicConfigurationExcept(r):await this.ctx.api.title.getTitlePublicConfiguration(r);return i.ok?i.data:null}async getClientStateExcept(e,t){let r=this.baseRequest();if(!r)return n("unauthorized","Not logged in.");r.ExcludeFields=e,r.ExcludeTitleFields=t;let i=Tt.scopeOf(null,t??[]),s=await this.configCache.read(i);s&&(r.KnownTitleConfigVersion=s.v),await this.prepareLocalization(r);let a=await this.prepareStateHandshake(r,e??null),p=await this.ctx.api.user.getClientStateExcept(r);if(!p.ok)return p;let D=await this.resolveTitleConfig(p.data,i,s,{ExcludeFields:t??[]});return D==null?Yn:(this.finishStateHandshake(p.data,a),await this.applyClientState(p.data,D,e,t),await this.applyLocalization(p.data.Localization),await this.flushState(a),p)}async prepareLocalization(e){let t=this.ctx.localization.locale??this.ctx.settings.locale;t&&(e.Locale=t);let r=await this.localizationCache.readVersions();Object.keys(r).length>0&&(e.KnownLocalizationVersions=r);}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}),r=e.Fallback?await this.resolveLocalizationTable(e.Fallback):null;this.ctx.localization.applyState(e,{table:t,fallbackTable:r});}async resolveLocalizationTable(e){let t=e.Locale??null,r=e.Version??0;if(!t)return null;let i=await this.localizationCache.read(t);if(r<=0)return i?.t??null;if(i&&i.v===r)return i.t;if(e.Url){let a=await this.fetchLocalizationFromCdn(e.Url);if(a!=null)return await this.localizationCache.write(t,r,a),a}let s=await this.fetchLocalizationFromApi(t,i?.v??0);return s??i?.t??null}async fetchLocalizationFromCdn(e){try{let t=await this.ctx.fetchImpl(e);if(!t.ok)return null;let r=await t.json();return r&&typeof r=="object"?r:null}catch{return null}}async fetchLocalizationFromApi(e,t){let r=this.baseRequest();if(!r)return null;let i=await this.ctx.api.localization.getLocalizationTable({...r,Locale:e,KnownVersion:t});if(!i.ok)return null;let s=i.data;if(s.NotModified)return null;let a=s.Entries??{},p=s.Version??0,D=s.Locale??e;return p>0&&await this.localizationCache.write(D,p,a),a}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 r=await this.prepareStateHandshake(t,null),i=await this.ctx.api.user.getUserState(t);if(!i.ok)return i;let s=ms(i.data.User,r.cached,r.sent,i.data.StateVersions);i.data.User=s;let a=Object.keys(i.data.StateVersions??{});this.ctx.data.user.applyUserStateContainers(s,a);let p=fs(i.data);return p&&(this.stateStore.afterSliceRead(p,i.data.StateVersions),await this.flushState(r)),i}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,r){let i=this.baseRequest();if(!i)return n("unauthorized","Not logged in.");i.UsageTime=e,i.IsNewSession=t,i.SessionDurationSeconds=r;let s=await this.ctx.api.user.addUsageTime(i);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 r=await this.ctx.api.user.changeUsername(t);return r.ok&&this.ctx.emitter.emit("user:usernameChanged",r.data),r}async applyClientState(e,t,r,i){let s=r?.includes("GameLoop")===true,a=i?.includes("GameLoop")===true,p=s?this.ctx.data.user.state?.GameLoop:void 0,D=a?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;a&&E&&E.GameLoop==null&&(E.GameLoop=D),this.ctx.emitter.emit("user:clientStateReceived",e);}};var cr=class{constructor(e){this.ctx=e;}ctx;async convert(e,t,r,i,s,a){if(!t)return n("client","SourceID is required.");if(!i)return n("client","TargetID is required.");if(s<=0)return n("client","Amount must be positive.");if(e===r&&t===i)return n("client","Source and target must differ.");if(e===Ve.Crypto||r===Ve.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:r,TargetID:i,SourceAmount:String(Math.trunc(s)),TransactionID:a&&a.length>0?a:`convert_${e}_${t}_to_${r}_${i}_${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,r,i,s,a){let p=s instanceof er?s:new er(s);if(!t)return n("client","SourceID is required.");if(!i)return n("client","TargetID is required.");if(p.lte(0))return n("client","SourceAmount must be a positive decimal.");if(e===r&&t===i)return n("client","Source and target must differ.");if(e===Ve.Virtual&&r===Ve.Virtual)return n("client","cryptoConvert requires at least one crypto side. Use convert for VC\u2194VC.");if(e===Ve.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:r,TargetID:i,SourceAmount:p.toString(),TransactionID:a&&a.length>0?a:`crypto_convert_${e}_${t}_to_${r}_${i}_${d()}`},U=await this.ctx.api.currency.cryptoConvert(D);if(U.ok){let E=U.data,de=[],Re=[];if(E.SourceType===Ve.Virtual&&de.push({Type:"VirtualCurrency",CurrencyID:E.SourceID,Amount:Math.trunc(Number(E.SourceSpent))}),E.TargetType===Ve.Virtual&&Re.push({Type:"VirtualCurrency",CurrencyID:E.TargetID,Amount:Math.trunc(Number(E.TargetCredited))}),de.length>0||Re.length>0){let Ie={Consume:de.length>0?{Standard:{Entries:de}}:null,Grant:Re.length>0?{Standard:{Entries:Re}}:null};this.ctx.data.user.applyResourceOperation(Ie,this.ctx.data.config.itemDefinitions);}E.SourceType===Ve.Crypto&&this.ctx.data.user.patchCryptoCurrencyDelta(E.SourceID,new er(E.SourceSpent).negated(),E.ServerTimeUtc),E.TargetType===Ve.Crypto&&this.ctx.data.user.patchCryptoCurrencyDelta(E.TargetID,new er(E.TargetCredited),E.ServerTimeUtc),this.ctx.emitter.emit("currency:cryptoConverted",E);}return U}};var pr=class{constructor(e){this.ctx=e;}ctx;async upgradeLevel(e,t,r){let i=e.trim();if(!i)return n("client","ItemInstanceID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let s={...this.ctx.buildAuthedBaseRequest(),ItemInstanceID:i,SelectedOptionID:r,RelatedEntityID:`upgrade_item_${i}_${d()}`};t&&t.length>0&&(s.FodderInstanceIDs=[...t]);let a=await this.ctx.api.item.upgradeLevel(s);return a.ok&&(await this.ctx.userService.getUserInventory(),this.ctx.emitter.emit("item:levelUpgraded",a.data)),a}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},r=await this.ctx.api.item.upgradeLevelsBatch(t);return r.ok&&(await this.ctx.userService.getUserInventory(),this.ctx.emitter.emit("item:levelsUpgradedBatch",r.data)),r}};var Nc="Store",dr=class{constructor(e){this.ctx=e;}ctx;async purchase(e,t=1,r){if(!e)return n("client","OfferID is required.");if(t<1)return n("client","Count must be at least 1.");let i=this.ctx.auth.context;if(!i)return n("unauthorized","Not logged in.");let s={...this.ctx.buildAuthedBaseRequest(),OfferID:e,Count:t,SelectedOptionID:r?.selectedOptionID,Payment:r?.payment,RelatedEntityID:`store_buy_${e}_${i.userID}_${d()}`},a=await this.ctx.api.store.purchase(s);if(a.ok){let p=a.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 a}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},r=await this.ctx.api.store.purchaseBatch(t);if(r.ok){let i=false;for(let s of r.data)!s.Success||!s.Data||!s.Data.OfferID||(this.ctx.data.user.patchStorePurchase(s.Data.OfferID,s.Data.Count,s.Data.ServerTimeUtc),!i&&s.Data.Resources&&(this.ctx.data.user.applyResourceOperation(s.Data.Resources,this.ctx.data.config.itemDefinitions),i=true));this.ctx.emitter.emit("store:offersPurchasedBatch",r.data);}return r}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(Nc,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 hr=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,r){if(!t)return n("client","Receipt is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let i={...this.ctx.buildAuthedBaseRequest(),Store:e,Receipt:t,Signature:r?.signature,ProductID:r?.productID,TransactionID:r?.transactionID},s=await this.ctx.api.purchase.validatePurchase(i);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 mr=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,r])=>({...r,OptionID:r.OptionID||t})).filter(t=>this.isAvailable(t)).sort((t,r)=>(t.OptionID??"").localeCompare(r.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 r of t)if(r?.Type===Vt.Purchase&&r.ProductID)return r.ProductID;return null}cryptoShortfallOf(e){let t=e?.Standard?.Entries;if(!t)return null;for(let r of t){if(r?.Type!==Vt.CryptoCurrency||!r.CurrencyID)continue;let i=Number(r.Amount??0);if(!(i>0))continue;let s=this.cryptoBalance(r.CurrencyID);return s>=i?null:{currencyID:r.CurrencyID,required:i,available:s,missing:i-s}}return null}cryptoBalance(e){let r=this.ctx.data.user.state?.InventoryV2?.CryptoCurrencies?.[e];return Number(r?.Amount??0)}};var jc="Lootbox",fr=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 r=t.data.LootboxDefinitions;r&&(this.ctx.data.config.patchSection(jc,r),this.ctx.emitter.emit("lootbox:definitionsLoaded",r));}return t}async open(e,t,r,i){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:r,Payment:i,RelatedEntityID:`lootbox_${e}_${r??"default"}_${d()}`},a=await this.ctx.api.lootbox.open(s);if(a.ok){let p=a.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 a}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var Fc="Reward";function gs(o){return o.length>0&&!o.includes(".")&&!o.includes("$")}var gr=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 r=t.data.RewardDefinitions;r&&(this.ctx.data.config.patchSection(Fc,r),this.ctx.emitter.emit("reward:definitionsLoaded",r));}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 r=t.data;this.multiplierEnabled=r.Enabled,this.multiplier=r.Enabled?r.Multiplier??1:1,this.ctx.emitter.emit("reward:milestoneMultiplierLoaded",r);}return t}async claimDailyReward(e){let t=this.ctx.auth.context;if(!t)return n("unauthorized","Not logged in.");let r={...this.ctx.buildAuthedBaseRequest(),CalendarID:e,RelatedEntityID:`dailyreward_${t.userID}_${e??"default"}_${d()}`},i=await this.ctx.api.reward.claimDailyReward(r);if(i.ok){let s=i.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 i}async collectIdleAccrual(e){if(!gs(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()}`},r=await this.ctx.api.reward.collectIdleAccrual(t);if(r.ok){let i=r.data;this.ctx.data.user.patchIdleAccrualState(i.AccrualID,i.IdleState),this.ctx.data.user.applyResourceOperation(i.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("reward:idleCollected",i);}return r}async claimComebackReward(e){if(!gs(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()}`},r=await this.ctx.api.reward.claimComebackReward(t);if(r.ok){let i=r.data;this.ctx.data.user.patchComebackState(i.ComebackID,i.ComebackState),this.ctx.data.user.applyResourceOperation(i.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("reward:comebackClaimed",i);}return r}async claimReward(e){if(!gs(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()}`},r=await this.ctx.api.reward.claimReward(t);if(r.ok){let i=r.data;this.ctx.data.user.patchClaimRewardState(i.ClaimID,i.ClaimState),this.ctx.data.user.applyResourceOperation(i.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("reward:claimed",i);}return r}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var Vc="Tutorial",Rr=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(Vc,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 r=await this.ctx.api.tutorial.getUserTutorialState(t);if(r.ok){let i=r.data.State??{};this.ctx.data.user.applyTutorial(i),this.ctx.emitter.emit("tutorial:userStateLoaded",r.data);}return r}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,r=>this.ctx.api.tutorial.reportStepShown(r))}async completeStep(e,t){return this.stepCall(e,t,r=>this.ctx.api.tutorial.completeStep(r),{relatedEntityID:`tutorial_step_${e}_${t}_${d()}`})}async completeStepsBatch(e,t){let r=e?.trim();if(!r)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 i={...this.ctx.buildAuthedBaseRequest(),FlowID:r,StepIDs:t,RelatedEntityID:`tutorial_batch_${r}_${d()}`},s=await this.ctx.api.tutorial.completeStepsBatch(i);return s.ok&&(await this.refreshAfterMutation(),this.ctx.emitter.emit("tutorial:stepsCompletedBatch",s.data)),s}async skipStep(e,t){return this.stepCall(e,t,r=>this.ctx.api.tutorial.skipStep(r))}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 r={...this.ctx.buildAuthedBaseRequest(),FlowID:t,RelatedEntityID:`tutorial_claim_${t}_${d()}`},i=await this.ctx.api.tutorial.claimFlowReward(r);return i.ok&&(this.ctx.data.user.applyResourceOperation(i.data.Granted,this.ctx.data.config.itemDefinitions),await this.refreshAfterMutation(),this.ctx.emitter.emit("tutorial:rewardClaimed",i.data)),i}async resetFlow(e){return this.flowCall(e,t=>this.ctx.api.tutorial.resetFlow(t),{event:"tutorial:flowReset"})}async flowCall(e,t,r){let i=e?.trim();if(!i)return n("client","FlowID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let s={...this.ctx.buildAuthedBaseRequest(),FlowID:i},a=await t(s);return a.ok&&(this.applyFlowView(a.data),this.ctx.emitter.emit(r.event,a.data)),a}async stepCall(e,t,r,i){let s=e?.trim(),a=t?.trim();if(!s)return n("client","FlowID is required.");if(!a)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:a};i?.relatedEntityID&&(p.RelatedEntityID=i.relatedEntityID);let D=await r(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 yr=Object.freeze({}),Cr=class{constructor(e){this.ctx=e;}ctx;table={...yr};fallbackTable=null;currentLocale=null;currentFallbackLocale=null;pluralRules=null;get cache(){return this.tableCache??=new vt(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,r])=>({Locale:r?.Locale??t,DisplayName:r?.DisplayName??null,Order:r?.Order??0})).sort((t,r)=>(t.Order??0)-(r.Order??0)):[]}has(e){return this.lookup(e)!==void 0}t(e,t){if(!e)return "";let r=this.resolveKey(e,t),i=this.lookup(r)??this.lookup(e);return i===void 0?this.onMissing(e):t?_c(i,t):i}applyState(e,t){if(!e){this.reset();return}let r=e.Locale??null;this.table=t.table??{...yr},this.fallbackTable=t.fallbackTable,this.currentFallbackLocale=e.Fallback?.Locale??null,this.setLocaleInternal(r),this.ctx.emitter.emit("localization:changed",{locale:r,fallbackLocale:this.currentFallbackLocale,entryCount:Object.keys(this.table).length});}async setLocale(e){if(!this.baseRequest())return n("unauthorized","Not logged in.");let r=await this.loadTableFromApi(e);if(!r.ok)return r;let{locale:i,table:s,fallbackLocale:a}=r.data,p=null;if(a){let D=await this.loadTableFromApi(a);D.ok&&(p=D.data.table);}return this.table=s,this.fallbackTable=p,this.currentFallbackLocale=a,this.setLocaleInternal(i),this.ctx.emitter.emit("localization:changed",{locale:i,fallbackLocale:a,entryCount:Object.keys(s).length}),{ok:true,data:i}}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={...yr},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 r=await this.cache.read(Xn(e));r&&(t.KnownVersion=r.v);let i=await this.ctx.api.localization.getLocalizationTable(t);if(!i.ok)return i;let s=i.data,a=s.Locale??Xn(e),p=s.Version??0;if(s.NotModified){let U=r??await this.cache.read(a);return {ok:true,data:{locale:a,table:U?.t??{...yr},fallbackLocale:s.FallbackLocale??null}}}let D=s.Entries??{};return p>0&&await this.cache.write(a,p,D),{ok:true,data:{locale:a,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 r=t?.count;if(typeof r!="number")return e;let i=this.pluralCategory(r),s=`${e}.${i}`;if(this.lookup(s)!==void 0)return s;let a=`${e}.other`;return this.lookup(a)!==void 0?a: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 _c(o,e){return o.replace(/\{(\w+)\}/g,(t,r)=>{let i=e[r];return i===void 0?t:String(i)})}function Xn(o){return o.trim().replace(/_/g,"-").toLowerCase()}var Wc="Quest",Sr=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(Wc,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 r=await this.ctx.api.quest.getUserQuestState(t);if(r.ok){let i=r.data.State??{};this.ctx.data.user.applyQuest(i),this.ctx.data.user.patchQuestPointsTracks(r.data.PointsTracks),this.ctx.emitter.emit("quest:userStateLoaded",i);}return r}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 r=e.trim();if(!r)return n("client","QuestID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let i=t&&t.trim().length>0?t.trim():void 0,s={...this.ctx.buildAuthedBaseRequest(),QuestID:r,CycleID:i,RelatedEntityID:`quest_claim_${i??""}_${r}_${d()}`},a=await this.ctx.api.quest.claimQuestReward(s);if(a.ok){let p=a.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 a}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},r=await this.ctx.api.quest.claimQuestRewardsBatch(t);if(r.ok){let i=false;for(let s of r.data)!s.Success||!s.Data||(this.ctx.data.user.patchQuestStatus(s.Data.QuestID,s.Data.CycleID,"Claimed"),!i&&s.Data.Resources&&(this.ctx.data.user.applyResourceOperation(s.Data.Resources,this.ctx.data.config.itemDefinitions),i=true));this.ctx.emitter.emit("quest:rewardsClaimedBatch",r.data);}return r}async claimMilestoneReward(e,t){let r=e.trim(),i=t.trim();if(!r||!i)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:r,MilestoneID:i,RelatedEntityID:`milestone_claim_${r}_${i}_${d()}`},a=await this.ctx.api.quest.claimMilestoneReward(s);if(a.ok){let p=a.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 a}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},r=await this.ctx.api.quest.claimMilestoneRewardsBatch(t);if(r.ok){let i=false;for(let s of r.data)!s.Success||!s.Data||(this.ctx.data.user.patchMilestoneClaimed(s.Data.CycleID,s.Data.MilestoneID),!i&&s.Data.Resources&&(this.ctx.data.user.applyResourceOperation(s.Data.Resources,this.ctx.data.config.itemDefinitions),i=true));this.ctx.emitter.emit("quest:milestonesClaimedBatch",r.data);}return r}async claimGroupCompletionReward(e,t){let r=e.trim(),i=t.trim();if(!r||!i)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:r,GroupCompletionID:i,RelatedEntityID:`group_completion_${r}_${i}_${d()}`},a=await this.ctx.api.quest.claimGroupCompletionReward(s);if(a.ok){let p=a.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 a}async addQuestProgress(e,t){let r=e.trim();if(!r)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 i={...this.ctx.buildAuthedBaseRequest(),MetricID:r,ProgressValue:t},s=await this.ctx.api.quest.addQuestProgress(i);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 Qc="TimedEvent",xr=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(Qc,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,r,i,s,a,p=1){if(!t)return n("client","LteID is required.");if(!r)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:r,Outcome:i,AmountOverride:s,SourceParams:a,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,r){if(!t)return n("client","LteID is required.");if(r<=0)return n("client","SpendAmount must be positive.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let i={...this.ctx.buildAuthedBaseRequest(),Type:e,LteID:t,SpendAmount:r},s=await this.ctx.api.timedEvent.spendTokens(i);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,r){if(!t||!r)return n("client","LteID and MilestoneID are required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let i={...this.ctx.buildAuthedBaseRequest(),Type:e,LteID:t,MilestoneID:r},s=await this.ctx.api.timedEvent.claimMilestone(i);if(s.ok){let a=s.data;this.ctx.data.user.applyResourceOperation(a.Rewards,this.ctx.data.config.itemDefinitions),this.ctx.data.user.patchTimedEventMilestoneClaimed(e,t,r),this.ctx.emitter.emit("timedEvent:milestoneClaimed",a);}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},r=await this.ctx.api.timedEvent.claimMilestonesBatch(t);return r.ok&&(this.applyMilestoneClaimBatch(r.data),this.ctx.emitter.emit("timedEvent:milestonesClaimedBatch",r.data)),r}async claimAllMilestones(e){let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");e&&e.length>0&&(t.Events=e);let r=await this.ctx.api.timedEvent.claimAllMilestones(t);return r.ok&&(this.applyMilestoneClaimBatch(r.data),this.ctx.emitter.emit("timedEvent:allMilestonesClaimed",r.data)),r}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},r=await this.ctx.api.timedEvent.spendTokensBatch(t);if(r.ok){let i=false;for(let s of r.data)!i&&s.Success&&s.Data?.Resources&&(this.ctx.data.user.applyResourceOperation(s.Data.Resources,this.ctx.data.config.itemDefinitions),i=true);this.ctx.emitter.emit("timedEvent:tokensSpentBatch",r.data);}return r}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},r=await this.ctx.api.timedEvent.grantTokensBatch(t);if(r.ok){let i=false;for(let s of r.data)!i&&s.Success&&s.Data?.Resources&&(this.ctx.data.user.applyResourceOperation(s.Data.Resources,this.ctx.data.config.itemDefinitions),i=true);this.ctx.emitter.emit("timedEvent:tokensGrantedBatch",r.data);}return r}applyMilestoneClaimBatch(e){let t=false;for(let r of e){if(!r.Success||!r.Data)continue;let i=r.Data;i.Type&&i.LteID&&i.MilestoneID&&this.ctx.data.user.patchTimedEventMilestoneClaimed(i.Type,i.LteID,i.MilestoneID),!t&&i.Rewards&&(this.ctx.data.user.applyResourceOperation(i.Rewards,this.ctx.data.config.itemDefinitions),t=true);}}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var Kc="Leaderboard",Dr=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(Kc,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 r=await this.ctx.api.leaderboard.getLeaderboard(t);return r.ok&&this.ctx.emitter.emit("leaderboard:loaded",r.data),r}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 r=await this.ctx.api.leaderboard.getMyProgress(t);return r.ok&&(this.ctx.data.user.patchLeaderboardMyProgress(this.cycleDocID(e),r.data),this.ctx.emitter.emit("leaderboard:myProgressLoaded",r.data)),r}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 r={...this.ctx.buildAuthedBaseRequest(),LeaderboardID:e,Score:t},i=await this.ctx.api.leaderboard.submitScore(r);if(i.ok){let s=i.data;this.ctx.data.user.patchLeaderboardScoreSubmitted(this.cycleDocID(e),s.NewScore,t,s.CycleVersion),this.ctx.emitter.emit("leaderboard:scoreSubmitted",s);}return i}async submitScoreFromSource(e,t,r,i,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 a={...this.ctx.buildAuthedBaseRequest(),LeaderboardID:e,SourceType:t,Outcome:r,Params:i,RollMultiplier:s},p=await this.ctx.api.leaderboard.submitScoreFromSource(a);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},r=await this.ctx.api.leaderboard.claimCycleReward(t);if(r.ok){let i=r.data;this.ctx.data.user.patchLeaderboardCycleRewardClaimed(this.cycleDocID(e)),this.ctx.data.user.applyResourceOperation(i.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("leaderboard:cycleRewardClaimed",i);}return r}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 r={...this.ctx.buildAuthedBaseRequest(),LeaderboardID:e,MilestoneID:t},i=await this.ctx.api.leaderboard.claimMilestone(r);if(i.ok){let s=i.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 i}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 r=await this.ctx.api.leaderboard.getFriendsLeaderboard(t);return r.ok&&this.ctx.emitter.emit("leaderboard:friendsLoaded",r.data),r}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 r=await this.ctx.api.leaderboard.getLeaderboardsBatch(t);return r.ok&&this.ctx.emitter.emit("leaderboard:loadedBatch",r.data),r}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 r=await this.ctx.api.leaderboard.getProgressBatch(t);if(r.ok){for(let i of r.data)!i.Success||!i.Data||this.ctx.data.user.patchLeaderboardMyProgress(this.cycleDocID(i.Data.LeaderboardID),i.Data);this.ctx.emitter.emit("leaderboard:myProgressLoadedBatch",r.data);}return r}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},r=await this.ctx.api.leaderboard.claimCycleRewardsBatch(t);if(r.ok){for(let i of r.data)!i.Success||!i.Data||(this.ctx.data.user.patchLeaderboardCycleRewardClaimed(this.cycleDocID(i.Data.LeaderboardID)),i.Data.Resources&&this.ctx.data.user.applyResourceOperation(i.Data.Resources,this.ctx.data.config.itemDefinitions));this.ctx.emitter.emit("leaderboard:cycleRewardsClaimedBatch",r.data);}return r}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},r=await this.ctx.api.leaderboard.claimMilestonesBatch(t);if(r.ok){for(let i of r.data)!i.Success||!i.Data||(this.ctx.data.user.patchLeaderboardMilestoneClaimed(this.cycleDocID(i.Data.LeaderboardID),i.Data.MilestoneID),i.Data.Resources&&this.ctx.data.user.applyResourceOperation(i.Data.Resources,this.ctx.data.config.itemDefinitions));this.ctx.emitter.emit("leaderboard:milestonesClaimedBatch",r.data);}return r}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},r=await this.ctx.api.leaderboard.submitScoresBatch(t);if(r.ok){for(let i of r.data)!i.Success||!i.Data||this.ctx.data.user.patchLeaderboardScoreSubmitted(this.cycleDocID(i.Data.LeaderboardID),i.Data.NewScore,i.Data.NewScore,i.Data.CycleVersion);this.ctx.emitter.emit("leaderboard:scoresSubmittedBatch",r.data);}return r}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},r=await this.ctx.api.leaderboard.claimAllRewardsBatch(t);if(r.ok){for(let i of r.data){let s=this.cycleDocID(i.LeaderboardID);i.CycleReward?.Success&&i.CycleReward.Data&&(this.ctx.data.user.patchLeaderboardCycleRewardClaimed(s),i.CycleReward.Data.Resources&&this.ctx.data.user.applyResourceOperation(i.CycleReward.Data.Resources,this.ctx.data.config.itemDefinitions));for(let a of i.Milestones??[])!a.Success||!a.Data||(this.ctx.data.user.patchLeaderboardMilestoneClaimed(s,a.Data.MilestoneID),a.Data.Resources&&this.ctx.data.user.applyResourceOperation(a.Data.Resources,this.ctx.data.config.itemDefinitions));}this.ctx.emitter.emit("leaderboard:allRewardsClaimedBatch",r.data);}return r}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 r=await this.ctx.api.leaderboard.getOverviewBatch(t);if(r.ok){for(let i of r.data)i.Progress?.Success&&i.Progress.Data&&this.ctx.data.user.patchLeaderboardMyProgress(this.cycleDocID(i.LeaderboardID),i.Progress.Data);this.ctx.emitter.emit("leaderboard:overviewLoadedBatch",r.data);}return r}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var Hc="Season",br=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(Hc,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 r=await this.ctx.api.season.getActiveSeason(t);return r.ok&&(r.data.UserState&&this.ctx.data.user.patchSeasonState(e,r.data.UserState),this.ctx.emitter.emit("season:activeLoaded",r.data)),r}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 r=await this.ctx.api.season.getUserState(t);return r.ok&&(this.ctx.data.user.patchSeasonState(e,r.data),this.ctx.emitter.emit("season:userStateLoaded",r.data)),r}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 r={...this.ctx.buildAuthedBaseRequest(),SeasonChainID:e,Amount:t,RelatedEntityID:`season_grant_${e}_${d()}`},i=await this.ctx.api.season.grantStatusTokens(r);return i.ok&&(this.ctx.data.user.patchSeasonCurrentTier(e,i.data.NewTier),this.ctx.emitter.emit("season:statusTokensGranted",i.data)),i}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 r={...this.ctx.buildAuthedBaseRequest(),SeasonChainID:e,TierNumber:t,RelatedEntityID:`season_tier_${e}_t${t}_${d()}`},i=await this.ctx.api.season.claimTierReward(r);if(i.ok){let s=i.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 i}async claimTierRewardsBatch(e,t){if(!e)return n("client","SeasonChainID is required.");let r=(t??[]).filter(a=>a>0);if(r.length===0)return n("client","TierNumbers is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let i={...this.ctx.buildAuthedBaseRequest(),SeasonChainID:e,TierNumbers:r,RelatedEntityID:`season_tier_batch_${e}_${d()}`},s=await this.ctx.api.season.claimTierRewardsBatch(i);if(s.ok){let a=s.data;for(let p of a.Items??[]){let D=p.Data?.TierNumber;p.Success&&typeof D=="number"&&this.ctx.data.user.patchSeasonClaimedTier(e,D);}this.ctx.data.user.applyResourceOperation(a.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("season:tierRewardsBatchClaimed",a);}return s}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var $c="Premium",zr=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($c,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 r={...this.ctx.buildAuthedBaseRequest(),PremiumID:e,TransactionID:t,RelatedEntityID:`premium_trial_${e}_${t}`},i=await this.ctx.api.premium.activateTrial(r);return i.ok&&(i.data.Premium&&this.ctx.data.user.applyPremium(i.data.Premium),this.ctx.emitter.emit("premium:trialActivated",i.data)),i}async purchaseItemOrCurrency(e,t,r="Default",i=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:r,Count:i,RelatedEntityID:`premium_purchase_${e}_${t}`},a=await this.ctx.api.premium.purchaseItemOrCurrency(s);if(a.ok){let p=a.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 a}async purchaseRealMoney(e,t,r,i,s,a,p,D){if(!e||!t)return n("client","PremiumID and TransactionID are required.");if(!i||!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:r,ProductID:i,ReceiptData:s,PurchaseToken:a,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 Zc="Character",Tr=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(Zc,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 r=t.data.Characters??{};this.ctx.data.user.applyCharacter(r),this.ctx.emitter.emit("character:userCharactersLoaded",r);}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 r={...this.ctx.buildAuthedBaseRequest(),CharacterID:e,SelectedOptionID:t?.selectedOptionID,Payment:t?.payment,RelatedEntityID:`unlock_char_${e}_${d()}`},i=await this.ctx.api.character.unlockCharacter(r);if(i.ok){let s=i.data;this.ctx.data.user.patchCharacter(s.CharacterID,a=>{a.StatLevels??={},a.Equipment??={},s.Power!=null&&(a.Power=s.Power),a.UpdatedAt=s.ServerTimeUtc;}),this.ctx.data.user.applyResourceOperation(s.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("character:unlocked",s);}return i}async upgradeStatLevel(e,t,r){if(!e||!t)return n("client","CharacterID and StatID are required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let i={...this.ctx.buildAuthedBaseRequest(),CharacterID:e,StatID:t,RelatedEntityID:`upgrade_stat_${e}_${t}_${d()}`,...r?.levels!=null?{Levels:r.levels}:{},...r?.targetLevel!=null?{TargetLevel:r.targetLevel}:{}},s=await this.ctx.api.character.upgradeStatLevel(i);if(s.ok){let a=s.data;this.ctx.data.user.patchCharacter(a.CharacterID,p=>{p.StatLevels??={},p.StatLevels[a.StatID]=a.StatLevel,a.Power!=null&&(p.Power=a.Power),p.UpdatedAt=a.ServerTimeUtc;}),this.ctx.data.user.applyResourceOperation(a.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("character:statLevelUpgraded",a);}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 r={...this.ctx.buildAuthedBaseRequest(),CharacterID:e,RelatedEntityID:`upgrade_char_${e}_${d()}`,...t?.levels!=null?{Levels:t.levels}:{},...t?.targetLevel!=null?{TargetLevel:t.targetLevel}:{}},i=await this.ctx.api.character.upgradeCharacterLevel(r);if(i.ok){let s=i.data;this.ctx.data.user.patchCharacter(s.CharacterID,a=>{a.Level=s.NewLevel,s.Power!=null&&(a.Power=s.Power),a.UpdatedAt=s.ServerTimeUtc,s.NewLevel===1&&(a.StatLevels??={},a.Equipment??={});}),this.ctx.data.user.applyResourceOperation(s.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("character:levelUpgraded",s);}return i}async equipItems(e,t){if(!e)return n("client","CharacterID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let r={...this.ctx.buildAuthedBaseRequest(),CharacterID:e,ItemsToEquip:t},i=await this.ctx.api.character.equipItems(r);return i.ok&&(this.applyEquipChangesLocally(e,i.data),this.ctx.emitter.emit("character:itemsEquipped",i.data)),i}async unequipItems(e,t){if(!e)return n("client","CharacterID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let r={...this.ctx.buildAuthedBaseRequest(),CharacterID:e,UnequipSlotIDs:t},i=await this.ctx.api.character.unequipItems(r);if(i.ok){let s=i.data;this.applyUnequipChangesLocally(e,s),this.ctx.emitter.emit("character:itemsUnequipped",{characterID:e,slotIDs:s.ClearedSlotIDs??[],power:s.Power??null});}return i}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},r=await this.ctx.api.character.unlockCharactersBatch(t);return r.ok&&(this.applyBatchResults(r.data,i=>{this.ctx.data.user.patchCharacter(i.CharacterID,s=>{s.StatLevels??={},s.Equipment??={},i.Power!=null&&(s.Power=i.Power),s.UpdatedAt=i.ServerTimeUtc;});}),this.ctx.emitter.emit("character:charactersUnlocked",r.data)),r}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},r=await this.ctx.api.character.upgradeCharacterLevelsBatch(t);return r.ok&&(this.applyBatchResults(r.data,i=>{this.ctx.data.user.patchCharacter(i.CharacterID,s=>{s.Level=i.NewLevel,i.Power!=null&&(s.Power=i.Power),s.UpdatedAt=i.ServerTimeUtc,i.NewLevel===1&&(s.StatLevels??={},s.Equipment??={});});}),this.ctx.emitter.emit("character:levelsUpgraded",r.data)),r}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},r=await this.ctx.api.character.upgradeStatLevelsBatch(t);return r.ok&&(this.applyBatchResults(r.data,i=>{this.ctx.data.user.patchCharacter(i.CharacterID,s=>{s.StatLevels??={},s.StatLevels[i.StatID]=i.StatLevel,i.Power!=null&&(s.Power=i.Power),s.UpdatedAt=i.ServerTimeUtc;});}),this.ctx.emitter.emit("character:statLevelsUpgraded",r.data)),r}applyBatchResults(e,t){e.Resources&&this.ctx.data.user.applyResourceOperation(e.Resources,this.ctx.data.config.itemDefinitions);for(let r of e.Items??[])!r.Success||!r.Data||t(r.Data);}applyInventoryDelta(e){this.ctx.data.user.applyInventoryDelta(e);}applyEquipChangesLocally(e,t){let r=this.ctx.data.user;this.applyInventoryDelta(t.Inventory);for(let[i,s]of Object.entries(t.Equipment??{}))r.patchCharacterEquipment(e,i,s);r.patchCharacter(e,i=>{t.Power!=null&&(i.Power=t.Power),i.UpdatedAt=t.ServerTimeUtc;});}applyUnequipChangesLocally(e,t){let r=t.ClearedSlotIDs??[];if(r.length===0&&t.Power==null)return;let i=this.ctx.data.user;this.applyInventoryDelta(t.Inventory);for(let s of r)i.patchCharacterEquipment(e,s,null);i.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[r,i]of Object.entries(e.Characters??{})){for(let s of i.ClearedSlotIDs??[])t.patchCharacterEquipment(r,s,null);t.patchCharacter(r,s=>{i.Power!=null&&(s.Power=i.Power),s.UpdatedAt=e.ServerTimeUtc;});}}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var Jc="Match",vr=class{constructor(e){this.ctx=e;}ctx;async createMatch(e,t,r,i,s,a){let p=this.ctx.auth.context;if(!p)return n("unauthorized","Not logged in.");let D={...this.ctx.buildAuthedBaseRequest(),Entry:e,RuleID:t,CharacterID:r,BattleStrategy:i,TargetUserID:s,SelectedOptionID:a,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 r={...this.ctx.buildAuthedBaseRequest(),MatchID:e,TargetUserID:t.targetUserID,ClearTargetUser:t.clearTargetUser,RuleID:t.ruleID,CharacterID:t.characterID,BattleStrategy:t.battleStrategy},i=await this.ctx.api.match.updateMatch(r);return i.ok&&this.ctx.emitter.emit("match:updated",i.data),i}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},r=await this.ctx.api.match.cancelMatch(t);return r.ok&&(this.ctx.data.user.applyResourceOperation(r.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("match:cancelled",r.data)),r}async instantBattle(e,t,r,i){let s=this.ctx.auth.context;if(!s)return n("unauthorized","Not logged in.");let a={...this.ctx.buildAuthedBaseRequest(),MatchID:e,RuleID:t,CharacterID:r,BattleStrategy:i,RelatedEntityID:`pvp_battle_${e}_${d()}`},p=await this.ctx.api.match.instantBattle(a);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},r=await this.ctx.api.match.saveStrategy(t);return r.ok&&(this.ctx.data.user.patchMatchStrategy(e),this.ctx.emitter.emit("match:strategySaved",e)),r}async getMyMatches(e=0,t=20,r){let i=this.baseRequest();if(!i)return n("unauthorized","Not logged in.");i.Page=e,i.PageSize=t,i.Statuses=r;let s=await this.ctx.api.match.getMyMatches(i);return s.ok&&this.ctx.emitter.emit("match:myMatchesLoaded",s.data),s}async getAvailableMatches(e=0,t=20,r=false){let i=this.baseRequest();if(!i)return n("unauthorized","Not logged in.");i.Page=e,i.PageSize=t,i.OnlyPublic=r;let s=await this.ctx.api.match.getAvailableMatches(i);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(Jc,t.data),this.ctx.emitter.emit("match:definitionsLoaded",t.data)),t}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var Yc="Craft",Pr=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(Yc,t.data.CraftDefinitions),this.ctx.emitter.emit("craft:definitionsLoaded",t.data.CraftDefinitions)),t}async craft(e,t,r=1,i){if(!e)return n("client","CraftID is required.");let s=this.ctx.auth.context;if(!s)return n("unauthorized","Not logged in.");let a={...this.ctx.buildAuthedBaseRequest(),CraftID:e,InputItemIDs:t,Count:r,SelectedOptionID:i,RelatedEntityID:`craft_${e}_${s.userID}_${d()}`},p=await this.ctx.api.craft.craft(a);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 Xc="Collection",Ir=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(Xc,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,r=1,i){let s=this.ctx.auth.context;if(!s)return n("unauthorized","Not logged in.");let a={...this.ctx.buildAuthedBaseRequest(),CollectionID:e,PackTypeID:t,Count:r,SelectedOptionID:i?.selectedOptionID,Payment:i?.payment,RelatedEntityID:`open_pack_${e}_${t}_${s.userID}_${d()}`},p=await this.ctx.api.collection.openPack(a);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,r=1){let i=this.ctx.auth.context;if(!i)return n("unauthorized","Not logged in.");let s={...this.ctx.buildAuthedBaseRequest(),CollectionID:e,CollectionChestID:t,Count:r,RelatedEntityID:`open_chest_${e}_${t}_${i.userID}_${d()}`},a=await this.ctx.api.collection.openCollectionChest(s);return a.ok&&(this.ctx.data.user.applyResourceOperation(a.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("collection:chestOpened",a.data)),a}async useCollectibleJoker(e,t){let r=this.ctx.auth.context;if(!r)return n("unauthorized","Not logged in.");let i={...this.ctx.buildAuthedBaseRequest(),CollectionID:e,CollectibleID:t,CollectibleIsSpecial:false,RelatedEntityID:`use_joker_${e}_${t}_${r.userID}_${d()}`},s=await this.ctx.api.collection.useCollectibleJoker(i);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 r=this.ctx.auth.context;if(!r)return n("unauthorized","Not logged in.");let i={...this.ctx.buildAuthedBaseRequest(),CollectionID:e,SetID:t,RelatedEntityID:`claim_set_${e}_${t}_${r.userID}_${d()}`},s=await this.ctx.api.collection.claimSetReward(i);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},r=await this.ctx.api.collection.claimSetRewardsBatch(t);if(r.ok){let i=false;for(let s of r.data)!i&&s.Success&&s.Data?.Resources&&(this.ctx.data.user.applyResourceOperation(s.Data.Resources,this.ctx.data.config.itemDefinitions),i=true);this.ctx.emitter.emit("collection:setRewardsClaimedBatch",r.data);}return r}async claimGrandPrize(e){let t=this.ctx.auth.context;if(!t)return n("unauthorized","Not logged in.");let r={...this.ctx.buildAuthedBaseRequest(),CollectionID:e,RelatedEntityID:`grand_prize_${e}_${t.userID}_${d()}`},i=await this.ctx.api.collection.claimGrandPrize(r);return i.ok&&(this.ctx.data.user.applyResourceOperation(i.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("collection:grandPrizeClaimed",i.data)),i}async sendTradeOffer(e,t,r,i,s,a=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:r,ReceiverUserID:i,RequestedCollectibleID:s,RequestedCollectibleIsSpecial:a,RelatedEntityID:`trade_send_${p.userID}_${i}_${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()}`},r=await this.ctx.api.collection.cancelTradeOffer(t);return r.ok&&this.ctx.emitter.emit("collection:tradeOfferCancelled",r.data),r}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()}`},r=await this.ctx.api.collection.acceptTradeOffer(t);return r.ok&&this.ctx.emitter.emit("collection:tradeOfferAccepted",r.data),r}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()}`},r=await this.ctx.api.collection.declineTradeOffer(t);return r.ok&&this.ctx.emitter.emit("collection:tradeOfferDeclined",r.data),r}async getMyTradeOffers(e){let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.CollectionID=e;let r=await this.ctx.api.collection.getMyTradeOffers(t);return r.ok&&this.ctx.emitter.emit("collection:myTradeOffersLoaded",r.data),r}async getIncomingTradeOffers(e){let t=this.baseRequest();if(!t)return n("unauthorized","Not logged in.");t.CollectionID=e;let r=await this.ctx.api.collection.getIncomingTradeOffers(t);return r.ok&&this.ctx.emitter.emit("collection:incomingTradeOffersLoaded",r.data),r}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var ep="CoopEvent",kr=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(ep,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 r=await this.ctx.api.coopEvent.getActiveEvent(t);return r.ok&&this.ctx.emitter.emit("coopEvent:activeEventLoaded",r.data),r}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 r=await this.ctx.api.coopEvent.getGroupState(t);return r.ok&&this.ctx.emitter.emit("coopEvent:groupStateLoaded",r.data),r}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},r=await this.ctx.api.coopEvent.joinOrCreateGroup(t);if(r.ok){let i=r.data.Group;i&&this.ctx.data.user.patchCoopEventActiveGroup(i.GroupID??null,i.CoopEventID??null,-1),this.ctx.emitter.emit("coopEvent:groupJoined",r.data);}return r}async spin(e,t,r=1,i){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:r,SelectedOptionID:i,RelatedEntityID:d()},a=await this.ctx.api.coopEvent.spin(s);return a.ok&&(this.ctx.data.user.applyResourceOperation(a.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("coopEvent:spinCompleted",a.data)),a}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},r=await this.ctx.api.coopEvent.claimObjectReward(t);return r.ok&&(this.ctx.data.user.applyResourceOperation(r.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("coopEvent:objectRewardClaimed",r.data)),r}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},r=await this.ctx.api.coopEvent.claimGrandPrize(t);return r.ok&&(this.ctx.data.user.applyResourceOperation(r.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.data.user.patchCoopEventActiveGroup(null,null,-1),this.ctx.emitter.emit("coopEvent:grandPrizeClaimed",r.data)),r}async leaveGroup(e){if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),GroupID:e},r=await this.ctx.api.coopEvent.leaveGroup(t);return r.ok&&(this.ctx.data.user.patchCoopEventActiveGroup(null,null,-1),this.ctx.emitter.emit("coopEvent:groupLeft",r.data)),r}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var tp="DealOffer",Mr=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(tp,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()}`},r=await this.ctx.api.dealOffer.dismissDeal(t);return r.ok&&(this.ctx.data.user.applyResourceOperation(r.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("dealOffer:dealDismissed",r.data)),r}async executeNode(e,t,r,i){if(!e||!t)return n("client","SlotID and NodeID are required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let s=r&&r.trim().length>0?r.trim():void 0,a={...this.ctx.buildAuthedBaseRequest(),SlotID:e,NodeID:t,SelectedOptionID:i?.selectedOptionID,Payment:i?.payment,RelatedEntityID:s??`deal_exec_${e}_${t}_${d()}`},p=await this.ctx.api.dealOffer.executeNode(a);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()}`},r=await this.ctx.api.dealOffer.recordShow(t);return r.ok&&(this.ctx.data.user.applyResourceOperation(r.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("dealOffer:showRecorded",r.data)),r}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 r={...this.ctx.buildAuthedBaseRequest(),SlotID:e,MilestoneID:t,RelatedEntityID:`deal_milestone_${e}_${t}_${d()}`},i=await this.ctx.api.dealOffer.claimMilestone(r);return i.ok&&(this.ctx.data.user.applyResourceOperation(i.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("dealOffer:milestoneClaimed",i.data)),i}async claimMilestonesBatch(e,t){if(!e)return n("client","SlotID is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let r=[...new Set(t.map(a=>a.trim()).filter(a=>a.length>0))],i={...this.ctx.buildAuthedBaseRequest(),SlotID:e,MilestoneIDs:r,RelatedEntityID:`deal_milestone_batch_${e}_${d()}`},s=await this.ctx.api.dealOffer.claimMilestonesBatch(i);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 rp="Referral",wr=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(rp,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 r=this.ctx.auth.context;if(!r)return n("unauthorized","Not logged in.");let i={...this.ctx.buildAuthedBaseRequest(),ReferralCode:t,RelatedEntityID:`referral_activation_${r.userID}`},s=await this.ctx.api.referral.activateReferralCode(i);if(s.ok){let a=s.data;a.ReferralCode&&this.ctx.data.user.patchReferralSubscription(a.ReferralCode),this.ctx.data.user.applyResourceOperation(a.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("referral:codeActivated",a);}return s}async claimInviteReward(e){let t=e.trim();if(!t)return n("client","InviteRewardID is required.");let r=this.ctx.auth.context;if(!r)return n("unauthorized","Not logged in.");let i={...this.ctx.buildAuthedBaseRequest(),InviteRewardID:t,RelatedEntityID:`referral_invite_${t}_${r.userID}`},s=await this.ctx.api.referral.claimInviteReward(i);if(s.ok){let a=s.data;a.RewardID&&this.ctx.data.user.patchReferralInviteRewardClaimed(a.RewardID),this.ctx.data.user.applyResourceOperation(a.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("referral:inviteRewardClaimed",a);}return s}async claimInviteRewardsBatch(e){let t=(e??[]).map(a=>a?.trim()).filter(Boolean);if(t.length===0)return n("client","InviteRewardIDs is required.");let r=this.ctx.auth.context;if(!r)return n("unauthorized","Not logged in.");let i={...this.ctx.buildAuthedBaseRequest(),InviteRewardIDs:t,RelatedEntityID:`referral_invite_batch_${t.join("_")}_${r.userID}`},s=await this.ctx.api.referral.claimInviteRewardsBatch(i);if(s.ok){let a=s.data;for(let p of a.Items??[])p.Success&&p.Id&&this.ctx.data.user.patchReferralInviteRewardClaimed(p.Id);this.ctx.data.user.applyResourceOperation(a.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("referral:inviteRewardsBatchClaimed",a);}return s}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var Ar=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 r=await this.ctx.api.social.getRecommendedFriends(t);return r.ok&&this.ctx.emitter.emit("social:recommendedFriendsLoaded",r.data),r}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},r=await this.ctx.api.social.sendFriendRequest(t);return r.ok&&(this.ctx.data.user.patchSocialAddOutgoingRequest(e),this.ctx.emitter.emit("social:friendRequestSent",r.data)),r}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},r=await this.ctx.api.social.acceptFriendRequest(t);return r.ok&&(this.ctx.data.user.patchSocialAcceptFriend(e),this.ctx.emitter.emit("social:friendRequestAccepted",r.data)),r}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},r=await this.ctx.api.social.declineFriendRequest(t);return r.ok&&(this.ctx.data.user.patchSocialRemoveIncomingRequest(e),this.ctx.emitter.emit("social:friendRequestDeclined",r.data)),r}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},r=await this.ctx.api.social.removeFriend(t);return r.ok&&(this.ctx.data.user.patchSocialRemoveFriend(e),this.ctx.emitter.emit("social:friendRemoved",r.data)),r}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 ip="TimedBoost";function sp(o){return o.length>0&&!o.includes(".")&&!o.includes("$")}var Or=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(ip,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 r=e.trim();if(!sp(r))return n("client",'BoostID is required and must not contain "." or "$".');if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let i={...this.ctx.buildAuthedBaseRequest(),BoostID:r,SelectedOptionID:t?.selectedOptionID,Payment:t?.payment,RelatedEntityID:`timed_boost_activate_${r}_${d()}`},s=await this.ctx.api.timedBoost.activate(i);if(s.ok){let a=s.data;if(a.ActivatedBoost){let p=a.StackingPolicy??"Replace";this.ctx.data.user.patchActiveTimedBoost(a.ActivatedBoost,p);}this.ctx.data.user.applyResourceOperation(a.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("timedBoost:activated",a);}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 it={Private:"Private",Public:"Public",ReadOnly:"ReadOnly",Internal:"Internal"},np={Client:"Client",Server:"Server",System:"System"},op=z.enum(["Client","Server","System"]),ap=z.object({Value:z.string().nullish(),UpdatedAt:u.nullish(),Version:z.number().nullish(),LastWriter:op.nullish(),ExpiresAt:u.nullish()}).passthrough(),Ur=z.record(z.string(),ap),eo=z.object({Version:z.number().nullish(),Private:Ur.nullish(),Public:Ur.nullish(),ReadOnly:Ur.nullish()}),Rs=z.object({UserID:z.string().nullish(),Version:z.number().nullish(),Public:Ur.nullish()}),ys=z.object({ServerTimeUtc:u.nullish(),Bucket:z.string().nullish(),KeyID:z.string(),Version:z.number().nullish(),ExpiresAt:u.nullish()}),lp=z.object({Bucket:z.string().nullish(),KeyID:z.string(),Version:z.number().nullish(),ExpiresAt:u.nullish()}),to=z.object({ServerTimeUtc:u.nullish(),Results:z.array(lp).nullish()}),ro=z.object({ServerTimeUtc:u.nullish(),DeletedCount:z.number().nullish()}),io=z.object({Results:z.array(Rs).nullish(),NotFoundUserIDs:z.array(z.string()).nullish()}),up={String:"String",Int:"Int",Bool:"Bool",Json:"Json"},cp=z.enum(["String","Int","Bool","Json"]),pp=z.object({KeyID:z.string(),Bucket:z.string().nullish(),ValueType:cp.nullish(),MaxValueLengthBytes:z.number().nullish(),TtlSeconds:z.number().nullish(),DefaultValue:z.string().nullish(),Description:z.string().nullish()}).passthrough(),Br=z.object({Keys:z.record(z.string(),pp).nullish(),DefaultMaxValueLengthBytes:z.number().nullish(),DefaultTtlSeconds:z.number().nullish(),MaxKeysPerBucket:z.number().nullish(),MaxTotalSizeBytes:z.number().nullish(),RejectUnregisteredKeys:z.boolean().nullish()}).passthrough(),Qe={GetUserCustomDataDefinitions:"GetUserCustomDataDefinitions",GetMyUserCustomData:"GetMyUserCustomData",GetPublicUserCustomDataOf:"GetPublicUserCustomDataOf",SetPrivateData:"SetPrivateData",SetPublicData:"SetPublicData",DeleteKey:"DeleteKey",BatchSet:"BatchSet",BatchDelete:"BatchDelete",BatchGetPublicUserCustomDataOf:"BatchGetPublicUserCustomDataOf"};var dp="UserCustomData";function so(o){return o.length>0&&!o.includes(".")&&!o.includes("$")}var Lr=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(dp,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 r=this.baseRequest();if(!r)return n("unauthorized","Not logged in.");r.TargetUserID=t;let i=await this.ctx.api.userCustomData.getPublicUserCustomDataOf(r);return i.ok&&this.ctx.emitter.emit("userCustomData:publicDataLoaded",i.data),i}async setPrivateData(e,t){return this.setData(e,t,it.Private)}async setPublicData(e,t){return this.setData(e,t,it.Public)}async setData(e,t,r){let i=e.trim();if(!so(i))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:i,Value:t},p=await(r===it.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(r,D.KeyID,t,D.Version??0,D.ExpiresAt),this.ctx.emitter.emit(r===it.Private?"userCustomData:privateDataSet":"userCustomData:publicDataSet",D);}return p}async deleteKey(e,t){let r=e.trim();if(!so(r))return n("client",'KeyID is required and must not contain "." or "$".');if(t!==it.Private&&t!==it.Public)return n("client","Only Private or Public keys can be deleted.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let i={...this.ctx.buildAuthedBaseRequest(),KeyID:r,Bucket:t},s=await this.ctx.api.userCustomData.deleteKey(i);return s.ok&&(this.ctx.data.user.removeUserCustomDataKey(t,r),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},r=await this.ctx.api.userCustomData.batchSet(t);if(r.ok){for(let i of r.data.Results??[]){let s=i.Bucket??it.Private,a=e.find(p=>p.Bucket===s&&p.KeyID===i.KeyID);a&&this.ctx.data.user.patchUserCustomDataKey(s,i.KeyID,a.Value,i.Version??0,i.ExpiresAt);}this.ctx.emitter.emit("userCustomData:batchSet",r.data);}return r}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},r=await this.ctx.api.userCustomData.batchDelete(t);if(r.ok){for(let i of e)this.ctx.data.user.removeUserCustomDataKey(i.Bucket,i.KeyID.trim());this.ctx.emitter.emit("userCustomData:batchDeleted",r.data);}return r}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 r=await this.ctx.api.userCustomData.batchGetPublicUserCustomDataOf(t);return r.ok&&this.ctx.emitter.emit("userCustomData:batchPublicDataLoaded",r.data),r}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var hp="TitleCustomDataDefinitions",no=50;function mp(o){return o.length>0&&!o.includes(".")&&!o.includes("$")}function Cs(o){if(o.ExpiresAt==null)return false;let e=Date.parse(o.ExpiresAt);return !Number.isNaN(e)&&e<=Date.now()}function fp(o){let e={};for(let[t,r]of Object.entries(o))Cs(r)||(e[t]=r);return e}var qr=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(hp,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 r=await this.ctx.api.titleCustomData.getPublicTitleData(t);return r.ok&&this.absorb(r.data),r}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=>!mp(s)))return n("client",'KeyID must not contain "." or "$".');if(t.length>no)return n("client",`At most ${no} keys per call \u2014 request them in chunks.`);let r=this.baseRequest();if(!r)return n("unauthorized","Not logged in.");r.KeyIDs=t;let i=await this.ctx.api.titleCustomData.getPublicTitleDataKeys(r);return i.ok&&this.ctx.emitter.emit("titleCustomData:publicDataLoaded",i.data),i}getValue(e){let t=this.runtimeCache[e];if(t?.Value!=null&&!Cs(t))return t.Value;let r=this.staticCache[e];if(r?.Value!=null&&!Cs(r))return r.Value}get runtimeVersion(){return this.lastRuntimeVersion}staticCache={};absorb(e){e.Static&&(this.staticCache=e.Static),e.NotModified?(this.runtimeCache=fp(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 Er=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 gp=15,Rp="GameLoop",yp="BoardDefinition",Gr=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(Rp,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 r=await this.ctx.api.gameLoop.getBoardDefinition(t,e);return r.ok&&(this.ctx.data.config.patchSection(yp,r.data),this.ctx.emitter.emit("gameLoop:boardDefinitionLoaded",r.data)),r}async getBoardDefinitionForLevel(e,t=false){if(e<=0)return n("client","stageLevel must be > 0.");let r=this.baseRequest();if(!r)return n("unauthorized","Not logged in.");r.StageLevel=e;let i=await this.ctx.api.gameLoop.getBoardDefinitionForLevel(r,t);return i.ok&&this.ctx.emitter.emit("gameLoop:boardDefinitionForLevelLoaded",i.data),i}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 r={...this.ctx.buildAuthedBaseRequest(),RollMultiplier:e,RelatedEntityID:`roll_${t.userID}_${d()}`},i=await this.ctx.api.gameLoop.boardLoopRoll(r);if(i.ok){let s=i.data,a=Kn(new Date,gp);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:a}:s.SpecialModeOffer&&(p.Pending={Type:"SPECIAL",RollMultiplier:s.UsedMultiplier??1,ExpiresAtUtc:a,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 i}async boardLoopAttack(e=-1){let t=this.ctx.auth.context;if(!t)return n("unauthorized","Not logged in.");let r={...this.ctx.buildAuthedBaseRequest(),BuildingIndex:e,RelatedEntityID:`attack_${t.userID}_${d()}`},i=await this.ctx.api.gameLoop.boardLoopAttack(r);if(i.ok){let s=i.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 i}async boardLoopRaid(e,t){if(e<0||e>11)return n("client","digIndex must be between 0 and 11.");let r=this.ctx.auth.context;if(!r)return n("unauthorized","Not logged in.");let i={...this.ctx.buildAuthedBaseRequest(),DigIndex:e,RelatedEntityID:t??`raid_${r.userID}_${d()}`},s=await this.ctx.api.gameLoop.boardLoopRaid(i);if(s.ok){let a=s.data;a.Status==="CONTINUE"?this.ctx.data.user.patchBoardPendingRaidLayout(a.RaidLayout,a.OpenedIndex??-1):(this.ctx.data.user.clearBoardPending(),this.applyRaidResources(a)),this.ctx.emitter.emit("gameLoop:boardRaided",a);}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 r={...this.ctx.buildAuthedBaseRequest(),DigIndices:e,RelatedEntityID:`raidfast_${t.userID}_${d()}`},i=await this.ctx.api.gameLoop.boardLoopRaidFast(r);if(i.ok){let s=i.data;s.Status!=="CONTINUE"&&(this.ctx.data.user.clearBoardPending(),this.applyRaidResources(s)),this.ctx.emitter.emit("gameLoop:boardRaidedFast",s);}else await this.getUserBoardState();return i}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 r={...this.ctx.buildAuthedBaseRequest(),BuildingIndex:e,RelatedEntityID:`build_${t.userID}_${e}_${d()}`},i=await this.ctx.api.gameLoop.boardLoopBuild(r);if(i.ok){let s=i.data;s.StageComplete?this.ctx.data.user.patchBoardState(a=>{a.StageLevel=(a.StageLevel??1)+1,a.Position=0,a.Pending=null,a.BuildingStates=null;}):this.ctx.data.user.patchBoardBuilding(s.BuiltIndex,a=>{s.NewLevel!=null&&(a.Level=s.NewLevel),a.IsDamaged=false,s.MaxLevelRewardClaimed&&(a.MaxLevelRewardClaimed=true);}),s.Operation&&this.ctx.data.user.applyResourceOperation(s.Operation,this.itemDefs),this.ctx.emitter.emit("gameLoop:boardBuilt",s);}return i}async boardSpecialChoose(e,t){if(!e)return n("client","choiceID must not be empty.");let r=this.ctx.auth.context;if(!r)return n("unauthorized","Not logged in.");let i={...this.ctx.buildAuthedBaseRequest(),ChoiceID:e,SelectedOptionID:t,RelatedEntityID:`special_choose_${r.userID}_${d()}`},s=await this.ctx.api.gameLoop.boardSpecialChoose(i);if(s.ok){let a=s.data;a.Mode==="Instant"||a.Mode===0?this.ctx.data.user.clearBoardPending():this.ctx.data.user.patchBoardSpecialPending(D=>{D.ChoiceID=e,D.ChosenMode=a.Mode??"Timed",D.StartedAtUtc=a.StartedAtUtc??null,D.DurationSeconds=a.DurationSeconds??null,D.AdViewsUsed=0;}),a.Operation&&this.ctx.data.user.applyResourceOperation(a.Operation,this.itemDefs),this.ctx.emitter.emit("gameLoop:boardSpecialChose",a);}return s}async boardSpecialApplyMultiplier(e){let t=this.ctx.auth.context;if(!t)return n("unauthorized","Not logged in.");let r={...this.ctx.buildAuthedBaseRequest(),RelatedEntityID:e??`special_ad_${t.userID}_${d()}`},i=await this.ctx.api.gameLoop.boardSpecialApplyMultiplier(r);if(i.ok){let s=i.data;this.ctx.data.user.patchBoardSpecialPending(a=>{a.AdViewsUsed=s.AdViewsUsed??0,a.AccumulatedMultiplier=s.AccumulatedMultiplier??0;}),this.ctx.emitter.emit("gameLoop:boardSpecialApplyMultiplier",s);}return i}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()}`},r=await this.ctx.api.gameLoop.boardSpecialClaim(t);if(r.ok){let i=r.data;this.ctx.data.user.clearBoardPending(),i.Operation&&this.ctx.data.user.applyResourceOperation(i.Operation,this.itemDefs),this.ctx.emitter.emit("gameLoop:boardSpecialClaimed",i);}return r}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 r=t.data.Group;r?.GroupID&&this.ctx.data.user.applyCommunityChestUserState({ActiveGroupID:r.GroupID,ActiveRoundIndex:r.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 r={...this.ctx.buildAuthedBaseRequest(),MilestoneID:e,GroupID:t},i=await this.ctx.api.gameLoop.claimCommunityChestMilestone(r);return i.ok&&(i.data.Resources&&this.ctx.data.user.applyResourceOperation(i.data.Resources,this.itemDefs),this.ctx.emitter.emit("gameLoop:communityChestMilestoneClaimed",i.data)),i}async claimCommunityChestGrandPrize(e){if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),GroupID:e},r=await this.ctx.api.gameLoop.claimCommunityChestGrandPrize(t);return r.ok&&(r.data.Resources&&this.ctx.data.user.applyResourceOperation(r.data.Resources,this.itemDefs),this.ctx.emitter.emit("gameLoop:communityChestGrandPrizeClaimed",r.data)),r}async leaveCommunityChest(e){if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let t={...this.ctx.buildAuthedBaseRequest(),GroupID:e},r=await this.ctx.api.gameLoop.leaveCommunityChest(t);return r.ok&&(r.data.Success&&this.ctx.data.user.applyCommunityChestUserState({ActiveGroupID:void 0,ActiveRoundIndex:-1}),this.ctx.emitter.emit("gameLoop:communityChestLeft",r.data)),r}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 Nr=class{constructor(e){this.ctx=e;}ctx;async execute(e,t,r,i){let s=e.trim();if(!s)return n("client","FunctionName is required.");if(!this.ctx.auth.context)return n("unauthorized","Not logged in.");let a={...this.ctx.buildAuthedBaseRequest(),FunctionName:s,FunctionParameter:t,RevisionSelection:r,SpecificRevision:i},p=await this.ctx.api.cloudCode.execute(a);return p.ok&&this.ctx.emitter.emit("cloudCode:executed",p.data),p}};var oo=z.object({ServerTimeUtc:u,SourceType:Dt,SourceID:z.string(),TargetType:Dt,TargetID:z.string(),SourceSpent:M,FeeAmount:M,RateApplied:q,TargetCredited:M}),ao=z.object({ServerTimeUtc:u,SourceType:Dt,SourceID:z.string(),TargetType:Dt,TargetID:z.string(),SourceSpent:q,FeeAmount:q,RateApplied:q,TargetCredited:q}),jr={Convert:"Convert",CryptoConvert:"CryptoConvert"},Cp={Active:"Active",Hidden:"Hidden",Deprecated:"Deprecated",Maintenance:"Maintenance"},lo=z.enum(["Active","Hidden","Deprecated","Maintenance"]),Sp={Automatic:"Automatic",Manual:"Manual"},xp=z.enum(["Automatic","Manual"]),Dp=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(),bp=z.object({Rate:z.number().nullish(),Max:z.number().nullish(),Period:z.number().nullish()}).passthrough(),zp=z.object({IsTradable:z.boolean().nullish(),IsPurchasable:z.boolean().nullish(),IsRefundable:z.boolean().nullish()}).passthrough(),Tp=z.object({TargetCurrencyType:Dt.nullish(),TargetCurrencyID:z.string(),Rate:q.nullish(),MinAmount:z.number().nullish(),MaxAmount:z.number().nullish(),DailyLimit:z.number().nullish()}).passthrough(),uo=z.object({Enabled:z.boolean().nullish(),RateMode:xp.nullish(),FeePercent:q.nullish(),Targets:z.array(Tp).nullish()}).passthrough(),co=z.object({CreatedAt:u.nullish(),UpdatedAt:u.nullish()}).passthrough(),vp=z.object({CurrencyID:z.string(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Economy:Dp.nullish(),Recharge:bp.nullish(),Conversion:uo.nullish(),Permissions:zp.nullish(),Audit:co.nullish(),Status:lo.nullish()}).passthrough(),Pp=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(),Ip=z.object({DailyWithdrawUsd:q.nullish(),MonthlyWithdrawUsd:q.nullish(),KycRequiredAboveUsd:q.nullish()}).passthrough(),kp=z.object({DepositsEnabled:z.boolean().nullish(),WithdrawalsEnabled:z.boolean().nullish(),SpendableInGame:z.boolean().nullish(),ConvertibleToVirtual:z.boolean().nullish()}).passthrough(),Ss=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(Pp).nullish(),Limits:Ip.nullish(),Permissions:kp.nullish(),Conversion:uo.nullish(),Audit:co.nullish(),Status:lo.nullish()}).passthrough(),Fr=z.object({VirtualCurrencies:z.record(z.string(),vp).nullish(),CryptoCurrencies:z.record(z.string(),Ss).nullish()}).passthrough();var po=z.object({OptionID:z.string().nullish(),Name:z.string().nullish(),Cost:Lt.nullish(),AllowedPlatforms:z.array(Wt).nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),J=z.record(z.string(),po),Mp=z.object({Store:Qt,Receipt:z.string(),Signature:z.string().nullish()}).passthrough();var ho=z.object({CatalogID:z.string().nullish(),ItemID:z.string().nullish(),ItemInstanceID:z.string().nullish(),EquippedAt:u.nullish()}),xs=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(),ho).nullish(),UpdatedAt:u.nullish()}).passthrough(),wp=z.object({CharacterID:z.string().nullish(),SlotID:z.string().nullish()}).passthrough(),Ap=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:wp.nullish(),CustomData:z.string().nullish()}).passthrough().transform(o=>o),pt=z.object({ChangedInstances:z.record(z.string(),Ap).nullish(),RemovedInstanceIDs:z.array(z.string()).nullish()}),mo=z.object({Characters:z.record(z.string(),xs).nullish()}),Ds=z.object({ServerTimeUtc:u,CharacterID:z.string(),StatID:z.string(),StatLevel:z.number(),Power:z.number().nullish(),Resources:b.nullish()}),bs=z.object({ServerTimeUtc:u,CharacterID:z.string(),NewLevel:z.number(),Power:z.number().nullish(),Resources:b.nullish()}),fo=z.object({ServerTimeUtc:u,CharacterID:z.string(),Equipment:z.record(z.string(),ho).nullish(),ReplacedInstanceIDs:z.array(z.string()).nullish(),Power:z.number().nullish(),Inventory:pt.nullish()}),go=z.object({ServerTimeUtc:u,CharacterID:z.string(),ClearedSlotIDs:z.array(z.string()).nullish(),Power:z.number().nullish(),Inventory:pt.nullish()}),Op=z.object({ClearedSlotIDs:z.array(z.string()).nullish(),Power:z.number().nullish()}),Ro=z.object({ServerTimeUtc:u,Characters:z.record(z.string(),Op).nullish(),Inventory:pt.nullish()}),zs=z.object({ServerTimeUtc:u,CharacterID:z.string(),Power:z.number().nullish(),Resources:b.nullish()}),yo=Je(zs),Co=Je(bs),So=Je(Ds),xo=z.object({RequiredStatID:z.string(),RequiredLevel:z.number()}).passthrough(),Do=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:J.nullish(),CostCurve:xe.nullish(),BaseStatValue:z.number().nullish(),ValueCurve:xe.nullish(),RankCurve:xe.nullish(),Requirements:z.array(xo).nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),Up=z.object({SlotID:z.string(),MinCharacterLevel:z.number().nullish(),StatRequirements:z.array(xo).nullish(),AllowedRarityIDs:z.array(z.string()).nullish(),AllowedItemTags:z.array(z.string()).nullish(),MinItemLevel:z.number().nullish(),MaxItemLevel:z.number().nullish()}).passthrough(),bo=z.object({Slots:z.record(z.string(),Up).nullish()}).passthrough(),Bp=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(),Lp=z.object({ClassID:z.string().nullish(),RarityID:z.string().nullish(),Tags:z.array(z.string()).nullish()}).passthrough(),qp=z.object({UnlockedByDefault:z.boolean().nullish(),PriceOptions:J.nullish()}).passthrough(),Ep=z.object({Stats:Y.nullish(),Levels:Y.nullish(),Equipment:Y.nullish()}).passthrough(),zo=z.object({MaxRank:z.number().nullish(),FirstPaidRank:z.number().nullish(),PriceOptions:J.nullish(),CostCurve:xe.nullish()}).passthrough(),Gp=z.object({CharacterID:z.string(),Identity:Bp.nullish(),Classification:Lp.nullish(),Unlock:qp.nullish(),Presets:Ep.nullish(),Equipment:bo.nullish(),Stats:z.record(z.string(),Do).nullish(),RankLadder:zo.nullish(),RankStatCurve:xe.nullish(),StatMaxLevelCurve:xe.nullish()}).passthrough(),Np=z.object({Stats:z.record(z.string(),Do).nullish()}).passthrough(),jp=z.object({RankLadder:zo.nullish()}).passthrough(),Fp=z.object({Equipment:bo.nullish()}).passthrough(),Vp=z.object({Stats:z.record(z.string(),Np).nullish(),Levels:z.record(z.string(),jp).nullish(),Equipment:z.record(z.string(),Fp).nullish()}).passthrough(),Vr=z.object({Definitions:z.record(z.string(),Gp).nullish(),Presets:Vp.nullish()}).passthrough(),Ae={GetCharacterDefinitions:"GetCharacterDefinitions",GetUserCharacters:"GetUserCharacters",UnlockCharacter:"UnlockCharacter",UpgradeStatLevel:"UpgradeStatLevel",UpgradeCharacterLevel:"UpgradeCharacterLevel",EquipItems:"EquipItems",UnequipItems:"UnequipItems",UnequipAllCharacters:"UnequipAllCharacters",UnlockCharactersBatch:"UnlockCharactersBatch",UpgradeCharacterLevelsBatch:"UpgradeCharacterLevelsBatch",UpgradeStatLevelsBatch:"UpgradeStatLevelsBatch"};var _p={EVM:"EVM",Solana:"Solana"},Wp=z.enum(["EVM","Solana"]),Qp={AutoLinkedFromTransaction:"AutoLinkedFromTransaction",SignatureVerified:"SignatureVerified",ManuallyLinked:"ManuallyLinked"},Kp=z.enum(["AutoLinkedFromTransaction","SignatureVerified","ManuallyLinked"]),Hp={Token:"Token",Nft:"Nft"},To=z.enum(["Token","Nft"]),$p={NotRequested:"NotRequested",Pending:"Pending",Verified:"Verified",Rejected:"Rejected",Expired:"Expired"},Zp=z.enum(["NotRequested","Pending","Verified","Rejected","Expired"]),Jp={None:"None",Tier1:"Tier1",Tier2:"Tier2",Tier3:"Tier3"},Yp=z.enum(["None","Tier1","Tier2","Tier3"]),Xp={Pending:"Pending",Completed:"Completed",Failed:"Failed",Expired:"Expired",Abandoned:"Abandoned"},Ts=z.enum(["Pending","Completed","Failed","Expired","Abandoned"]),vo={GameTopUp:"game_topup",CommunityReward:"community_reward"};function _r(o){let e=o?.trim();return e||vo.GameTopUp}var ed={UsersCryptoWallet:"UsersCryptoWallet",Game:"Game"},Po=z.enum(["UsersCryptoWallet","Game"]),td=z.object({ContractAddress:z.string().nullish(),ItemCatalogID:z.string().nullish(),DisplayName:z.string().nullish(),DepositsEnabled:z.boolean().nullish(),WithdrawalsEnabled:z.boolean().nullish()}).passthrough(),Io=z.object({Ios:z.boolean().nullish(),Android:z.boolean().nullish(),Web:z.boolean().nullish()}).passthrough(),rd=z.object({NetworkID:z.string().nullish(),DisplayName:z.string().nullish(),Type:Wp.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:Io.nullish(),NftCollections:z.array(td).nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),id=z.object({DepositsEnabled:z.boolean().nullish(),WithdrawalsEnabled:z.boolean().nullish(),NftDepositsEnabled:z.boolean().nullish(),NftWithdrawalsEnabled:z.boolean().nullish(),PlatformOverrides:Io.nullish()}).passthrough(),sd=z.object({MinAccountAgeDays:z.number().nullish(),MultiAccountCheckEnabled:z.boolean().nullish(),BanOnSharedWithdrawalAddress:z.boolean().nullish(),PendingWithdrawalTtlHours:z.number().nullish()}).passthrough();var nd=z.enum(["OnChain","Combined"]),od=z.object({Enabled:z.boolean().nullish(),NetworkID:z.string().nullish(),CurrencyID:z.string().nullish(),MinBalance:q.nullish(),BalanceSource:nd.nullish(),DenyMessage:z.string().nullish()}).passthrough(),ad=z.object({Enabled:z.boolean().nullish(),TokenGates:z.array(od).nullish(),WalletConnectProjectId:z.string().nullish()}).passthrough(),vs=z.object({SystemState:id.nullish(),Networks:z.record(z.string(),rd).nullish(),AccountSafety:sd.nullish(),WalletLogin:ad.nullish()}).passthrough(),ld=z.object({NetworkID:z.string().nullish(),Address:z.string().nullish(),LinkedAt:u.nullish(),LastUsedAt:u.nullish(),LinkType:Kp.nullish(),IsSignatureVerified:z.boolean().nullish()}).passthrough(),ko=z.object({TitleTransactionID:z.string().nullish(),Type:To.nullish(),NetworkID:z.string().nullish(),AssetID:z.string().nullish(),Amount:q.nullish(),CreatedAt:u.nullish(),ExpiresAt:u.nullish()}).passthrough(),ud=z.object({Status:Zp.nullish(),Tier:Yp.nullish(),VerifiedAt:u.nullish(),ExpiresAt:u.nullish(),RejectedAt:u.nullish(),ProviderReference:z.string().nullish(),RejectionReason:z.string().nullish()}).passthrough(),cd=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(),pd=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(),cd).nullish()}).passthrough(),dd=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(),hd=z.object({TotalDeposits:z.number().nullish(),TotalWithdrawals:z.number().nullish(),FailedWithdrawals:z.number().nullish(),RejectedDeposits:z.number().nullish(),PerCollection:z.record(z.string(),dd).nullish()}).passthrough(),md=z.object({Tokens:pd.nullish(),Nfts:hd.nullish()}).passthrough(),fd=z.object({CurrencyID:z.string().nullish(),Balance:q.nullish(),MinBalance:q.nullish()}).passthrough(),gd=z.object({NetworkID:z.string().nullish(),Address:z.string().nullish(),CheckedAt:u.nullish(),LoggedInAt:u.nullish(),GatePassed:z.boolean().nullish(),GatedBalances:z.array(fd).nullish()}).passthrough(),Rd=z.object({Version:z.number().nullish(),Stats:md.nullish(),LinkedWallets:z.record(z.string(),ld).nullish(),LastWalletLogin:gd.nullish(),PendingWithdrawals:z.array(ko).nullish(),Kyc:ud.nullish(),FirstActivityAt:u.nullish(),LastActivityAt:u.nullish(),IsFlagged:z.boolean().nullish(),FlagReason:z.string().nullish()}).passthrough(),yd=z.object({CurrencyID:z.string(),AmountDelta:q,FrozenDelta:q,UpdatedAt:u}).passthrough(),Wr=z.object({CryptoBalances:z.record(z.string(),yd).nullish(),PendingAdded:ko.nullish(),PendingRemovedIDs:z.array(z.string()).nullish()}).passthrough(),Cd=z.object({Amount:q,Frozen:q,CreatedAt:u.nullish(),UpdatedAt:u.nullish()}).passthrough().transform(o=>o),Sd=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:Po.nullish(),From:z.string().nullish(),To:z.string().nullish(),Amount:q.nullish(),Status:Ts.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(),xd=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:Po.nullish(),From:z.string().nullish(),To:z.string().nullish(),Amount:q.nullish(),Status:Ts.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(),Mo=z.object({To:z.string().nullish(),Amount:z.union([z.string(),z.number()]).nullish()}).passthrough(),Ps=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(Mo).nullish(),Signature:z.string().nullish()}).passthrough(),Is=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(Mo).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(),wo=z.object({Blockchain:vs.nullish(),CryptoCurrencies:z.record(z.string(),Ss).nullish()}).passthrough(),Ao=z.object({State:Rd.nullish(),CryptoBalances:z.record(z.string(),Cd).nullish()}).passthrough(),Oo=z.object({ServerTimeUtc:u.nullish(),TransactionHash:z.string().nullish(),NetworkID:z.string().nullish(),CurrencyID:z.string().nullish(),AmountNative:q.nullish(),AmountUsd:q.nullish(),StateDelta:Wr.nullish()}).passthrough(),Uo=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:pt.nullish()}).passthrough(),Bo=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:Ps.nullish(),SolanaSignature:Is.nullish(),StateDelta:Wr.nullish()}).passthrough(),Lo=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:Ps.nullish(),SolanaSignature:Is.nullish(),StateDelta:Wr.nullish(),Inventory:pt.nullish()}).passthrough(),qo=z.object({TokenTransactions:z.array(Sd).nullish(),NFTTransactions:z.array(xd).nullish()}).passthrough(),ks=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(),Eo=z.object({TitleTransactionID:z.string().nullish(),Kind:To.nullish(),EvmSignature:Ps.nullish(),SolanaSignature:Is.nullish()}).passthrough(),Go=z.object({TitleTransactionID:z.string().nullish(),OnChainTxHash:z.string().nullish(),Status:Ts.nullish(),StateDelta:Wr.nullish()}).passthrough(),Oe={GetDefinitions:"GetDefinitions",GetUserState:"GetUserState",DepositToken:"DepositToken",DepositNFT:"DepositNFT",RequestTokenWithdrawal:"RequestTokenWithdrawal",RequestNFTWithdrawal:"RequestNFTWithdrawal",GetTransactionHistory:"GetTransactionHistory",RetryWithdrawal:"RetryWithdrawal",ConfirmWithdrawal:"ConfirmWithdrawal",DonateToDeveloper:"DonateToDeveloper",DonateToUsersPool:"DonateToUsersPool"};var Dd="Blockchain",Qr=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(Dd,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 r=this.baseRequest();if(!r)return n("unauthorized","Not logged in.");r.NetworkID=e,r.TransactionHash=t;let i=await this.ctx.api.blockchain.depositToken(r);return i.ok&&i.data.CurrencyID&&(this.ctx.data.user.patchCryptoCurrencyDelta(i.data.CurrencyID,new er(i.data.AmountNative??0),i.data.ServerTimeUtc??void 0),this.ctx.emitter.emit("blockchain:tokenDeposited",i.data)),i}async depositNFT(e,t){if(!e)return n("client","NetworkID is required.");if(!t)return n("client","TransactionHash is required.");let r=this.baseRequest();if(!r)return n("unauthorized","Not logged in.");r.NetworkID=e,r.TransactionHash=t;let i=await this.ctx.api.blockchain.depositNFT(r);return i.ok&&(this.ctx.data.user.applyResourceOperation(i.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("blockchain:nftDeposited",i.data)),i}async requestTokenWithdrawal(e,t,r,i,s){if(!e)return n("client","CurrencyID is required.");if(!t)return n("client","NetworkID is required.");if(!r)return n("client","WalletAddress is required.");if(!i)return n("client","Amount is required.");let a=this.baseRequest();if(!a)return n("unauthorized","Not logged in.");a.CurrencyID=e,a.NetworkID=t,a.WalletAddress=r,a.Amount=i,a.Category=_r(s);let p=await this.ctx.api.blockchain.requestTokenWithdrawal(a);return p.ok&&p.data.CurrencyID&&(this.ctx.data.user.patchCryptoCurrencyDelta(p.data.CurrencyID,new er(p.data.AmountNative??0).negated(),p.data.ServerTimeUtc??void 0),this.ctx.emitter.emit("blockchain:tokenWithdrawalRequested",p.data)),p}async requestNFTWithdrawal(e,t,r,i,s,a,p){if(!e)return n("client","ItemID is required.");if(!t)return n("client","NetworkID is required.");if(!r)return n("client","WalletAddress is required.");if(!i)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=r,D.Amount=i,D.Category=_r(s),a!==void 0&&(D.Level=a),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 r=await this.ctx.api.blockchain.getTransactionHistory(t);return r.ok&&this.ctx.emitter.emit("blockchain:transactionHistoryLoaded",r.data),r}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 r=await this.ctx.api.blockchain.retryWithdrawal(t);return r.ok&&this.ctx.emitter.emit("blockchain:withdrawalRetried",r.data),r}async confirmWithdrawal(e,t){if(!e)return n("client","TitleTransactionID is required.");if(!t)return n("client","On-chain TransactionHash is required.");let r=this.baseRequest();if(!r)return n("unauthorized","Not logged in.");r.TitleTransactionID=e,r.TransactionHash=t;let i=await this.ctx.api.blockchain.confirmWithdrawal(r);return i.ok&&this.ctx.emitter.emit("blockchain:withdrawalConfirmed",i.data),i}async donateToDeveloper(e,t){if(!e)return n("client","NetworkID is required.");if(!t)return n("client","TransactionHash is required.");let r=this.baseRequest();if(!r)return n("unauthorized","Not logged in.");r.NetworkID=e,r.TransactionHash=t;let i=await this.ctx.api.blockchain.donateToDeveloper(r);return i.ok&&this.ctx.emitter.emit("blockchain:donatedToDeveloper",i.data),i}async donateToUsersPool(e,t){if(!e)return n("client","NetworkID is required.");if(!t)return n("client","TransactionHash is required.");let r=this.baseRequest();if(!r)return n("unauthorized","Not logged in.");r.NetworkID=e,r.TransactionHash=t;let i=await this.ctx.api.blockchain.donateToUsersPool(r);return i.ok&&this.ctx.emitter.emit("blockchain:donatedToUsersPool",i.data),i}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var ze=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 bd={Head:"Head",Torso:"Torso",Legs:"Legs"},Kr=z.enum(["Head","Torso","Legs"]),zd={Open:"Open",InProgress:"InProgress",Cancelled:"Cancelled",Completed:"Completed"},Ms=z.enum(["Open","InProgress","Cancelled","Completed"]),Fo=z.object({AttackTarget:Kr,DefenseTarget:Kr});var Td=z.enum(["Hit","Critical","Block","Dodge"]),vd=z.object({RoundIndex:z.number().nullish(),AttackerID:z.string().nullish(),DefenderID:z.string().nullish(),AttackZone:Kr.nullish(),DefenseZone:Kr.nullish(),HitType:Td.nullish(),DamageDealt:z.number().nullish(),DefenderHpRemaining:z.number().nullish()}).passthrough(),Pd=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(),Id=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(o=>o),jo=z.object({UserID:z.string().nullish(),SelectedCharacterID:z.string().nullish(),SelectedCharacter:xs.nullish(),BattleStrategy:z.array(Fo).nullish(),UnstackableItems:z.record(z.string(),Id).nullish(),Stats:Pd.nullish()}).passthrough(),kd=z.object({WinnerUserID:z.string().nullish(),LoserUserID:z.string().nullish(),Entry:fe.nullish(),NetReward:fe.nullish(),BattleLog:z.array(vd).nullish(),IsDraw:z.boolean().nullish(),P1BattleProfile:jo.nullish(),P2BattleProfile:jo.nullish()}).passthrough(),Vo=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(Fo).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:Ms.nullish(),WinnerUserID:z.string().nullish(),CompletedAt:u.nullish(),IsRewardDistributed:z.boolean().nullish(),RewardDistributedAt:u.nullish()}).passthrough(),_o=z.object({Status:Ms,MatchID:z.string(),Entry:fe.nullish(),Resources:b.nullish()}),Wo=z.object({Match:Vo.nullish()}),Qo=z.object({MatchID:z.string(),Status:Ms,Resources:b.nullish()}),Ko=z.object({Battle:kd.nullish(),Resources:b.nullish(),ResourcesDual:mt.nullish()}),ws=z.object({Matches:z.array(Vo).nullish(),Page:z.number().nullish(),PageSize:z.number().nullish(),HasMore:z.boolean().nullish()}),Xe={CreateMatch:"CreateMatch",UpdateMatch:"UpdateMatch",CancelMatch:"CancelMatch",InstantBattle:"InstantBattle",SaveStrategy:"SaveStrategy",GetMyMatches:"GetMyMatches",GetAvailableMatches:"GetAvailableMatches",GetDefinitions:"GetDefinitions"};var Md=z.enum(["VirtualCurrency","Item","EventToken"]);var wd=z.enum(["Constant","Variable","Curve"]),Ad=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(),Od=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(),Ud=z.object({Kind:wd.nullish(),Constant:z.number().nullish(),VariableID:z.string().nullish(),Argument:z.string().nullish(),Curve:xe.nullish(),OnePlus:z.boolean().nullish()}).passthrough(),Bd=z.object({Coefficient:z.number().nullish(),Factors:z.array(Ud).nullish()}).passthrough(),gt=z.object({Terms:z.array(Bd).nullish()}).passthrough(),Ld=z.object({Health:gt.nullish(),Damage:gt.nullish(),Armor:gt.nullish(),AttackSpeed:gt.nullish(),CritChance:gt.nullish(),CritDamage:gt.nullish(),Dodge:gt.nullish()}).passthrough(),Ho=z.object({StatMapping:Ad.nullish(),Combat:Od.nullish(),Formula:Ld.nullish()}).passthrough(),qd=z.object({BurnRate:z.number().nullish()}).passthrough(),As=z.object({Kind:Md.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(),$o=z.object({AllowVirtualCurrency:z.boolean().nullish(),AllowItems:z.boolean().nullish(),AllowEventTokens:z.boolean().nullish(),Allowed:z.array(As).nullish(),MaxPositions:z.number().nullish()}).passthrough(),Zo=z.object({PriceOptions:J.nullish(),RefundCostOnCancel:z.boolean().nullish(),MaxOpenMatches:z.number().nullish(),Limits:ge.nullish(),AllowPrivateMatches:z.boolean().nullish(),MaxMatchesPerOpponentPerDay:z.number().nullish()}).passthrough(),Ed=z.object({RuleID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),Economy:qd.nullish(),Entry:$o.nullish(),Creation:Zo.nullish(),Settings:Ho.nullish()}).passthrough(),Gd=z.object({Rules:z.record(z.string(),Ed).nullish(),Defaults:Ho.nullish(),EntryDefaults:$o.nullish(),CreationDefaults:Zo.nullish()}).passthrough(),Os=z.object({InstantBattle:Gd.nullish()}).passthrough(),Jo=Os;var Nd={Listing:"Listing",Auction:"Auction",BuyOrder:"BuyOrder",DirectTrade:"DirectTrade"},Us=z.enum(["Listing","Auction","BuyOrder","DirectTrade"]),jd={Active:"Active",Completed:"Completed",Cancelled:"Cancelled",Declined:"Declined",Expired:"Expired"},Bs=z.enum(["Active","Completed","Cancelled","Declined","Expired"]),Fd={Burn:"Burn",Ledger:"Ledger"},Vd=z.enum(["Burn","Ledger"]),$r={Item:"Item",VirtualCurrency:"VirtualCurrency"},Ls=z.enum(["Item","VirtualCurrency"]),_d=z.object({Percent:z.number().nullish(),MinPerPosition:M.nullish()}).passthrough(),Wd=z.object({AllowVirtualCurrency:z.boolean().nullish(),AllowItems:z.boolean().nullish(),AllowEventTokens:z.boolean().nullish(),Allowed:z.array(As).nullish(),MaxPositions:z.number().nullish()}).passthrough(),Qd=z.object({Percent:z.number().nullish(),MinPerPosition:M.nullish(),Sink:Vd.nullish(),LedgerAccountID:z.string().nullish(),PerCatalogOverrides:z.record(z.string(),_d).nullish(),ApplyToDirectTrades:z.boolean().nullish()}).passthrough(),Kd=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(),Hd=z.object({Enabled:z.boolean().nullish(),AllowedDurationsHours:z.array(z.number()).nullish(),MaxActiveListings:z.number().nullish(),CreateLimits:ge.nullish(),BuyLimits:ge.nullish(),ListingFeeOptions:J.nullish(),RefundListingFeeOnCancel:z.boolean().nullish()}).passthrough(),$d=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:ge.nullish()}).passthrough(),Zd=z.object({Enabled:z.boolean().nullish(),MaxActiveOrders:z.number().nullish(),AllowedDurationsHours:z.array(z.number()).nullish(),CreateLimits:ge.nullish(),FillLimits:ge.nullish()}).passthrough(),Jd=z.object({Enabled:z.boolean().nullish(),OfferExpirationHours:z.number().nullish(),MaxPendingOutgoing:z.number().nullish(),AllowGifts:z.boolean().nullish(),CreateLimits:ge.nullish()}).passthrough(),Yd=z.object({Enabled:z.boolean().nullish()}).passthrough(),qs=z.object({Enabled:z.boolean().nullish(),Gate:W.nullish(),Schedule:ce.nullish(),PricePolicy:Wd.nullish(),Commission:Qd.nullish(),Tradability:Kd.nullish(),Listings:Hd.nullish(),Auctions:$d.nullish(),BuyOrders:Zd.nullish(),DirectTrades:Jd.nullish(),Matching:Yd.nullish()}).passthrough(),Yo=z.object({BidIndex:z.number().nullish(),UserID:z.string().nullish(),Amount:M.nullish(),Settled:z.boolean().nullish(),SettledAt:u.nullish()}).passthrough(),Xd=z.object({BidAxisType:_t.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(Yo).nullish()}).passthrough(),Hr=z.object({LastAt:u.nullish(),DailyCount:z.number().nullish(),DailyResetUtc:u.nullish()}).passthrough(),eh=z.object({Create:Hr.nullish(),Buy:Hr.nullish(),Sell:Hr.nullish(),Bid:Hr.nullish()}).passthrough(),th=z.object({CharacterID:z.string().nullish(),SlotID:z.string().nullish()}).passthrough(),rh=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:th.nullish(),CustomData:z.string().nullish()}).passthrough().transform(o=>o),st=z.object({OfferID:z.string().nullish(),OfferType:Us.nullish(),Status:Bs.nullish(),CreatorUserID:z.string().nullish(),CreatorPublicData:ze.nullish(),TargetUserID:z.string().nullish(),GoodsType:Ls.nullish(),GoodsCatalogID:z.string().nullish(),GoodsItemID:z.string().nullish(),GoodsCurrencyID:z.string().nullish(),GoodsAmount:M.nullish(),GoodsInstances:z.array(rh).nullish(),Price:fe.nullish(),Auction:Xd.nullish(),CreatedAt:u.nullish(),ExpiresAt:u.nullish()}).passthrough(),ih=z.object({GoodsType:Ls.nullish(),GoodsCatalogID:z.string().nullish(),GoodsItemID:z.string().nullish(),GoodsCurrencyID:z.string().nullish(),CountsByType:z.record(Us,M).nullish(),ListingCount:M.nullish(),AuctionCount:M.nullish(),BuyOrderCount:M.nullish()}).passthrough(),Xo=z.object({Definitions:qs.nullish(),IsOpenNow:z.boolean().nullish(),GatePassed:z.boolean().nullish()}).passthrough(),Es=z.object({Offers:z.array(st).nullish(),ContinuationToken:z.string().nullish()}).passthrough(),ea=z.object({Groups:z.array(ih).nullish()}).passthrough(),ta=z.object({Offer:st.nullish()}).passthrough(),Ge=z.object({OfferID:z.string().nullish(),Status:Bs.nullish(),Settlement:mt.nullish(),Resources:b.nullish(),CommissionTaken:fe.nullish()}).passthrough(),Et=z.object({OfferID:z.string().nullish(),Offer:st.nullish(),Resources:b.nullish(),Matched:z.boolean().nullish(),Settlement:Ge.nullish()}).passthrough(),ra=z.object({OfferID:z.string().nullish(),CurrentBid:M.nullish(),BidCount:z.number().nullish(),ExpiresAt:u.nullish(),Resources:b.nullish()}).passthrough(),ia=z.object({MyOffers:z.array(st).nullish(),MyLeadingBids:z.array(st).nullish(),MyBuyOrders:z.array(st).nullish(),IncomingTrades:z.array(st).nullish(),OutgoingTrades:z.array(st).nullish(),Claimables:z.array(st).nullish(),DrainedRefunds:z.array(Yo).nullish(),Limits:eh.nullish()}).passthrough(),sh=z.object({OfferID:z.string().nullish(),OfferType:Us.nullish(),FinalStatus:Bs.nullish(),SellerUserID:z.string().nullish(),BuyerUserID:z.string().nullish(),GoodsType:Ls.nullish(),GoodsCatalogID:z.string().nullish(),GoodsItemID:z.string().nullish(),GoodsCurrencyID:z.string().nullish(),GoodsAmount:M.nullish(),PricePaid:fe.nullish(),CommissionTaken:fe.nullish(),CompletedAt:u.nullish()}).passthrough(),sa=z.object({Entries:z.array(sh).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 nh="Marketplace",Zr=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(nh,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,r,i=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=r,s.PageSize=i;let a=await this.ctx.api.marketplace.getOffersByItem(s);return a.ok&&this.ctx.emitter.emit("marketplace:offersByItemLoaded",a.data),a}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 r=await this.ctx.api.marketplace.getOffer(t);return r.ok&&this.ctx.emitter.emit("marketplace:offerLoaded",r.data),r}async getBuyOrders(e,t,r=20){let i=this.baseRequest();if(!i)return n("unauthorized","Not logged in.");i.ItemID=e,i.ContinuationToken=t,i.PageSize=r;let s=await this.ctx.api.marketplace.getBuyOrders(i);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 r=this.baseRequest();if(!r)return n("unauthorized","Not logged in.");r.ContinuationToken=e,r.PageSize=t;let i=await this.ctx.api.marketplace.getHistory(r);return i.ok&&this.ctx.emitter.emit("marketplace:historyLoaded",i.data),i}async createListing(e,t,r,i,s,a,p){if(!e)return n("client","ItemID is required.");if(!t)return n("client","CatalogID is required.");if(!i)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=r,D.PriceBundle=i,D.DurationHours=s,D.ItemInstanceIDs=a,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 r=await this.ctx.api.marketplace.buy(t);return r.ok&&(this.applyDualPartySettlement(r.data.Settlement),this.ctx.emitter.emit("marketplace:bought",r.data)),r}async marketBuy(e,t,r){if(!e||e<=0)return n("client","GoodsAmount must be positive.");if(!t)return n("client","PriceBundle is required.");let i=this.baseRequest();if(!i)return n("unauthorized","Not logged in.");let s=this.applyGoodsSelector(i,r);if(s)return s;i.GoodsAmount=e,i.PriceBundle=t;let a=await this.ctx.api.marketplace.marketBuy(i);return a.ok&&(this.applyDualPartySettlement(a.data.Settlement),this.ctx.emitter.emit("marketplace:marketBought",a.data)),a}async marketSell(e,t,r){if(!e||e<=0)return n("client","GoodsAmount must be positive.");if(!t)return n("client","PriceBundle is required.");let i=this.baseRequest();if(!i)return n("unauthorized","Not logged in.");let s=this.applyGoodsSelector(i,r);if(s)return s;i.GoodsAmount=e,i.PriceBundle=t;let a=await this.ctx.api.marketplace.marketSell(i);return a.ok&&(this.applyDualPartySettlement(a.data.Settlement),this.ctx.emitter.emit("marketplace:marketSold",a.data)),a}async createAuction(e,t,r,i,s,a,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=r,D.BidAxisType=i,D.BidCurrencyID=p.bidCurrencyID,D.BidCatalogID=p.bidCatalogID,D.BidItemID=p.bidItemID,D.StartingBid=s,D.DurationHours=a,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 r=this.baseRequest();if(!r)return n("unauthorized","Not logged in.");r.OfferID=e,r.BidAmount=t;let i=await this.ctx.api.marketplace.placeBid(r);return i.ok&&(this.ctx.data.user.applyResourceOperation(i.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("marketplace:bidPlaced",i.data)),i}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 r=await this.ctx.api.marketplace.claimAuction(t);return r.ok&&(this.ctx.data.user.applyResourceOperation(r.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("marketplace:auctionClaimed",r.data)),r}async createBuyOrder(e,t,r,i,s){if(!e)return n("client","ItemID is required.");if(!t)return n("client","CatalogID is required.");if(!i)return n("client","PriceBundle is required.");let a=this.baseRequest();if(!a)return n("unauthorized","Not logged in.");a.ItemID=e,a.CatalogID=t,a.GoodsAmount=r,a.PriceBundle=i,a.DurationHours=s;let p=await this.ctx.api.marketplace.createBuyOrder(a);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 r=await this.ctx.api.marketplace.fillBuyOrder(t);return r.ok&&(this.applyDualPartySettlement(r.data.Settlement),this.ctx.emitter.emit("marketplace:buyOrderFilled",r.data)),r}async createDirectTrade(e,t,r,i,s){if(!e)return n("client","TargetUserID is required.");if(!t)return n("client","CatalogID is required.");if(!r)return n("client","ItemID is required.");let a=this.baseRequest();if(!a)return n("unauthorized","Not logged in.");a.TargetUserID=e,a.CatalogID=t,a.ItemID=r,a.ItemInstanceIDs=i,a.RequestedBundle=s;let p=await this.ctx.api.marketplace.createDirectTrade(a);return this.applyCreateOfferResult(p,"marketplace:directTradeCreated"),p}async respondDirectTrade(e,t){if(!e)return n("client","OfferID is required.");let r=this.baseRequest();if(!r)return n("unauthorized","Not logged in.");r.OfferID=e,r.Accept=t;let i=await this.ctx.api.marketplace.respondDirectTrade(r);return i.ok&&(t&&(i.data.Settlement?this.applyDualPartySettlement(i.data.Settlement):i.data.Resources&&this.ctx.data.user.applyResourceOperation(i.data.Resources,this.ctx.data.config.itemDefinitions)),this.ctx.emitter.emit("marketplace:directTradeResponded",i.data)),i}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 r=await this.ctx.api.marketplace.claimBack(t);return r.ok&&(this.ctx.data.user.applyResourceOperation(r.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("marketplace:claimedBack",r.data)),r}async cancelOffer(e,t,r){if(!e)return n("client","OfferID is required.");let i=this.baseRequest();if(!i)return n("unauthorized","Not logged in.");i.OfferID=e;let s=await t(i);return s.ok&&(this.ctx.data.user.applyResourceOperation(s.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit(r,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=$r.VirtualCurrency,e.GoodsCurrencyID=t.goodsCurrencyID,null):"itemID"in t&&t.itemID&&t.catalogID?(e.GoodsType=$r.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 r=this.ctx.data.config.itemDefinitions;e.FromUserID===t&&e.FromResult?this.ctx.data.user.applyResourceOperation(e.FromResult,r):e.ToUserID===t&&e.ToResult&&this.ctx.data.user.applyResourceOperation(e.ToResult,r);}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var Jr=class{constructor(e){this.ctx=e;}ctx;async createRoom(e,t={}){if(!e)return n("client","RoomName is required.");let r=this.baseRequest();if(!r)return n("unauthorized","Not logged in.");r.RoomName=e,r.Topology=t.topology,r.ChatMode=t.chatMode,r.MaxPlayers=t.maxPlayers,r.Visibility=t.visibility,r.JoinCode=t.joinCode;let i=await this.ctx.api.multiplayer.createRoom(r);return i.ok&&this.ctx.emitter.emit("multiplayer:roomCreated",i.data),i}async joinRoom(e,t){if(!e)return n("client","RoomID is required.");let r=this.baseRequest();if(!r)return n("unauthorized","Not logged in.");r.RoomID=e,r.JoinCode=t;let i=await this.ctx.api.multiplayer.joinRoom(r);return i.ok&&this.ctx.emitter.emit("multiplayer:roomJoined",i.data),i}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 r=await this.ctx.api.multiplayer.leaveRoom(t);return r.ok&&this.ctx.emitter.emit("multiplayer:roomLeft",r.data),r}async listRooms(e=0,t=20){let r=this.baseRequest();if(!r)return n("unauthorized","Not logged in.");r.Page=e,r.PageSize=t;let i=await this.ctx.api.multiplayer.listRooms(r);return i.ok&&this.ctx.emitter.emit("multiplayer:roomsListed",i.data),i}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 r=await this.ctx.api.multiplayer.getRoom(t);return r.ok&&this.ctx.emitter.emit("multiplayer:roomLoaded",r.data),r}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 r=await this.ctx.api.multiplayer.closeRoom(t);return r.ok&&this.ctx.emitter.emit("multiplayer:roomClosed",r.data),r}async poll(e,t){if(!e)return n("client","RoomID is required.");let r=this.baseRequest();if(!r)return n("unauthorized","Not logged in.");r.RoomID=e,r.LastSeq=t;let i=await this.ctx.api.multiplayer.poll(r);return i.ok&&this.ctx.emitter.emit("multiplayer:polled",i.data),i}async sendSignal(e,t,r,i){if(!e)return n("client","RoomID is required.");if(!t)return n("client","TargetUserID is required.");if(!r)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=r,s.Payload=i;let a=await this.ctx.api.multiplayer.sendSignal(s);return a.ok&&this.ctx.emitter.emit("multiplayer:signalSent",a.data),a}async sendChat(e,t){if(!e)return n("client","RoomID is required.");if(!t)return n("client","ChatText is required.");let r=this.baseRequest();if(!r)return n("unauthorized","Not logged in.");r.RoomID=e,r.ChatText=t;let i=await this.ctx.api.multiplayer.sendChat(r);return i.ok&&this.ctx.emitter.emit("multiplayer:chatSent",i.data),i}async setMemberState(e,t,r){if(!e)return n("client","RoomID is required.");let i=this.baseRequest();if(!i)return n("unauthorized","Not logged in.");i.RoomID=e,i.Ready=t,i.MemberState=r;let s=await this.ctx.api.multiplayer.setMemberState(i);return s.ok&&this.ctx.emitter.emit("multiplayer:memberStateSet",s.data),s}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var na=z.object({PlatformUserID:z.string().nullish(),PlatformAuthToken:z.string().nullish(),PlatformAuthTokenExpiration:u.nullish(),TitleUserID:z.string(),TitleClientSessionTicket:z.string(),TitleClientSessionTicketExpiration:u}),Te=z.object({IsCompleted:z.boolean().nullish(),ServerTime:u.nullish()}),oa=z.object({Message:z.string(),ExpiresAt:u}),Ue={LoginWithDeviceID:"LoginWithDeviceID",LoginWithTelegram:"LoginWithTelegram",LoginWithEmail:"LoginWithEmail",LoginWithGoogle:"LoginWithGoogle",LoginWithPlatformToken:"LoginWithPlatformToken",LoginWithSsoCode:"LoginWithSsoCode",RegisterWithEmail:"RegisterWithEmail",RequestWalletChallenge:"RequestWalletChallenge",LoginWithWallet:"LoginWithWallet",ForgotPassword:"ForgotPassword",ResetPassword:"ResetPassword"};function A(o,e,t,r){let s=`api/v2/${o&&o.length>0?o:"0"}/Client/${e}/${t}`;return r==null?s:`${s}/${r}`}var Yr=class{constructor(e){this.ctx=e;}ctx;endpoint(e){return A(this.ctx.settings.titleID,"Authentication",e)}login(e,t){return this.ctx.transport.post(this.endpoint(e),t,na,{ticket:null})}loginWithDeviceID(e){return this.login(Ue.LoginWithDeviceID,e)}loginWithTelegram(e){return this.login(Ue.LoginWithTelegram,e)}loginWithEmail(e){return this.login(Ue.LoginWithEmail,e)}loginWithGoogle(e){return this.login(Ue.LoginWithGoogle,e)}loginWithPlatformToken(e){return this.login(Ue.LoginWithPlatformToken,e)}loginWithSsoCode(e){return this.login(Ue.LoginWithSsoCode,e)}registerWithEmail(e){return this.login(Ue.RegisterWithEmail,e)}requestWalletChallenge(e){return this.ctx.transport.post(this.endpoint(Ue.RequestWalletChallenge),e,oa,{ticket:null})}loginWithWallet(e){return this.login(Ue.LoginWithWallet,e)}forgotPassword(e){return this.ctx.transport.post(this.endpoint(Ue.ForgotPassword),e,Te,{ticket:null})}resetPassword(e){return this.ctx.transport.post(this.endpoint(Ue.ResetPassword),e,Te,{ticket:null})}};var oh={ReturnKey:"ReturnKey",ReturnMarkedKey:"ReturnMarkedKey",ReturnEmpty:"ReturnEmpty"},aa=z.enum(["ReturnKey","ReturnMarkedKey","ReturnEmpty"]),ah=z.object({Locale:z.string().nullish(),DisplayName:z.string().nullish(),IsEnabled:z.boolean().nullish(),Order:z.number().nullish()}).passthrough(),la=z.object({IsEnabled:z.boolean().nullish(),DefaultLocale:z.string().nullish(),Locales:z.record(z.string(),ah).nullish(),MissingKeyMode:aa.nullish(),MaxEntriesPerLocale:z.number().nullish(),MaxValueLengthBytes:z.number().nullish()}).passthrough(),lh=z.object({Locale:z.string().nullish(),Version:z.number().nullish(),Url:z.string().nullish()}).passthrough(),ua=z.object({Locale:z.string().nullish(),Version:z.number().nullish(),Url:z.string().nullish(),Fallback:lh.nullish()}).passthrough(),Xr={GetLocalizationManifest:"GetLocalizationManifest",GetLocalizationTable:"GetLocalizationTable"},uh=z.object({Locale:z.string().nullish(),DisplayName:z.string().nullish(),Order:z.number().nullish(),Version:z.number().nullish()}).passthrough(),ca=z.object({IsEnabled:z.boolean().nullish(),DefaultLocale:z.string().nullish(),MissingKeyMode:aa.nullish(),ResolvedLocale:z.string().nullish(),Locales:z.array(uh).nullish()}).passthrough(),pa=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 Gs=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:ua.nullish()}).passthrough().transform(o=>o),da=z.object({StateEpoch:z.string().nullish(),StateVersions:z.record(z.string(),z.number()).nullish()}).passthrough().transform(o=>o),ha=z.object({StateEpoch:z.string().nullish(),StateVersions:z.record(z.string(),z.number()).nullish(),User:z.unknown().nullish()}).passthrough().transform(o=>o),ma=z.object({}).passthrough().transform(o=>o),fa=z.object({}).passthrough().transform(o=>o),ga=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(),Ra=z.object({Username:z.string()}),Ne={GetClientState:"GetClientState",GetClientStateExcept:"GetClientStateExcept",GetStateVersions:"GetStateVersions",GetUserState:"GetUserState",GetInventory:"GetInventory",GetEventTokens:"GetEventTokens",GetUsageTime:"GetUsageTime",AddUsageTime:"AddUsageTime",DeleteUserAccount:"DeleteUserAccount",ChangeUsername:"ChangeUsername"};var ei=class{constructor(e){this.ctx=e;}ctx;endpoint(e,t){return A(this.ctx.settings.titleID,"User",e,t??"")}getClientState(e){return this.ctx.transport.post(this.endpoint(Ne.GetClientState,e.UserID),e,Gs,{ticket:e.ClientSessionTicket})}getClientStateExcept(e){return this.ctx.transport.post(this.endpoint(Ne.GetClientStateExcept,e.UserID),e,Gs,{ticket:e.ClientSessionTicket})}getStateVersions(e){return this.ctx.transport.post(this.endpoint(Ne.GetStateVersions,e.UserID),e,da,{ticket:e.ClientSessionTicket})}getUserState(e){return this.ctx.transport.post(this.endpoint(Ne.GetUserState,e.UserID),e,ha,{ticket:e.ClientSessionTicket})}getInventory(e){return this.ctx.transport.post(this.endpoint(Ne.GetInventory,e.UserID),e,ma,{ticket:e.ClientSessionTicket})}getEventTokens(e){return this.ctx.transport.post(this.endpoint(Ne.GetEventTokens,e.UserID),e,fa,{ticket:e.ClientSessionTicket})}getUsageTime(e){return this.ctx.transport.post(this.endpoint(Ne.GetUsageTime,e.UserID),e,ga,{ticket:e.ClientSessionTicket})}addUsageTime(e){return this.ctx.transport.post(this.endpoint(Ne.AddUsageTime,e.UserID),e,Te,{ticket:e.ClientSessionTicket,silent:true})}deleteUserAccount(e){return this.ctx.transport.post(this.endpoint(Ne.DeleteUserAccount,e.UserID),e,Te,{ticket:e.ClientSessionTicket})}changeUsername(e){return this.ctx.transport.post(this.endpoint(Ne.ChangeUsername,e.UserID),e,Ra,{ticket:e.ClientSessionTicket})}};var ti=class{constructor(e){this.ctx=e;}ctx;send(e,t,r){let i=A(this.ctx.settings.titleID,"Currency",e,t.UserID??"");return this.ctx.transport.post(i,t,r,{ticket:t.ClientSessionTicket})}convert(e){return this.send(jr.Convert,e,oo)}cryptoConvert(e){return this.send(jr.CryptoConvert,e,ao)}};var ch=z.object({ItemInstanceID:z.string(),Units:z.number(),Level:z.number()}),Ns=z.object({ServerTimeUtc:u,ItemInstanceID:z.string(),ItemID:z.string(),CatalogID:z.string().nullish(),Level:z.number(),Resources:b.nullish(),FodderConsumed:z.array(ch).nullish()}),ya=z.array(ie(Ns)),ri={UpgradeLevel:"UpgradeLevel",UpgradeLevelsBatch:"UpgradeLevelsBatch"},ph={FlatCount:"FlatCount",Merge:"Merge",InvestmentRefund:"InvestmentRefund"},dh=z.enum(["FlatCount","Merge","InvestmentRefund"]),hh={ProtectLeveled:"ProtectLeveled",CheapestFirst:"CheapestFirst",ClientSelected:"ClientSelected"},mh=z.enum(["ProtectLeveled","CheapestFirst","ClientSelected"]),fh=z.object({ContractAddress:z.string().nullish(),TokenID:z.string().nullish(),TokenStandard:z.string().nullish()}).passthrough(),gh=z.object({Networks:z.record(z.string(),fh).nullish(),MetadataUrl:z.string().nullish()}).passthrough(),Rh=z.object({FlatBonuses:z.record(z.string(),z.number()).nullish(),PercentBonuses:z.record(z.string(),z.number()).nullish(),Power:z.number().nullish()}).passthrough(),yh=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(),Ch=z.object({ValuationMode:dh.nullish(),WeightCurve:xe.nullish(),Selection:mh.nullish()}).passthrough(),Sh=z.object({MaxLevel:z.number().nullish(),PriceOptions:J.nullish(),CostCurve:xe.nullish(),FlatBonusCurve:xe.nullish(),PercentBonusCurve:xe.nullish(),PowerCurve:xe.nullish(),Fodder:Ch.nullish()}).passthrough(),xh=z.object({RarityID:z.string().nullish(),CollectionID:z.string().nullish(),AuthorID:z.string().nullish()}).passthrough(),Dh=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:gh.nullish(),Stats:Rh.nullish(),Equipment:yh.nullish(),Upgrade:Sh.nullish(),Metadata:xh.nullish(),ExpirationDurationSeconds:z.number().nullish()}).passthrough(),bh=z.object({Items:z.record(z.string(),Dh).nullish()}).passthrough(),ii=z.object({Catalogs:z.record(z.string(),bh).nullish()}).passthrough();var si=class{constructor(e){this.ctx=e;}ctx;upgradeLevel(e){let t=A(this.ctx.settings.titleID,"Item",ri.UpgradeLevel,e.UserID??"");return this.ctx.transport.post(t,e,Ns,{ticket:e.ClientSessionTicket})}upgradeLevelsBatch(e){let t=A(this.ctx.settings.titleID,"Item",ri.UpgradeLevelsBatch,e.UserID??"");return this.ctx.transport.post(t,e,ya,{ticket:e.ClientSessionTicket})}};var js=z.object({ServerTimeUtc:u,OfferID:z.string(),Count:z.number(),Resources:b.nullish()}),Ca=z.array(ie(js)),zh=z.object({OfferID:z.string(),TotalPurchases:z.number(),DailyPurchases:z.number(),DailyResetUtc:u,LastPurchasedAt:u}),Sa=z.object({Purchases:z.record(z.string(),zh).nullish()}).passthrough().transform(o=>o),Th=z.object({StartUtc:u.nullish(),EndUtc:u.nullish(),RequiredFlags:z.array(z.string()).nullish()}).passthrough(),vh=z.object({StoreID:z.string(),Type:z.string().nullish(),Name:z.string().nullish(),Description:z.string().nullish(),Rules:Th.nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),Ph=z.object({StartUtc:u.nullish(),EndUtc:u.nullish(),Gate:W.nullish(),Limits:ge.nullish()}).passthrough(),Ih=z.object({OfferID:z.string(),StoreIDs:z.array(z.string()).nullish(),Name:z.string().nullish(),PriceOptions:J.nullish(),Rewards:L.nullish(),Rules:Ph.nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),ni=z.object({Stores:z.record(z.string(),vh).nullish(),StoreOffers:z.record(z.string(),Ih).nullish()}).passthrough(),Pt={Purchase:"Purchase",GetDefinitions:"GetDefinitions",GetUserState:"GetUserState",PurchaseBatch:"PurchaseBatch"};var oi=class{constructor(e){this.ctx=e;}ctx;send(e,t,r){let i=A(this.ctx.settings.titleID,"Store",e,t.UserID??"");return this.ctx.transport.post(i,t,r,{ticket:t.ClientSessionTicket})}purchase(e){return this.send(Pt.Purchase,e,js)}purchaseBatch(e){return this.send(Pt.PurchaseBatch,e,Ca)}getDefinitions(e){return this.send(Pt.GetDefinitions,e,ni)}getUserState(e){return this.send(Pt.GetUserState,e,Sa)}};var kh={Consumable:"Consumable",NonConsumable:"NonConsumable",Subscription:"Subscription"},Mh=z.enum(["Consumable","NonConsumable","Subscription"]),wh=z.object({StartUtc:u.nullish(),EndUtc:u.nullish(),Gate:W.nullish(),Limits:ge.nullish()}).passthrough(),Ah=z.object({ResourceAction:z.string().nullish(),RevokeEntitlement:z.boolean().nullish(),BlockFuturePurchases:z.boolean().nullish()}).passthrough(),Oh=z.object({ProductID:z.string().nullish(),Name:z.string().nullish(),Type:Mh.nullish(),Enabled:z.boolean().nullish(),StoreProductIDs:z.record(z.string(),z.string()).nullish(),Rewards:L.nullish(),PriceUsdCents:z.number().nullish(),Rules:wh.nullish(),Refund:Ah.nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),xa=z.object({Enabled:z.boolean().nullish(),Products:z.record(z.string(),Oh).nullish()}).passthrough(),Da=z.object({ProductID:z.string().nullish(),TotalPurchases:z.number().nullish(),DailyPurchases:z.number().nullish(),DailyResetUtc:u.nullish(),LastPurchasedAt:u.nullish(),Owned:z.boolean().nullish(),Refunded:z.boolean().nullish(),PurchaseBlocked:z.boolean().nullish()}).passthrough(),ba=z.object({Products:z.record(z.string(),Da).nullish(),LifetimeSpendUsdCents:z.number().nullish()}).passthrough(),Uh={Granted:"Granted",Restored:"Restored",AlreadyProcessed:"AlreadyProcessed"},Bh=z.enum(["Granted","Restored","AlreadyProcessed"]),Fs=z.object({ServerTimeUtc:u,Store:Qt.nullish(),ProductID:z.string().nullish(),TransactionID:z.string().nullish(),Status:Bh.nullish(),Granted:z.boolean().nullish(),Quantity:z.number().nullish(),Resources:b.nullish(),ProductState:Da.nullish()}).passthrough(),za=Je(Fs),It={GetDefinitions:"GetDefinitions",GetUserState:"GetUserState",ValidatePurchase:"ValidatePurchase",ValidatePurchasesBatch:"ValidatePurchasesBatch"};var ai=class{constructor(e){this.ctx=e;}ctx;send(e,t,r){let i=A(this.ctx.settings.titleID,"Purchase",e,t.UserID??"");return this.ctx.transport.post(i,t,r,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(It.GetDefinitions,e,xa)}getUserState(e){return this.send(It.GetUserState,e,ba)}validatePurchase(e){return this.send(It.ValidatePurchase,e,Fs)}validatePurchasesBatch(e){return this.send(It.ValidatePurchasesBatch,e,za)}};var Lh=z.object({Min:z.number().nullish(),Max:z.number().nullish()}).passthrough(),Ta=z.object({Reward:L.nullish(),Weight:z.number().nullish(),AmountRange:Lh.nullish()}).passthrough(),kt=z.object({SlotID:z.string().nullish(),MinRolls:z.number().nullish(),MaxRolls:z.number().nullish(),Pool:z.array(Ta).nullish()}).passthrough(),Mt=z.object({RuleID:z.string().nullish(),Threshold:z.number().nullish(),Pool:z.array(Ta).nullish()}).passthrough(),qh=z.object({RewardSlots:z.array(kt).nullish()}).passthrough(),Eh=z.object({PityRules:z.array(Mt).nullish()}).passthrough(),li=z.object({SlotPresets:z.record(z.string(),qh).nullish(),PityPresets:z.record(z.string(),Eh).nullish()}).passthrough();var Gh=z.object({RuleID:z.string(),BoxIndex:z.number().nullish()}),va=z.object({ServerTimeUtc:u,LootboxID:z.string(),OpenedCount:z.number().nullish(),SelectedOptionID:z.string().nullish(),Resources:b.nullish(),Inventory:pt.nullish(),Results:z.array(b).nullish(),TriggeredPity:z.array(Gh).nullish()}),Nh=z.object({RewardSlots:Y.nullish(),PityRules:Y.nullish()}).passthrough(),jh=z.object({CatalogID:z.string().nullish(),ItemID:z.string().nullish(),MaxDrops:M.nullish()}).passthrough(),Fh=z.object({LootboxID:z.string(),AssetPaths:z.record(z.string(),z.string()).nullish(),PriceOptions:J.nullish(),RewardSlots:z.array(kt).nullish(),PityRules:z.array(Mt).nullish(),Presets:Nh.nullish(),RewardMultiplier:Ht.nullish(),SupplyLimits:z.array(jh).nullish(),MaxOpenCount:z.number().nullish()}).passthrough(),Vs=z.object({Definitions:z.record(z.string(),Fh).nullish(),RewardPools:li.nullish()}).passthrough(),Pa=z.object({LootboxDefinitions:Vs.nullish()}),ui={GetDefinitions:"GetDefinitions",Open:"Open"};var ci=class{constructor(e){this.ctx=e;}ctx;send(e,t,r){let i=A(this.ctx.settings.titleID,"Lootbox",e,t.UserID??"");return this.ctx.transport.post(i,t,r,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(ui.GetDefinitions,e,Pa)}open(e){return this.send(ui.Open,e,va)}};var Vh=z.object({}).passthrough().transform(o=>o),_h=z.object({}).passthrough().transform(o=>o),Wh=z.object({}).passthrough().transform(o=>o),Qh=z.object({}).passthrough().transform(o=>o),Kh=z.object({}).passthrough().transform(o=>o),Ia=z.object({ServerTimeUtc:u,CalendarID:z.string(),DayNumber:z.number().nullish(),DailyState:Vh,Resources:b.nullish()}),ka=z.object({ServerTimeUtc:u,AccrualID:z.string(),AccruedSeconds:M.nullish(),AppliedRatePerSecond:z.number().nullish(),IdleState:_h,Resources:b.nullish()}),Ma=z.object({ServerTimeUtc:u,ComebackID:z.string(),ClaimedTierIndex:z.number().nullish(),ComebackState:Wh,Resources:b.nullish()}),wa=z.object({ServerTimeUtc:u,ClaimID:z.string(),ClaimState:Qh,Resources:b.nullish()}),Aa=z.object({Enabled:z.boolean(),Multiplier:z.number().nullish(),Progress:M.nullish(),Source:z.string().nullish(),SourceKey:z.string().nullish()}),Hh=z.object({RewardMode:z.string().nullish(),RewardStackLowerTiers:z.boolean().nullish()}).passthrough(),$h=z.object({DayNumber:z.number().nullish(),Rewards:L.nullish(),IsMilestone:z.boolean().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),Zh=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($h).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:W.nullish(),AvailableFromUtc:z.string().nullish(),AvailableUntilUtc:z.string().nullish()}).passthrough(),Jh=z.object({MinPremiumTier:z.number().nullish(),RequiredPremiumID:z.string().nullish(),Multiplier:z.number().nullish()}).passthrough(),Yh=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(Jh).nullish()}).passthrough(),Xh=z.object({MinCharacterLevel:z.number().nullish(),RequirementsCharacterID:z.string().nullish(),Gate:W.nullish(),RequiredItemIDs:z.array(z.string()).nullish(),RequiredEquippedItemIDs:z.array(z.string()).nullish()}).passthrough(),em=z.object({AccrualID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Rate:Yh.nullish(),Rewards:L.nullish(),MaxAccumulationSeconds:z.number().nullish(),MinClaimSeconds:z.number().nullish(),Requirements:Xh.nullish(),FirstClaimMode:z.string().nullish(),AvailableFromUtc:z.string().nullish(),AvailableUntilUtc:z.string().nullish()}).passthrough(),tm=z.object({MinAbsenceSeconds:z.number().nullish(),Rewards:L.nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),rm=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(tm).nullish(),ClaimCooldownSeconds:z.number().nullish(),ClaimWindowSeconds:z.number().nullish(),TrackPresenceOnRead:z.boolean().nullish(),Gate:W.nullish(),AvailableFromUtc:z.string().nullish(),AvailableUntilUtc:z.string().nullish()}).passthrough(),im=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(),sm=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(im).nullish(),Gate:W.nullish(),AvailableFromUtc:z.string().nullish(),AvailableUntilUtc:z.string().nullish()}).passthrough(),_s=z.object({TierRewards:Hh.nullish(),MilestoneRewardMultiplier:Ht.nullish(),DailyCalendars:z.record(z.string(),Zh).nullish(),IdleAccruals:z.record(z.string(),em).nullish(),Comebacks:z.record(z.string(),rm).nullish(),Claims:z.record(z.string(),sm).nullish()}).passthrough(),Oa=z.object({RewardDefinitions:_s.nullish()}),Ua=z.object({Rewards:Kh.nullish()}),ot={GetRewardDefinitions:"GetRewardDefinitions",GetUserRewardsState:"GetUserRewardsState",ClaimDailyReward:"ClaimDailyReward",CollectIdleAccrual:"CollectIdleAccrual",ClaimComebackReward:"ClaimComebackReward",ClaimReward:"ClaimReward",ClaimRewardsBatch:"ClaimRewardsBatch",GetMilestoneRewardMultiplier:"GetMilestoneRewardMultiplier"};var pi=class{constructor(e){this.ctx=e;}ctx;send(e,t,r){let i=A(this.ctx.settings.titleID,"Reward",e,t.UserID??"");return this.ctx.transport.post(i,t,r,{ticket:t.ClientSessionTicket})}getRewardDefinitions(e){return this.send(ot.GetRewardDefinitions,e,Oa)}getUserRewardsState(e){return this.send(ot.GetUserRewardsState,e,Ua)}getMilestoneRewardMultiplier(e){return this.send(ot.GetMilestoneRewardMultiplier,e,Aa)}claimDailyReward(e){return this.send(ot.ClaimDailyReward,e,Ia)}collectIdleAccrual(e){return this.send(ot.CollectIdleAccrual,e,ka)}claimComebackReward(e){return this.send(ot.ClaimComebackReward,e,Ma)}claimReward(e){return this.send(ot.ClaimReward,e,wa)}};var di=class{constructor(e){this.ctx=e;}ctx;send(e,t,r){let i=A(this.ctx.settings.titleID,"Tutorial",e,t.UserID??"");return this.ctx.transport.post(i,t,r,{ticket:t.ClientSessionTicket})}getTutorialDefinitions(e){return this.send(qe.GetTutorialDefinitions,e,En)}getUserTutorialState(e){return this.send(qe.GetUserTutorialState,e,Nn)}startFlow(e){return this.send(qe.StartFlow,e,ct)}reportStepShown(e){return this.send(qe.ReportStepShown,e,ct)}completeStep(e){return this.send(qe.CompleteStep,e,ct)}completeStepsBatch(e){return this.send(qe.CompleteStepsBatch,e,Fn)}skipStep(e){return this.send(qe.SkipStep,e,ct)}skipFlow(e){return this.send(qe.SkipFlow,e,ct)}claimFlowReward(e){return this.send(qe.ClaimFlowReward,e,jn)}resetFlow(e){return this.send(qe.ResetFlow,e,ct)}};var hi=class{constructor(e){this.ctx=e;}ctx;send(e,t,r){let i=A(this.ctx.settings.titleID,"Localization",e,t.UserID??"");return this.ctx.transport.post(i,t,r,{ticket:t.ClientSessionTicket,throttleKey:t.Locale?`${i}:${t.Locale}`:i})}getLocalizationManifest(e){return this.send(Xr.GetLocalizationManifest,e,ca)}getLocalizationTable(e){return this.send(Xr.GetLocalizationTable,e,pa)}};var mi=class{constructor(e){this.ctx=e;}ctx;send(e,t,r){let i=A(this.ctx.settings.titleID,"Quest",e,t.UserID??"");return this.ctx.transport.post(i,t,r,{ticket:t.ClientSessionTicket})}getQuestDefinitions(e){return this.send(We.GetQuestDefinitions,e,Zt)}getUserQuestState(e){return this.send(We.GetUserQuestState,e,vn)}refreshQuestCycles(e){return this.send(We.RefreshQuestCycles,e,Te)}claimQuestReward(e){return this.send(We.ClaimQuestReward,e,os)}claimQuestRewardsBatch(e){return this.send(We.ClaimQuestRewardsBatch,e,kn)}claimMilestoneReward(e){return this.send(We.ClaimMilestoneReward,e,as)}claimMilestoneRewardsBatch(e){return this.send(We.ClaimMilestoneRewardsBatch,e,Mn)}claimGroupCompletionReward(e){return this.send(We.ClaimGroupCompletionReward,e,Pn)}addQuestProgress(e){return this.send(We.AddQuestProgress,e,In)}};var Ba=z.object({}).passthrough().transform(o=>o);var nm=z.object({Order:z.number().nullish(),Type:z.string().nullish(),DurationSec:z.number().nullish(),BonusMultiplier:z.number().nullish()}).passthrough(),om=z.object({Schedule:z.array(nm).nullish(),RepeatCycle:z.boolean().nullish(),MaxCycles:z.number().nullish()}).passthrough(),am=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(),lm=z.object({Milestones:Y.nullish()}).passthrough(),Ws=z.object({DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Category:z.string().nullish(),Token:ft.nullish(),TokenSources:z.array(Le).nullish(),ClaimMode:z.string().nullish(),Milestones:z.record(z.string(),be).nullish(),Presets:lm.nullish(),BonusWindow:om.nullish()}).passthrough(),um=z.object({ChainedEventID:z.string().nullish(),Order:z.number().nullish(),DurationSec:z.number().nullish(),Content:Ws.nullish(),ClaimGraceHours:z.number().nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),cm=z.object({TimedEventID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Schedule:ce.nullish(),Content:Ws.nullish(),Events:z.array(um).nullish(),Gate:W.nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),pm=z.object({MaxConcurrentEvents:z.number().nullish()}).passthrough(),dm=z.object({Milestones:z.record(z.string(),ut).nullish()}).passthrough(),fi=z.object({Definitions:z.record(z.string(),cm).nullish(),Settings:pm.nullish(),Presets:dm.nullish()}).passthrough(),hm=z.object({Type:Bt,TimedEventID:z.string(),CurrentChainedEventID:z.string().nullish(),Content:Ws.nullish(),Progress:Ba.nullish(),ComputedStartUtc:u.nullish(),ComputedEndUtc:u.nullish(),CanEarn:z.boolean().nullish(),CanClaim:z.boolean().nullish(),NextMilestone:be.nullish(),BonusWindow:am.nullish(),CurrentCycleIndex:z.number().nullish(),CurrentEventOrder:z.number().nullish(),TotalEventsInChain:z.number().nullish()}).passthrough(),La=z.object({ActiveEvents:z.array(hm).nullish()}).passthrough(),qa=z.object({Tokens:z.record(z.string(),Ba).nullish()}),Qs=z.object({Type:Bt.nullish(),LteID:z.string().nullish(),Resources:b.nullish()}),Ks=z.object({Type:Bt.nullish(),LteID:z.string().nullish(),MilestoneID:z.string().nullish(),Rewards:b.nullish()}),mm=z.object({Type:Bt.nullish(),LteID:z.string().nullish(),Resources:b.nullish()}),Hs=z.array(ie(Ks)),Ea=z.array(ie(Qs)),Ga=z.array(ie(mm)),je={GetActiveEvents:"GetActiveEvents",GrantTokens:"GrantTokens",SpendTokens:"SpendTokens",ClaimMilestone:"ClaimMilestone",GetDefinitions:"GetDefinitions",GetUserLteState:"GetUserLteState",ClaimMilestonesBatch:"ClaimMilestonesBatch",ClaimAllMilestones:"ClaimAllMilestones",SpendTokensBatch:"SpendTokensBatch",GrantTokensBatch:"GrantTokensBatch"};var gi=class{constructor(e){this.ctx=e;}ctx;send(e,t,r){let i=A(this.ctx.settings.titleID,"TimedEvent",e,t.UserID??"");return this.ctx.transport.post(i,t,r,{ticket:t.ClientSessionTicket})}getActiveEvents(e){return this.send(je.GetActiveEvents,e,La)}getDefinitions(e){return this.send(je.GetDefinitions,e,fi)}getUserLteState(e){return this.send(je.GetUserLteState,e,qa)}grantTokens(e){return this.send(je.GrantTokens,e,b)}spendTokens(e){return this.send(je.SpendTokens,e,Qs)}claimMilestone(e){return this.send(je.ClaimMilestone,e,Ks)}claimMilestonesBatch(e){return this.send(je.ClaimMilestonesBatch,e,Hs)}claimAllMilestones(e){return this.send(je.ClaimAllMilestones,e,Hs)}spendTokensBatch(e){return this.send(je.SpendTokensBatch,e,Ea)}grantTokensBatch(e){return this.send(je.GrantTokensBatch,e,Ga)}};var fm=z.object({UserID:z.string(),Score:M.nullish(),Rank:z.number().nullish(),LastScoreUpdateUtc:u.nullish(),IpHash:z.string().nullish(),PublicProfile:ze.nullish(),SeasonTierAtCycleEnd:z.number().nullish()}).passthrough(),Gt=z.object({LeaderboardID:z.string(),CycleVersion:z.number().nullish(),TotalParticipants:M.nullish(),CycleEndUtc:u.nullish(),TopUsers:z.array(fm).nullish(),BracketID:z.string().nullish()}),gm=z.object({CycleKey:z.string().nullish(),CycleEndUtc:u.nullish(),ClaimDeadlineUtc:u.nullish(),MilestoneTokensEarned:M.nullish(),ClaimableMilestoneIDs:z.array(z.string()).nullish(),CycleIndex:z.number().nullish(),ChainedEventID:z.string().nullish()}).passthrough(),Ri=z.object({LeaderboardID:z.string(),CurrentScore:M.nullish(),LastKnownRank:z.number().nullish(),HasUnclaimedReward:z.boolean().nullish(),ScoreEarnedThisCycle:M.nullish(),MilestoneTokensEarned:M.nullish(),NextMilestone:be.nullish(),HasUnclaimedMilestone:z.boolean().nullish(),ClaimableGraceCycles:z.array(gm).nullish()}),yi=z.object({LeaderboardID:z.string(),NewScore:M,CycleVersion:z.number()}),Ci=z.object({ServerTimeUtc:u,LeaderboardID:z.string(),Rank:z.number().nullish(),Resources:b.nullish()}),Si=z.object({ServerTimeUtc:u,LeaderboardID:z.string(),MilestoneID:z.string(),Resources:b.nullish()}),Na=z.array(ie(Gt)),ja=z.array(ie(Ri)),Fa=z.array(ie(Ci)),Va=z.array(ie(Si)),_a=z.array(ie(yi)),Rm=z.object({LeaderboardID:z.string(),CycleReward:ie(Ci).nullish(),Milestones:z.array(ie(Si)).nullish()}),Wa=z.array(Rm),ym=z.object({LeaderboardID:z.string(),Leaderboard:ie(Gt).nullish(),Progress:ie(Ri).nullish()}),Qa=z.array(ym),Cm=z.string(),Ka=z.object({Rank:z.string().nullish(),Rewards:L.nullish(),SeasonTierRewards:ss.nullish()}).passthrough(),Sm=z.object({RankRewards:z.array(Ka).nullish()}).passthrough(),xm=z.object({ChainedEventID:z.string().nullish(),Order:z.number().nullish(),DurationSec:z.number().nullish(),ClaimGraceHours:z.number().nullish()}).passthrough(),Dm=z.object({Milestones:Y.nullish(),RankRewards:Y.nullish()}).passthrough(),bm=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:Cm.nullish(),Schedule:ce.nullish(),ChainEvents:z.array(xm).nullish(),Gate:W.nullish(),TopUsersLimit:z.number().nullish(),MinScoreToEnterTop:z.number().nullish(),BracketSize:z.number().nullish(),LinkedSeasonChainID:z.string().nullish(),RankRewards:z.array(Ka).nullish(),Milestones:z.record(z.string(),be).nullish(),Presets:Dm.nullish(),MilestoneClaimMode:z.string().nullish(),MilestoneClaimGraceHours:z.number().nullish(),ScoreSources:z.array(Le).nullish()}).passthrough(),zm=z.object({Milestones:z.record(z.string(),ut).nullish(),RankRewards:z.record(z.string(),Sm).nullish()}).passthrough(),xi=z.object({Definitions:z.record(z.string(),bm).nullish(),Presets:zm.nullish()}).passthrough(),De={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 Di=class{constructor(e){this.ctx=e;}ctx;send(e,t,r){let i=A(this.ctx.settings.titleID,"Leaderboard",e,t.UserID??"");return this.ctx.transport.post(i,t,r,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(De.GetDefinitions,e,xi)}getLeaderboard(e){return this.send(De.GetLeaderboard,e,Gt)}getMyProgress(e){return this.send(De.GetMyProgress,e,Ri)}submitScore(e){return this.send(De.SubmitScore,e,yi)}submitScoreFromSource(e){return this.send(De.SubmitScoreFromSource,e,yi)}claimCycleReward(e){return this.send(De.ClaimCycleReward,e,Ci)}claimMilestone(e){return this.send(De.ClaimMilestone,e,Si)}getFriendsLeaderboard(e){return this.send(De.GetFriendsLeaderboard,e,Gt)}getLeaderboardsBatch(e){return this.send(De.GetLeaderboardsBatch,e,Na)}getProgressBatch(e){return this.send(De.GetProgressBatch,e,ja)}claimCycleRewardsBatch(e){return this.send(De.ClaimCycleRewardsBatch,e,Fa)}claimMilestonesBatch(e){return this.send(De.ClaimMilestonesBatch,e,Va)}submitScoresBatch(e){return this.send(De.SubmitScoresBatch,e,_a)}claimAllRewardsBatch(e){return this.send(De.ClaimAllRewardsBatch,e,Wa)}getOverviewBatch(e){return this.send(De.GetOverviewBatch,e,Qa)}};var $s=z.object({}).passthrough().transform(o=>o),Ha=z.object({SeasonChainID:z.string(),CycleIndex:z.number().nullish(),Season:z.lazy(()=>Ya).nullish(),ComputedStartUtc:u.nullish(),ComputedEndUtc:u.nullish(),SecondsRemaining:M.nullish(),UserState:$s.nullish(),NextTier:z.lazy(()=>Ja).nullish()}).passthrough(),$a=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()}),Zs=z.object({SeasonChainID:z.string(),CurrentSeasonID:z.string().nullish(),TierNumber:z.number(),Resources:b.nullish()}),Za=Je(Zs);var Ja=z.object({Tier:z.number().nullish(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),RequiredTokens:M.nullish(),TierReachedReward:L.nullish()}).passthrough(),Ya=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(Ja).nullish(),LinkedCollectionID:z.string().nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough();var Tm=z.object({SeasonChainID:z.string().nullish(),DisplayName:z.string().nullish(),Schedule:ce.nullish(),Seasons:z.array(Ya).nullish(),GrantTokensAccessMode:z.string().nullish(),Gate:W.nullish()}).passthrough(),bi=z.object({Chains:z.record(z.string(),Tm).nullish()}).passthrough(),ht={GetDefinitions:"GetDefinitions",GetActiveSeason:"GetActiveSeason",GetUserState:"GetUserState",GrantStatusTokens:"GrantStatusTokens",ClaimTierReward:"ClaimTierReward",ClaimTierRewardsBatch:"ClaimTierRewardsBatch"};var zi=class{constructor(e){this.ctx=e;}ctx;send(e,t,r){let i=A(this.ctx.settings.titleID,"Season",e,t.UserID??"");return this.ctx.transport.post(i,t,r,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(ht.GetDefinitions,e,bi)}getActiveSeason(e){return this.send(ht.GetActiveSeason,e,Ha)}getUserState(e){return this.send(ht.GetUserState,e,$s)}grantStatusTokens(e){return this.send(ht.GrantStatusTokens,e,$a)}claimTierReward(e){return this.send(ht.ClaimTierReward,e,Zs)}claimTierRewardsBatch(e){return this.send(ht.ClaimTierRewardsBatch,e,Za)}};var vm={Apple:"Apple",Google:"Google"},Xa=z.object({}).passthrough().transform(o=>o),Pm=z.object({PremiumID:z.string().nullish(),PurchaseDate:z.string().nullish(),ExpirationDate:z.string().nullish(),TransactionID:z.string().nullish(),IsAutoRenewEnabled:z.boolean().nullish()}).passthrough(),Im=z.object({PremiumID:z.string().nullish(),DisplayName:z.string().nullish(),Tier:z.number().nullish(),DurationDays:z.number().nullish(),TrialDurationDays:z.number().nullish(),PriceOptions:J.nullish(),Benefits:z.record(z.string(),z.string()).nullish()}).passthrough(),Js=z.object({Definitions:z.record(z.string(),Im).nullish()}).passthrough(),el=z.object({Premium:Js.nullish()}),tl=z.object({ServerTimeUtc:u.nullish(),Premium:Xa.nullish()}),Ti=z.object({ServerTimeUtc:u.nullish(),Premium:Xa.nullish(),Subscription:Pm.nullish(),Resources:b.nullish()}),Rt={GetDefinitions:"GetDefinitions",GetUserState:"GetUserState",ActivateTrial:"ActivateTrial",PurchaseWithResources:"PurchaseWithResources",PurchaseRealMoney:"PurchaseRealMoney"};var vi=class{constructor(e){this.ctx=e;}ctx;send(e,t,r){let i=A(this.ctx.settings.titleID,"Premium",e,t.UserID??"");return this.ctx.transport.post(i,t,r,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(Rt.GetDefinitions,e,el)}getUserState(e){return this.send(Rt.GetUserState,e,tl)}activateTrial(e){return this.send(Rt.ActivateTrial,e,Ti)}purchaseItemOrCurrency(e){return this.send(Rt.PurchaseWithResources,e,Ti)}purchaseRealMoney(e){return this.send(Rt.PurchaseRealMoney,e,Ti)}};var Pi=class{constructor(e){this.ctx=e;}ctx;send(e,t,r){let i=A(this.ctx.settings.titleID,"Character",e,t.UserID??"");return this.ctx.transport.post(i,t,r,{ticket:t.ClientSessionTicket})}getCharacterDefinitions(e){return this.send(Ae.GetCharacterDefinitions,e,Vr)}getUserCharacters(e){return this.send(Ae.GetUserCharacters,e,mo)}unlockCharacter(e){return this.send(Ae.UnlockCharacter,e,zs)}upgradeStatLevel(e){return this.send(Ae.UpgradeStatLevel,e,Ds)}upgradeCharacterLevel(e){return this.send(Ae.UpgradeCharacterLevel,e,bs)}equipItems(e){return this.send(Ae.EquipItems,e,fo)}unequipItems(e){return this.send(Ae.UnequipItems,e,go)}unequipAllCharacters(e){return this.send(Ae.UnequipAllCharacters,e,Ro)}unlockCharactersBatch(e){return this.send(Ae.UnlockCharactersBatch,e,yo)}upgradeCharacterLevelsBatch(e){return this.send(Ae.UpgradeCharacterLevelsBatch,e,Co)}upgradeStatLevelsBatch(e){return this.send(Ae.UpgradeStatLevelsBatch,e,So)}};var Ii=class{constructor(e){this.ctx=e;}ctx;send(e,t,r){let i=A(this.ctx.settings.titleID,"Match",e,t.UserID??"");return this.ctx.transport.post(i,t,r,{ticket:t.ClientSessionTicket})}createMatch(e){return this.send(Xe.CreateMatch,e,_o)}updateMatch(e){return this.send(Xe.UpdateMatch,e,Wo)}cancelMatch(e){return this.send(Xe.CancelMatch,e,Qo)}instantBattle(e){return this.send(Xe.InstantBattle,e,Ko)}saveStrategy(e){return this.send(Xe.SaveStrategy,e,Te)}getMyMatches(e){return this.send(Xe.GetMyMatches,e,ws)}getAvailableMatches(e){return this.send(Xe.GetAvailableMatches,e,ws)}getDefinitions(e){return this.send(Xe.GetDefinitions,e,Jo)}};var km={TradeUpRarity:"TradeUpRarity",TradeUpCollection:"TradeUpCollection"},rl=z.enum(["TradeUpRarity","TradeUpCollection"]),Mm=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:is.nullish()}),il=z.object({ServerTimeUtc:u,Type:rl.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(Mm).nullish()}),wm=z.object({CraftID:z.string().nullish(),Type:rl.nullish(),CatalogID:z.string().nullish(),CollectionID:z.string().nullish(),InputRarityID:z.string().nullish(),OutputRarityID:z.string().nullish(),RequiredItemCount:z.number().nullish(),PriceOptions:J.nullish()}).passthrough(),Ys=z.object({Definitions:z.record(z.string(),wm).nullish()}).passthrough(),sl=z.object({ServerTimeUtc:u.nullish(),CraftDefinitions:Ys.nullish()}),ki={GetDefinitions:"GetDefinitions",Craft:"Craft"};var Mi=class{constructor(e){this.ctx=e;}ctx;send(e,t,r){let i=A(this.ctx.settings.titleID,"Craft",e,t.UserID??"");return this.ctx.transport.post(i,t,r,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(ki.GetDefinitions,e,sl)}craft(e){return this.send(ki.Craft,e,il)}};var Am={Pending:"Pending",Accepted:"Accepted",Declined:"Declined",Cancelled:"Cancelled",Expired:"Expired"},Om=z.enum(["Pending","Accepted","Declined","Cancelled","Expired"]),nl=z.object({}).passthrough().transform(o=>o),wt=z.object({CollectibleID:z.string(),Rarity:z.number().nullish(),IsSpecial:z.boolean().nullish(),IsDuplicate:z.boolean().nullish(),CollectionCurrencyConverted:z.number().nullish()}),ol=z.object({GrantedCollectibles:z.array(wt).nullish(),DuplicateCollectibles:z.array(wt).nullish(),CollectionCurrencyEarned:M.nullish()}),al=z.object({OpenedCount:z.number().nullish(),Packs:z.array(ol).nullish(),GrantedCollectibles:z.array(wt).nullish(),DuplicateCollectibles:z.array(wt).nullish(),CollectionCurrencyEarned:M.nullish(),NewCollectionCurrencyBalance:M.nullish(),NewlyCompletedSetIDs:z.array(z.string()).nullish(),CollectionJustCompleted:z.boolean().nullish(),Resources:b.nullish(),TriggeredPity:z.array(z.unknown()).nullish()}),ll=z.object({OpenedCount:z.number().nullish(),Chests:z.array(ol).nullish(),GrantedCollectibles:z.array(wt).nullish(),DuplicateCollectibles:z.array(wt).nullish(),CollectionCurrencyEarned:M.nullish(),NewCollectionCurrencyBalance:M.nullish(),Resources:b.nullish(),TriggeredPity:z.array(z.unknown()).nullish()}),ul=z.object({GrantedCollectibleID:z.string().nullish(),NewlyCompletedSetID:z.string().nullish(),CollectionJustCompleted:z.boolean().nullish(),Resources:b.nullish()}),Xs=z.object({SetID:z.string(),Resources:b.nullish()}),cl=z.array(ie(Xs)),pl=z.object({Resources:b.nullish()}),Um=z.object({OfferID:z.string(),TitleID:z.string().nullish(),CollectionID:z.string().nullish(),SenderUserID:z.string().nullish(),SenderPublicData:ze.nullish(),OfferedCollectibleID:z.string().nullish(),OfferedCollectibleIsSpecial:z.boolean().nullish(),ReceiverUserID:z.string().nullish(),RequestedCollectibleID:z.string().nullish(),RequestedCollectibleIsSpecial:z.boolean().nullish(),Status:Om.nullish(),CreatedAtUtc:u.nullish(),ExpiresAtUtc:u.nullish(),RespondedAtUtc:u.nullish(),DeclineReason:z.string().nullish(),IsSpecialTradeEvent:z.boolean().nullish(),SpecialTradeEventID:z.string().nullish()}).passthrough(),dl=z.object({OfferID:z.string(),ExpiresAtUtc:u.nullish(),Resources:b.nullish()}),hl=z.object({OfferID:z.string(),Resources:b.nullish()}),ml=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()}),fl=z.object({OfferID:z.string(),Resources:b.nullish()}),en=z.object({Offers:z.array(Um).nullish()}),Bm=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(),Lm=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(Bm).nullish(),SetCompletionReward:L.nullish()}).passthrough(),qm=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(Lm).nullish(),GrandPrize:L.nullish()}).passthrough(),gl=z.object({BonusRewardSlots:Y.nullish(),PityRules:Y.nullish()}).passthrough(),Em=z.object({PackTypeID:z.string().nullish(),PriceOptions:J.nullish(),BonusRewardSlots:z.array(kt).nullish(),PityRules:z.array(Mt).nullish(),Presets:gl.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(),Gm=z.object({Rarity:z.number().nullish(),CollectionCurrencyGranted:z.number().nullish()}).passthrough(),Nm=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(kt).nullish(),PityRules:z.array(Mt).nullish(),Presets:gl.nullish(),Tier:z.number().nullish()}).passthrough(),jm=z.object({SpecialTradeEventID:z.string().nullish(),StartUtc:u.nullish(),EndUtc:u.nullish(),AllowedSpecialCollectibleIDs:z.array(z.string()).nullish(),SpecialTradeEventDailyTradeLimit:z.number().nullish()}).passthrough(),wi=z.object({Collections:z.record(z.string(),qm).nullish(),PackTypes:z.record(z.string(),Em).nullish(),CollectionChests:z.array(Nm).nullish(),DuplicateConversions:z.array(Gm).nullish(),DailyTradeLimit:z.number().nullish(),CollectibleJokerCatalogID:z.string().nullish(),CollectibleJokerItemID:z.string().nullish(),SpecialTradeEvents:z.array(jm).nullish(),RewardPools:li.nullish()}).passthrough(),ve={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 Ai=class{constructor(e){this.ctx=e;}ctx;send(e,t,r){let i=A(this.ctx.settings.titleID,"Collection",e,t.UserID??"");return this.ctx.transport.post(i,t,r,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(ve.GetDefinitions,e,wi)}getUserState(e){return this.send(ve.GetUserState,e,nl)}openPack(e){return this.send(ve.OpenPack,e,al)}openCollectionChest(e){return this.send(ve.OpenCollectionChest,e,ll)}useCollectibleJoker(e){return this.send(ve.UseCollectibleJoker,e,ul)}claimSetReward(e){return this.send(ve.ClaimSetReward,e,Xs)}claimSetRewardsBatch(e){return this.send(ve.ClaimSetRewardsBatch,e,cl)}claimGrandPrize(e){return this.send(ve.ClaimGrandPrize,e,pl)}sendTradeOffer(e){return this.send(ve.SendTradeOffer,e,dl)}cancelTradeOffer(e){return this.send(ve.CancelTradeOffer,e,hl)}acceptTradeOffer(e){return this.send(ve.AcceptTradeOffer,e,ml)}declineTradeOffer(e){return this.send(ve.DeclineTradeOffer,e,fl)}getMyTradeOffers(e){return this.send(ve.GetMyTradeOffers,e,en)}getIncomingTradeOffers(e){return this.send(ve.GetIncomingTradeOffers,e,en)}};var Fm=z.object({}).passthrough().transform(o=>o),Vm={Forming:"Forming",Active:"Active",Completed:"Completed",Failed:"Failed",Expired:"Expired"},_m={Active:"Active",Left:"Left",Replaced:"Replaced"},Wm=z.object({ObjectIndex:z.number().nullish(),ObjectCompletionRewardClaimed:z.boolean().nullish()}).passthrough(),Qm=z.object({UserID:z.string().nullish(),PublicData:ze.nullish(),BuildObjectsProgress:Wm.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(),Km=z.object({Index:z.number().nullish(),OwnerUserID:z.string().nullish(),CurrentProgress:z.number().nullish(),MaxProgress:z.number().nullish(),IsCompleted:z.boolean().nullish()}).passthrough(),Hm=z.object({Objects:z.array(Km).nullish()}).passthrough(),Rl=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(Qm).nullish(),BuildObjectsState:Hm.nullish(),Status:z.string().nullish(),CreatedAtUtc:u.nullish(),ExpiresAtUtc:u.nullish(),Version:z.number().nullish()}).passthrough(),yl=z.object({CoopChainID:z.string()}).passthrough(),$m=z.string(),tn=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(),Zm=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(),Jm=z.object({Objects:z.array(Zm).nullish(),PriceOptions:J.nullish(),SpinnerTable:z.array(tn).nullish(),MaxSpinsPerCall:z.number().nullish()}).passthrough(),Ym=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:$m.nullish(),PartnerCount:z.number().nullish(),MatchmakingTimeoutMinutes:z.number().nullish(),MemberGracePeriodMinutes:z.number().nullish(),BuildObjects:Jm.nullish(),GrandPrize:L.nullish()}).passthrough(),Xm=z.object({CoopChainID:z.string().nullish(),DisplayName:z.string().nullish(),Schedule:ce.nullish(),Events:z.array(Ym).nullish(),Gate:W.nullish()}).passthrough(),Cl=z.object({ServerTimeUtc:u.nullish(),UserState:Fm.nullish(),ActiveGroup:Rl.nullish()}),rn=z.object({ServerTimeUtc:u.nullish(),Group:Rl.nullish(),SecondsRemaining:M.nullish()}),Sl=z.object({ServerTimeUtc:u.nullish(),GroupID:z.string().nullish(),Resources:b.nullish(),ObjectIndex:z.number().nullish(),Sector:tn.nullish(),RequestedSpins:z.number().nullish(),SpinsUsed:z.number().nullish(),Sectors:z.array(tn).nullish(),ProgressDelta:z.number().nullish(),NewProgress:M.nullish(),MaxProgress:M.nullish(),ObjectCompleted:z.boolean().nullish(),AllObjectsCompleted:z.boolean().nullish()}),sn=z.object({ServerTimeUtc:u.nullish(),GroupID:z.string().nullish(),RewardType:z.string().nullish(),Resources:b.nullish()}),xl=z.object({ServerTimeUtc:u.nullish(),GroupID:z.string().nullish(),Success:z.boolean().nullish()}),Oi=z.object({Chains:z.record(z.string(),Xm).nullish()}).passthrough(),Ke={GetDefinitions:"GetDefinitions",GetActiveEvent:"GetActiveEvent",GetUserState:"GetUserState",GetGroupState:"GetGroupState",JoinOrCreateGroup:"JoinOrCreateGroup",Spin:"Spin",ClaimObjectReward:"ClaimObjectReward",ClaimGrandPrize:"ClaimGrandPrize",LeaveGroup:"LeaveGroup"};var Ui=class{constructor(e){this.ctx=e;}ctx;send(e,t,r){let i=A(this.ctx.settings.titleID,"CoopEvent",e,t.UserID??"");return this.ctx.transport.post(i,t,r,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(Ke.GetDefinitions,e,Oi)}getActiveEvent(e){return this.send(Ke.GetActiveEvent,e,yl)}getUserState(e){return this.send(Ke.GetUserState,e,Cl)}getGroupState(e){return this.send(Ke.GetGroupState,e,rn)}joinOrCreateGroup(e){return this.send(Ke.JoinOrCreateGroup,e,rn)}spin(e){return this.send(Ke.Spin,e,Sl)}claimObjectReward(e){return this.send(Ke.ClaimObjectReward,e,sn)}claimGrandPrize(e){return this.send(Ke.ClaimGrandPrize,e,sn)}leaveGroup(e){return this.send(Ke.LeaveGroup,e,xl)}};var ef={Active:"Active",Exhausted:"Exhausted",Expired:"Expired",Dismissed:"Dismissed"},tf={Locked:"Locked",Available:"Available",InProgress:"InProgress",Completed:"Completed",Hidden:"Hidden"},rf=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(),sf=z.object({TrackID:z.string().nullish(),CurrentValue:z.number().nullish(),LastUpdatedUtc:u.nullish()}).passthrough(),Dl=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(),rf).nullish(),Tracks:z.record(z.string(),sf).nullish(),SelectedChoiceNodeID:z.string().nullish()}).passthrough(),nf=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:Dl.nullish(),NextCycleStartsAtUtc:u.nullish(),LastUpdatedUtc:u.nullish(),DismissSkipAvailableAtUtc:u.nullish(),LastDismissedAtUtc:u.nullish()}).passthrough(),of=z.object({TotalExecutions:z.number().nullish(),DailyExecutions:z.number().nullish(),DailyResetUtc:u.nullish()}).passthrough(),af=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(),of).nullish()}).passthrough(),lf=z.object({Slots:z.record(z.string(),nf).nullish(),OfferHistory:z.record(z.string(),af).nullish(),LastUpdatedUtc:u.nullish()}).passthrough();var uf=z.object({Order:z.number().nullish(),OfferID:z.string().nullish(),DurationSec:z.number().nullish(),DelayBeforeActivationSec:z.number().nullish()}).passthrough(),cf=z.object({SlotID:z.string().nullish(),Enabled:z.boolean().nullish(),SortOrder:z.number().nullish(),Queue:z.array(uf).nullish(),Schedule:ce.nullish(),Gate:W.nullish(),AllowDismissSkip:z.boolean().nullish(),DismissSkipDelaySec:z.number().nullish()}).passthrough(),pf=z.object({StoreOfferID:z.string().nullish(),BillingProductID:z.string().nullish(),PriceOptions:J.nullish(),UseExternalRewards:z.boolean().nullish()}).passthrough(),df=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(),hf=z.object({Purchase:pf.nullish(),RewardedVideo:df.nullish()}).passthrough(),mf=z.object({TrackID:z.string().nullish(),Operator:z.string().nullish(),Value:z.number().nullish()}).passthrough(),ff=z.object({Milestones:Y.nullish()}).passthrough(),gf=z.object({TrackID:z.string().nullish(),Amount:z.number().nullish(),RespectBounds:z.boolean().nullish()}).passthrough(),Rf=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(),yf=z.object({RequiredCompletedNodeIDs:z.array(z.string()).nullish(),RequiredAnyCompletedNodeIDs:z.array(z.string()).nullish(),RequiredTracks:z.array(mf).nullish(),VisibleWhileLocked:z.boolean().nullish()}).passthrough(),Cf=z.object({NodeID:z.string().nullish(),SortOrder:z.number().nullish(),Type:z.string().nullish(),Action:hf.nullish(),Grants:L.nullish(),TrackChanges:z.array(gf).nullish(),MilestonePoints:z.number().nullish(),UnlockRules:yf.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(),bl=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(Cf).nullish(),Tracks:z.array(Rf).nullish(),Milestones:z.record(z.string(),be).nullish(),Presets:ff.nullish(),MilestoneClaimMode:z.string().nullish(),MilestoneToken:ft.nullish(),ExhaustedWhenAllTerminalNodesCompleted:z.boolean().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Metadata:z.record(z.string(),z.string()).nullish()}).passthrough(),Sf=z.object({Milestones:z.record(z.string(),ut).nullish()}).passthrough(),nn=z.object({Slots:z.record(z.string(),cf).nullish(),Offers:z.record(z.string(),bl).nullish(),Presets:Sf.nullish()}).passthrough(),zl=z.object({DealOfferDefinitions:nn.nullish()}),Tl=z.object({DealOffers:lf.nullish()}),xf=z.object({EntityID:z.string().nullish(),TotalEarned:z.number().nullish(),ClaimedIDs:z.array(z.string()).nullish(),ReachedUnclaimedIDs:z.array(z.string()).nullish()}).passthrough(),Df=z.object({SlotID:z.string().nullish(),SortOrder:z.number().nullish(),QueueIndex:z.number().nullish(),CycleIndex:z.number().nullish(),OfferDef:bl.nullish(),ActivationState:Dl.nullish(),IsNewActivation:z.boolean().nullish(),ComputedExpiresAtUtc:u.nullish(),Cost:Lt.nullish(),Milestone:xf.nullish()}).passthrough(),vl=z.object({Slots:z.array(Df).nullish()}),Pl=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()}),Il=z.object({ServerTimeUtc:u.nullish(),SlotID:z.string().nullish(),Resources:b.nullish()}),kl=z.object({ServerTimeUtc:u.nullish(),SlotID:z.string().nullish(),Resources:b.nullish()}),Ml=z.object({ServerTimeUtc:u.nullish(),SlotID:z.string().nullish(),MilestoneID:z.string().nullish(),Resources:b.nullish()}),wl=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()}),et={GetDefinition:"GetDefinition",GetUserState:"GetUserState",GetActiveDeals:"GetActiveDeals",DismissDeal:"DismissDeal",ExecuteNode:"ExecuteNode",RecordShow:"RecordShow",ClaimMilestone:"ClaimMilestone",ClaimMilestonesBatch:"ClaimMilestonesBatch"};var Bi=class{constructor(e){this.ctx=e;}ctx;send(e,t,r){let i=A(this.ctx.settings.titleID,"DealOffer",e,t.UserID??"");return this.ctx.transport.post(i,t,r,{ticket:t.ClientSessionTicket})}getDefinition(e){return this.send(et.GetDefinition,e,zl)}getUserState(e){return this.send(et.GetUserState,e,Tl)}getActiveDeals(e){return this.send(et.GetActiveDeals,e,vl)}dismissDeal(e){return this.send(et.DismissDeal,e,Il)}executeNode(e){return this.send(et.ExecuteNode,e,Pl)}recordShow(e){return this.send(et.RecordShow,e,kl)}claimMilestone(e){return this.send(et.ClaimMilestone,e,Ml)}claimMilestonesBatch(e){return this.send(et.ClaimMilestonesBatch,e,wl)}};var bf=z.object({}).passthrough().transform(o=>o),zf=z.object({FeatureKey:z.string().nullish(),IsEnabled:z.boolean().nullish(),Percent:z.number().nullish(),SourceCurrencyID:z.string().nullish(),TargetCurrencyID:z.string().nullish()}).passthrough(),on=z.object({IsEnabled:z.boolean().nullish(),ActivationReward:L.nullish(),InviteRewards:z.record(z.string(),be).nullish(),SpendRewards:z.array(zf).nullish()}).passthrough(),Al=z.object({ReferralDefinitions:on.nullish()}),Ol=z.object({Referral:bf.nullish()}),Ul=z.object({ReferralCode:z.string().nullish(),IsFirstActivation:z.boolean().nullish(),Resources:b.nullish()}),an=z.object({RewardID:z.string().nullish(),Resources:b.nullish()}),Bl=Je(an),yt={GetDefinitions:"GetDefinitions",GetUserState:"GetUserState",ActivateReferralCode:"ActivateReferralCode",ClaimInviteReward:"ClaimInviteReward",ClaimInviteRewardsBatch:"ClaimInviteRewardsBatch"};var Li=class{constructor(e){this.ctx=e;}ctx;send(e,t,r){let i=A(this.ctx.settings.titleID,"Referral",e,t.UserID??"");return this.ctx.transport.post(i,t,r,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(yt.GetDefinitions,e,Al)}getUserState(e){return this.send(yt.GetUserState,e,Ol)}activateReferralCode(e){return this.send(yt.ActivateReferralCode,e,Ul)}claimInviteReward(e){return this.send(yt.ClaimInviteReward,e,an)}claimInviteRewardsBatch(e){return this.send(yt.ClaimInviteRewardsBatch,e,Bl)}};var Tf={RequestSent:"RequestSent",Accepted:"Accepted",Declined:"Declined",Removed:"Removed"},vf={Attack:"Attack",Raid:"Raid",FriendAdd:"FriendAdd"},Ll=z.object({UserID:z.string(),PublicData:ze.nullish()}),Pf=z.object({OwnerUserID:z.string().nullish(),ActorUserID:z.string().nullish(),ActorProfile:ze.nullish(),Type:z.string().nullish(),CreatedAt:u.nullish(),OwnerImpact:b.nullish(),IsBlocked:z.boolean().nullish(),TargetObjectName:z.string().nullish()}).passthrough(),qi=z.object({Friends:z.array(Ll).nullish()}),If=z.object({FriendsCount:z.number().nullish(),IncomingRequestsCount:z.number().nullish(),OutgoingRequestsCount:z.number().nullish()}),Nt=z.object({TargetUserID:z.string().nullish(),Status:z.string().nullish(),Target:Ll.nullish(),Counters:If.nullish()}),ql=z.object({Events:z.array(Pf).nullish()}),tt={GetFriendsList:"GetFriendsList",GetIncomingRequests:"GetIncomingRequests",GetRecommendedFriends:"GetRecommendedFriends",SendFriendRequest:"SendFriendRequest",AcceptFriendRequest:"AcceptFriendRequest",DeclineFriendRequest:"DeclineFriendRequest",RemoveFriend:"RemoveFriend",GetTimeline:"GetTimeline"};var Ei=class{constructor(e){this.ctx=e;}ctx;send(e,t,r){let i=A(this.ctx.settings.titleID,"Social",e,t.UserID??"");return this.ctx.transport.post(i,t,r,{ticket:t.ClientSessionTicket})}getFriendsList(e){return this.send(tt.GetFriendsList,e,qi)}getIncomingRequests(e){return this.send(tt.GetIncomingRequests,e,qi)}getRecommendedFriends(e){return this.send(tt.GetRecommendedFriends,e,qi)}sendFriendRequest(e){return this.send(tt.SendFriendRequest,e,Nt)}acceptFriendRequest(e){return this.send(tt.AcceptFriendRequest,e,Nt)}declineFriendRequest(e){return this.send(tt.DeclineFriendRequest,e,Nt)}removeFriend(e){return this.send(tt.RemoveFriend,e,Nt)}getTimeline(e){return this.send(tt.GetTimeline,e,ql)}};var kf={Replace:"Replace",Refresh:"Refresh",KeepBest:"KeepBest",Stack:"Stack"};var At=z.object({Target:z.string().nullish(),Operation:z.string().nullish(),Value:z.number().nullish()}).passthrough(),Mf=z.object({BoostID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),PriceOptions:J.nullish(),Effect:At.nullish(),DurationSeconds:z.number().nullish(),Charges:z.number().nullish(),StackingPolicy:z.string().nullish(),MaxActiveInstances:z.number().nullish(),Tags:z.array(z.string()).nullish()}).passthrough(),wf=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:ce.nullish(),Effects:z.array(At).nullish(),Gate:W.nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),Af=z.object({ChainedBoostID:z.string().nullish(),Order:z.number().nullish(),DurationSec:z.number().nullish(),Effects:z.array(At).nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),Of=z.object({ChainID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Schedule:ce.nullish(),Phases:z.array(Af).nullish(),Gate:W.nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),Uf=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(Le).nullish(),Effects:z.array(At).nullish(),DurationSeconds:z.number().nullish(),Charges:z.number().nullish(),StackingPolicy:z.string().nullish(),MaxActiveInstances:z.number().nullish(),Gate:W.nullish()}).passthrough(),Bf=z.object({MaxAddPercent:z.number().nullish(),MaxMultiply:z.number().nullish(),MaxAddFlat:z.number().nullish()}).passthrough(),Lf=z.object({StackingCaps:z.record(z.string(),Bf).nullish()}).passthrough(),Gi=z.object({Definitions:z.record(z.string(),Mf).nullish(),ScheduledBoosts:z.record(z.string(),wf).nullish(),BoostChains:z.record(z.string(),Of).nullish(),TriggeredBoosts:z.record(z.string(),Uf).nullish(),Settings:Lf.nullish()}).passthrough(),El=z.object({InstanceID:z.string(),BoostID:z.string(),ActivatedAtUtc:u.nullish(),ExpiresAtUtc:u.nullish(),RemainingCharges:z.number().nullish(),EffectSnapshot:At.nullish(),SourceType:z.string().nullish(),SourceRef:z.string().nullish()}).passthrough();z.object({Date:u.nullish(),DailyCount:z.number().nullish(),LastFiredUtc:u.nullish()}).passthrough();var Gl=z.object({ServerTimeUtc:u.nullish(),Active:z.record(z.string(),El).nullish()}),Nl=z.object({ServerTimeUtc:u.nullish(),BoostID:z.string().nullish(),StackingPolicy:z.string().nullish(),ActivatedBoost:El.nullish(),Resources:b.nullish()}),qf={Scheduled:"Scheduled",Chain:"Chain"},Ef=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(At).nullish(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),jl=z.object({ServerTimeUtc:u.nullish(),Windows:z.array(Ef).nullish()}),Ct={GetDefinitions:"GetDefinitions",GetActive:"GetActive",GetActiveWindows:"GetActiveWindows",Activate:"Activate",CleanupExpired:"CleanupExpired"};var Ni=class{constructor(e){this.ctx=e;}ctx;send(e,t,r){let i=A(this.ctx.settings.titleID,"TimedBoost",e,t.UserID??"");return this.ctx.transport.post(i,t,r,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(Ct.GetDefinitions,e,Gi)}getActive(e){return this.send(Ct.GetActive,e,Gl)}getActiveWindows(e){return this.send(Ct.GetActiveWindows,e,jl)}activate(e){return this.send(Ct.Activate,e,Nl)}cleanupExpired(e){return this.send(Ct.CleanupExpired,e,Te)}};var ji=class{constructor(e){this.ctx=e;}ctx;send(e,t,r){let i=A(this.ctx.settings.titleID,"UserCustomData",e,t.UserID??"");return this.ctx.transport.post(i,t,r,{ticket:t.ClientSessionTicket})}getUserCustomDataDefinitions(e){return this.send(Qe.GetUserCustomDataDefinitions,e,Br)}getMyUserCustomData(e){return this.send(Qe.GetMyUserCustomData,e,eo)}getPublicUserCustomDataOf(e){return this.send(Qe.GetPublicUserCustomDataOf,e,Rs)}setPrivateData(e){return this.send(Qe.SetPrivateData,e,ys)}setPublicData(e){return this.send(Qe.SetPublicData,e,ys)}deleteKey(e){return this.send(Qe.DeleteKey,e,Te)}batchSet(e){return this.send(Qe.BatchSet,e,to)}batchDelete(e){return this.send(Qe.BatchDelete,e,ro)}batchGetPublicUserCustomDataOf(e){return this.send(Qe.BatchGetPublicUserCustomDataOf,e,io)}};var Gf={Static:"Static",Runtime:"Runtime"},Nf={Public:"Public",Private:"Private"},jf=z.enum(["Client","Server","System"]),Ff=z.enum(["String","Int","Bool","Json"]),Vf=z.object({Value:z.string().nullish(),UpdatedAt:u.nullish(),Version:z.number().nullish(),LastWriter:jf.nullish(),ExpiresAt:u.nullish()}).passthrough(),Fl=z.record(z.string(),Vf),ln=z.object({StaticVersion:z.number().nullish(),RuntimeVersion:z.number().nullish(),Static:Fl.nullish(),Runtime:Fl.nullish(),NotModified:z.boolean().nullish()}),_f=z.object({KeyID:z.string(),Scope:z.enum(["Static","Runtime"]).nullish(),Bucket:z.enum(["Public","Private"]).nullish(),ValueType:Ff.nullish(),MaxValueLengthBytes:z.number().nullish(),TtlSeconds:z.number().nullish(),DefaultValue:z.string().nullish(),Description:z.string().nullish()}).passthrough(),Fi=z.object({Keys:z.record(z.string(),_f).nullish(),DefaultMaxValueLengthBytes:z.number().nullish(),DefaultTtlSeconds:z.number().nullish(),MaxKeysPerBucket:z.number().nullish(),MaxTotalSizeBytes:z.number().nullish(),RejectUnregisteredKeys:z.boolean().nullish()}).passthrough(),jt={GetTitleCustomDataDefinitions:"GetTitleCustomDataDefinitions",GetPublicTitleData:"GetPublicTitleData",GetPublicTitleDataKeys:"GetPublicTitleDataKeys"};var Vi=class{constructor(e){this.ctx=e;}ctx;send(e,t,r){let i=A(this.ctx.settings.titleID,"TitleCustomData",e,t.UserID??"");return this.ctx.transport.post(i,t,r,{ticket:t.ClientSessionTicket})}getTitleCustomDataDefinitions(e){return this.send(jt.GetTitleCustomDataDefinitions,e,Fi)}getPublicTitleData(e){return this.send(jt.GetPublicTitleData,e,ln)}getPublicTitleDataKeys(e){return this.send(jt.GetPublicTitleDataKeys,e,ln)}};var Wf={Fast:"Fast",Sequential:"Sequential"},Qf={Instant:"Instant",Timed:"Timed"},Kf={Hit:"Hit",Blocked:"Blocked"},Hf=z.object({SlotIndex:z.number(),Level:z.number().nullish(),IsDamaged:z.boolean().nullish(),MaxLevelRewardClaimed:z.boolean().nullish()}).passthrough(),$f=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 Vl=z.object({}).passthrough().transform(o=>o),_l=z.object({Min:z.number().nullish(),Max:z.number().nullish()}).passthrough(),Me=z.object({Operation:b.nullish(),ScaleWithRollMultiplier:z.boolean().nullish()}).passthrough(),Zf=z.object({Count:z.number().nullish(),Sides:z.number().nullish()}).passthrough(),Jf=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(),Yf=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(),Xf=z.object({CostMatrix:z.array(z.array(z.number())).nullish(),PerBoardGrowth:z.number().nullish(),EconomyScale:z.number().nullish(),ScaledResources:fe.nullish()}).passthrough(),Wl=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(),eg=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(),tg=z.object({Tiles:z.record(z.string(),eg).nullish()}).passthrough(),rg=z.object({Weight:z.number().nullish(),Bonus:Me.nullish(),Tag:z.string().nullish()}).passthrough(),ig=z.object({Weight:z.number().nullish(),Tag:z.string().nullish(),MinBonusCells:z.number().nullish(),MaxBonusCells:z.number().nullish(),BonusPool:z.array(rg).nullish(),GuaranteedBonus:Me.nullish(),IsJackpot:z.boolean().nullish(),JackpotFinalMultiplier:z.number().nullish(),JackpotSymbolDistribution:z.record(z.string(),z.number()).nullish()}).passthrough(),sg=z.object({Variants:z.array(ig).nullish()}).passthrough(),ng=z.object({Weight:z.number().nullish(),OutcomeID:z.string().nullish(),Reward:Me.nullish(),ForceAction:z.string().nullish(),SpecialModeID:z.string().nullish()}).passthrough(),og=z.object({Outcomes:z.array(ng).nullish()}).passthrough(),Ql=z.object({PerAdMultiplierRange:_l.nullish(),MaxAdViews:z.number().nullish(),AdCreditCost:z.number().nullish(),FormulaKind:z.string().nullish(),ApplyMultiplierOnEarlyClaim:z.boolean().nullish()}).passthrough(),ag=z.object({ElapsedSeconds:z.number().nullish(),Reward:Me.nullish()}).passthrough(),lg=z.object({Tiers:z.array(ag).nullish(),BelowFirstTierReward:Me.nullish()}).passthrough(),ug=z.object({ChoiceID:z.string().nullish(),Mode:z.string().nullish(),Reward:Me.nullish(),DurationSeconds:z.number().nullish(),PriceOptions:J.nullish(),Multipliers:Ql.nullish(),Gradation:lg.nullish()}).passthrough(),cg=z.object({Choices:z.array(ug).nullish(),OfferExpireSeconds:z.number().nullish(),ClaimExpireSeconds:z.number().nullish()}).passthrough(),pg=z.object({Chance:z.number().nullish(),RequiredOutcome:z.string().nullish(),Reward:Me.nullish(),Tag:z.string().nullish()}).passthrough(),dg=z.object({OnPassStart:Me.nullish(),OnTileLanding:z.record(z.string(),Me).nullish(),OnAttack:z.record(z.string(),Me).nullish(),OnRaid:z.record(z.string(),Me).nullish(),OnBuild:Me.nullish(),OnStageComplete:Me.nullish(),OnAttackBonusDrops:z.array(pg).nullish(),ChanceTablesByID:z.record(z.string(),og).nullish(),SpecialModesByID:z.record(z.string(),cg).nullish()}).passthrough(),Kl=z.object({BaseAttackReward:L.nullish(),BaseRaidReward:L.nullish(),MaxRollMultiplier:z.number().nullish(),MaxShields:z.number().nullish(),Buildings:z.array(Wl).nullish(),HeistGridBonusConfig:sg.nullish(),StageOperations:dg.nullish(),TileLandingMultiplier:_l.nullish(),EconomyOverride:Xf.nullish()}).passthrough(),hg=z.object({Name:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),BoardTemplateID:z.string().nullish(),Buildings:z.array(Wl).nullish(),StageTemplateID:z.string().nullish(),CostMatrixTemplateID:z.string().nullish(),UnitValue:z.number().nullish(),Override:Kl.nullish()}).passthrough(),_i=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(),tg).nullish(),StageTemplatesByID:z.record(z.string(),Kl).nullish(),StagesByLevel:z.record(z.string(),hg).nullish(),SoftCurrencyID:z.string().nullish(),ProceduralEconomy:Yf.nullish(),Dice:Zf.nullish(),Bots:Jf.nullish()}).passthrough(),mg=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(),be).nullish(),GrandPrize:L.nullish()}).passthrough(),Wi=z.object({Board:_i.nullish(),CommunityChest:mg.nullish()}).passthrough(),fg=z.object({TargetUserID:z.string().nullish(),IsBot:z.boolean().nullish(),PublicData:ze.nullish(),TargetBuildingStates:z.array(Hf).nullish(),TargetHasShield:z.boolean().nullish()}).passthrough(),gg=z.object({ChoiceID:z.string().nullish(),Mode:z.string().nullish(),Reward:Me.nullish(),DurationSeconds:z.number().nullish(),PriceOptions:J.nullish(),Multipliers:Ql.nullish()}).passthrough(),Rg=z.object({ModeID:z.string().nullish(),Choices:z.array(gg).nullish()}).passthrough(),yg=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(),Hl=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:b.nullish(),ActionRequired:z.string().nullish(),ActionData:fg.nullish(),SpecialModeOffer:Rg.nullish(),CommunityChestContribution:yg.nullish()}).passthrough(),$l=z.object({Outcome:z.string().nullish(),IsBotTarget:z.boolean().nullish(),BuildingIndexHit:z.number().nullish(),Operation:b.nullish(),DualResult:mt.nullish()}).passthrough(),un=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($f).nullish(),HeistVariantTag:z.string().nullish(),IsJackpot:z.boolean().nullish(),Operation:b.nullish(),DualResult:mt.nullish()}).passthrough(),Zl=z.object({BuiltIndex:z.number(),NewLevel:z.number().nullish(),StageComplete:z.boolean().nullish(),MaxLevelRewardClaimed:z.boolean().nullish(),Operation:b.nullish()}).passthrough(),Jl=z.object({Mode:z.union([z.string(),z.number()]).nullish(),Operation:b.nullish(),DurationSeconds:z.number().nullish(),StartedAtUtc:u.nullish(),ExpiresAtUtc:u.nullish()}).passthrough(),Yl=z.object({AdViewsUsed:z.number().nullish(),RolledMultiplier:z.number().nullish(),AccumulatedMultiplier:z.number().nullish(),RemainingAdViews:z.number().nullish()}).passthrough(),Xl=z.object({FinalMultiplier:z.number().nullish(),AdViewsUsed:z.number().nullish(),AccumulatedMultiplier:z.number().nullish(),IsEarlyClaim:z.boolean().nullish(),Operation:b.nullish()}).passthrough(),Cg={Forming:"Forming",Active:"Active",Completed:"Completed",Failed:"Failed",Expired:"Expired"},eu=z.enum(["Forming","Active","Completed","Failed","Expired"]),Sg={Active:"Active",Left:"Left",Replaced:"Replaced"},xg=z.enum(["Active","Left","Replaced"]),Dg=z.object({CurrentProgress:M.nullish(),MaxProgress:M.nullish()}).passthrough(),bg=z.object({UserID:z.string().nullish(),PublicData:ze.nullish(),IsBot:z.boolean().nullish(),ContributionPoints:M.nullish(),ClaimedMilestoneIDs:z.array(z.string()).nullish(),GrandPrizeClaimed:z.boolean().nullish(),MemberStatus:xg.nullish(),JoinedAtUtc:u.nullish(),LeftAtUtc:u.nullish()}).passthrough(),tu=z.object({GroupID:z.string().nullish(),TitleID:z.string().nullish(),RoundIndex:z.number().nullish(),Members:z.array(bg).nullish(),SharedProgress:Dg.nullish(),Status:eu.nullish(),CreatedAtUtc:u.nullish(),ExpiresAtUtc:u.nullish(),Version:z.number().nullish()}).passthrough(),zg=z.object({GroupID:z.string().nullish(),RoundIndex:z.number().nullish(),FinalStatus:eu.nullish(),GrandPrizeReceived:z.boolean().nullish(),FinishedAtUtc:u.nullish()}).passthrough(),Tg=z.object({ActiveGroupID:z.string().nullish(),ActiveRoundIndex:z.number().nullish(),History:z.array(zg).nullish()}).passthrough(),ru=z.object({ServerTimeUtc:u.nullish(),UserState:Tg.nullish(),ActiveGroup:tu.nullish(),SecondsRemaining:M.nullish()}),iu=z.object({ServerTimeUtc:u.nullish(),Group:tu.nullish(),SecondsRemaining:M.nullish()}),cn=z.object({ServerTimeUtc:u.nullish(),GroupID:z.string().nullish(),RewardType:z.string().nullish(),MilestoneID:z.string().nullish(),Resources:b.nullish()}),su=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 vg=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(),Pg=z.object({ExperimentID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),IsEnabled:z.boolean().nullish(),Schedule:ce.nullish(),Gate:W.nullish(),Variants:z.array(vg).nullish(),Salt:z.string().nullish(),LayerID:z.string().nullish(),StickyAssignment:z.boolean().nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),nu=z.object({Experiments:z.record(z.string(),Pg).nullish()}).passthrough();var Ig={Mesh:"Mesh",Host:"Host"},pn=z.enum(["Mesh","Host"]),kg={ServerRelay:"ServerRelay",P2P:"P2P"},dn=z.enum(["ServerRelay","P2P"]),Mg={Public:"Public",Private:"Private"},wg=z.enum(["Public","Private"]),Ag={Signal:"Signal",Chat:"Chat",PlayerJoined:"PlayerJoined",PlayerLeft:"PlayerLeft",HostChanged:"HostChanged",RoomClosed:"RoomClosed",MemberState:"MemberState"},Og=z.enum(["Signal","Chat","PlayerJoined","PlayerLeft","HostChanged","RoomClosed","MemberState"]),ou=z.object({Urls:z.string().nullish(),Username:z.string().nullish(),Credential:z.string().nullish()}).passthrough(),Ug=z.object({Enabled:z.boolean().nullish()}).passthrough(),au=z.object({SystemState:Ug.nullish(),DefaultTopology:pn.nullish(),AllowCreatorTopologyOverride:z.boolean().nullish(),DefaultChatMode:dn.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(ou).nullish()}).passthrough(),Bg=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(),Lg=z.object({RoomID:z.string().nullish(),Name:z.string().nullish(),HostUserID:z.string().nullish(),Topology:pn.nullish(),ChatMode:dn.nullish(),MaxPlayers:z.number().nullish(),MemberCount:z.number().nullish(),CreatedAt:z.number().nullish()}).passthrough(),qg=z.object({Seq:z.number().nullish(),Type:Og.nullish(),FromUserID:z.string().nullish(),ToUserID:z.string().nullish(),Kind:z.string().nullish(),Payload:z.string().nullish(),Ts:z.number().nullish()}).passthrough(),Qi=z.object({RoomID:z.string().nullish(),Name:z.string().nullish(),HostUserID:z.string().nullish(),OwnerUserID:z.string().nullish(),Topology:pn.nullish(),ChatMode:dn.nullish(),Visibility:wg.nullish(),Status:z.string().nullish(),MaxPlayers:z.number().nullish(),Members:z.array(Bg).nullish(),IceServers:z.array(ou).nullish(),Seq:z.number().nullish()}).passthrough(),hn=z.object({Closed:z.boolean().nullish(),NewHostUserID:z.string().nullish()}).passthrough(),lu=z.object({Rooms:z.array(Lg).nullish(),Page:z.number().nullish(),PageSize:z.number().nullish(),HasMore:z.boolean().nullish()}).passthrough(),uu=z.object({Envelopes:z.array(qg).nullish(),MaxSeq:z.number().nullish()}).passthrough(),Ki=z.object({Seq:z.number().nullish()}).passthrough(),Fe={CreateRoom:"CreateRoom",JoinRoom:"JoinRoom",LeaveRoom:"LeaveRoom",ListRooms:"ListRooms",GetRoom:"GetRoom",CloseRoom:"CloseRoom",Poll:"Poll",SendSignal:"SendSignal",SendChat:"SendChat",SetMemberState:"SetMemberState"};var mn=z.object({TitleCustomData:Fi.nullish(),Character:Vr.nullish(),Item:ii.nullish(),Currency:Fr.nullish(),Store:ni.nullish(),Lootbox:Vs.nullish(),Quest:Zt.nullish(),TimedEvent:fi.nullish(),Leaderboard:xi.nullish(),Season:bi.nullish(),Reward:_s.nullish(),Collection:wi.nullish(),Craft:Ys.nullish(),DealOffer:nn.nullish(),Premium:Js.nullish(),TimedBoost:Gi.nullish(),CoopEvent:Oi.nullish(),GameLoop:Wi.nullish(),Match:Os.nullish(),Experiment:nu.nullish(),Blockchain:vs.nullish(),Marketplace:qs.nullish(),Multiplayer:au.nullish(),UserCustomData:Br.nullish(),Referral:on.nullish(),Localization:la.nullish()}).passthrough();var St={GetTitlePublicConfiguration:"GetTitlePublicConfiguration",GetTitlePublicConfigurationExcept:"GetTitlePublicConfigurationExcept",GetCurrencyDefinitions:"GetCurrencyDefinitions",GetItemDefinitions:"GetItemDefinitions",GetServerTime:"GetServerTime"};var Hi=class{constructor(e){this.ctx=e;}ctx;send(e,t,r){let i=A(this.ctx.settings.titleID,"Title",e,t.UserID??"");return this.ctx.transport.post(i,t,r,{ticket:t.ClientSessionTicket})}getTitlePublicConfiguration(e){return this.send(St.GetTitlePublicConfiguration,e,mn)}getTitlePublicConfigurationExcept(e){return this.send(St.GetTitlePublicConfigurationExcept,e,mn)}getCurrencyDefinitions(e){return this.send(St.GetCurrencyDefinitions,e,Fr)}getItemDefinitions(e){return this.send(St.GetItemDefinitions,e,ii)}getServerTime(e){return this.send(St.GetServerTime,e,Te)}};var $i=class{constructor(e){this.ctx=e;}ctx;send(e,t,r,i=false){let s=A(this.ctx.settings.titleID,"GameLoop",e,t.UserID??"");return this.ctx.transport.post(s,t,r,{ticket:t.ClientSessionTicket,silent:i})}getGameLoops(e){return this.send(Se.GetGameLoops,e,Wi)}getBoardDefinition(e,t=false){return this.send(Se.GetBoardDefinition,e,_i,t)}getBoardDefinitionForLevel(e,t=false){return this.send(Se.GetBoardDefinitionForLevel,e,_i,t)}getUserBoardState(e){return this.send(Se.GetUserBoardState,e,Vl)}boardLoopRoll(e){return this.send(Se.BoardLoopRoll,e,Hl)}boardLoopAttack(e){return this.send(Se.BoardLoopAttack,e,$l)}boardLoopRaid(e){return this.send(Se.BoardLoopRaid,e,un)}boardLoopRaidFast(e){return this.send(Se.BoardLoopRaidFast,e,un)}boardLoopBuild(e){return this.send(Se.BoardLoopBuild,e,Zl)}boardSpecialChoose(e){return this.send(Se.BoardSpecialChoose,e,Jl)}boardSpecialApplyMultiplier(e){return this.send(Se.BoardSpecialApplyMultiplier,e,Yl)}boardSpecialClaim(e){return this.send(Se.BoardSpecialClaim,e,Xl)}getCommunityChestState(e){return this.send(Se.GetCommunityChestState,e,ru)}joinOrCreateCommunityChest(e){return this.send(Se.JoinOrCreateCommunityChest,e,iu)}claimCommunityChestMilestone(e){return this.send(Se.ClaimCommunityChestMilestone,e,cn)}claimCommunityChestGrandPrize(e){return this.send(Se.ClaimCommunityChestGrandPrize,e,cn)}leaveCommunityChest(e){return this.send(Se.LeaveCommunityChest,e,su)}};var Ft=z.lazy(()=>z.union([z.string(),z.number(),z.boolean(),z.null(),z.array(Ft),z.record(z.string(),Ft)]));var Gg={Live:"Live",Latest:"Latest",Specific:"Specific"},Ng={Debug:"Debug",Info:"Info",Warning:"Warning",Error:"Error"},jg=z.enum(["Debug","Info","Warning","Error"]),Fg={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"},Vg=z.enum(["None","Disabled","NoActiveRevision","RevisionNotFound","InvalidFieldName","RateLimited","HandlerNotFound","HandlerDisabled","Timeout","StatementCountExceeded","StackOverflow","ApiCallLimitExceeded","JavaScriptException","ExecutionError"]),_g=z.object({Level:jg,Message:z.string().nullish(),Data:Ft.nullish()}),Wg=z.object({Error:Vg,Message:z.string().nullish(),StackTrace:z.string().nullish()}),cu=z.object({FunctionName:z.string().nullish(),Revision:z.number().nullish(),FunctionResult:Ft.nullish(),FunctionResultTooLarge:z.boolean().nullish(),Logs:z.array(_g).nullish(),LogsTooLarge:z.boolean().nullish(),ExecutionTimeSeconds:z.number().nullish(),APIRequestsIssued:z.number().nullish(),Error:Wg.nullish()}),fn={Execute:"Execute"};var Zi=class{constructor(e){this.ctx=e;}ctx;execute(e){let t=A(this.ctx.settings.titleID,"CloudCode",fn.Execute,e.UserID??"");return this.ctx.transport.post(t,e,cu,{ticket:e.ClientSessionTicket})}};var Ji=class{constructor(e){this.ctx=e;}ctx;send(e,t,r){let i=A(this.ctx.settings.titleID,"Blockchain",e,t.UserID??"");return this.ctx.transport.post(i,t,r,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(Oe.GetDefinitions,e,wo)}getUserState(e){return this.send(Oe.GetUserState,e,Ao)}depositToken(e){return this.send(Oe.DepositToken,e,Oo)}depositNFT(e){return this.send(Oe.DepositNFT,e,Uo)}requestTokenWithdrawal(e){return this.send(Oe.RequestTokenWithdrawal,e,Bo)}requestNFTWithdrawal(e){return this.send(Oe.RequestNFTWithdrawal,e,Lo)}getTransactionHistory(e){return this.send(Oe.GetTransactionHistory,e,qo)}retryWithdrawal(e){return this.send(Oe.RetryWithdrawal,e,Eo)}confirmWithdrawal(e){return this.send(Oe.ConfirmWithdrawal,e,Go)}donateToDeveloper(e){return this.send(Oe.DonateToDeveloper,e,ks)}donateToUsersPool(e){return this.send(Oe.DonateToUsersPool,e,ks)}};var Yi=class{constructor(e){this.ctx=e;}ctx;send(e,t,r){let i=A(this.ctx.settings.titleID,"Marketplace",e,t.UserID??"");return this.ctx.transport.post(i,t,r,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(ae.GetDefinitions,e,Xo)}getGroupedOffers(e){return this.send(ae.GetGroupedOffers,e,ea)}getOffersByItem(e){return this.send(ae.GetOffersByItem,e,Es)}getOffer(e){return this.send(ae.GetOffer,e,ta)}getBuyOrders(e){return this.send(ae.GetBuyOrders,e,Es)}getMyState(e){return this.send(ae.GetMyState,e,ia)}getHistory(e){return this.send(ae.GetHistory,e,sa)}createListing(e){return this.send(ae.CreateListing,e,Et)}cancelListing(e){return this.send(ae.CancelListing,e,Ge)}buy(e){return this.send(ae.Buy,e,Ge)}marketBuy(e){return this.send(ae.MarketBuy,e,Ge)}marketSell(e){return this.send(ae.MarketSell,e,Ge)}createAuction(e){return this.send(ae.CreateAuction,e,Et)}placeBid(e){return this.send(ae.PlaceBid,e,ra)}claimAuction(e){return this.send(ae.ClaimAuction,e,Ge)}createBuyOrder(e){return this.send(ae.CreateBuyOrder,e,Et)}cancelBuyOrder(e){return this.send(ae.CancelBuyOrder,e,Ge)}fillBuyOrder(e){return this.send(ae.FillBuyOrder,e,Ge)}createDirectTrade(e){return this.send(ae.CreateDirectTrade,e,Et)}respondDirectTrade(e){return this.send(ae.RespondDirectTrade,e,Ge)}cancelDirectTrade(e){return this.send(ae.CancelDirectTrade,e,Ge)}claimBack(e){return this.send(ae.ClaimBack,e,Ge)}};var Xi=class{constructor(e){this.ctx=e;}ctx;send(e,t,r){let i=A(this.ctx.settings.titleID,"Multiplayer",e,t.UserID??"");return this.ctx.transport.post(i,t,r,{ticket:t.ClientSessionTicket})}createRoom(e){return this.send(Fe.CreateRoom,e,Qi)}joinRoom(e){return this.send(Fe.JoinRoom,e,Qi)}leaveRoom(e){return this.send(Fe.LeaveRoom,e,hn)}listRooms(e){return this.send(Fe.ListRooms,e,lu)}getRoom(e){return this.send(Fe.GetRoom,e,Qi)}closeRoom(e){return this.send(Fe.CloseRoom,e,hn)}poll(e){return this.send(Fe.Poll,e,uu)}sendSignal(e){return this.send(Fe.SendSignal,e,Ki)}sendChat(e){return this.send(Fe.SendChat,e,Ki)}setMemberState(e){return this.send(Fe.SetMemberState,e,Ki)}};var es=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=Sn(e$1),this.emitter=new Ut,this.platform=e$1.platform??new e,this.clientPlatform=e$1.clientPlatform??Dn(),this.fetchImpl=e$1.fetch??globalThis.fetch.bind(globalThis),this.transport=new Xt({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 ir(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:r})=>{this.userService.noteStateVersions(t,r);}),this.authStore=new sr(this.platform.storage,this.settings.titleID),this.api={authentication:new Yr(this),user:new ei(this),currency:new ti(this),item:new si(this),store:new oi(this),purchase:new ai(this),lootbox:new ci(this),reward:new pi(this),quest:new mi(this),tutorial:new di(this),localization:new hi(this),timedEvent:new gi(this),leaderboard:new Di(this),season:new zi(this),premium:new vi(this),character:new Pi(this),match:new Ii(this),craft:new Mi(this),collection:new Ai(this),coopEvent:new Ui(this),dealOffer:new Bi(this),referral:new Li(this),social:new Ei(this),timedBoost:new Ni(this),userCustomData:new ji(this),titleCustomData:new Vi(this),title:new Hi(this),gameLoop:new $i(this),cloudCode:new Zi(this),blockchain:new Ji(this),marketplace:new Yi(this),multiplayer:new Xi(this)},this.userService=new lr(this),this.auth=new nr(this),this.currency=new cr(this),this.item=new pr(this),this.store=new dr(this),this.purchase=new hr(this),this.checkout=new mr(this),this.lootbox=new fr(this),this.reward=new gr(this),this.quest=new Sr(this),this.tutorial=new Rr(this),this.localization=new Cr(this),this.timedEvent=new xr(this),this.leaderboard=new Dr(this),this.season=new br(this),this.premium=new zr(this),this.character=new Tr(this),this.match=new vr(this),this.craft=new Pr(this),this.collection=new Ir(this),this.coopEvent=new kr(this),this.dealOffer=new Mr(this),this.referral=new wr(this),this.social=new Ar(this),this.timedBoost=new Or(this),this.userCustomData=new Lr(this),this.titleCustomData=new qr(this),this.title=new Er(this),this.gameLoop=new Gr(this),this.cloudCode=new Nr(this),this.blockchain=new Qr(this),this.marketplace=new Zr(this),this.multiplayer=new Jr(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 ts=class{ctx;constructor(e){this.ctx=new es(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 Qg(o){return new ts(o)}var pu="idos_sso",du="state",gn="idos:sso:state",Kg="https://idosgames.com/sso/";function Hg(){if(typeof window>"u")return null;let o=window.location.hash?.startsWith("#")?window.location.hash.slice(1):window.location.hash;if(!o)return null;let e=new URLSearchParams(o),t=e.get(pu);if(!t)return null;let r=e.get(du)??"",i=Xg();return tR(e),eR(),i&&r!==i?null:{code:t,state:r}}function $g(o){if(typeof window>"u")return;let e=o.returnTo??Zg(),t=Jg();Yg(t);let r=new URL(o.ssoUrl??Kg);r.searchParams.set("title",o.titleID),r.searchParams.set("return_to",e),r.searchParams.set("state",t),window.location.assign(r.toString());}function Zg(){let{origin:o,pathname:e,search:t}=window.location;return `${o}${e}${t}`}function Jg(){let o=new Uint8Array(16);if(typeof crypto<"u"&&crypto.getRandomValues)crypto.getRandomValues(o);else for(let e=0;e<o.length;e++)o[e]=Math.floor(Math.random()*256);return Array.from(o,e=>e.toString(16).padStart(2,"0")).join("")}function Yg(o){try{window.sessionStorage.setItem(gn,o);}catch{}}function Xg(){try{return window.sessionStorage.getItem(gn)}catch{return null}}function eR(){try{window.sessionStorage.removeItem(gn);}catch{}}function tR(o){o.delete(pu),o.delete(du);let e=o.toString(),{pathname:t,search:r}=window.location;window.history.replaceState(null,"",`${t}${r}${e?`#${e}`:""}`);}function rR(o,e){return !!o?.Claims?.[e]?.ClaimedAt}function iR(o){let e=o?.Claims;return e?Object.keys(e).filter(t=>!!e[t]?.ClaimedAt):[]}function sR(o,e){return o?.Claims?.[e]?.PremiumTiers??[]}function mu(o,e,t,r=1){if(!o)return e;let i=o.Base??e,s=Math.max(0,t-r),a;switch(o.Shape??"Flat"){case "PerStep":a=i+(o.PerStep??0)*s;break;case "PerStepRate":a=i*(1+(o.PerStepRate??0)*s);break;case "Geometric":a=i*Math.pow(1+(o.GrowthRate??0),s);break;case "Table":a=i*hu(o,t,1);break;case "TableAbsolute":a=hu(o,t,i);break;default:a=i;break}return Number.isNaN(a)?i:(o.MinResult!=null&&a<o.MinResult&&(a=o.MinResult),o.MaxResult!=null&&a>o.MaxResult&&(a=o.MaxResult),a)}function nR(o,e,t=1){return mu(o,1,e,t)}function oR(o){if(!o)return false;switch(o.Shape??"Flat"){case "PerStep":return (o.PerStep??0)!==0;case "PerStepRate":return (o.PerStepRate??0)!==0;case "Geometric":return (o.GrowthRate??0)!==0;case "Table":case "TableAbsolute":return fu(o.Points).length>0;default:return o.MinResult!=null||o.MaxResult!=null}}function aR(o){if(Number.isNaN(o)||o<=0)return 0;if(!Number.isFinite(o))return Number.MAX_SAFE_INTEGER;let e=Math.round(o);return Math.abs(o-e)<=1e-9*Math.max(1,Math.abs(o))?e:Math.ceil(o)}function fu(o){if(!o)return [];let e=[];for(let t of o)t?.AtStep==null||t.Value==null||e.push({AtStep:t.AtStep,Value:t.Value});return e}function hu(o,e,t){let r=fu(o.Points);if(r.length===0)return t;let i=null,s=null,a=null;for(let p of r)(a===null||p.AtStep>a.AtStep)&&(a=p),p.AtStep<=e&&(i===null||p.AtStep>=i.AtStep)&&(i=p),p.AtStep>e&&(s===null||p.AtStep<s.AtStep)&&(s=p);if(i===null)return t;if(s===null){let p=o.TailGrowthRate??0;return p===0?a.Value:a.Value*Math.pow(1+p,e-a.AtStep)}switch(o.Interpolation??"Step"){case "Linear":{let p=(e-i.AtStep)/(s.AtStep-i.AtStep);return i.Value+p*(s.Value-i.Value)}case "Geometric":{if(i.Value<=0||s.Value<=0){let D=(e-i.AtStep)/(s.AtStep-i.AtStep);return i.Value+D*(s.Value-i.Value)}let p=(e-i.AtStep)/(s.AtStep-i.AtStep);return i.Value*Math.pow(s.Value/i.Value,p)}default:return i.Value}}var lR={Banner:"Banner",Interstitial:"Interstitial",RewardedVideo:"RewardedVideo",RewardedInterstitial:"RewardedInterstitial",AppOpen:"AppOpen",Native:"Native"},Rn=z.enum(["Banner","Interstitial","RewardedVideo","RewardedInterstitial","AppOpen","Native"]),uR={Top:"Top",Bottom:"Bottom",Left:"Left",Right:"Right"},cR=z.enum(["Top","Bottom","Left","Right"]),pR=z.object({PlacementID:z.string().nullish(),Type:Rn.nullish(),Enabled:z.boolean().nullish(),CooldownSeconds:z.number().nullish(),DailyImpressionCap:z.number().nullish(),CreditsRewarded:z.number().nullish(),AllowedProviderIDs:z.array(z.string()).nullish()}).passthrough(),dR=z.object({DefaultCreditsPerView:z.number().nullish(),MaxCreditsBalance:z.number().nullish(),DailyCreditEarnCap:z.number().nullish(),DailyViewCap:z.number().nullish(),MinSecondsBetweenViews:z.number().nullish()}).passthrough(),hR=z.object({CooldownSeconds:z.number().nullish(),MinSessionTimeBeforeFirstSeconds:z.number().nullish(),DailyImpressionCap:z.number().nullish(),MaxImpressionsPerSession:z.number().nullish()}).passthrough(),mR=z.object({Enabled:z.boolean().nullish(),Position:cR.nullish(),RefreshIntervalSeconds:z.number().nullish()}).passthrough(),fR=z.object({Enabled:z.boolean().nullish(),CooldownSeconds:z.number().nullish(),DailyImpressionCap:z.number().nullish()}).passthrough(),gR=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(),yR=z.object({RequirePersonalizedAdsConsent:z.boolean().nullish(),RequireTrackingConsent:z.boolean().nullish(),CurrentPolicyVersion:z.string().nullish(),RegulatedRegions:z.array(z.string()).nullish()}).passthrough(),CR=z.object({RequireServerSideVerification:z.boolean().nullish(),PendingRequestTtlSeconds:z.number().nullish(),MaxPendingRequestsPerUser:z.number().nullish(),ProviderPublicKeys:z.record(z.string(),z.string()).nullish()}).passthrough(),SR=z.object({AndroidUnitID:z.string().nullish(),IosUnitID:z.string().nullish(),WebUnitID:z.string().nullish(),Type:Rn.nullish()}).passthrough(),xR={AppLovinMax:"AppLovinMax",LevelPlay:"LevelPlay"},DR=z.enum(["AppLovinMax","LevelPlay"]),bR=z.object({ProviderID:z.string().nullish(),Kind:DR.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(),SR).nullish()}).passthrough();z.object({Enabled:z.boolean().nullish(),Placements:z.record(z.string(),pR).nullish(),Providers:z.record(z.string(),bR).nullish(),RewardedVideo:dR.nullish(),Interstitial:hR.nullish(),Banner:mR.nullish(),AppOpen:fR.nullish(),FrequencyCapping:gR.nullish(),PremiumAdReductions:z.array(RR).nullish(),Consent:yR.nullish(),Verification:CR.nullish()}).passthrough();var zR=z.object({RewardedVideoCredit:z.number().nullish(),TotalEarned:z.number().nullish(),TotalSpent:z.number().nullish()}).passthrough(),TR=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(),vR=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(),IR=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(),kR=z.object({RequestID:z.string().nullish(),PlacementID:z.string().nullish(),ProviderID:z.string().nullish(),Type:Rn.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:zR.nullish(),Placements:z.record(z.string(),TR).nullish(),Daily:vR.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:IR.nullish(),PendingRequests:z.record(z.string(),kR).nullish(),FraudFlags:MR.nullish(),UpdatedAt:u.nullish()}).passthrough();var wR={Unread:"Unread",Read:"Read",Deleted:"Deleted",Expired:"Expired"},AR=z.enum(["Unread","Read","Deleted","Expired"]),OR={Admin:"Admin",Leaderboard:"Leaderboard",CoopEvent:"CoopEvent",Season:"Season",Collection:"Collection",MilestoneEvent:"MilestoneEvent",PlayerGift:"PlayerGift",Social:"Social",Compensation:"Compensation",Referral:"Referral",Quest:"Quest"},UR=z.enum(["Admin","Leaderboard","CoopEvent","Season","Collection","MilestoneEvent","PlayerGift","Social","Compensation","Referral","Quest"]),BR={Active:"Active",Paused:"Paused",Cancelled:"Cancelled",Completed:"Completed"},LR=z.enum(["Active","Paused","Cancelled","Completed"]),qR=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(),ER=z.object({SegmentID:z.string().nullish(),DisplayName:z.string().nullish(),Gate:W.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(),qR).nullish(),Segments:z.array(ER).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:UR.nullish(),RelatedEntityID:z.string().nullish(),SenderUserID:z.string().nullish(),SenderPublicData:ze.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:AR.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:LR.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{
|
|
1
|
+
import {e,d}from'./chunk-MEUEUF7D.js';export{e as BrowserPlatformAdapter,a as BrowserStorage,b as MemoryStorage,f as NoopPlatformAdapter}from'./chunk-MEUEUF7D.js';import {z}from'zod';import ni from'decimal.js';var Lt=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 Uu(){let o=new Map;return {get:e=>o.get(e)??null,set:(e,t)=>{o.set(e,t);},remove:e=>{o.delete(e);}}}function zn(){return Bu()??Uu()}function Bu(){try{let o=globalThis.localStorage;if(!o)return null;let e="__idos_probe__";return o.setItem(e,"1"),o.removeItem(e),{get:t=>{try{return o.getItem(t)}catch{return null}},set:(t,i)=>{try{o.setItem(t,i);}catch{try{o.removeItem(t);}catch{}}},remove:t=>{try{o.removeItem(t);}catch{}}}}catch{return null}}var vn="https://api.idosgames.com";function Tn(o){return {titleID:o.titleID,titleTemplateID:o.titleTemplateID??"default",buildKey:o.buildKey??"",baseUrl:(o.baseUrl??vn).replace(/\/+$/,""),devBuild:o.devBuild??false,debugLogging:o.debugLogging??false,configStorage:o.configStorage??zn(),locale:o.locale??Lu(),appVersion:o.appVersion??""}}function Lu(){try{return globalThis.navigator?.language??""}catch{return ""}}var as="idos_acq",qu=["gclid","fbclid","ttclid","msclkid","yclid"],Eu=["ref","r"],Gu=["ref_","ref-","ref=","r_","r-"];var mt=class{constructor(e){this.platform=e;}platform;capture(){let e=this.readFromEnvironment();Nu(e)&&this.store({signal:e,capturedAt:Date.now()});}buildForLogin(e){let t=this.read(),i=t?{...t.signal}:{},r=ju(this.platform.getDeviceModel());return r&&(i.OsVersion=r),e&&(i.AppVersion=e),Object.keys(i).length>0?i:void 0}clear(){this.platform.storage.remove(as);}static detectDevicePlatform(e){let t=(e||"").toLowerCase();return t.includes("android")?"Android":/iphone|ipad|ipod/.test(t)?"iOS":"Web"}static parseReferralCode(e){if(!e)return null;let t=e.trim();if(!t)return null;if(t.includes("://")||t.includes("?")){let i=In(Pn(t));if(i)return i}return ls(t)}readFromEnvironment(){let e={},t=Pn(this.platform.getFullURL());Dt(e,"UtmSource",t.get("utm_source")),Dt(e,"UtmMedium",t.get("utm_medium")),Dt(e,"UtmCampaign",t.get("utm_campaign")),Dt(e,"UtmTerm",t.get("utm_term")),Dt(e,"UtmContent",t.get("utm_content")),Dt(e,"ClaimToken",t.get("idos_click"));for(let p of qu){let x=t.get(p);if(x){e.ClickID=x;break}}let i=ls(this.platform.getStartParameter()??""),r=In(t),s=i||r;s&&(e.ReferralCode=s,e.ChannelHint=i?"telegram":"query");let a=this.platform.getReferrer?.();return a&&(e.Referrer=a),e}read(){try{let e=this.platform.storage.getString(as);if(!e)return null;let t=JSON.parse(e);return !t?.signal||typeof t.capturedAt!="number"?null:Date.now()-t.capturedAt>2592e6?(this.clear(),null):t}catch{return null}}store(e){try{this.platform.storage.setString(as,JSON.stringify(e));}catch{}}};function Nu(o){return !!(o.UtmSource||o.UtmMedium||o.UtmCampaign||o.ClickID||o.Referrer||o.ReferralCode||o.ClaimToken)}function Dt(o,e,t){t&&(o[e]=t);}function Pn(o){try{let e=o.indexOf("?");return new URLSearchParams(e>=0?o.slice(e):"")}catch{return new URLSearchParams}}function In(o){for(let e of Eu){let t=o.get(e);if(t)return ls(t)}return null}function ls(o){let e=(o||"").trim();if(!e)return null;for(let t of Gu)if(e.toLowerCase().startsWith(t)){e=e.slice(t.length).trim();break}return e||null}function ju(o){let e=o||"",t=/android\s+(\d+)/i.exec(e);if(t)return t[1];let i=/(?:iphone )?os\s+(\d+)[._]/i.exec(e);if(i)return i[1]}var kn="idos_usage_pending",Mn="idos_usage_session",wn="idos_usage_closed_session",An="idos_usage_new_session",On="idos_usage_last_activity",qt=class{constructor(e){this.ctx=e;}ctx;pendingSeconds=0;currentSessionSeconds=0;pendingClosedSessionSeconds=0;isNewSessionPending=false;lastTickAt=0;suspendedAt=null;countingPaused=false;timer=null;started=false;flushing=false;start(){this.started||typeof window>"u"||(this.started=true,this.restore(),this.lastTickAt=Date.now(),this.countingPaused=typeof document<"u"&&document.visibilityState==="hidden",this.timer=setInterval(()=>this.tick(),200*1e3),window.addEventListener("visibilitychange",this.onVisibilityChange),window.addEventListener("pagehide",this.onPageHide));}async stop(){this.started&&(this.started=false,this.timer&&(clearInterval(this.timer),this.timer=null),typeof window<"u"&&(window.removeEventListener("visibilitychange",this.onVisibilityChange),window.removeEventListener("pagehide",this.onPageHide)),this.accumulate(),this.closeCurrentSession(false),await this.flush());}onVisibilityChange=()=>{if(!(typeof document>"u")){if(document.visibilityState==="hidden"){this.accumulate(),this.countingPaused=true,this.suspendedAt=Date.now(),this.flush();return}this.countingPaused=false,this.suspendedAt!==null&&((Date.now()-this.suspendedAt)/1e3>=300&&this.closeCurrentSession(true),this.suspendedAt=null),this.lastTickAt=Date.now();}};onPageHide=()=>{this.accumulate(),this.persist(),this.flush();};tick(){this.accumulate(),this.flush();}accumulate(){let e=Date.now(),t=Math.floor((e-this.lastTickAt)/1e3);this.lastTickAt=e,!(t<=0)&&(this.countingPaused||(this.pendingSeconds+=t,this.currentSessionSeconds+=t,this.persist()));}closeCurrentSession(e){let t=Math.floor(this.currentSessionSeconds);t>0&&(this.pendingClosedSessionSeconds=Math.max(this.pendingClosedSessionSeconds,t)),this.currentSessionSeconds=0,e&&(this.isNewSessionPending=true),this.persist();}async flush(){if(this.flushing||this.pendingSeconds<=0&&this.pendingClosedSessionSeconds<=0&&!this.isNewSessionPending)return;let e=this.pendingSeconds,t=this.pendingClosedSessionSeconds,i=this.isNewSessionPending;this.flushing=true,this.pendingSeconds=0,this.pendingClosedSessionSeconds=0,this.isNewSessionPending=false,this.persist();try{(await this.ctx.userService.addUsageTime(e,i,t)).ok||(this.pendingSeconds+=e,this.pendingClosedSessionSeconds=Math.max(this.pendingClosedSessionSeconds,t),this.isNewSessionPending||=i,this.persist());}catch{this.pendingSeconds+=e,this.pendingClosedSessionSeconds=Math.max(this.pendingClosedSessionSeconds,t),this.isNewSessionPending||=i,this.persist();}finally{this.flushing=false;}}restore(){this.pendingSeconds=this.readNumber(kn),this.currentSessionSeconds=this.readNumber(Mn),this.pendingClosedSessionSeconds=this.readNumber(wn),this.isNewSessionPending=this.readNumber(An)!==0;let e=this.readNumber(On);this.currentSessionSeconds>0&&e>0&&(Date.now()-e)/1e3>=300&&(this.pendingClosedSessionSeconds=Math.max(this.pendingClosedSessionSeconds,Math.floor(this.currentSessionSeconds)),this.currentSessionSeconds=0);}persist(){this.writeNumber(kn,this.pendingSeconds),this.writeNumber(Mn,this.currentSessionSeconds),this.writeNumber(wn,this.pendingClosedSessionSeconds),this.writeNumber(An,this.isNewSessionPending?1:0),this.writeNumber(On,Date.now());}readNumber(e){let t=this.ctx.platform.storage.getString(e),i=t?Number(t):0;return Number.isFinite(i)&&i>0?i:0}writeNumber(e,t){try{this.ctx.platform.storage.setString(e,String(Math.floor(t)));}catch{}}};var _e={Virtual:"Virtual",Crypto:"Crypto"},zt=z.enum(["Virtual","Crypto"]).catch("Virtual"),Ht={Item:"Item",VirtualCurrency:"VirtualCurrency",CryptoCurrency:"CryptoCurrency",RewardedVideoCredit:"RewardedVideoCredit",Purchase:"Purchase"},$t=z.enum(["Item","VirtualCurrency","CryptoCurrency","RewardedVideoCredit","Purchase"]).catch("Item"),Ye={Unknown:"Unknown",Web:"Web",Android:"Android",Ios:"Ios"},Zt=z.enum(["Unknown","Web","Android","Ios"]).catch("Unknown"),Fu={GooglePlay:"GooglePlay",AppleAppStore:"AppleAppStore"},Jt=z.enum(["GooglePlay","AppleAppStore"]).catch("GooglePlay"),Vu={TimedEvent:"TimedEvent",Quest:"Quest",Leaderboard:"Leaderboard",CoopEvent:"CoopEvent",Season:"Season"},Yt=z.enum(["TimedEvent","Quest","Leaderboard","CoopEvent","Season"]).catch("TimedEvent"),_u={Cyclic:"Cyclic",Scheduled:"Scheduled",Chained:"Chained"},Et=z.enum(["Cyclic","Scheduled","Chained"]).catch("Cyclic"),Re={None:"None",Device:"Device",Email:"Email",iDosGames:"iDosGames",Facebook:"Facebook",Google:"Google",GooglePlay:"GooglePlay",Telegram:"Telegram",Wallet:"Wallet"};function Bn(){let o=globalThis,e=o.Capacitor?.getPlatform?.();if(e)return Un(e);let t=o.cordova?.platformId;return t?Un(t):o.navigator?.userAgent??""?Ye.Web:Ye.Unknown}function Un(o){let e=o.toLowerCase();return e==="android"?Ye.Android:e==="ios"?Ye.Ios:e==="web"?Ye.Web:Ye.Unknown}function Gt(o){return {ok:true,data:o}}function n(o,e){return {ok:false,reason:o,error:e}}function Wu(o){return o.ok}function Qu(o){return !o.ok}var M=z.union([z.number(),z.string()]).transform((o,e)=>{let t=typeof o=="string"?Number(o):o;return Number.isFinite(t)?Math.trunc(t):(e.addIssue({code:z.ZodIssueCode.custom,message:`Invalid integer amount: ${String(o)}`}),z.NEVER)}),q=z.union([z.number(),z.string()]).transform((o,e)=>{let t=typeof o=="number"?String(o):o.trim();return t===""||Number.isNaN(Number(t))?(e.addIssue({code:z.ZodIssueCode.custom,message:`Invalid decimal: ${String(o)}`}),z.NEVER):t}),u=z.string();var us=z.object({Type:$t.nullish(),CurrencyID:z.string().nullish(),Amount:M.nullish(),CatalogID:z.string().nullish(),ItemID:z.string().nullish(),ProductID:z.string().nullish()}),Ku=z.object({Type:Yt.nullish(),EntityID:z.string()}),Hu=z.object({Address:Ku.nullish(),Amount:M.nullish(),Source:z.string().nullish()}),ge=z.object({Entries:z.array(us).nullish(),EventTokens:z.array(Hu).nullish()}),Ln=z.object({MinPremiumTier:z.number().nullish(),RequiredPremiumID:z.string().nullish(),Resources:ge.nullish()}),L=z.object({Standard:ge.nullish(),PremiumBonuses:z.array(z.unknown()).nullish(),PremiumTiers:z.array(Ln).nullish()}),Nt=z.object({Standard:ge.nullish(),PremiumDiscounts:z.array(z.unknown()).nullish(),PremiumTiers:z.array(Ln).nullish()}),b=z.object({Grant:L.nullish(),Consume:Nt.nullish()}),ft=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:ge.nullish()});var $u=z.object({ExperimentID:z.string().nullish(),Variants:z.array(z.string()).nullish()}).passthrough(),Zu={Completed:"Completed",Started:"Started",StepReached:"StepReached"},Ju=z.object({FlowIDs:z.array(z.string()).nullish(),Mode:z.enum(["Completed","Started","StepReached"]).catch("Completed").nullish(),StepID:z.string().nullish(),Negate:z.boolean().nullish(),SkippedCountsAsCompleted:z.boolean().nullish()}).passthrough(),W=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:$u.nullish(),Tutorial:Ju.nullish(),Platforms:z.array(Zt).nullish()}).passthrough();var ue=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 Yu=z.object({OffsetSecondsFromParentStart:z.number().nullish(),DurationSeconds:z.number().nullish(),AllowEarningAfterEnd:z.boolean().nullish(),ClaimGraceHours:z.number().nullish()}).passthrough(),Xu=z.object({StartUtc:z.string().nullish(),EndUtc:z.string().nullish(),AllowEarningAfterEnd:z.boolean().nullish(),ClaimGraceHours:z.number().nullish()}).passthrough(),ec=z.object({AnchorUtc:z.string().nullish(),MaxCycles:z.number().nullish(),PauseBetweenPhasesSec:z.number().nullish(),PauseBetweenCyclesSec:z.number().nullish()}).passthrough();z.object({PhaseID:z.string().nullish(),Order:z.number().nullish(),DurationSec:z.number().nullish(),ClaimGraceHours:z.number().nullish()}).passthrough();var tc=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 Le=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:ue.nullish()}).passthrough(),de=z.object({Mode:z.string().nullish(),IsActive:z.boolean().nullish(),Scheduled:Xu.nullish(),Chain:ec.nullish(),Cyclic:tc.nullish(),ActivationTriggers:z.array(Le).nullish(),Relative:Yu.nullish()}).passthrough();var ic={Flat:"Flat",PerStep:"PerStep",PerStepRate:"PerStepRate",Geometric:"Geometric",Table:"Table",TableAbsolute:"TableAbsolute"},rc=z.enum(["Flat","PerStep","PerStepRate","Geometric","Table","TableAbsolute"]).catch("Flat"),sc={Step:"Step",Linear:"Linear",Geometric:"Geometric"},nc=z.enum(["Step","Linear","Geometric"]).catch("Step"),oc=z.object({AtStep:z.number().nullish(),Value:z.number().nullish()}).passthrough(),xe=z.object({Base:z.number().nullish(),Shape:rc.nullish(),PerStep:z.number().nullish(),PerStepRate:z.number().nullish(),GrowthRate:z.number().nullish(),Points:z.array(oc).nullish(),Interpolation:nc.nullish(),TailGrowthRate:z.number().nullish(),MinResult:z.number().nullish(),MaxResult:z.number().nullish()}).passthrough();var ac=z.object({SeasonChainID:z.string().nullish(),MinSeasonTier:z.number().nullish(),Rewards:L.nullish()}).passthrough(),lc=z.object({SeasonChainID:z.string().nullish(),MinSeasonTier:z.number().nullish(),Multiplier:z.number().nullish()}).passthrough(),cs=z.object({Bundles:z.array(ac).nullish(),Multipliers:z.array(lc).nullish()}).passthrough();var uc=z.enum(["BoardStageLevel","BoardRank","BoardCyclesCompleted","CharacterLevel","SeasonTier","EventTokenTotalEarned","VirtualCurrencyBalance","PlayerLevel"]).catch("BoardStageLevel"),Xt=z.object({Source:uc.nullish(),SourceKey:z.string().nullish(),Curve:xe.nullish(),Anchor:z.number().nullish(),IncludeRewards:ge.nullish(),ExcludeRewards:ge.nullish()}).passthrough(),ze=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:cs.nullish(),SortOrder:z.number().nullish(),IsFeatured:z.boolean().nullish()}).passthrough(),ut=z.object({Milestones:z.record(z.string(),ze).nullish()}).passthrough();var Y=z.object({PresetID:z.string().nullish(),Remove:z.array(z.string()).nullish()}).passthrough();var cc=z.object({TargetCurrencyID:z.string().nullish(),Rate:z.number().nullish(),MaxConvertAmount:z.number().nullish()}).passthrough(),gt=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:cc.nullish()}).passthrough();var re=o=>z.object({Id:z.string(),Success:z.boolean(),Error:z.string().nullish(),Data:o.nullish()}),Xe=o=>z.object({ServerTimeUtc:u,Items:z.array(re(o)),Resources:b.nullish()});var pc={Active:"Active",Completed:"Completed",Claimed:"Claimed",Expired:"Expired"},qn=z.enum(["Active","Completed","Claimed","Expired"]).catch("Active"),dc=z.object({}).passthrough().transform(o=>o),hc=z.object({CycleID:z.string(),InstanceKey:z.string().nullish(),PhaseID:z.string().nullish(),CycleIndex:z.number().nullish(),CycleStartUtc:u.nullish(),CycleEndUtc:u.nullish(),PointsTotalEarned:M.nullish(),PointsCurrent:M.nullish(),ClaimedPointMilestoneIDs:z.array(z.string()).nullish()}),ps=z.object({QuestID:z.string(),CycleID:z.string().nullish(),ObjectiveID:z.string().nullish(),NewValue:M.nullish(),ObjectiveCompleted:z.boolean().nullish(),Status:qn}),En=z.object({State:dc.nullish(),PointsTracks:z.record(z.string(),hc).nullish()}),ds=z.object({ServerTimeUtc:u,QuestID:z.string(),CycleID:z.string().nullish(),NewStatus:qn.nullish(),Resources:b.nullish()}),hs=z.object({ServerTimeUtc:u,CycleID:z.string(),MilestoneID:z.string(),PointsTotalEarned:M.nullish(),Resources:b.nullish()}),Gn=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()}),Nn=z.object({MetricID:z.string(),Updates:z.array(ps).nullish()}),jn=z.array(re(ds)),Fn=z.array(re(hs)),mc={ClientApi:"ClientApi",ServerApi:"ServerApi",SystemEvent:"SystemEvent"},fc=z.enum(["ClientApi","ServerApi","SystemEvent"]).catch("ClientApi"),gc={BlockProgressAndClaim:"BlockProgressAndClaim",BlockClaimOnly:"BlockClaimOnly"},Rc=z.enum(["BlockProgressAndClaim","BlockClaimOnly"]).catch("BlockProgressAndClaim"),Vn=z.object({ObjectiveID:z.string().nullish(),Source:fc.nullish(),MaxProgressPerCall:z.number().nullish(),MetricID:z.string().nullish(),Triggers:z.array(Le).nullish(),TargetValue:z.number().nullish(),AggregationMethod:z.string().nullish()}).passthrough(),ms=z.object({Milestones:Y.nullish(),Linking:Y.nullish(),Availability:Y.nullish(),Reward:Y.nullish(),Objectives:Y.nullish()}).passthrough(),yc=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(),_n=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:Rc.nullish()}).passthrough(),Wn=z.object({Schedule:de.nullish(),AccrueProgressWhenLocked:z.boolean().nullish(),Gate:W.nullish(),Limits:ue.nullish()}).passthrough(),Qn=z.object({Grant:L.nullish(),PointsReward:z.number().nullish()}).passthrough(),Cc=z.object({QuestID:z.string().nullish(),Identity:yc.nullish(),Linking:_n.nullish(),Availability:Wn.nullish(),Objectives:z.record(z.string(),Vn).nullish(),Reward:Qn.nullish(),Presets:ms.nullish()}).passthrough(),Sc=z.object({CompletionID:z.string().nullish(),GroupID:z.string().nullish(),RequiredCompletedQuests:z.number().nullish(),Gate:W.nullish(),Reward:L.nullish(),PointsReward:z.number().nullish()}).passthrough(),xc=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:W.nullish(),Milestones:z.record(z.string(),ze).nullish(),Presets:ms.nullish(),PointsToken:gt.nullish()}).passthrough(),Dc=z.object({Milestones:z.record(z.string(),ut).nullish(),Linking:z.record(z.string(),_n).nullish(),Availability:z.record(z.string(),Wn).nullish(),Reward:z.record(z.string(),Qn).nullish(),Objectives:z.record(z.string(),z.record(z.string(),Vn)).nullish()}).passthrough(),bc=z.object({CycleID:z.string().nullish(),DisplayName:z.string().nullish(),Schedule:de.nullish(),Milestones:z.record(z.string(),ze).nullish(),Gate:W.nullish(),PointsToken:gt.nullish(),GroupCompletions:z.record(z.string(),Sc).nullish(),Phases:z.record(z.string(),xc).nullish(),Presets:ms.nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),ti=z.object({Cycles:z.record(z.string(),bc).nullish(),Quests:z.record(z.string(),Cc).nullish(),Presets:Dc.nullish()}).passthrough(),Qe={GetQuestDefinitions:"GetQuestDefinitions",GetUserQuestState:"GetUserQuestState",RefreshQuestCycles:"RefreshQuestCycles",ClaimQuestReward:"ClaimQuestReward",ClaimMilestoneReward:"ClaimMilestoneReward",AddQuestProgress:"AddQuestProgress",ClaimQuestRewardsBatch:"ClaimQuestRewardsBatch",ClaimMilestoneRewardsBatch:"ClaimMilestoneRewardsBatch",ClaimGroupCompletionReward:"ClaimGroupCompletionReward"};var zc={ClientAck:"ClientAck",SystemEvent:"SystemEvent",Auto:"Auto",Composite:"Composite"},vc=z.enum(["ClientAck","SystemEvent","Auto","Composite"]).catch("ClientAck"),Tc={Never:"Never",OnRequest:"OnRequest",Always:"Always"},Pc=z.enum(["Never","OnRequest","Always"]).catch("Never"),Ic={NotStarted:"NotStarted",InProgress:"InProgress",Completed:"Completed",Skipped:"Skipped",Expired:"Expired"},kc=z.enum(["NotStarted","InProgress","Completed","Skipped","Expired"]).catch("NotStarted"),Mc={GameLoop:"GameLoop"},wc={Raid:"Raid",Attack:"Attack"},Ac=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(),Oc=z.object({Mode:vc.nullish(),Triggers:z.array(Le).nullish(),TargetValue:z.number().nullish(),RequireAllTriggers:z.boolean().nullish()}).passthrough(),Uc=z.object({Grant:L.nullish(),UnlockFeatures:z.array(z.string()).nullish()}).passthrough(),Bc=z.object({TileType:z.string().nullish(),TileIndex:z.number().nullish(),ChanceOutcomeID:z.string().nullish(),RandomActionType:z.enum(["Raid","Attack"]).catch("Raid").nullish()}).passthrough(),Lc=z.object({Module:z.enum(["GameLoop"]).catch("GameLoop").nullish(),Board:Bc.nullish(),MaxUses:z.number().nullish()}).passthrough(),qc=z.object({Skippable:z.boolean().nullish(),TimeoutSeconds:z.number().nullish()}).passthrough(),fs=z.object({StepID:z.string().nullish(),Order:z.number().nullish(),Identity:Ac.nullish(),Completion:Oc.nullish(),Effects:Uc.nullish(),Script:Lc.nullish(),Policy:qc.nullish()}).passthrough(),Ec=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(),Kn=z.object({Schedule:de.nullish(),Gate:W.nullish(),RequiredFlowIDs:z.array(z.string()).nullish(),AutoStart:z.boolean().nullish(),StartTrigger:Le.nullish()}).passthrough(),Hn=z.object({Skippable:z.boolean().nullish(),SkippableFromOrder:z.number().nullish(),RestartPolicy:Pc.nullish(),ExpireAfterSeconds:z.number().nullish(),IsBlocking:z.boolean().nullish(),UnlockFeatures:z.array(z.string()).nullish()}).passthrough(),$n=z.object({Grant:L.nullish(),AutoClaim:z.boolean().nullish()}).passthrough(),Gc=z.object({Availability:Y.nullish(),Policy:Y.nullish(),Reward:Y.nullish(),Steps:Y.nullish()}).passthrough(),Nc=z.object({FlowID:z.string().nullish(),Identity:Ec.nullish(),Availability:Kn.nullish(),Policy:Hn.nullish(),Steps:z.record(z.string(),fs).nullish(),Reward:$n.nullish(),Presets:Gc.nullish()}).passthrough(),jc=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(),Fc=z.object({IsEnabled:z.boolean().nullish(),MaxActiveFlows:z.number().nullish(),Blocking:jc.nullish()}).passthrough(),Vc=z.object({Availability:z.record(z.string(),Kn).nullish(),Policy:z.record(z.string(),Hn).nullish(),Reward:z.record(z.string(),$n).nullish(),Steps:z.record(z.string(),z.record(z.string(),fs)).nullish()}).passthrough(),Zn=z.object({Flows:z.record(z.string(),Nc).nullish(),Settings:Fc.nullish(),Presets:Vc.nullish()}).passthrough(),_c=z.object({}).passthrough().transform(o=>o),Jn=z.object({FlowID:z.string(),Status:kc,CurrentStepID:z.string().nullish(),CurrentStep:fs.nullish(),TotalSteps:z.number(),CompletedSteps:z.number(),CanSkip:z.boolean(),RewardClaimed:z.boolean(),RewardPending:z.boolean(),VariantID:z.string().nullish()}).passthrough(),Yn=z.object({State:_c.nullish(),Flows:z.array(Jn).nullish(),UnlockedFeatures:z.array(z.string()).nullish()}).passthrough(),ct=z.object({Flow:Jn.nullish()}).passthrough(),Xn=z.object({FlowID:z.string().nullish(),Granted:b.nullish()}).passthrough(),eo=z.array(re(ct)),to=z.object({FlowID:z.string(),StepID:z.string(),Progress:z.number(),Target:z.number(),Completed:z.boolean()}).passthrough(),qe={GetTutorialDefinitions:"GetTutorialDefinitions",GetUserTutorialState:"GetUserTutorialState",StartFlow:"StartFlow",ReportStepShown:"ReportStepShown",CompleteStep:"CompleteStep",CompleteStepsBatch:"CompleteStepsBatch",SkipStep:"SkipStep",SkipFlow:"SkipFlow",ClaimFlowReward:"ClaimFlowReward",ResetFlow:"ResetFlow"};var ii=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 ri=class{set=new Set;add(e){return this.set.has(e)?false:(this.set.add(e),true)}remove(e){this.set.delete(e);}};function io(o){return o===429||o>=500&&o<=599}function gs(o,e=Math.random){let t=Math.min(500*Math.pow(2,o-1),4e3),i=t*.2*(e()*2-1);return Math.max(50,t+i)}function Rs(o){return new Promise(e=>setTimeout(e,o))}var Wc=12e3,Qc=z.object({Success:z.boolean(),Error:z.string().nullish(),Data:z.unknown().optional(),QuestProgress:z.array(ps).nullish(),TutorialProgress:z.array(to).nullish(),StateVersions:z.record(z.string(),z.number()).nullish(),StateEpoch:z.string().nullish()}).passthrough(),si=class{baseUrl;emitter;fetchImpl;debugLogging;throttler;clientPlatform;inflight=new ri;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 ii(e.throttleMs),this.clientPlatform=e.clientPlatform??Ye.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 a=`${this.baseUrl}/${e}`,p=JSON.stringify(t),x=r.ticket??null,U=r.silent??!1,E=r.timeoutMs??Wc,me=r.autoRetry??!0,ye=!1,ke=0;for(;;){let Ze;try{Ze=await this.doFetch(a,p,x,E);}catch{if(me&&ke<3){ke++,await Rs(gs(ke));continue}return this.connectionFailure("Internet Connection Error",U)}let Je=Ze.status;if(Je>=200&&Je<300)return await this.parseSuccess(Ze,i,U,e);if(Je===401){if(!ye&&this.sessionRefreshHandler){ye=!0;let rt=null;try{rt=await this.sessionRefreshHandler();}catch{rt=null;}if(rt){x=rt;continue}}return this.emitter.emit("auth:unauthorized",void 0),n("unauthorized","Unauthorized")}if(io(Je)){if(me&&ke<3){ke++,await Rs(gs(ke));continue}return this.connectionFailure(`Server temporarily unavailable (HTTP ${Je})`,U)}return await this.handleWebError(Ze,Je,U)}}finally{this.inflight.remove(s),this.lowerBusy();}}async doFetch(e,t,i,r){let s=new AbortController,a=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(a);}}async parseSuccess(e,t,i,r){let s;try{s=await e.text();}catch{return this.globalError("Failed to read response body",i)}let a;try{a=JSON.parse(s);}catch{return this.globalError("JSON Parse Error",i)}let p=Qc.safeParse(a);if(!p.success)return this.globalError("Malformed response envelope",i);if(!p.data.Success){let ye=p.data.Error??"Server returned Success=false";return i||this.emitter.emit("error:global",ye),n("server",ye)}let x=p.data.QuestProgress;x&&x.length>0&&this.emitter.emit("quest:systemProgress",x);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 me=t.safeParse(p.data.Data);if(!me.success){let ye=`Validation error (${r}): ${me.error.message}`;return this.debugLogging&&console.warn("[HttpTransport]",ye),i||this.emitter.emit("error:global",ye),n("validation",ye)}return Gt(me.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 Tt(o){return (typeof o=="string"?o:o.toISOString()).slice(0,10)}function jt(o){return `${Tt(o)}T00:00:00.000Z`}function so(o){let e=new Date(o);return new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()+1)).toISOString()}function no(o,e){return new Date(o.getTime()+e*6e4).toISOString()}function oo(o,e,t,i){let r={vcChanged:false,ccChanged:false,itemsChanged:false,tokensChanged:false};if(!e)return r;o.InventoryV2??={};let s=o.InventoryV2,a=i.toISOString(),p=new Map,x=new Map,U=new Map,E=new Map,me=new Map,ye=new Map,ke=new Map,Ze=new Map,Je=e.Grant?.PremiumTiers??[],rt=Je.length;for(let ne=0;;ne++){let fe,$;if(ne===0)fe=e.Grant?.Standard?.Entries,$=false;else if(ne-1<rt)fe=Je[ne-1]?.Resources?.Entries,$=false;else if(ne===1+rt)fe=e.Consume?.Standard?.Entries,$=true;else break;if(fe)for(let _ of fe){if(_.Type==null)continue;let K=Math.max(0,_.Amount??0);if(!(K<=0))switch(_.Type){case "VirtualCurrency":{if(!_.CurrencyID)continue;let H=$?x:p;H.set(_.CurrencyID,(H.get(_.CurrencyID)??0)+K);break}case "CryptoCurrency":{if(!_.CurrencyID)continue;let H=$?E:U;H.set(_.CurrencyID,(H.get(_.CurrencyID)??new ni(0)).plus(K));break}case "Item":{if(!_.ItemID)continue;let H=Hc(t,_.CatalogID,_.ItemID),X=(H?H.IsStackable??true:true)?$?ye:me:$?Ze:ke;X.set(_.ItemID,(X.get(_.ItemID)??0)+K);break}case "Purchase":case "RewardedVideoCredit":continue}}}if(r.vcChanged=p.size>0||x.size>0,r.vcChanged){s.VirtualCurrencies??={};for(let ne of new Set([...p.keys(),...x.keys()])){let fe=p.get(ne)??0,$=x.get(ne)??0,_=fe-$,K=s.VirtualCurrencies[ne];K?(K.Amount+=_,K.UpdatedAt=a,K.Daily&&Tt(K.Daily.PeriodStartUtc)===Tt(i)?(K.Daily.Earned+=fe,K.Daily.Spent+=$):K.Daily={PeriodStartUtc:jt(i),Earned:fe,Spent:$}):s.VirtualCurrencies[ne]={Amount:_,CreatedAt:a,UpdatedAt:a,Daily:{PeriodStartUtc:jt(i),Earned:fe,Spent:$}};}}if(r.ccChanged=U.size>0||E.size>0,r.ccChanged){s.CryptoCurrencies??={};for(let ne of new Set([...U.keys(),...E.keys()])){let fe=U.get(ne)??new ni(0),$=E.get(ne)??new ni(0),_=fe.minus($),K=s.CryptoCurrencies[ne];K?(K.Amount=new ni(K.Amount).plus(_).toString(),K.UpdatedAt=a):s.CryptoCurrencies[ne]={Amount:_.toString(),Frozen:"0",CreatedAt:a,UpdatedAt:a};}}if(r.itemsChanged=me.size>0||ye.size>0||ke.size>0||Ze.size>0,r.itemsChanged){s.Items??={},s.UnstackableItems??={};let ne=s.UnstackableItems,fe=new Set([...me.keys(),...ye.keys(),...ke.keys(),...Ze.keys()]);for(let $ of fe){let _=(me.get($)??0)-(ye.get($)??0),K=(ke.get($)??0)-(Ze.get($)??0),H=_+K,Be=s.Items[$];Be?(_!==0&&(Be.StackableAmount+=_),K!==0&&(Be.UnstackableAmount+=K),H!==0&&(Be.TotalAmount+=H)):s.Items[$]={StackableAmount:Math.max(0,_),UnstackableAmount:Math.max(0,K),TotalAmount:Math.max(0,H)};}for(let[$,_]of Ze){if(_<=0)continue;let K=Object.values(ne).filter(H=>H.ItemID===$&&H.EquippedSlot==null&&(H.ExpiresAt==null||new Date(H.ExpiresAt)>i)).sort(Kc).slice(0,_).map(H=>H.ItemInstanceID);for(let H of K)delete ne[H];}for(let[$,_]of ke){let K=$c(t,$);for(let H=0;H<_;H++){let Be=d();ne[Be]={ItemInstanceID:Be,ItemID:$,CatalogID:K,RemainingUses:1,AcquiredAt:a};}}}o.EventToken??={};let Mu=o.EventToken;for(let ne=0;;ne++){let fe,$;if(ne===0)fe=e.Grant?.Standard?.EventTokens,$=false;else if(ne-1<rt)fe=Je[ne-1]?.Resources?.EventTokens,$=false;else if(ne===1+rt)fe=e.Consume?.Standard?.EventTokens,$=true;else break;if(!(!fe||fe.length===0))for(let _ of fe){let K=_.Address;if(!K||K.Type==null)continue;let H=_.Amount??0;if(H<=0)continue;let Be=Zc(Mu,K.Type);if(!Be)continue;let X=Be[K.EntityID];X||(X={},Be[K.EntityID]=X),X.Balance??={Current:0,TotalEarned:0,TotalSpent:0},X.Daily??={Date:jt(i),TotalEarned:0},X.Meta??={};let Bt=_.Source&&_.Source.length>0?_.Source:"CustomAction";$?(X.Balance.Current-=H,X.Balance.TotalSpent+=H):(X.Balance.Current+=H,X.Balance.TotalEarned+=H,Tt(X.Daily.Date)!==Tt(i)&&(X.Daily={Date:jt(i),TotalEarned:0}),X.Daily.TotalEarned+=H,X.Daily.EarnedBySource??={},X.Daily.EarnedBySource[Bt]=(X.Daily.EarnedBySource[Bt]??0)+H,X.Daily.TriggersBySource??={},X.Daily.TriggersBySource[Bt]=(X.Daily.TriggersBySource[Bt]??0)+1,X.Daily.LastTriggerBySource??={},X.Daily.LastTriggerBySource[Bt]=a,X.Meta.JoinedAtUtc||(X.Meta.JoinedAtUtc=a),X.Meta.LastEarnedAtUtc=a),r.tokensChanged=true;}}return r}function Kc(o,e){return o.AcquiredAt!==e.AcquiredAt?o.AcquiredAt<e.AcquiredAt?-1:1:o.ItemInstanceID===e.ItemInstanceID?0:o.ItemInstanceID<e.ItemInstanceID?-1:1}function Hc(o,e,t){let i=o?.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 $c(o,e){let t=o?.Catalogs;if(t){for(let[i,r]of Object.entries(t))if(r.Items&&e in r.Items)return i}}function Zc(o,e){switch(e){case "TimedEvent":return o.TimedEvent??={};case "Quest":return o.Quest??={};case "Leaderboard":return o.Leaderboard??={};case "CoopEvent":return o.CoopEvent??={};case "Season":return o.Season??={};default:return null}}function ys(o,e){return o===e||o.startsWith(`${e}:`)}var oi=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=oo(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 ni?t:new ni(t),a=i??new Date().toISOString(),p=r[e];p?(p.Amount=new ni(p.Amount).plus(s).toString(),p.UpdatedAt=a):r[e]={Amount:s.toString(),Frozen:"0",CreatedAt:a,UpdatedAt:a},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=so(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 a of t)a.RuleID&&(r.Pity[`${e}:${a.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 a=s.Quests[e]??={QuestID:e,Status:i};a.Status=i,i==="Claimed"&&(a.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??={},this.markMilestoneClaimed(i.Milestone,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??={};for(let a of i.ClaimedPointMilestoneIDs??[])this.markMilestoneClaimed(s.Milestone,a);}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(ys(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))!ys(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){e.Claims??={};let i=e.Claims[t]??={};i.ClaimedAt??=new Date().toISOString(),i.Unlocked=false;}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.PendingActivationReward=false,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);}applySocialOutgoingRequests(e){this.currentState??={},this.currentState.Social??={},this.currentState.Social.OutgoingRequests=(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 a=this.currentState.CustomData,p={Value:i,UpdatedAt:new Date().toISOString(),Version:r,LastWriter:"Client",ExpiresAt:s??null};if(e==="Private")a.Private??={},a.Private[t]=p;else if(e==="Public")a.Public??={},a.Public[t]=p;else return;a.Version=(a.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 ai=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 li=class{user;config;constructor(e){this.user=new oi(e),this.config=new ai;}reset(){this.user.clear(),this.config.applyTitlePublicConfiguration(null);}};var ui=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 Jc(e)?e:Re.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 Jc(o){return o!==null&&Object.values(Re).includes(o)}var Yc=8,Xc=100,ep=/^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/i,ao=["GameLoop"],ci=class{constructor(e){this.ctx=e;}ctx;authContext=null;refreshing=false;rememberSession=true;sessionAuthType=Re.None;sessionEmail="";sessionPassword="";pendingRegistration=null;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(),Attribution:this.ctx.acquisition.buildForLogin(this.ctx.settings.appVersion)}}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(Re.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(Re.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(Re.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);return r.ok?(this.pendingRegistration={email:e,password:t},Gt({codeTtlMinutes:r.data.CodeTtlMinutes??0,resendCooldownSeconds:r.data.ResendCooldownSeconds??0})):r}async confirmEmailRegistration(e,t){this.ctx.emitter.emit("auth:requestSent",void 0);let i=this.baseRequest();i.Email=e,i.VerificationCode=t;let r=await this.ctx.api.authentication.confirmEmailRegistration(i);if(!r.ok)return r;this.applyAuthContext(r.data);let s=await this.fetchAndApplyClientState(Re.Email);return s.ok&&this.pendingRegistration?.email===e&&this.keepEmailCredentials(e,this.pendingRegistration.password),this.pendingRegistration=null,s}async resendVerificationCode(e){let t=this.baseRequest();t.Email=e;let i=await this.ctx.api.authentication.resendVerificationCode(t);return i.ok?Gt(void 0):i}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(Re.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(Re.Wallet)):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 i=await this.ctx.api.authentication.loginWithSsoCode(t);return i.ok?(this.applyAuthContext(i.data),this.fetchAndApplyClientState(Re.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 Re.Email:return this.loginWithEmail(t,i);case Re.Device:case Re.None:return this.loginWithDeviceID();case Re.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!==Re.None?this.sessionAuthType:this.ctx.authStore.lastAuthType;if(e===Re.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&&ep.test(e)}static isValidPasswordLength(e){return e.length>=Yc&&e.length<=Xc}keepEmailCredentials(e,t){this.sessionEmail=e,this.sessionPassword=t,this.rememberSession&&this.ctx.authStore.saveEmailAndPassword(e,t);}forgetSession(){this.sessionAuthType=Re.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(ao,ao);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 tp="idos:cfg",Pt=class{constructor(e,t){this.storage=e;this.titleId=t;}storage;titleId;static scopeOf(e,t){return t&&t.length>0?`x:${lo(t)}`:e&&e.length>0?`f:${lo(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 `${tp}:${this.titleId}:${e}`}};function lo(o){return [...o].map(e=>e.toLowerCase()).sort().join(",")}var uo="idos:loc",It=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 `${uo}:${this.titleId}:${e}`}versionsKey(){return `${uo}:${this.titleId}:versions`}};var ip="idos:state",pi=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 `${ip}:${this.titleId}:${e}`}};function rp(o,e){if(!o)return;let t=new Set((e??[]).map(r=>r.trim().toLowerCase()));if(t.size===0)return o;let i={};for(let[r,s]of Object.entries(o))t.has(r.toLowerCase())||(i[r]=s);return i}function Ss(o,e,t,i){let r={...o??{}};if(!e||!t||!i)return r;for(let[s,a]of Object.entries(t))i[s]===a&&s in e&&(r[s]=e[s]);return r}function sp(o){return {...o??{}}}function xs(o){return typeof o.StateEpoch=="string"&&o.StateEpoch.length>0?o.StateEpoch:null}var di=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=rp(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=sp(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 co=n("server","Title configuration is unavailable (CDN and API both failed)."),hi=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 Pt(this.ctx.settings.configStorage,this.ctx.settings.titleID)}cache;get localizationCache(){return this.locCache??=new It(this.ctx.settings.configStorage,this.ctx.settings.titleID)}locCache;get stateStore(){return this.versionStore??=new di(new pi(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=Pt.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 a=await this.resolveTitleConfig(s.data,t,i,{Fields:e.TitleFields});return a==null?co:(this.finishStateHandshake(s.data,r),await this.applyClientState(s.data,a,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=Ss(e.User,t.cached,t.sent,e.StateVersions);e.User=i;let r=xs(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 a=await this.fetchConfigFromApi(r);return a!=null?(s&&await this.configCache.write(t,s,a),a):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=Pt.scopeOf(null,t??[]),s=await this.configCache.read(r);s&&(i.KnownTitleConfigVersion=s.v),await this.prepareLocalization(i);let a=await this.prepareStateHandshake(i,e??null),p=await this.ctx.api.user.getClientStateExcept(i);if(!p.ok)return p;let x=await this.resolveTitleConfig(p.data,r,s,{ExcludeFields:t??[]});return x==null?co:(this.finishStateHandshake(p.data,a),await this.applyClientState(p.data,x,e,t),await this.applyLocalization(p.data.Localization),await this.flushState(a),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 a=await this.fetchLocalizationFromCdn(e.Url);if(a!=null)return await this.localizationCache.write(t,i,a),a}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 a=s.Entries??{},p=s.Version??0,x=s.Locale??e;return p>0&&await this.localizationCache.write(x,p,a),a}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=Ss(r.data.User,i.cached,i.sent,r.data.StateVersions);r.data.User=s;let a=Object.keys(r.data.StateVersions??{});this.ctx.data.user.applyUserStateContainers(s,a);let p=xs(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,a=r?.includes("GameLoop")===true,p=s?this.ctx.data.user.state?.GameLoop:void 0,x=a?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;a&&E&&E.GameLoop==null&&(E.GameLoop=x),this.ctx.emitter.emit("user:clientStateReceived",e);}};var fi=class{constructor(e){this.ctx=e;}ctx;async convert(e,t,i,r,s,a){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===_e.Crypto||i===_e.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:a&&a.length>0?a:`convert_${e}_${t}_to_${i}_${r}_${d()}`},x=await this.ctx.api.currency.convert(p);if(x.ok){let U=x.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 x}async cryptoConvert(e,t,i,r,s,a){let p=s instanceof ni?s:new ni(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===_e.Virtual&&i===_e.Virtual)return n("client","cryptoConvert requires at least one crypto side. Use convert for VC\u2194VC.");if(e===_e.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 x={...this.ctx.buildAuthedBaseRequest(),SourceType:e,SourceID:t,TargetType:i,TargetID:r,SourceAmount:p.toString(),TransactionID:a&&a.length>0?a:`crypto_convert_${e}_${t}_to_${i}_${r}_${d()}`},U=await this.ctx.api.currency.cryptoConvert(x);if(U.ok){let E=U.data,me=[],ye=[];if(E.SourceType===_e.Virtual&&me.push({Type:"VirtualCurrency",CurrencyID:E.SourceID,Amount:Math.trunc(Number(E.SourceSpent))}),E.TargetType===_e.Virtual&&ye.push({Type:"VirtualCurrency",CurrencyID:E.TargetID,Amount:Math.trunc(Number(E.TargetCredited))}),me.length>0||ye.length>0){let ke={Consume:me.length>0?{Standard:{Entries:me}}:null,Grant:ye.length>0?{Standard:{Entries:ye}}:null};this.ctx.data.user.applyResourceOperation(ke,this.ctx.data.config.itemDefinitions);}E.SourceType===_e.Crypto&&this.ctx.data.user.patchCryptoCurrencyDelta(E.SourceID,new ni(E.SourceSpent).negated(),E.ServerTimeUtc),E.TargetType===_e.Crypto&&this.ctx.data.user.patchCryptoCurrencyDelta(E.TargetID,new ni(E.TargetCredited),E.ServerTimeUtc),this.ctx.emitter.emit("currency:cryptoConverted",E);}return U}};var gi=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 a=await this.ctx.api.item.upgradeLevel(s);return a.ok&&(await this.ctx.userService.getUserInventory(),this.ctx.emitter.emit("item:levelUpgraded",a.data)),a}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 np="Store",Ri=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()}`},a=await this.ctx.api.store.purchase(s);if(a.ok){let p=a.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 a}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(np,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 yi=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,TransactionID:i?.transactionID},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 Ci=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===Ht.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!==Ht.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 op="Lootbox",Si=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(op,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()}`},a=await this.ctx.api.lootbox.open(s);if(a.ok){let p=a.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 a}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var ap="Reward";function Ds(o){return o.length>0&&!o.includes(".")&&!o.includes("$")}var xi=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(ap,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(!Ds(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(!Ds(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(!Ds(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 lp="Tutorial",Di=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(lp,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},a=await t(s);return a.ok&&(this.applyFlowView(a.data),this.ctx.emitter.emit(i.event,a.data)),a}async stepCall(e,t,i,r){let s=e?.trim(),a=t?.trim();if(!s)return n("client","FlowID is required.");if(!a)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:a};r?.relatedEntityID&&(p.RelatedEntityID=r.relatedEntityID);let x=await i(p);return x.ok&&(this.applyFlowView(x.data),this.ctx.emitter.emit("tutorial:stepChanged",x.data)),x}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 bi=Object.freeze({}),zi=class{constructor(e){this.ctx=e;}ctx;table={...bi};fallbackTable=null;currentLocale=null;currentFallbackLocale=null;pluralRules=null;get cache(){return this.tableCache??=new It(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?up(r,t):r}applyState(e,t){if(!e){this.reset();return}let i=e.Locale??null;this.table=t.table??{...bi},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:a}=i.data,p=null;if(a){let x=await this.loadTableFromApi(a);x.ok&&(p=x.data.table);}return this.table=s,this.fallbackTable=p,this.currentFallbackLocale=a,this.setLocaleInternal(r),this.ctx.emitter.emit("localization:changed",{locale:r,fallbackLocale:a,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={...bi},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(po(e));i&&(t.KnownVersion=i.v);let r=await this.ctx.api.localization.getLocalizationTable(t);if(!r.ok)return r;let s=r.data,a=s.Locale??po(e),p=s.Version??0;if(s.NotModified){let U=i??await this.cache.read(a);return {ok:true,data:{locale:a,table:U?.t??{...bi},fallbackLocale:s.FallbackLocale??null}}}let x=s.Entries??{};return p>0&&await this.cache.write(a,p,x),{ok:true,data:{locale:a,table:x,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 a=`${e}.other`;return this.lookup(a)!==void 0?a: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 up(o,e){return o.replace(/\{(\w+)\}/g,(t,i)=>{let r=e[i];return r===void 0?t:String(r)})}function po(o){return o.trim().replace(/_/g,"-").toLowerCase()}var cp="Quest",vi=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(cp,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()}`},a=await this.ctx.api.quest.claimQuestReward(s);if(a.ok){let p=a.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 a}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()}`},a=await this.ctx.api.quest.claimMilestoneReward(s);if(a.ok){let p=a.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 a}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()}`},a=await this.ctx.api.quest.claimGroupCompletionReward(s);if(a.ok){let p=a.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 a}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 pp="TimedEvent",Ti=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(pp,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,a,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 x={...this.ctx.buildAuthedBaseRequest(),Type:e,LteID:t,SourceType:i,Outcome:r,AmountOverride:s,SourceParams:a,RollMultiplier:p},U=await this.ctx.api.timedEvent.grantTokens(x);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 a=s.data;this.ctx.data.user.applyResourceOperation(a.Rewards,this.ctx.data.config.itemDefinitions),this.ctx.data.user.patchTimedEventMilestoneClaimed(e,t,i),this.ctx.emitter.emit("timedEvent:milestoneClaimed",a);}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 dp="Leaderboard",Pi=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(dp,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 a={...this.ctx.buildAuthedBaseRequest(),LeaderboardID:e,SourceType:t,Outcome:i,Params:r,RollMultiplier:s},p=await this.ctx.api.leaderboard.submitScoreFromSource(a);if(p.ok){let x=p.data;this.ctx.data.user.patchLeaderboardScoreSubmitted(this.cycleDocID(e),x.NewScore,x.NewScore,x.CycleVersion),this.ctx.emitter.emit("leaderboard:scoreSubmitted",x);}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 a of r.Milestones??[])!a.Success||!a.Data||(this.ctx.data.user.patchLeaderboardMilestoneClaimed(s,a.Data.MilestoneID),a.Data.Resources&&this.ctx.data.user.applyResourceOperation(a.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 hp="Season",Ii=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(hp,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(a=>a>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 a=s.data;for(let p of a.Items??[]){let x=p.Data?.TierNumber;p.Success&&typeof x=="number"&&this.ctx.data.user.patchSeasonClaimedTier(e,x);}this.ctx.data.user.applyResourceOperation(a.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("season:tierRewardsBatchClaimed",a);}return s}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var mp="Premium",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.premium.getDefinitions(e);return t.ok&&t.data.Premium&&(this.ctx.data.config.patchSection(mp,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}`},a=await this.ctx.api.premium.purchaseItemOrCurrency(s);if(a.ok){let p=a.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 a}async purchaseRealMoney(e,t,i,r,s,a,p,x){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:a,PackageName:p,AppStoreEnvironment:x,RelatedEntityID:`premium_iap_${e}_${t}`},E=await this.ctx.api.premium.purchaseRealMoney(U);if(E.ok){let me=E.data;me.Premium&&this.ctx.data.user.applyPremium(me.Premium),this.ctx.data.user.applyResourceOperation(me.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("premium:realMoneyPurchaseCompleted",me);}return E}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var fp="Character",Mi=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(fp,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,a=>{a.StatLevels??={},a.Equipment??={},s.Power!=null&&(a.Power=s.Power),a.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 a=s.data;this.ctx.data.user.patchCharacter(a.CharacterID,p=>{p.StatLevels??={},p.StatLevels[a.StatID]=a.StatLevel,a.Power!=null&&(p.Power=a.Power),p.UpdatedAt=a.ServerTimeUtc;}),this.ctx.data.user.applyResourceOperation(a.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("character:statLevelUpgraded",a);}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,a=>{a.Level=s.NewLevel,s.Power!=null&&(a.Power=s.Power),a.UpdatedAt=s.ServerTimeUtc,s.NewLevel===1&&(a.StatLevels??={},a.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 gp="Match",wi=class{constructor(e){this.ctx=e;}ctx;async createMatch(e,t,i,r,s,a){let p=this.ctx.auth.context;if(!p)return n("unauthorized","Not logged in.");let x={...this.ctx.buildAuthedBaseRequest(),Entry:e,RuleID:t,CharacterID:i,BattleStrategy:r,TargetUserID:s,SelectedOptionID:a,RelatedEntityID:`pvp_create_${p.userID}_${d()}`},U=await this.ctx.api.match.createMatch(x);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 a={...this.ctx.buildAuthedBaseRequest(),MatchID:e,RuleID:t,CharacterID:i,BattleStrategy:r,RelatedEntityID:`pvp_battle_${e}_${d()}`},p=await this.ctx.api.match.instantBattle(a);if(p.ok){let x=p.data,U=this.ctx.data.config.itemDefinitions;if(x.Resources)this.ctx.data.user.applyResourceOperation(x.Resources,U);else if(x.ResourcesDual){let E=x.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",x);}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(gp,t.data),this.ctx.emitter.emit("match:definitionsLoaded",t.data)),t}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var Rp="Craft",Ai=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(Rp,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 a={...this.ctx.buildAuthedBaseRequest(),CraftID:e,InputItemIDs:t,Count:i,SelectedOptionID:r,RelatedEntityID:`craft_${e}_${s.userID}_${d()}`},p=await this.ctx.api.craft.craft(a);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 yp="Collection",Oi=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(yp,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 a={...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(a);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()}`},a=await this.ctx.api.collection.openCollectionChest(s);return a.ok&&(this.ctx.data.user.applyResourceOperation(a.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("collection:chestOpened",a.data)),a}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,a=false){let p=this.ctx.auth.context;if(!p)return n("unauthorized","Not logged in.");let x={...this.ctx.buildAuthedBaseRequest(),CollectionID:e,CollectibleID:t,CollectibleIsSpecial:i,ReceiverUserID:r,RequestedCollectibleID:s,RequestedCollectibleIsSpecial:a,RelatedEntityID:`trade_send_${p.userID}_${r}_${d()}`},U=await this.ctx.api.collection.sendTradeOffer(x);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 Cp="CoopEvent",Ui=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(Cp,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()},a=await this.ctx.api.coopEvent.spin(s);return a.ok&&(this.ctx.data.user.applyResourceOperation(a.data.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("coopEvent:spinCompleted",a.data)),a}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 Sp="DealOffer",Bi=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(Sp,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,a={...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(a);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(a=>a.trim()).filter(a=>a.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 xp="Referral",Li=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(xp,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=mt.parseReferralCode(e)?.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 a=s.data;a.ReferrerUserID&&this.ctx.data.user.patchReferralSubscription(a.ReferrerUserID),this.ctx.data.user.applyResourceOperation(a.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("referral:codeActivated",a);}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 a=s.data;a.RewardID&&this.ctx.data.user.patchReferralInviteRewardClaimed(a.RewardID),this.ctx.data.user.applyResourceOperation(a.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("referral:inviteRewardClaimed",a);}return s}async claimInviteRewardsBatch(e){let t=(e??[]).map(a=>a?.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 a=s.data;for(let p of a.Items??[])p.Success&&p.Id&&this.ctx.data.user.patchReferralInviteRewardClaimed(p.Id);this.ctx.data.user.applyResourceOperation(a.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("referral:inviteRewardsBatchClaimed",a);}return s}baseRequest(){return this.ctx.auth.context?this.ctx.buildAuthedBaseRequest():null}};var qi=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 getOutgoingRequests(){let e=this.baseRequest();if(!e)return n("unauthorized","Not logged in.");let t=await this.ctx.api.social.getOutgoingRequests(e);return t.ok&&(this.ctx.data.user.applySocialOutgoingRequests(t.data.Friends),this.ctx.emitter.emit("social:outgoingRequestsLoaded",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 Dp="TimedBoost";function bp(o){return o.length>0&&!o.includes(".")&&!o.includes("$")}var Ei=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(Dp,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(!bp(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 a=s.data;if(a.ActivatedBoost){let p=a.StackingPolicy??"Replace";this.ctx.data.user.patchActiveTimedBoost(a.ActivatedBoost,p);}this.ctx.data.user.applyResourceOperation(a.Resources,this.ctx.data.config.itemDefinitions),this.ctx.emitter.emit("timedBoost:activated",a);}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 st={Private:"Private",Public:"Public",ReadOnly:"ReadOnly",Internal:"Internal"},zp={Client:"Client",Server:"Server",System:"System"},vp=z.enum(["Client","Server","System"]).catch("Client"),Tp=z.object({Value:z.string().nullish(),UpdatedAt:u.nullish(),Version:z.number().nullish(),LastWriter:vp.nullish(),ExpiresAt:u.nullish()}).passthrough(),Gi=z.record(z.string(),Tp),ho=z.object({Version:z.number().nullish(),Private:Gi.nullish(),Public:Gi.nullish(),ReadOnly:Gi.nullish()}),bs=z.object({UserID:z.string().nullish(),Version:z.number().nullish(),Public:Gi.nullish()}),zs=z.object({ServerTimeUtc:u.nullish(),Bucket:z.string().nullish(),KeyID:z.string(),Version:z.number().nullish(),ExpiresAt:u.nullish()}),Pp=z.object({Bucket:z.string().nullish(),KeyID:z.string(),Version:z.number().nullish(),ExpiresAt:u.nullish()}),mo=z.object({ServerTimeUtc:u.nullish(),Results:z.array(Pp).nullish()}),fo=z.object({ServerTimeUtc:u.nullish(),DeletedCount:z.number().nullish()}),go=z.object({Results:z.array(bs).nullish(),NotFoundUserIDs:z.array(z.string()).nullish()}),Ip={String:"String",Int:"Int",Bool:"Bool",Json:"Json"},kp=z.enum(["String","Int","Bool","Json"]).catch("String"),Mp=z.object({KeyID:z.string(),Bucket:z.string().nullish(),ValueType:kp.nullish(),MaxValueLengthBytes:z.number().nullish(),TtlSeconds:z.number().nullish(),DefaultValue:z.string().nullish(),Description:z.string().nullish()}).passthrough(),Ni=z.object({Keys:z.record(z.string(),Mp).nullish(),DefaultMaxValueLengthBytes:z.number().nullish(),DefaultTtlSeconds:z.number().nullish(),MaxKeysPerBucket:z.number().nullish(),MaxTotalSizeBytes:z.number().nullish(),RejectUnregisteredKeys:z.boolean().nullish()}).passthrough(),Ke={GetUserCustomDataDefinitions:"GetUserCustomDataDefinitions",GetMyUserCustomData:"GetMyUserCustomData",GetPublicUserCustomDataOf:"GetPublicUserCustomDataOf",SetPrivateData:"SetPrivateData",SetPublicData:"SetPublicData",DeleteKey:"DeleteKey",BatchSet:"BatchSet",BatchDelete:"BatchDelete",BatchGetPublicUserCustomDataOf:"BatchGetPublicUserCustomDataOf"};var wp="UserCustomData";function Ro(o){return o.length>0&&!o.includes(".")&&!o.includes("$")}var ji=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(wp,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,st.Private)}async setPublicData(e,t){return this.setData(e,t,st.Public)}async setData(e,t,i){let r=e.trim();if(!Ro(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===st.Private?this.ctx.api.userCustomData.setPrivateData(s):this.ctx.api.userCustomData.setPublicData(s));if(p.ok){let x=p.data;this.ctx.data.user.patchUserCustomDataKey(i,x.KeyID,t,x.Version??0,x.ExpiresAt),this.ctx.emitter.emit(i===st.Private?"userCustomData:privateDataSet":"userCustomData:publicDataSet",x);}return p}async deleteKey(e,t){let i=e.trim();if(!Ro(i))return n("client",'KeyID is required and must not contain "." or "$".');if(t!==st.Private&&t!==st.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??st.Private,a=e.find(p=>p.Bucket===s&&p.KeyID===r.KeyID);a&&this.ctx.data.user.patchUserCustomDataKey(s,r.KeyID,a.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 Ap="TitleCustomDataDefinitions",yo=50;function Op(o){return o.length>0&&!o.includes(".")&&!o.includes("$")}function vs(o){if(o.ExpiresAt==null)return false;let e=Date.parse(o.ExpiresAt);return !Number.isNaN(e)&&e<=Date.now()}function Up(o){let e={};for(let[t,i]of Object.entries(o))vs(i)||(e[t]=i);return e}var Fi=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(Ap,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=>!Op(s)))return n("client",'KeyID must not contain "." or "$".');if(t.length>yo)return n("client",`At most ${yo} 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&&!vs(t))return t.Value;let i=this.staticCache[e];if(i?.Value!=null&&!vs(i))return i.Value}get runtimeVersion(){return this.lastRuntimeVersion}staticCache={};absorb(e){e.Static&&(this.staticCache=e.Static),e.NotModified?(this.runtimeCache=Up(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 Vi=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 Bp=15,Lp="GameLoop",qp="BoardDefinition",_i=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(Lp,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(qp,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,a=no(new Date,Bp);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:a}:s.SpecialModeOffer&&(p.Pending={Type:"SPECIAL",RollMultiplier:s.UsedMultiplier??1,ExpiresAtUtc:a,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 a=s.data;a.Status==="CONTINUE"?this.ctx.data.user.patchBoardPendingRaidLayout(a.RaidLayout,a.OpenedIndex??-1):(this.ctx.data.user.clearBoardPending(),this.applyRaidResources(a)),this.ctx.emitter.emit("gameLoop:boardRaided",a);}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(a=>{a.StageLevel=(a.StageLevel??1)+1,a.Position=0,a.Pending=null,a.BuildingStates=null;}):this.ctx.data.user.patchBoardBuilding(s.BuiltIndex,a=>{s.NewLevel!=null&&(a.Level=s.NewLevel),a.IsDamaged=false,s.MaxLevelRewardClaimed&&(a.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 a=s.data;a.Mode==="Instant"||a.Mode===0?this.ctx.data.user.clearBoardPending():this.ctx.data.user.patchBoardSpecialPending(x=>{x.ChoiceID=e,x.ChosenMode=a.Mode??"Timed",x.StartedAtUtc=a.StartedAtUtc??null,x.DurationSeconds=a.DurationSeconds??null,x.AdViewsUsed=0;}),a.Operation&&this.ctx.data.user.applyResourceOperation(a.Operation,this.itemDefs),this.ctx.emitter.emit("gameLoop:boardSpecialChose",a);}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(a=>{a.AdViewsUsed=s.AdViewsUsed??0,a.AccumulatedMultiplier=s.AccumulatedMultiplier??0;}),this.ctx.emitter.emit("gameLoop:boardSpecialApplyMultiplier",s);}return r}async boardSpecialClaim(e){let t=this.ctx.auth.context;if(!t)return n("unauthorized","Not logged in.");let i={...this.ctx.buildAuthedBaseRequest(),RelatedEntityID:`special_claim_${t.userID}_${d()}`,...e&&Object.keys(e).length>0?{RunStats:e}:{}},r=await this.ctx.api.gameLoop.boardSpecialClaim(i);if(r.ok){let s=r.data;this.ctx.data.user.clearBoardPending(),s.Operation&&this.ctx.data.user.applyResourceOperation(s.Operation,this.itemDefs),this.ctx.emitter.emit("gameLoop:boardSpecialClaimed",s);}return r}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 Wi=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 a={...this.ctx.buildAuthedBaseRequest(),FunctionName:s,FunctionParameter:t,RevisionSelection:i,SpecificRevision:r},p=await this.ctx.api.cloudCode.execute(a);return p.ok&&this.ctx.emitter.emit("cloudCode:executed",p.data),p}};var Co=z.object({ServerTimeUtc:u,SourceType:zt,SourceID:z.string(),TargetType:zt,TargetID:z.string(),SourceSpent:M,FeeAmount:M,RateApplied:q,TargetCredited:M}),So=z.object({ServerTimeUtc:u,SourceType:zt,SourceID:z.string(),TargetType:zt,TargetID:z.string(),SourceSpent:q,FeeAmount:q,RateApplied:q,TargetCredited:q}),Qi={Convert:"Convert",CryptoConvert:"CryptoConvert"},Ep={Active:"Active",Hidden:"Hidden",Deprecated:"Deprecated",Maintenance:"Maintenance"},xo=z.enum(["Active","Hidden","Deprecated","Maintenance"]).catch("Active"),Gp={Automatic:"Automatic",Manual:"Manual"},Np=z.enum(["Automatic","Manual"]).catch("Automatic"),jp=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(),Fp=z.object({Rate:z.number().nullish(),Max:z.number().nullish(),Period:z.number().nullish()}).passthrough(),Vp=z.object({IsTradable:z.boolean().nullish(),IsPurchasable:z.boolean().nullish(),IsRefundable:z.boolean().nullish()}).passthrough(),_p=z.object({TargetCurrencyType:zt.nullish(),TargetCurrencyID:z.string(),Rate:q.nullish(),MinAmount:z.number().nullish(),MaxAmount:z.number().nullish(),DailyLimit:z.number().nullish()}).passthrough(),Do=z.object({Enabled:z.boolean().nullish(),RateMode:Np.nullish(),FeePercent:q.nullish(),Targets:z.array(_p).nullish()}).passthrough(),bo=z.object({CreatedAt:u.nullish(),UpdatedAt:u.nullish()}).passthrough(),Wp=z.object({CurrencyID:z.string(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Economy:jp.nullish(),Recharge:Fp.nullish(),Conversion:Do.nullish(),Permissions:Vp.nullish(),Audit:bo.nullish(),Status:xo.nullish()}).passthrough(),Qp=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(),Kp=z.object({DailyWithdrawUsd:q.nullish(),MonthlyWithdrawUsd:q.nullish(),KycRequiredAboveUsd:q.nullish()}).passthrough(),Hp=z.object({DepositsEnabled:z.boolean().nullish(),WithdrawalsEnabled:z.boolean().nullish(),SpendableInGame:z.boolean().nullish(),ConvertibleToVirtual:z.boolean().nullish()}).passthrough(),Ts=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(Qp).nullish(),Limits:Kp.nullish(),Permissions:Hp.nullish(),Conversion:Do.nullish(),Audit:bo.nullish(),Status:xo.nullish()}).passthrough(),Ki=z.object({VirtualCurrencies:z.record(z.string(),Wp).nullish(),CryptoCurrencies:z.record(z.string(),Ts).nullish()}).passthrough();var zo=z.object({OptionID:z.string().nullish(),Name:z.string().nullish(),Cost:Nt.nullish(),AllowedPlatforms:z.array(Zt).nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),J=z.record(z.string(),zo),$p=z.object({Store:Jt,Receipt:z.string(),Signature:z.string().nullish()}).passthrough();var vo=z.object({CatalogID:z.string().nullish(),ItemID:z.string().nullish(),ItemInstanceID:z.string().nullish(),EquippedAt:u.nullish()}),Ps=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(),vo).nullish(),UpdatedAt:u.nullish()}).passthrough(),Zp=z.object({CharacterID:z.string().nullish(),SlotID:z.string().nullish()}).passthrough(),Jp=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(o=>o),pt=z.object({ChangedInstances:z.record(z.string(),Jp).nullish(),RemovedInstanceIDs:z.array(z.string()).nullish()}),To=z.object({Characters:z.record(z.string(),Ps).nullish()}),Is=z.object({ServerTimeUtc:u,CharacterID:z.string(),StatID:z.string(),StatLevel:z.number(),Power:z.number().nullish(),Resources:b.nullish()}),ks=z.object({ServerTimeUtc:u,CharacterID:z.string(),NewLevel:z.number(),Power:z.number().nullish(),Resources:b.nullish()}),Po=z.object({ServerTimeUtc:u,CharacterID:z.string(),Equipment:z.record(z.string(),vo).nullish(),ReplacedInstanceIDs:z.array(z.string()).nullish(),Power:z.number().nullish(),Inventory:pt.nullish()}),Io=z.object({ServerTimeUtc:u,CharacterID:z.string(),ClearedSlotIDs:z.array(z.string()).nullish(),Power:z.number().nullish(),Inventory:pt.nullish()}),Yp=z.object({ClearedSlotIDs:z.array(z.string()).nullish(),Power:z.number().nullish()}),ko=z.object({ServerTimeUtc:u,Characters:z.record(z.string(),Yp).nullish(),Inventory:pt.nullish()}),Ms=z.object({ServerTimeUtc:u,CharacterID:z.string(),Power:z.number().nullish(),Resources:b.nullish()}),Mo=Xe(Ms),wo=Xe(ks),Ao=Xe(Is),Oo=z.object({RequiredStatID:z.string(),RequiredLevel:z.number()}).passthrough(),Uo=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:J.nullish(),CostCurve:xe.nullish(),BaseStatValue:z.number().nullish(),ValueCurve:xe.nullish(),RankCurve:xe.nullish(),Requirements:z.array(Oo).nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),Xp=z.object({SlotID:z.string(),MinCharacterLevel:z.number().nullish(),StatRequirements:z.array(Oo).nullish(),AllowedRarityIDs:z.array(z.string()).nullish(),AllowedItemTags:z.array(z.string()).nullish(),MinItemLevel:z.number().nullish(),MaxItemLevel:z.number().nullish()}).passthrough(),Bo=z.object({Slots:z.record(z.string(),Xp).nullish()}).passthrough(),ed=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(),td=z.object({ClassID:z.string().nullish(),RarityID:z.string().nullish(),Tags:z.array(z.string()).nullish()}).passthrough(),id=z.object({UnlockedByDefault:z.boolean().nullish(),PriceOptions:J.nullish()}).passthrough(),rd=z.object({Stats:Y.nullish(),Levels:Y.nullish(),Equipment:Y.nullish()}).passthrough(),Lo=z.object({MaxRank:z.number().nullish(),FirstPaidRank:z.number().nullish(),PriceOptions:J.nullish(),CostCurve:xe.nullish()}).passthrough(),sd=z.object({CharacterID:z.string(),Identity:ed.nullish(),Classification:td.nullish(),Unlock:id.nullish(),Presets:rd.nullish(),Equipment:Bo.nullish(),Stats:z.record(z.string(),Uo).nullish(),RankLadder:Lo.nullish(),RankStatCurve:xe.nullish(),StatMaxLevelCurve:xe.nullish()}).passthrough(),nd=z.object({Stats:z.record(z.string(),Uo).nullish()}).passthrough(),od=z.object({RankLadder:Lo.nullish()}).passthrough(),ad=z.object({Equipment:Bo.nullish()}).passthrough(),ld=z.object({Stats:z.record(z.string(),nd).nullish(),Levels:z.record(z.string(),od).nullish(),Equipment:z.record(z.string(),ad).nullish()}).passthrough(),Hi=z.object({Definitions:z.record(z.string(),sd).nullish(),Presets:ld.nullish()}).passthrough(),Oe={GetCharacterDefinitions:"GetCharacterDefinitions",GetUserCharacters:"GetUserCharacters",UnlockCharacter:"UnlockCharacter",UpgradeStatLevel:"UpgradeStatLevel",UpgradeCharacterLevel:"UpgradeCharacterLevel",EquipItems:"EquipItems",UnequipItems:"UnequipItems",UnequipAllCharacters:"UnequipAllCharacters",UnlockCharactersBatch:"UnlockCharactersBatch",UpgradeCharacterLevelsBatch:"UpgradeCharacterLevelsBatch",UpgradeStatLevelsBatch:"UpgradeStatLevelsBatch"};var ud={EVM:"EVM",Solana:"Solana"},cd=z.enum(["EVM","Solana"]).catch("EVM"),pd={AutoLinkedFromTransaction:"AutoLinkedFromTransaction",SignatureVerified:"SignatureVerified",ManuallyLinked:"ManuallyLinked"},dd=z.enum(["AutoLinkedFromTransaction","SignatureVerified","ManuallyLinked"]).catch("AutoLinkedFromTransaction"),hd={Token:"Token",Nft:"Nft"},qo=z.enum(["Token","Nft"]).catch("Token"),md={NotRequested:"NotRequested",Pending:"Pending",Verified:"Verified",Rejected:"Rejected",Expired:"Expired"},fd=z.enum(["NotRequested","Pending","Verified","Rejected","Expired"]).catch("NotRequested"),gd={None:"None",Tier1:"Tier1",Tier2:"Tier2",Tier3:"Tier3"},Rd=z.enum(["None","Tier1","Tier2","Tier3"]).catch("None"),yd={Pending:"Pending",Completed:"Completed",Failed:"Failed",Expired:"Expired",Abandoned:"Abandoned"},ws=z.enum(["Pending","Completed","Failed","Expired","Abandoned"]).catch("Pending"),Eo={GameTopUp:"game_topup",CommunityReward:"community_reward"};function $i(o){let e=o?.trim();return e||Eo.GameTopUp}var Cd={UsersCryptoWallet:"UsersCryptoWallet",Game:"Game"},Go=z.enum(["UsersCryptoWallet","Game"]).catch("UsersCryptoWallet"),Sd=z.object({ContractAddress:z.string().nullish(),ItemCatalogID:z.string().nullish(),DisplayName:z.string().nullish(),DepositsEnabled:z.boolean().nullish(),WithdrawalsEnabled:z.boolean().nullish()}).passthrough(),No=z.object({Ios:z.boolean().nullish(),Android:z.boolean().nullish(),Web:z.boolean().nullish()}).passthrough(),xd=z.object({NetworkID:z.string().nullish(),DisplayName:z.string().nullish(),Type:cd.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:No.nullish(),NftCollections:z.array(Sd).nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),Dd=z.object({DepositsEnabled:z.boolean().nullish(),WithdrawalsEnabled:z.boolean().nullish(),NftDepositsEnabled:z.boolean().nullish(),NftWithdrawalsEnabled:z.boolean().nullish(),PlatformOverrides:No.nullish()}).passthrough(),bd=z.object({MinAccountAgeDays:z.number().nullish(),MultiAccountCheckEnabled:z.boolean().nullish(),BanOnSharedWithdrawalAddress:z.boolean().nullish(),PendingWithdrawalTtlHours:z.number().nullish()}).passthrough();var zd=z.enum(["OnChain","Combined"]).catch("OnChain"),vd=z.object({Enabled:z.boolean().nullish(),NetworkID:z.string().nullish(),CurrencyID:z.string().nullish(),MinBalance:q.nullish(),BalanceSource:zd.nullish(),DenyMessage:z.string().nullish()}).passthrough(),Td=z.object({Enabled:z.boolean().nullish(),TokenGates:z.array(vd).nullish(),WalletConnectProjectId:z.string().nullish()}).passthrough(),As=z.object({SystemState:Dd.nullish(),Networks:z.record(z.string(),xd).nullish(),AccountSafety:bd.nullish(),WalletLogin:Td.nullish()}).passthrough(),Pd=z.object({NetworkID:z.string().nullish(),Address:z.string().nullish(),LinkedAt:u.nullish(),LastUsedAt:u.nullish(),LinkType:dd.nullish(),IsSignatureVerified:z.boolean().nullish()}).passthrough(),jo=z.object({TitleTransactionID:z.string().nullish(),Type:qo.nullish(),NetworkID:z.string().nullish(),AssetID:z.string().nullish(),Amount:q.nullish(),CreatedAt:u.nullish(),ExpiresAt:u.nullish()}).passthrough(),Id=z.object({Status:fd.nullish(),Tier:Rd.nullish(),VerifiedAt:u.nullish(),ExpiresAt:u.nullish(),RejectedAt:u.nullish(),ProviderReference:z.string().nullish(),RejectionReason:z.string().nullish()}).passthrough(),kd=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(),Md=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(),kd).nullish()}).passthrough(),wd=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(),Ad=z.object({TotalDeposits:z.number().nullish(),TotalWithdrawals:z.number().nullish(),FailedWithdrawals:z.number().nullish(),RejectedDeposits:z.number().nullish(),PerCollection:z.record(z.string(),wd).nullish()}).passthrough(),Od=z.object({Tokens:Md.nullish(),Nfts:Ad.nullish()}).passthrough(),Ud=z.object({CurrencyID:z.string().nullish(),Balance:q.nullish(),MinBalance:q.nullish()}).passthrough(),Bd=z.object({NetworkID:z.string().nullish(),Address:z.string().nullish(),CheckedAt:u.nullish(),LoggedInAt:u.nullish(),GatePassed:z.boolean().nullish(),GatedBalances:z.array(Ud).nullish()}).passthrough(),Ld=z.object({Version:z.number().nullish(),Stats:Od.nullish(),LinkedWallets:z.record(z.string(),Pd).nullish(),LastWalletLogin:Bd.nullish(),PendingWithdrawals:z.array(jo).nullish(),Kyc:Id.nullish(),FirstActivityAt:u.nullish(),LastActivityAt:u.nullish(),IsFlagged:z.boolean().nullish(),FlagReason:z.string().nullish()}).passthrough(),qd=z.object({CurrencyID:z.string(),AmountDelta:q,FrozenDelta:q,UpdatedAt:u}).passthrough(),Zi=z.object({CryptoBalances:z.record(z.string(),qd).nullish(),PendingAdded:jo.nullish(),PendingRemovedIDs:z.array(z.string()).nullish()}).passthrough(),Ed=z.object({Amount:q,Frozen:q,CreatedAt:u.nullish(),UpdatedAt:u.nullish()}).passthrough().transform(o=>o),Gd=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:Go.nullish(),From:z.string().nullish(),To:z.string().nullish(),Amount:q.nullish(),Status:ws.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(),Nd=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:Go.nullish(),From:z.string().nullish(),To:z.string().nullish(),Amount:q.nullish(),Status:ws.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(),Fo=z.object({To:z.string().nullish(),Amount:z.union([z.string(),z.number()]).nullish()}).passthrough(),Os=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(Fo).nullish(),Signature:z.string().nullish()}).passthrough(),Us=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(Fo).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(),Vo=z.object({Blockchain:As.nullish(),CryptoCurrencies:z.record(z.string(),Ts).nullish()}).passthrough(),_o=z.object({State:Ld.nullish(),CryptoBalances:z.record(z.string(),Ed).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:Zi.nullish()}).passthrough(),Qo=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:pt.nullish()}).passthrough(),Ko=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:Os.nullish(),SolanaSignature:Us.nullish(),StateDelta:Zi.nullish()}).passthrough(),Ho=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:Os.nullish(),SolanaSignature:Us.nullish(),StateDelta:Zi.nullish(),Inventory:pt.nullish()}).passthrough(),$o=z.object({TokenTransactions:z.array(Gd).nullish(),NFTTransactions:z.array(Nd).nullish()}).passthrough(),Bs=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(),Zo=z.object({TitleTransactionID:z.string().nullish(),Kind:qo.nullish(),EvmSignature:Os.nullish(),SolanaSignature:Us.nullish()}).passthrough(),Jo=z.object({TitleTransactionID:z.string().nullish(),OnChainTxHash:z.string().nullish(),Status:ws.nullish(),StateDelta:Zi.nullish()}).passthrough(),Ue={GetDefinitions:"GetDefinitions",GetUserState:"GetUserState",DepositToken:"DepositToken",DepositNFT:"DepositNFT",RequestTokenWithdrawal:"RequestTokenWithdrawal",RequestNFTWithdrawal:"RequestNFTWithdrawal",GetTransactionHistory:"GetTransactionHistory",RetryWithdrawal:"RetryWithdrawal",ConfirmWithdrawal:"ConfirmWithdrawal",DonateToDeveloper:"DonateToDeveloper",DonateToUsersPool:"DonateToUsersPool"};var jd="Blockchain",Ji=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(jd,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 ni(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 a=this.baseRequest();if(!a)return n("unauthorized","Not logged in.");a.CurrencyID=e,a.NetworkID=t,a.WalletAddress=i,a.Amount=r,a.Category=$i(s);let p=await this.ctx.api.blockchain.requestTokenWithdrawal(a);return p.ok&&p.data.CurrencyID&&(this.ctx.data.user.patchCryptoCurrencyDelta(p.data.CurrencyID,new ni(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,a,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 x=this.baseRequest();if(!x)return n("unauthorized","Not logged in.");x.ItemID=e,x.NetworkID=t,x.WalletAddress=i,x.Amount=r,x.Category=$i(s),a!==void 0&&(x.Level=a),p&&(x.ItemInstanceID=p);let U=await this.ctx.api.blockchain.requestNFTWithdrawal(x);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 ve=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 Fd={Head:"Head",Torso:"Torso",Legs:"Legs"},Yi=z.enum(["Head","Torso","Legs"]).catch("Head"),Vd={Open:"Open",InProgress:"InProgress",Cancelled:"Cancelled",Completed:"Completed"},Ls=z.enum(["Open","InProgress","Cancelled","Completed"]).catch("Open"),ea=z.object({AttackTarget:Yi,DefenseTarget:Yi});var _d=z.enum(["Hit","Critical","Block","Dodge"]).catch("Hit"),Wd=z.object({RoundIndex:z.number().nullish(),AttackerID:z.string().nullish(),DefenderID:z.string().nullish(),AttackZone:Yi.nullish(),DefenseZone:Yi.nullish(),HitType:_d.nullish(),DamageDealt:z.number().nullish(),DefenderHpRemaining:z.number().nullish()}).passthrough(),Qd=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(),Kd=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(o=>o),Xo=z.object({UserID:z.string().nullish(),SelectedCharacterID:z.string().nullish(),SelectedCharacter:Ps.nullish(),BattleStrategy:z.array(ea).nullish(),UnstackableItems:z.record(z.string(),Kd).nullish(),Stats:Qd.nullish()}).passthrough(),Hd=z.object({WinnerUserID:z.string().nullish(),LoserUserID:z.string().nullish(),Entry:ge.nullish(),NetReward:ge.nullish(),BattleLog:z.array(Wd).nullish(),IsDraw:z.boolean().nullish(),P1BattleProfile:Xo.nullish(),P2BattleProfile:Xo.nullish()}).passthrough(),ta=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(ea).nullish(),TargetUserID:z.string().nullish(),Entry:ge.nullish(),CreationCostPaid:ge.nullish(),RefundCreationCostOnCancel:z.boolean().nullish(),JoinedByUserID:z.string().nullish(),JoinedByCharacterID:z.string().nullish(),JoinedAt:u.nullish(),Status:Ls.nullish(),WinnerUserID:z.string().nullish(),CompletedAt:u.nullish(),IsRewardDistributed:z.boolean().nullish(),RewardDistributedAt:u.nullish()}).passthrough(),ia=z.object({Status:Ls,MatchID:z.string(),Entry:ge.nullish(),Resources:b.nullish()}),ra=z.object({Match:ta.nullish()}),sa=z.object({MatchID:z.string(),Status:Ls,Resources:b.nullish()}),na=z.object({Battle:Hd.nullish(),Resources:b.nullish(),ResourcesDual:ft.nullish()}),qs=z.object({Matches:z.array(ta).nullish(),Page:z.number().nullish(),PageSize:z.number().nullish(),HasMore:z.boolean().nullish()}),tt={CreateMatch:"CreateMatch",UpdateMatch:"UpdateMatch",CancelMatch:"CancelMatch",InstantBattle:"InstantBattle",SaveStrategy:"SaveStrategy",GetMyMatches:"GetMyMatches",GetAvailableMatches:"GetAvailableMatches",GetDefinitions:"GetDefinitions"};var $d=z.enum(["VirtualCurrency","Item","EventToken"]).catch("VirtualCurrency");var Zd=z.enum(["Constant","Variable","Curve"]).catch("Constant"),Jd=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(),Yd=z.enum(["Flat","PercentReduction"]).catch("Flat"),Xd=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(),ArmorMode:Yd.nullish(),MaxArmorReduction:z.number().nullish()}).passthrough(),eh=z.object({Kind:Zd.nullish(),Constant:z.number().nullish(),VariableID:z.string().nullish(),Argument:z.string().nullish(),Curve:xe.nullish(),OnePlus:z.boolean().nullish()}).passthrough(),th=z.object({Coefficient:z.number().nullish(),Factors:z.array(eh).nullish()}).passthrough(),Rt=z.object({Terms:z.array(th).nullish()}).passthrough(),ih=z.object({Health:Rt.nullish(),Damage:Rt.nullish(),Armor:Rt.nullish(),AttackSpeed:Rt.nullish(),CritChance:Rt.nullish(),CritDamage:Rt.nullish(),Dodge:Rt.nullish()}).passthrough(),oa=z.object({StatMapping:Jd.nullish(),Combat:Xd.nullish(),Formula:ih.nullish()}).passthrough(),rh=z.object({BurnRate:z.number().nullish()}).passthrough(),Es=z.object({Kind:$d.nullish(),CurrencyID:z.string().nullish(),CatalogID:z.string().nullish(),ItemID:z.string().nullish(),TokenType:Yt.nullish(),EntityID:z.string().nullish(),MinAmount:z.number().nullish(),MaxAmount:z.number().nullish()}).passthrough(),aa=z.object({AllowVirtualCurrency:z.boolean().nullish(),AllowItems:z.boolean().nullish(),AllowEventTokens:z.boolean().nullish(),Allowed:z.array(Es).nullish(),MaxPositions:z.number().nullish()}).passthrough(),la=z.object({PriceOptions:J.nullish(),RefundCostOnCancel:z.boolean().nullish(),MaxOpenMatches:z.number().nullish(),Limits:ue.nullish(),AllowPrivateMatches:z.boolean().nullish(),MaxMatchesPerOpponentPerDay:z.number().nullish()}).passthrough(),sh=z.object({RuleID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),Economy:rh.nullish(),Entry:aa.nullish(),Creation:la.nullish(),Settings:oa.nullish()}).passthrough(),nh=z.object({Rules:z.record(z.string(),sh).nullish(),Defaults:oa.nullish(),EntryDefaults:aa.nullish(),CreationDefaults:la.nullish()}).passthrough(),Gs=z.object({InstantBattle:nh.nullish()}).passthrough(),ua=Gs;var oh={Listing:"Listing",Auction:"Auction",BuyOrder:"BuyOrder",DirectTrade:"DirectTrade"},Ns=z.enum(["Listing","Auction","BuyOrder","DirectTrade"]).catch("Listing"),ah={Active:"Active",Completed:"Completed",Cancelled:"Cancelled",Declined:"Declined",Expired:"Expired"},js=z.enum(["Active","Completed","Cancelled","Declined","Expired"]).catch("Active"),lh={Burn:"Burn",Ledger:"Ledger"},uh=z.enum(["Burn","Ledger"]).catch("Burn"),er={Item:"Item",VirtualCurrency:"VirtualCurrency"},Fs=z.enum(["Item","VirtualCurrency"]).catch("Item"),ch=z.object({Percent:z.number().nullish(),MinPerPosition:M.nullish()}).passthrough(),ph=z.object({AllowVirtualCurrency:z.boolean().nullish(),AllowItems:z.boolean().nullish(),AllowEventTokens:z.boolean().nullish(),Allowed:z.array(Es).nullish(),MaxPositions:z.number().nullish()}).passthrough(),dh=z.object({Percent:z.number().nullish(),MinPerPosition:M.nullish(),Sink:uh.nullish(),LedgerAccountID:z.string().nullish(),PerCatalogOverrides:z.record(z.string(),ch).nullish(),ApplyToDirectTrades:z.boolean().nullish()}).passthrough(),hh=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(),mh=z.object({Enabled:z.boolean().nullish(),AllowedDurationsHours:z.array(z.number()).nullish(),MaxActiveListings:z.number().nullish(),CreateLimits:ue.nullish(),BuyLimits:ue.nullish(),ListingFeeOptions:J.nullish(),RefundListingFeeOnCancel:z.boolean().nullish()}).passthrough(),fh=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:ue.nullish()}).passthrough(),gh=z.object({Enabled:z.boolean().nullish(),MaxActiveOrders:z.number().nullish(),AllowedDurationsHours:z.array(z.number()).nullish(),CreateLimits:ue.nullish(),FillLimits:ue.nullish()}).passthrough(),Rh=z.object({Enabled:z.boolean().nullish(),OfferExpirationHours:z.number().nullish(),MaxPendingOutgoing:z.number().nullish(),AllowGifts:z.boolean().nullish(),CreateLimits:ue.nullish()}).passthrough(),yh=z.object({Enabled:z.boolean().nullish()}).passthrough(),Vs=z.object({Enabled:z.boolean().nullish(),Gate:W.nullish(),Schedule:de.nullish(),PricePolicy:ph.nullish(),Commission:dh.nullish(),Tradability:hh.nullish(),Listings:mh.nullish(),Auctions:fh.nullish(),BuyOrders:gh.nullish(),DirectTrades:Rh.nullish(),Matching:yh.nullish()}).passthrough(),ca=z.object({BidIndex:z.number().nullish(),UserID:z.string().nullish(),Amount:M.nullish(),Settled:z.boolean().nullish(),SettledAt:u.nullish()}).passthrough(),Ch=z.object({BidAxisType:$t.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(ca).nullish()}).passthrough(),Xi=z.object({LastAt:u.nullish(),DailyCount:z.number().nullish(),DailyResetUtc:u.nullish()}).passthrough(),Sh=z.object({Create:Xi.nullish(),Buy:Xi.nullish(),Sell:Xi.nullish(),Bid:Xi.nullish()}).passthrough(),xh=z.object({CharacterID:z.string().nullish(),SlotID:z.string().nullish()}).passthrough(),Dh=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:xh.nullish(),CustomData:z.string().nullish()}).passthrough().transform(o=>o),nt=z.object({OfferID:z.string().nullish(),OfferType:Ns.nullish(),Status:js.nullish(),CreatorUserID:z.string().nullish(),CreatorPublicData:ve.nullish(),TargetUserID:z.string().nullish(),GoodsType:Fs.nullish(),GoodsCatalogID:z.string().nullish(),GoodsItemID:z.string().nullish(),GoodsCurrencyID:z.string().nullish(),GoodsAmount:M.nullish(),GoodsInstances:z.array(Dh).nullish(),Price:ge.nullish(),Auction:Ch.nullish(),CreatedAt:u.nullish(),ExpiresAt:u.nullish()}).passthrough(),bh=z.object({GoodsType:Fs.nullish(),GoodsCatalogID:z.string().nullish(),GoodsItemID:z.string().nullish(),GoodsCurrencyID:z.string().nullish(),CountsByType:z.record(Ns,M).nullish(),ListingCount:M.nullish(),AuctionCount:M.nullish(),BuyOrderCount:M.nullish()}).passthrough(),pa=z.object({Definitions:Vs.nullish(),IsOpenNow:z.boolean().nullish(),GatePassed:z.boolean().nullish()}).passthrough(),_s=z.object({Offers:z.array(nt).nullish(),ContinuationToken:z.string().nullish()}).passthrough(),da=z.object({Groups:z.array(bh).nullish()}).passthrough(),ha=z.object({Offer:nt.nullish()}).passthrough(),Ge=z.object({OfferID:z.string().nullish(),Status:js.nullish(),Settlement:ft.nullish(),Resources:b.nullish(),CommissionTaken:ge.nullish()}).passthrough(),Ft=z.object({OfferID:z.string().nullish(),Offer:nt.nullish(),Resources:b.nullish(),Matched:z.boolean().nullish(),Settlement:Ge.nullish()}).passthrough(),ma=z.object({OfferID:z.string().nullish(),CurrentBid:M.nullish(),BidCount:z.number().nullish(),ExpiresAt:u.nullish(),Resources:b.nullish()}).passthrough(),fa=z.object({MyOffers:z.array(nt).nullish(),MyLeadingBids:z.array(nt).nullish(),MyBuyOrders:z.array(nt).nullish(),IncomingTrades:z.array(nt).nullish(),OutgoingTrades:z.array(nt).nullish(),Claimables:z.array(nt).nullish(),DrainedRefunds:z.array(ca).nullish(),Limits:Sh.nullish()}).passthrough(),zh=z.object({OfferID:z.string().nullish(),OfferType:Ns.nullish(),FinalStatus:js.nullish(),SellerUserID:z.string().nullish(),BuyerUserID:z.string().nullish(),GoodsType:Fs.nullish(),GoodsCatalogID:z.string().nullish(),GoodsItemID:z.string().nullish(),GoodsCurrencyID:z.string().nullish(),GoodsAmount:M.nullish(),PricePaid:ge.nullish(),CommissionTaken:ge.nullish(),CompletedAt:u.nullish()}).passthrough(),ga=z.object({Entries:z.array(zh).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 vh="Marketplace",tr=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(vh,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 a=await this.ctx.api.marketplace.getOffersByItem(s);return a.ok&&this.ctx.emitter.emit("marketplace:offersByItemLoaded",a.data),a}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,a,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 x=this.baseRequest();if(!x)return n("unauthorized","Not logged in.");x.ItemID=e,x.CatalogID=t,x.GoodsAmount=i,x.PriceBundle=r,x.DurationHours=s,x.ItemInstanceIDs=a,x.SelectedOptionID=p;let U=await this.ctx.api.marketplace.createListing(x);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 a=await this.ctx.api.marketplace.marketBuy(r);return a.ok&&(this.applyDualPartySettlement(a.data.Settlement),this.ctx.emitter.emit("marketplace:marketBought",a.data)),a}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 a=await this.ctx.api.marketplace.marketSell(r);return a.ok&&(this.applyDualPartySettlement(a.data.Settlement),this.ctx.emitter.emit("marketplace:marketSold",a.data)),a}async createAuction(e,t,i,r,s,a,p={}){if(!e)return n("client","ItemID is required.");if(!t)return n("client","CatalogID is required.");let x=this.baseRequest();if(!x)return n("unauthorized","Not logged in.");x.ItemID=e,x.CatalogID=t,x.GoodsAmount=i,x.BidAxisType=r,x.BidCurrencyID=p.bidCurrencyID,x.BidCatalogID=p.bidCatalogID,x.BidItemID=p.bidItemID,x.StartingBid=s,x.DurationHours=a,x.ItemInstanceIDs=p.itemInstanceIDs,x.SelectedOptionID=p.selectedOptionID;let U=await this.ctx.api.marketplace.createAuction(x);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 a=this.baseRequest();if(!a)return n("unauthorized","Not logged in.");a.ItemID=e,a.CatalogID=t,a.GoodsAmount=i,a.PriceBundle=r,a.DurationHours=s;let p=await this.ctx.api.marketplace.createBuyOrder(a);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 a=this.baseRequest();if(!a)return n("unauthorized","Not logged in.");a.TargetUserID=e,a.CatalogID=t,a.ItemID=i,a.ItemInstanceIDs=r,a.RequestedBundle=s;let p=await this.ctx.api.marketplace.createDirectTrade(a);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=er.VirtualCurrency,e.GoodsCurrencyID=t.goodsCurrencyID,null):"itemID"in t&&t.itemID&&t.catalogID?(e.GoodsType=er.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 ir=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 a=await this.ctx.api.multiplayer.sendSignal(s);return a.ok&&this.ctx.emitter.emit("multiplayer:signalSent",a.data),a}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}),ya=z.object({CodeTtlMinutes:z.number().nullish(),ResendCooldownSeconds:z.number().nullish()}),De=z.object({IsCompleted:z.boolean().nullish(),ServerTime:u.nullish()}),Ca=z.object({Message:z.string(),ExpiresAt:u}),we={LoginWithDeviceID:"LoginWithDeviceID",LoginWithTelegram:"LoginWithTelegram",LoginWithEmail:"LoginWithEmail",LoginWithGoogle:"LoginWithGoogle",LoginWithSsoCode:"LoginWithSsoCode",RegisterWithEmail:"RegisterWithEmail",ConfirmEmailRegistration:"ConfirmEmailRegistration",ResendVerificationCode:"ResendVerificationCode",RequestWalletChallenge:"RequestWalletChallenge",LoginWithWallet:"LoginWithWallet",ForgotPassword:"ForgotPassword",ResetPassword:"ResetPassword"};function A(o,e,t,i){let s=`api/v2/${o&&o.length>0?o:"0"}/Client/${e}/${t}`;return i==null?s:`${s}/${i}`}var rr=class{constructor(e){this.ctx=e;}ctx;endpoint(e){return A(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(we.LoginWithDeviceID,e)}loginWithTelegram(e){return this.login(we.LoginWithTelegram,e)}loginWithEmail(e){return this.login(we.LoginWithEmail,e)}loginWithGoogle(e){return this.login(we.LoginWithGoogle,e)}loginWithSsoCode(e){return this.login(we.LoginWithSsoCode,e)}registerWithEmail(e){return this.ctx.transport.post(this.endpoint(we.RegisterWithEmail),e,ya,{ticket:null})}confirmEmailRegistration(e){return this.login(we.ConfirmEmailRegistration,e)}resendVerificationCode(e){return this.ctx.transport.post(this.endpoint(we.ResendVerificationCode),e,De,{ticket:null})}requestWalletChallenge(e){return this.ctx.transport.post(this.endpoint(we.RequestWalletChallenge),e,Ca,{ticket:null})}loginWithWallet(e){return this.login(we.LoginWithWallet,e)}forgotPassword(e){return this.ctx.transport.post(this.endpoint(we.ForgotPassword),e,De,{ticket:null})}resetPassword(e){return this.ctx.transport.post(this.endpoint(we.ResetPassword),e,De,{ticket:null})}};var Th={ReturnKey:"ReturnKey",ReturnMarkedKey:"ReturnMarkedKey",ReturnEmpty:"ReturnEmpty"},Sa=z.enum(["ReturnKey","ReturnMarkedKey","ReturnEmpty"]).catch("ReturnKey"),Ph=z.object({Locale:z.string().nullish(),DisplayName:z.string().nullish(),IsEnabled:z.boolean().nullish(),Order:z.number().nullish()}).passthrough(),xa=z.object({IsEnabled:z.boolean().nullish(),DefaultLocale:z.string().nullish(),Locales:z.record(z.string(),Ph).nullish(),MissingKeyMode:Sa.nullish(),MaxEntriesPerLocale:z.number().nullish(),MaxValueLengthBytes:z.number().nullish()}).passthrough(),Ih=z.object({Locale:z.string().nullish(),Version:z.number().nullish(),Url:z.string().nullish()}).passthrough(),Da=z.object({Locale:z.string().nullish(),Version:z.number().nullish(),Url:z.string().nullish(),Fallback:Ih.nullish()}).passthrough(),sr={GetLocalizationManifest:"GetLocalizationManifest",GetLocalizationTable:"GetLocalizationTable"},kh=z.object({Locale:z.string().nullish(),DisplayName:z.string().nullish(),Order:z.number().nullish(),Version:z.number().nullish()}).passthrough(),ba=z.object({IsEnabled:z.boolean().nullish(),DefaultLocale:z.string().nullish(),MissingKeyMode:Sa.nullish(),ResolvedLocale:z.string().nullish(),Locales:z.array(kh).nullish()}).passthrough(),za=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 Ws=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:Da.nullish()}).passthrough().transform(o=>o),va=z.object({StateEpoch:z.string().nullish(),StateVersions:z.record(z.string(),z.number()).nullish()}).passthrough().transform(o=>o),Ta=z.object({StateEpoch:z.string().nullish(),StateVersions:z.record(z.string(),z.number()).nullish(),User:z.unknown().nullish()}).passthrough().transform(o=>o),Pa=z.object({}).passthrough().transform(o=>o),Ia=z.object({}).passthrough().transform(o=>o),ka=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(),Ma=z.object({Username:z.string()}),je={GetClientState:"GetClientState",GetClientStateExcept:"GetClientStateExcept",GetStateVersions:"GetStateVersions",GetUserState:"GetUserState",GetInventory:"GetInventory",GetEventTokens:"GetEventTokens",GetUsageTime:"GetUsageTime",AddUsageTime:"AddUsageTime",DeleteUserAccount:"DeleteUserAccount",ChangeUsername:"ChangeUsername"};var nr=class{constructor(e){this.ctx=e;}ctx;endpoint(e,t){return A(this.ctx.settings.titleID,"User",e,t??"")}getClientState(e){return this.ctx.transport.post(this.endpoint(je.GetClientState,e.UserID),e,Ws,{ticket:e.ClientSessionTicket})}getClientStateExcept(e){return this.ctx.transport.post(this.endpoint(je.GetClientStateExcept,e.UserID),e,Ws,{ticket:e.ClientSessionTicket})}getStateVersions(e){return this.ctx.transport.post(this.endpoint(je.GetStateVersions,e.UserID),e,va,{ticket:e.ClientSessionTicket})}getUserState(e){return this.ctx.transport.post(this.endpoint(je.GetUserState,e.UserID),e,Ta,{ticket:e.ClientSessionTicket})}getInventory(e){return this.ctx.transport.post(this.endpoint(je.GetInventory,e.UserID),e,Pa,{ticket:e.ClientSessionTicket})}getEventTokens(e){return this.ctx.transport.post(this.endpoint(je.GetEventTokens,e.UserID),e,Ia,{ticket:e.ClientSessionTicket})}getUsageTime(e){return this.ctx.transport.post(this.endpoint(je.GetUsageTime,e.UserID),e,ka,{ticket:e.ClientSessionTicket})}addUsageTime(e){return this.ctx.transport.post(this.endpoint(je.AddUsageTime,e.UserID),e,De,{ticket:e.ClientSessionTicket,silent:true})}deleteUserAccount(e){return this.ctx.transport.post(this.endpoint(je.DeleteUserAccount,e.UserID),e,De,{ticket:e.ClientSessionTicket})}changeUsername(e){return this.ctx.transport.post(this.endpoint(je.ChangeUsername,e.UserID),e,Ma,{ticket:e.ClientSessionTicket})}};var or=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=A(this.ctx.settings.titleID,"Currency",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}convert(e){return this.send(Qi.Convert,e,Co)}cryptoConvert(e){return this.send(Qi.CryptoConvert,e,So)}};var Mh=z.object({ItemInstanceID:z.string(),Units:z.number(),Level:z.number()}),Qs=z.object({ServerTimeUtc:u,ItemInstanceID:z.string(),ItemID:z.string(),CatalogID:z.string().nullish(),Level:z.number(),Resources:b.nullish(),FodderConsumed:z.array(Mh).nullish()}),wa=z.array(re(Qs)),ar={UpgradeLevel:"UpgradeLevel",UpgradeLevelsBatch:"UpgradeLevelsBatch"},wh={FlatCount:"FlatCount",Merge:"Merge",InvestmentRefund:"InvestmentRefund"},Ah=z.enum(["FlatCount","Merge","InvestmentRefund"]).catch("FlatCount"),Oh={ProtectLeveled:"ProtectLeveled",CheapestFirst:"CheapestFirst",ClientSelected:"ClientSelected",SameLevelOnly:"SameLevelOnly"},Uh=z.enum(["ProtectLeveled","CheapestFirst","ClientSelected","SameLevelOnly"]).catch("ProtectLeveled"),Bh=z.object({ContractAddress:z.string().nullish(),TokenID:z.string().nullish(),TokenStandard:z.string().nullish()}).passthrough(),Lh=z.object({Networks:z.record(z.string(),Bh).nullish(),MetadataUrl:z.string().nullish()}).passthrough(),qh=z.object({FlatBonuses:z.record(z.string(),z.number()).nullish(),PercentBonuses:z.record(z.string(),z.number()).nullish(),Power:z.number().nullish()}).passthrough(),Eh=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(),Gh=z.object({ValuationMode:Ah.nullish(),WeightCurve:xe.nullish(),Selection:Uh.nullish()}).passthrough(),Nh=z.object({MaxLevel:z.number().nullish(),PriceOptions:J.nullish(),CostCurve:xe.nullish(),FlatBonusCurve:xe.nullish(),PercentBonusCurve:xe.nullish(),PowerCurve:xe.nullish(),Fodder:Gh.nullish()}).passthrough(),jh=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:Lh.nullish(),Stats:qh.nullish(),Equipment:Eh.nullish(),Upgrade:Nh.nullish(),Metadata:jh.nullish(),ExpirationDurationSeconds:z.number().nullish()}).passthrough(),Vh=z.object({Items:z.record(z.string(),Fh).nullish()}).passthrough(),lr=z.object({Catalogs:z.record(z.string(),Vh).nullish()}).passthrough();var ur=class{constructor(e){this.ctx=e;}ctx;upgradeLevel(e){let t=A(this.ctx.settings.titleID,"Item",ar.UpgradeLevel,e.UserID??"");return this.ctx.transport.post(t,e,Qs,{ticket:e.ClientSessionTicket})}upgradeLevelsBatch(e){let t=A(this.ctx.settings.titleID,"Item",ar.UpgradeLevelsBatch,e.UserID??"");return this.ctx.transport.post(t,e,wa,{ticket:e.ClientSessionTicket})}};var Ks=z.object({ServerTimeUtc:u,OfferID:z.string(),Count:z.number(),Resources:b.nullish()}),Aa=z.array(re(Ks)),_h=z.object({OfferID:z.string(),TotalPurchases:z.number(),DailyPurchases:z.number(),DailyResetUtc:u,LastPurchasedAt:u}),Oa=z.object({Purchases:z.record(z.string(),_h).nullish()}).passthrough().transform(o=>o),Wh=z.object({StartUtc:u.nullish(),EndUtc:u.nullish(),RequiredFlags:z.array(z.string()).nullish()}).passthrough(),Qh=z.object({StoreID:z.string(),Type:z.string().nullish(),Name:z.string().nullish(),Description:z.string().nullish(),Rules:Wh.nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),Kh=z.object({StartUtc:u.nullish(),EndUtc:u.nullish(),Gate:W.nullish(),Limits:ue.nullish()}).passthrough(),Hh=z.object({OfferID:z.string(),StoreIDs:z.array(z.string()).nullish(),Name:z.string().nullish(),PriceOptions:J.nullish(),Rewards:L.nullish(),Rules:Kh.nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),cr=z.object({Stores:z.record(z.string(),Qh).nullish(),StoreOffers:z.record(z.string(),Hh).nullish()}).passthrough(),kt={Purchase:"Purchase",GetDefinitions:"GetDefinitions",GetUserState:"GetUserState",PurchaseBatch:"PurchaseBatch"};var pr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=A(this.ctx.settings.titleID,"Store",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}purchase(e){return this.send(kt.Purchase,e,Ks)}purchaseBatch(e){return this.send(kt.PurchaseBatch,e,Aa)}getDefinitions(e){return this.send(kt.GetDefinitions,e,cr)}getUserState(e){return this.send(kt.GetUserState,e,Oa)}};var $h={Consumable:"Consumable",NonConsumable:"NonConsumable",Subscription:"Subscription"},Zh=z.enum(["Consumable","NonConsumable","Subscription"]).catch("Consumable"),Jh=z.object({StartUtc:u.nullish(),EndUtc:u.nullish(),Gate:W.nullish(),Limits:ue.nullish()}).passthrough(),Yh=z.object({ResourceAction:z.string().nullish(),RevokeEntitlement:z.boolean().nullish(),BlockFuturePurchases:z.boolean().nullish()}).passthrough(),Xh=z.object({ProductID:z.string().nullish(),Name:z.string().nullish(),Type:Zh.nullish(),Enabled:z.boolean().nullish(),StoreProductIDs:z.record(z.string(),z.string()).nullish(),Rewards:L.nullish(),PriceUsdCents:z.number().nullish(),Rules:Jh.nullish(),Refund:Yh.nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),Ua=z.object({Enabled:z.boolean().nullish(),Products:z.record(z.string(),Xh).nullish()}).passthrough(),Ba=z.object({ProductID:z.string().nullish(),TotalPurchases:z.number().nullish(),DailyPurchases:z.number().nullish(),DailyResetUtc:u.nullish(),LastPurchasedAt:u.nullish(),Owned:z.boolean().nullish(),Refunded:z.boolean().nullish(),PurchaseBlocked:z.boolean().nullish()}).passthrough(),La=z.object({Products:z.record(z.string(),Ba).nullish(),LifetimeSpendUsdCents:z.number().nullish()}).passthrough(),em={Granted:"Granted",Restored:"Restored",AlreadyProcessed:"AlreadyProcessed"},tm=z.enum(["Granted","Restored","AlreadyProcessed"]).catch("Granted"),Hs=z.object({ServerTimeUtc:u,Store:Jt.nullish(),ProductID:z.string().nullish(),TransactionID:z.string().nullish(),Status:tm.nullish(),Granted:z.boolean().nullish(),Quantity:z.number().nullish(),Resources:b.nullish(),ProductState:Ba.nullish()}).passthrough(),qa=Xe(Hs),Mt={GetDefinitions:"GetDefinitions",GetUserState:"GetUserState",ValidatePurchase:"ValidatePurchase",ValidatePurchasesBatch:"ValidatePurchasesBatch"};var dr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=A(this.ctx.settings.titleID,"Purchase",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(Mt.GetDefinitions,e,Ua)}getUserState(e){return this.send(Mt.GetUserState,e,La)}validatePurchase(e){return this.send(Mt.ValidatePurchase,e,Hs)}validatePurchasesBatch(e){return this.send(Mt.ValidatePurchasesBatch,e,qa)}};var im=z.object({Min:z.number().nullish(),Max:z.number().nullish()}).passthrough(),Ea=z.object({Reward:L.nullish(),Weight:z.number().nullish(),AmountRange:im.nullish()}).passthrough(),wt=z.object({SlotID:z.string().nullish(),MinRolls:z.number().nullish(),MaxRolls:z.number().nullish(),Pool:z.array(Ea).nullish()}).passthrough(),At=z.object({RuleID:z.string().nullish(),Threshold:z.number().nullish(),Pool:z.array(Ea).nullish()}).passthrough(),rm=z.object({RewardSlots:z.array(wt).nullish()}).passthrough(),sm=z.object({PityRules:z.array(At).nullish()}).passthrough(),hr=z.object({SlotPresets:z.record(z.string(),rm).nullish(),PityPresets:z.record(z.string(),sm).nullish()}).passthrough();var nm=z.object({RuleID:z.string(),BoxIndex:z.number().nullish()}),Ga=z.object({ServerTimeUtc:u,LootboxID:z.string(),OpenedCount:z.number().nullish(),SelectedOptionID:z.string().nullish(),Resources:b.nullish(),Inventory:pt.nullish(),Results:z.array(b).nullish(),TriggeredPity:z.array(nm).nullish()}),om=z.object({RewardSlots:Y.nullish(),PityRules:Y.nullish()}).passthrough(),am=z.object({CatalogID:z.string().nullish(),ItemID:z.string().nullish(),MaxDrops:M.nullish()}).passthrough(),lm=z.object({LootboxID:z.string(),AssetPaths:z.record(z.string(),z.string()).nullish(),PriceOptions:J.nullish(),RewardSlots:z.array(wt).nullish(),PityRules:z.array(At).nullish(),Presets:om.nullish(),RewardMultiplier:Xt.nullish(),SupplyLimits:z.array(am).nullish(),MaxOpenCount:z.number().nullish()}).passthrough(),$s=z.object({Definitions:z.record(z.string(),lm).nullish(),RewardPools:hr.nullish()}).passthrough(),Na=z.object({LootboxDefinitions:$s.nullish()}),mr={GetDefinitions:"GetDefinitions",Open:"Open"};var fr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=A(this.ctx.settings.titleID,"Lootbox",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(mr.GetDefinitions,e,Na)}open(e){return this.send(mr.Open,e,Ga)}};var um=z.object({}).passthrough().transform(o=>o),cm=z.object({}).passthrough().transform(o=>o),pm=z.object({}).passthrough().transform(o=>o),dm=z.object({}).passthrough().transform(o=>o),hm=z.object({}).passthrough().transform(o=>o),ja=z.object({ServerTimeUtc:u,CalendarID:z.string(),DayNumber:z.number().nullish(),DailyState:um,Resources:b.nullish()}),Fa=z.object({ServerTimeUtc:u,AccrualID:z.string(),AccruedSeconds:M.nullish(),AppliedRatePerSecond:z.number().nullish(),IdleState:cm,Resources:b.nullish()}),Va=z.object({ServerTimeUtc:u,ComebackID:z.string(),ClaimedTierIndex:z.number().nullish(),ComebackState:pm,Resources:b.nullish()}),_a=z.object({ServerTimeUtc:u,ClaimID:z.string(),ClaimState:dm,Resources:b.nullish()}),Wa=z.object({Enabled:z.boolean(),Multiplier:z.number().nullish(),Progress:M.nullish(),Source:z.string().nullish(),SourceKey:z.string().nullish()}),mm=z.object({RewardMode:z.string().nullish(),RewardStackLowerTiers:z.boolean().nullish()}).passthrough(),fm=z.object({DayNumber:z.number().nullish(),Rewards:L.nullish(),IsMilestone:z.boolean().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),gm=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(fm).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:W.nullish(),AvailableFromUtc:z.string().nullish(),AvailableUntilUtc:z.string().nullish()}).passthrough(),Rm=z.object({MinPremiumTier:z.number().nullish(),RequiredPremiumID:z.string().nullish(),Multiplier:z.number().nullish()}).passthrough(),ym=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(Rm).nullish()}).passthrough(),Cm=z.object({MinCharacterLevel:z.number().nullish(),RequirementsCharacterID:z.string().nullish(),Gate:W.nullish(),RequiredItemIDs:z.array(z.string()).nullish(),RequiredEquippedItemIDs:z.array(z.string()).nullish()}).passthrough(),Sm=z.object({AccrualID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Rate:ym.nullish(),Rewards:L.nullish(),MaxAccumulationSeconds:z.number().nullish(),MinClaimSeconds:z.number().nullish(),Requirements:Cm.nullish(),FirstClaimMode:z.string().nullish(),AvailableFromUtc:z.string().nullish(),AvailableUntilUtc:z.string().nullish()}).passthrough(),xm=z.object({MinAbsenceSeconds:z.number().nullish(),Rewards:L.nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),Dm=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(xm).nullish(),ClaimCooldownSeconds:z.number().nullish(),ClaimWindowSeconds:z.number().nullish(),TrackPresenceOnRead:z.boolean().nullish(),Gate:W.nullish(),AvailableFromUtc:z.string().nullish(),AvailableUntilUtc:z.string().nullish()}).passthrough(),bm=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(),zm=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:ue.nullish(),PremiumLimitOverrides:z.array(bm).nullish(),Gate:W.nullish(),AvailableFromUtc:z.string().nullish(),AvailableUntilUtc:z.string().nullish()}).passthrough(),Zs=z.object({TierRewards:mm.nullish(),MilestoneRewardMultiplier:Xt.nullish(),DailyCalendars:z.record(z.string(),gm).nullish(),IdleAccruals:z.record(z.string(),Sm).nullish(),Comebacks:z.record(z.string(),Dm).nullish(),Claims:z.record(z.string(),zm).nullish()}).passthrough(),Qa=z.object({RewardDefinitions:Zs.nullish()}),Ka=z.object({Rewards:hm.nullish()}),ot={GetRewardDefinitions:"GetRewardDefinitions",GetUserRewardsState:"GetUserRewardsState",ClaimDailyReward:"ClaimDailyReward",CollectIdleAccrual:"CollectIdleAccrual",ClaimComebackReward:"ClaimComebackReward",ClaimReward:"ClaimReward",ClaimRewardsBatch:"ClaimRewardsBatch",GetMilestoneRewardMultiplier:"GetMilestoneRewardMultiplier"};var gr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=A(this.ctx.settings.titleID,"Reward",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getRewardDefinitions(e){return this.send(ot.GetRewardDefinitions,e,Qa)}getUserRewardsState(e){return this.send(ot.GetUserRewardsState,e,Ka)}getMilestoneRewardMultiplier(e){return this.send(ot.GetMilestoneRewardMultiplier,e,Wa)}claimDailyReward(e){return this.send(ot.ClaimDailyReward,e,ja)}collectIdleAccrual(e){return this.send(ot.CollectIdleAccrual,e,Fa)}claimComebackReward(e){return this.send(ot.ClaimComebackReward,e,Va)}claimReward(e){return this.send(ot.ClaimReward,e,_a)}};var Rr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=A(this.ctx.settings.titleID,"Tutorial",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getTutorialDefinitions(e){return this.send(qe.GetTutorialDefinitions,e,Zn)}getUserTutorialState(e){return this.send(qe.GetUserTutorialState,e,Yn)}startFlow(e){return this.send(qe.StartFlow,e,ct)}reportStepShown(e){return this.send(qe.ReportStepShown,e,ct)}completeStep(e){return this.send(qe.CompleteStep,e,ct)}completeStepsBatch(e){return this.send(qe.CompleteStepsBatch,e,eo)}skipStep(e){return this.send(qe.SkipStep,e,ct)}skipFlow(e){return this.send(qe.SkipFlow,e,ct)}claimFlowReward(e){return this.send(qe.ClaimFlowReward,e,Xn)}resetFlow(e){return this.send(qe.ResetFlow,e,ct)}};var yr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=A(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(sr.GetLocalizationManifest,e,ba)}getLocalizationTable(e){return this.send(sr.GetLocalizationTable,e,za)}};var Cr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=A(this.ctx.settings.titleID,"Quest",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getQuestDefinitions(e){return this.send(Qe.GetQuestDefinitions,e,ti)}getUserQuestState(e){return this.send(Qe.GetUserQuestState,e,En)}refreshQuestCycles(e){return this.send(Qe.RefreshQuestCycles,e,De)}claimQuestReward(e){return this.send(Qe.ClaimQuestReward,e,ds)}claimQuestRewardsBatch(e){return this.send(Qe.ClaimQuestRewardsBatch,e,jn)}claimMilestoneReward(e){return this.send(Qe.ClaimMilestoneReward,e,hs)}claimMilestoneRewardsBatch(e){return this.send(Qe.ClaimMilestoneRewardsBatch,e,Fn)}claimGroupCompletionReward(e){return this.send(Qe.ClaimGroupCompletionReward,e,Gn)}addQuestProgress(e){return this.send(Qe.AddQuestProgress,e,Nn)}};var Ha=z.object({}).passthrough().transform(o=>o);var vm=z.object({Order:z.number().nullish(),Type:z.string().nullish(),DurationSec:z.number().nullish(),BonusMultiplier:z.number().nullish()}).passthrough(),Tm=z.object({Schedule:z.array(vm).nullish(),RepeatCycle:z.boolean().nullish(),MaxCycles:z.number().nullish()}).passthrough(),Pm=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(),Im=z.object({Milestones:Y.nullish()}).passthrough(),Js=z.object({DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Category:z.string().nullish(),Token:gt.nullish(),TokenSources:z.array(Le).nullish(),ClaimMode:z.string().nullish(),Milestones:z.record(z.string(),ze).nullish(),Presets:Im.nullish(),BonusWindow:Tm.nullish()}).passthrough(),km=z.object({ChainedEventID:z.string().nullish(),Order:z.number().nullish(),DurationSec:z.number().nullish(),Content:Js.nullish(),ClaimGraceHours:z.number().nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),Mm=z.object({TimedEventID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Schedule:de.nullish(),Content:Js.nullish(),Events:z.array(km).nullish(),Gate:W.nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),wm=z.object({MaxConcurrentEvents:z.number().nullish()}).passthrough(),Am=z.object({Milestones:z.record(z.string(),ut).nullish()}).passthrough(),Sr=z.object({Definitions:z.record(z.string(),Mm).nullish(),Settings:wm.nullish(),Presets:Am.nullish()}).passthrough(),Om=z.object({Type:Et,TimedEventID:z.string(),CurrentChainedEventID:z.string().nullish(),Content:Js.nullish(),Progress:Ha.nullish(),ComputedStartUtc:u.nullish(),ComputedEndUtc:u.nullish(),CanEarn:z.boolean().nullish(),CanClaim:z.boolean().nullish(),NextMilestone:ze.nullish(),BonusWindow:Pm.nullish(),CurrentCycleIndex:z.number().nullish(),CurrentEventOrder:z.number().nullish(),TotalEventsInChain:z.number().nullish()}).passthrough(),$a=z.object({ActiveEvents:z.array(Om).nullish()}).passthrough(),Za=z.object({Tokens:z.record(z.string(),Ha).nullish()}),Ys=z.object({Type:Et.nullish(),LteID:z.string().nullish(),Resources:b.nullish()}),Xs=z.object({Type:Et.nullish(),LteID:z.string().nullish(),MilestoneID:z.string().nullish(),Rewards:b.nullish()}),Um=z.object({Type:Et.nullish(),LteID:z.string().nullish(),Resources:b.nullish()}),en=z.array(re(Xs)),Ja=z.array(re(Ys)),Ya=z.array(re(Um)),Fe={GetActiveEvents:"GetActiveEvents",GrantTokens:"GrantTokens",SpendTokens:"SpendTokens",ClaimMilestone:"ClaimMilestone",GetDefinitions:"GetDefinitions",GetUserLteState:"GetUserLteState",ClaimMilestonesBatch:"ClaimMilestonesBatch",ClaimAllMilestones:"ClaimAllMilestones",SpendTokensBatch:"SpendTokensBatch",GrantTokensBatch:"GrantTokensBatch"};var xr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=A(this.ctx.settings.titleID,"TimedEvent",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getActiveEvents(e){return this.send(Fe.GetActiveEvents,e,$a)}getDefinitions(e){return this.send(Fe.GetDefinitions,e,Sr)}getUserLteState(e){return this.send(Fe.GetUserLteState,e,Za)}grantTokens(e){return this.send(Fe.GrantTokens,e,b)}spendTokens(e){return this.send(Fe.SpendTokens,e,Ys)}claimMilestone(e){return this.send(Fe.ClaimMilestone,e,Xs)}claimMilestonesBatch(e){return this.send(Fe.ClaimMilestonesBatch,e,en)}claimAllMilestones(e){return this.send(Fe.ClaimAllMilestones,e,en)}spendTokensBatch(e){return this.send(Fe.SpendTokensBatch,e,Ja)}grantTokensBatch(e){return this.send(Fe.GrantTokensBatch,e,Ya)}};var Bm=z.object({UserID:z.string(),Score:M.nullish(),Rank:z.number().nullish(),LastScoreUpdateUtc:u.nullish(),IpHash:z.string().nullish(),PublicProfile:ve.nullish(),SeasonTierAtCycleEnd:z.number().nullish()}).passthrough(),Vt=z.object({LeaderboardID:z.string(),CycleVersion:z.number().nullish(),TotalParticipants:M.nullish(),CycleEndUtc:u.nullish(),TopUsers:z.array(Bm).nullish(),BracketID:z.string().nullish()}),Lm=z.object({CycleKey:z.string().nullish(),CycleEndUtc:u.nullish(),ClaimDeadlineUtc:u.nullish(),MilestoneTokensEarned:M.nullish(),ClaimableMilestoneIDs:z.array(z.string()).nullish(),CycleIndex:z.number().nullish(),ChainedEventID:z.string().nullish()}).passthrough(),Dr=z.object({LeaderboardID:z.string(),CurrentScore:M.nullish(),LastKnownRank:z.number().nullish(),HasUnclaimedReward:z.boolean().nullish(),ScoreEarnedThisCycle:M.nullish(),MilestoneTokensEarned:M.nullish(),NextMilestone:ze.nullish(),HasUnclaimedMilestone:z.boolean().nullish(),ClaimableGraceCycles:z.array(Lm).nullish()}),br=z.object({LeaderboardID:z.string(),NewScore:M,CycleVersion:z.number()}),zr=z.object({ServerTimeUtc:u,LeaderboardID:z.string(),Rank:z.number().nullish(),Resources:b.nullish()}),vr=z.object({ServerTimeUtc:u,LeaderboardID:z.string(),MilestoneID:z.string(),Resources:b.nullish()}),Xa=z.array(re(Vt)),el=z.array(re(Dr)),tl=z.array(re(zr)),il=z.array(re(vr)),rl=z.array(re(br)),qm=z.object({LeaderboardID:z.string(),CycleReward:re(zr).nullish(),Milestones:z.array(re(vr)).nullish()}),sl=z.array(qm),Em=z.object({LeaderboardID:z.string(),Leaderboard:re(Vt).nullish(),Progress:re(Dr).nullish()}),nl=z.array(Em),Gm=z.string(),ol=z.object({Rank:z.string().nullish(),Rewards:L.nullish(),SeasonTierRewards:cs.nullish()}).passthrough(),Nm=z.object({RankRewards:z.array(ol).nullish()}).passthrough(),jm=z.object({ChainedEventID:z.string().nullish(),Order:z.number().nullish(),DurationSec:z.number().nullish(),ClaimGraceHours:z.number().nullish()}).passthrough(),Fm=z.object({Milestones:Y.nullish(),RankRewards:Y.nullish()}).passthrough(),Vm=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:Gm.nullish(),Schedule:de.nullish(),ChainEvents:z.array(jm).nullish(),Gate:W.nullish(),TopUsersLimit:z.number().nullish(),MinScoreToEnterTop:z.number().nullish(),BracketSize:z.number().nullish(),LinkedSeasonChainID:z.string().nullish(),RankRewards:z.array(ol).nullish(),Milestones:z.record(z.string(),ze).nullish(),Presets:Fm.nullish(),MilestoneClaimMode:z.string().nullish(),MilestoneClaimGraceHours:z.number().nullish(),ScoreSources:z.array(Le).nullish()}).passthrough(),_m=z.object({Milestones:z.record(z.string(),ut).nullish(),RankRewards:z.record(z.string(),Nm).nullish()}).passthrough(),Tr=z.object({Definitions:z.record(z.string(),Vm).nullish(),Presets:_m.nullish()}).passthrough(),be={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 Pr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=A(this.ctx.settings.titleID,"Leaderboard",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(be.GetDefinitions,e,Tr)}getLeaderboard(e){return this.send(be.GetLeaderboard,e,Vt)}getMyProgress(e){return this.send(be.GetMyProgress,e,Dr)}submitScore(e){return this.send(be.SubmitScore,e,br)}submitScoreFromSource(e){return this.send(be.SubmitScoreFromSource,e,br)}claimCycleReward(e){return this.send(be.ClaimCycleReward,e,zr)}claimMilestone(e){return this.send(be.ClaimMilestone,e,vr)}getFriendsLeaderboard(e){return this.send(be.GetFriendsLeaderboard,e,Vt)}getLeaderboardsBatch(e){return this.send(be.GetLeaderboardsBatch,e,Xa)}getProgressBatch(e){return this.send(be.GetProgressBatch,e,el)}claimCycleRewardsBatch(e){return this.send(be.ClaimCycleRewardsBatch,e,tl)}claimMilestonesBatch(e){return this.send(be.ClaimMilestonesBatch,e,il)}submitScoresBatch(e){return this.send(be.SubmitScoresBatch,e,rl)}claimAllRewardsBatch(e){return this.send(be.ClaimAllRewardsBatch,e,sl)}getOverviewBatch(e){return this.send(be.GetOverviewBatch,e,nl)}};var tn=z.object({}).passthrough().transform(o=>o),al=z.object({SeasonChainID:z.string(),CycleIndex:z.number().nullish(),Season:z.lazy(()=>pl).nullish(),ComputedStartUtc:u.nullish(),ComputedEndUtc:u.nullish(),SecondsRemaining:M.nullish(),UserState:tn.nullish(),NextTier:z.lazy(()=>cl).nullish()}).passthrough(),ll=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()}),rn=z.object({SeasonChainID:z.string(),CurrentSeasonID:z.string().nullish(),TierNumber:z.number(),Resources:b.nullish()}),ul=Xe(rn);var cl=z.object({Tier:z.number().nullish(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),RequiredTokens:M.nullish(),TierReachedReward:L.nullish()}).passthrough(),pl=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(cl).nullish(),LinkedCollectionID:z.string().nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough();var Wm=z.object({SeasonChainID:z.string().nullish(),DisplayName:z.string().nullish(),Schedule:de.nullish(),Seasons:z.array(pl).nullish(),GrantTokensAccessMode:z.string().nullish(),Gate:W.nullish()}).passthrough(),Ir=z.object({Chains:z.record(z.string(),Wm).nullish()}).passthrough(),ht={GetDefinitions:"GetDefinitions",GetActiveSeason:"GetActiveSeason",GetUserState:"GetUserState",GrantStatusTokens:"GrantStatusTokens",ClaimTierReward:"ClaimTierReward",ClaimTierRewardsBatch:"ClaimTierRewardsBatch"};var kr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=A(this.ctx.settings.titleID,"Season",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(ht.GetDefinitions,e,Ir)}getActiveSeason(e){return this.send(ht.GetActiveSeason,e,al)}getUserState(e){return this.send(ht.GetUserState,e,tn)}grantStatusTokens(e){return this.send(ht.GrantStatusTokens,e,ll)}claimTierReward(e){return this.send(ht.ClaimTierReward,e,rn)}claimTierRewardsBatch(e){return this.send(ht.ClaimTierRewardsBatch,e,ul)}};var Qm={Apple:"Apple",Google:"Google"},dl=z.object({}).passthrough().transform(o=>o),Km=z.object({PremiumID:z.string().nullish(),PurchaseDate:z.string().nullish(),ExpirationDate:z.string().nullish(),TransactionID:z.string().nullish(),IsAutoRenewEnabled:z.boolean().nullish()}).passthrough(),Hm=z.object({PremiumID:z.string().nullish(),DisplayName:z.string().nullish(),Tier:z.number().nullish(),DurationDays:z.number().nullish(),TrialDurationDays:z.number().nullish(),PriceOptions:J.nullish(),Benefits:z.record(z.string(),z.string()).nullish()}).passthrough(),sn=z.object({Definitions:z.record(z.string(),Hm).nullish()}).passthrough(),hl=z.object({Premium:sn.nullish()}),ml=z.object({ServerTimeUtc:u.nullish(),Premium:dl.nullish()}),Mr=z.object({ServerTimeUtc:u.nullish(),Premium:dl.nullish(),Subscription:Km.nullish(),Resources:b.nullish()}),yt={GetDefinitions:"GetDefinitions",GetUserState:"GetUserState",ActivateTrial:"ActivateTrial",PurchaseWithResources:"PurchaseWithResources",PurchaseRealMoney:"PurchaseRealMoney"};var wr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=A(this.ctx.settings.titleID,"Premium",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(yt.GetDefinitions,e,hl)}getUserState(e){return this.send(yt.GetUserState,e,ml)}activateTrial(e){return this.send(yt.ActivateTrial,e,Mr)}purchaseItemOrCurrency(e){return this.send(yt.PurchaseWithResources,e,Mr)}purchaseRealMoney(e){return this.send(yt.PurchaseRealMoney,e,Mr)}};var Ar=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=A(this.ctx.settings.titleID,"Character",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getCharacterDefinitions(e){return this.send(Oe.GetCharacterDefinitions,e,Hi)}getUserCharacters(e){return this.send(Oe.GetUserCharacters,e,To)}unlockCharacter(e){return this.send(Oe.UnlockCharacter,e,Ms)}upgradeStatLevel(e){return this.send(Oe.UpgradeStatLevel,e,Is)}upgradeCharacterLevel(e){return this.send(Oe.UpgradeCharacterLevel,e,ks)}equipItems(e){return this.send(Oe.EquipItems,e,Po)}unequipItems(e){return this.send(Oe.UnequipItems,e,Io)}unequipAllCharacters(e){return this.send(Oe.UnequipAllCharacters,e,ko)}unlockCharactersBatch(e){return this.send(Oe.UnlockCharactersBatch,e,Mo)}upgradeCharacterLevelsBatch(e){return this.send(Oe.UpgradeCharacterLevelsBatch,e,wo)}upgradeStatLevelsBatch(e){return this.send(Oe.UpgradeStatLevelsBatch,e,Ao)}};var Or=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=A(this.ctx.settings.titleID,"Match",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}createMatch(e){return this.send(tt.CreateMatch,e,ia)}updateMatch(e){return this.send(tt.UpdateMatch,e,ra)}cancelMatch(e){return this.send(tt.CancelMatch,e,sa)}instantBattle(e){return this.send(tt.InstantBattle,e,na)}saveStrategy(e){return this.send(tt.SaveStrategy,e,De)}getMyMatches(e){return this.send(tt.GetMyMatches,e,qs)}getAvailableMatches(e){return this.send(tt.GetAvailableMatches,e,qs)}getDefinitions(e){return this.send(tt.GetDefinitions,e,ua)}};var $m={TradeUpRarity:"TradeUpRarity",TradeUpCollection:"TradeUpCollection"},fl=z.enum(["TradeUpRarity","TradeUpCollection"]).catch("TradeUpRarity"),Zm=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:us.nullish()}),gl=z.object({ServerTimeUtc:u,Type:fl.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(Zm).nullish()}),Jm=z.object({CraftID:z.string().nullish(),Type:fl.nullish(),CatalogID:z.string().nullish(),CollectionID:z.string().nullish(),InputRarityID:z.string().nullish(),OutputRarityID:z.string().nullish(),RequiredItemCount:z.number().nullish(),PriceOptions:J.nullish()}).passthrough(),nn=z.object({Definitions:z.record(z.string(),Jm).nullish()}).passthrough(),Rl=z.object({ServerTimeUtc:u.nullish(),CraftDefinitions:nn.nullish()}),Ur={GetDefinitions:"GetDefinitions",Craft:"Craft"};var Br=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=A(this.ctx.settings.titleID,"Craft",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(Ur.GetDefinitions,e,Rl)}craft(e){return this.send(Ur.Craft,e,gl)}};var Ym={Pending:"Pending",Accepted:"Accepted",Declined:"Declined",Cancelled:"Cancelled",Expired:"Expired"},Xm=z.enum(["Pending","Accepted","Declined","Cancelled","Expired"]).catch("Pending"),yl=z.object({}).passthrough().transform(o=>o),Ot=z.object({CollectibleID:z.string(),Rarity:z.number().nullish(),IsSpecial:z.boolean().nullish(),IsDuplicate:z.boolean().nullish(),CollectionCurrencyConverted:z.number().nullish()}),Cl=z.object({GrantedCollectibles:z.array(Ot).nullish(),DuplicateCollectibles:z.array(Ot).nullish(),CollectionCurrencyEarned:M.nullish()}),Sl=z.object({OpenedCount:z.number().nullish(),Packs:z.array(Cl).nullish(),GrantedCollectibles:z.array(Ot).nullish(),DuplicateCollectibles:z.array(Ot).nullish(),CollectionCurrencyEarned:M.nullish(),NewCollectionCurrencyBalance:M.nullish(),NewlyCompletedSetIDs:z.array(z.string()).nullish(),CollectionJustCompleted:z.boolean().nullish(),Resources:b.nullish(),TriggeredPity:z.array(z.unknown()).nullish()}),xl=z.object({OpenedCount:z.number().nullish(),Chests:z.array(Cl).nullish(),GrantedCollectibles:z.array(Ot).nullish(),DuplicateCollectibles:z.array(Ot).nullish(),CollectionCurrencyEarned:M.nullish(),NewCollectionCurrencyBalance:M.nullish(),Resources:b.nullish(),TriggeredPity:z.array(z.unknown()).nullish()}),Dl=z.object({GrantedCollectibleID:z.string().nullish(),NewlyCompletedSetID:z.string().nullish(),CollectionJustCompleted:z.boolean().nullish(),Resources:b.nullish()}),on=z.object({SetID:z.string(),Resources:b.nullish()}),bl=z.array(re(on)),zl=z.object({Resources:b.nullish()}),ef=z.object({OfferID:z.string(),TitleID:z.string().nullish(),CollectionID:z.string().nullish(),SenderUserID:z.string().nullish(),SenderPublicData:ve.nullish(),OfferedCollectibleID:z.string().nullish(),OfferedCollectibleIsSpecial:z.boolean().nullish(),ReceiverUserID:z.string().nullish(),RequestedCollectibleID:z.string().nullish(),RequestedCollectibleIsSpecial:z.boolean().nullish(),Status:Xm.nullish(),CreatedAtUtc:u.nullish(),ExpiresAtUtc:u.nullish(),RespondedAtUtc:u.nullish(),DeclineReason:z.string().nullish(),IsSpecialTradeEvent:z.boolean().nullish(),SpecialTradeEventID:z.string().nullish()}).passthrough(),vl=z.object({OfferID:z.string(),ExpiresAtUtc:u.nullish(),Resources:b.nullish()}),Tl=z.object({OfferID:z.string(),Resources:b.nullish()}),Pl=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()}),Il=z.object({OfferID:z.string(),Resources:b.nullish()}),an=z.object({Offers:z.array(ef).nullish()}),tf=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(),rf=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(tf).nullish(),SetCompletionReward:L.nullish()}).passthrough(),sf=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(rf).nullish(),GrandPrize:L.nullish()}).passthrough(),kl=z.object({BonusRewardSlots:Y.nullish(),PityRules:Y.nullish()}).passthrough(),nf=z.object({PackTypeID:z.string().nullish(),PriceOptions:J.nullish(),BonusRewardSlots:z.array(wt).nullish(),PityRules:z.array(At).nullish(),Presets:kl.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(),of=z.object({Rarity:z.number().nullish(),CollectionCurrencyGranted:z.number().nullish()}).passthrough(),af=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(wt).nullish(),PityRules:z.array(At).nullish(),Presets:kl.nullish(),Tier:z.number().nullish()}).passthrough(),lf=z.object({SpecialTradeEventID:z.string().nullish(),StartUtc:u.nullish(),EndUtc:u.nullish(),AllowedSpecialCollectibleIDs:z.array(z.string()).nullish(),SpecialTradeEventDailyTradeLimit:z.number().nullish()}).passthrough(),Lr=z.object({Collections:z.record(z.string(),sf).nullish(),PackTypes:z.record(z.string(),nf).nullish(),CollectionChests:z.array(af).nullish(),DuplicateConversions:z.array(of).nullish(),DailyTradeLimit:z.number().nullish(),CollectibleJokerCatalogID:z.string().nullish(),CollectibleJokerItemID:z.string().nullish(),SpecialTradeEvents:z.array(lf).nullish(),RewardPools:hr.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 qr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=A(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,Lr)}getUserState(e){return this.send(Te.GetUserState,e,yl)}openPack(e){return this.send(Te.OpenPack,e,Sl)}openCollectionChest(e){return this.send(Te.OpenCollectionChest,e,xl)}useCollectibleJoker(e){return this.send(Te.UseCollectibleJoker,e,Dl)}claimSetReward(e){return this.send(Te.ClaimSetReward,e,on)}claimSetRewardsBatch(e){return this.send(Te.ClaimSetRewardsBatch,e,bl)}claimGrandPrize(e){return this.send(Te.ClaimGrandPrize,e,zl)}sendTradeOffer(e){return this.send(Te.SendTradeOffer,e,vl)}cancelTradeOffer(e){return this.send(Te.CancelTradeOffer,e,Tl)}acceptTradeOffer(e){return this.send(Te.AcceptTradeOffer,e,Pl)}declineTradeOffer(e){return this.send(Te.DeclineTradeOffer,e,Il)}getMyTradeOffers(e){return this.send(Te.GetMyTradeOffers,e,an)}getIncomingTradeOffers(e){return this.send(Te.GetIncomingTradeOffers,e,an)}};var uf=z.object({}).passthrough().transform(o=>o),cf={Forming:"Forming",Active:"Active",Completed:"Completed",Failed:"Failed",Expired:"Expired"},pf={Active:"Active",Left:"Left",Replaced:"Replaced"},df=z.object({ObjectIndex:z.number().nullish(),ObjectCompletionRewardClaimed:z.boolean().nullish()}).passthrough(),hf=z.object({UserID:z.string().nullish(),PublicData:ve.nullish(),BuildObjectsProgress:df.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(),mf=z.object({Index:z.number().nullish(),OwnerUserID:z.string().nullish(),CurrentProgress:z.number().nullish(),MaxProgress:z.number().nullish(),IsCompleted:z.boolean().nullish()}).passthrough(),ff=z.object({Objects:z.array(mf).nullish()}).passthrough(),Ml=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(hf).nullish(),BuildObjectsState:ff.nullish(),Status:z.string().nullish(),CreatedAtUtc:u.nullish(),ExpiresAtUtc:u.nullish(),Version:z.number().nullish()}).passthrough(),wl=z.object({CoopChainID:z.string()}).passthrough(),gf=z.string(),ln=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(),Rf=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(),yf=z.object({Objects:z.array(Rf).nullish(),PriceOptions:J.nullish(),SpinnerTable:z.array(ln).nullish(),MaxSpinsPerCall:z.number().nullish()}).passthrough(),Cf=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:gf.nullish(),PartnerCount:z.number().nullish(),MatchmakingTimeoutMinutes:z.number().nullish(),MemberGracePeriodMinutes:z.number().nullish(),BuildObjects:yf.nullish(),GrandPrize:L.nullish()}).passthrough(),Sf=z.object({CoopChainID:z.string().nullish(),DisplayName:z.string().nullish(),Schedule:de.nullish(),Events:z.array(Cf).nullish(),Gate:W.nullish()}).passthrough(),Al=z.object({ServerTimeUtc:u.nullish(),UserState:uf.nullish(),ActiveGroup:Ml.nullish()}),un=z.object({ServerTimeUtc:u.nullish(),Group:Ml.nullish(),SecondsRemaining:M.nullish()}),Ol=z.object({ServerTimeUtc:u.nullish(),GroupID:z.string().nullish(),Resources:b.nullish(),ObjectIndex:z.number().nullish(),Sector:ln.nullish(),RequestedSpins:z.number().nullish(),SpinsUsed:z.number().nullish(),Sectors:z.array(ln).nullish(),ProgressDelta:z.number().nullish(),NewProgress:M.nullish(),MaxProgress:M.nullish(),ObjectCompleted:z.boolean().nullish(),AllObjectsCompleted:z.boolean().nullish()}),cn=z.object({ServerTimeUtc:u.nullish(),GroupID:z.string().nullish(),RewardType:z.string().nullish(),Resources:b.nullish()}),Ul=z.object({ServerTimeUtc:u.nullish(),GroupID:z.string().nullish(),Success:z.boolean().nullish()}),Er=z.object({Chains:z.record(z.string(),Sf).nullish()}).passthrough(),He={GetDefinitions:"GetDefinitions",GetActiveEvent:"GetActiveEvent",GetUserState:"GetUserState",GetGroupState:"GetGroupState",JoinOrCreateGroup:"JoinOrCreateGroup",Spin:"Spin",ClaimObjectReward:"ClaimObjectReward",ClaimGrandPrize:"ClaimGrandPrize",LeaveGroup:"LeaveGroup"};var Gr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=A(this.ctx.settings.titleID,"CoopEvent",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(He.GetDefinitions,e,Er)}getActiveEvent(e){return this.send(He.GetActiveEvent,e,wl)}getUserState(e){return this.send(He.GetUserState,e,Al)}getGroupState(e){return this.send(He.GetGroupState,e,un)}joinOrCreateGroup(e){return this.send(He.JoinOrCreateGroup,e,un)}spin(e){return this.send(He.Spin,e,Ol)}claimObjectReward(e){return this.send(He.ClaimObjectReward,e,cn)}claimGrandPrize(e){return this.send(He.ClaimGrandPrize,e,cn)}leaveGroup(e){return this.send(He.LeaveGroup,e,Ul)}};var xf={Active:"Active",Exhausted:"Exhausted",Expired:"Expired",Dismissed:"Dismissed"},Df={Locked:"Locked",Available:"Available",InProgress:"InProgress",Completed:"Completed",Hidden:"Hidden"},bf=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(),zf=z.object({TrackID:z.string().nullish(),CurrentValue:z.number().nullish(),LastUpdatedUtc:u.nullish()}).passthrough(),Bl=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(),bf).nullish(),Tracks:z.record(z.string(),zf).nullish(),SelectedChoiceNodeID:z.string().nullish()}).passthrough(),vf=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:Bl.nullish(),NextCycleStartsAtUtc:u.nullish(),LastUpdatedUtc:u.nullish(),DismissSkipAvailableAtUtc:u.nullish(),LastDismissedAtUtc:u.nullish()}).passthrough(),Tf=z.object({TotalExecutions:z.number().nullish(),DailyExecutions:z.number().nullish(),DailyResetUtc:u.nullish()}).passthrough(),Pf=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(),Tf).nullish()}).passthrough(),If=z.object({Slots:z.record(z.string(),vf).nullish(),OfferHistory:z.record(z.string(),Pf).nullish(),LastUpdatedUtc:u.nullish()}).passthrough();var kf=z.object({Order:z.number().nullish(),OfferID:z.string().nullish(),DurationSec:z.number().nullish(),DelayBeforeActivationSec:z.number().nullish()}).passthrough(),Mf=z.object({SlotID:z.string().nullish(),Enabled:z.boolean().nullish(),SortOrder:z.number().nullish(),Queue:z.array(kf).nullish(),Schedule:de.nullish(),Gate:W.nullish(),AllowDismissSkip:z.boolean().nullish(),DismissSkipDelaySec:z.number().nullish()}).passthrough(),wf=z.object({StoreOfferID:z.string().nullish(),BillingProductID:z.string().nullish(),PriceOptions:J.nullish(),UseExternalRewards:z.boolean().nullish()}).passthrough(),Af=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(),Of=z.object({Purchase:wf.nullish(),RewardedVideo:Af.nullish()}).passthrough(),Uf=z.object({TrackID:z.string().nullish(),Operator:z.string().nullish(),Value:z.number().nullish()}).passthrough(),Bf=z.object({Milestones:Y.nullish()}).passthrough(),Lf=z.object({TrackID:z.string().nullish(),Amount:z.number().nullish(),RespectBounds:z.boolean().nullish()}).passthrough(),qf=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(),Ef=z.object({RequiredCompletedNodeIDs:z.array(z.string()).nullish(),RequiredAnyCompletedNodeIDs:z.array(z.string()).nullish(),RequiredTracks:z.array(Uf).nullish(),VisibleWhileLocked:z.boolean().nullish()}).passthrough(),Gf=z.object({NodeID:z.string().nullish(),SortOrder:z.number().nullish(),Type:z.string().nullish(),Action:Of.nullish(),Grants:L.nullish(),TrackChanges:z.array(Lf).nullish(),MilestonePoints:z.number().nullish(),UnlockRules:Ef.nullish(),NextNodeIDs:z.array(z.string()).nullish(),ChoiceGroupID:z.string().nullish(),Limits:ue.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(),Ll=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(Gf).nullish(),Tracks:z.array(qf).nullish(),Milestones:z.record(z.string(),ze).nullish(),Presets:Bf.nullish(),MilestoneClaimMode:z.string().nullish(),MilestoneToken:gt.nullish(),ExhaustedWhenAllTerminalNodesCompleted:z.boolean().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Metadata:z.record(z.string(),z.string()).nullish()}).passthrough(),Nf=z.object({Milestones:z.record(z.string(),ut).nullish()}).passthrough(),pn=z.object({Slots:z.record(z.string(),Mf).nullish(),Offers:z.record(z.string(),Ll).nullish(),Presets:Nf.nullish()}).passthrough(),ql=z.object({DealOfferDefinitions:pn.nullish()}),El=z.object({DealOffers:If.nullish()}),jf=z.object({EntityID:z.string().nullish(),TotalEarned:z.number().nullish(),ClaimedIDs:z.array(z.string()).nullish(),ReachedUnclaimedIDs:z.array(z.string()).nullish()}).passthrough(),Ff=z.object({SlotID:z.string().nullish(),SortOrder:z.number().nullish(),QueueIndex:z.number().nullish(),CycleIndex:z.number().nullish(),OfferDef:Ll.nullish(),ActivationState:Bl.nullish(),IsNewActivation:z.boolean().nullish(),ComputedExpiresAtUtc:u.nullish(),Cost:Nt.nullish(),Milestone:jf.nullish()}).passthrough(),Gl=z.object({Slots:z.array(Ff).nullish()}),Nl=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()}),jl=z.object({ServerTimeUtc:u.nullish(),SlotID:z.string().nullish(),Resources:b.nullish()}),Fl=z.object({ServerTimeUtc:u.nullish(),SlotID:z.string().nullish(),Resources:b.nullish()}),Vl=z.object({ServerTimeUtc:u.nullish(),SlotID:z.string().nullish(),MilestoneID:z.string().nullish(),Resources:b.nullish()}),_l=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()}),it={GetDefinition:"GetDefinition",GetUserState:"GetUserState",GetActiveDeals:"GetActiveDeals",DismissDeal:"DismissDeal",ExecuteNode:"ExecuteNode",RecordShow:"RecordShow",ClaimMilestone:"ClaimMilestone",ClaimMilestonesBatch:"ClaimMilestonesBatch"};var Nr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=A(this.ctx.settings.titleID,"DealOffer",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getDefinition(e){return this.send(it.GetDefinition,e,ql)}getUserState(e){return this.send(it.GetUserState,e,El)}getActiveDeals(e){return this.send(it.GetActiveDeals,e,Gl)}dismissDeal(e){return this.send(it.DismissDeal,e,jl)}executeNode(e){return this.send(it.ExecuteNode,e,Nl)}recordShow(e){return this.send(it.RecordShow,e,Fl)}claimMilestone(e){return this.send(it.ClaimMilestone,e,Vl)}claimMilestonesBatch(e){return this.send(it.ClaimMilestonesBatch,e,_l)}};var Vf=z.object({}).passthrough().transform(o=>o),_f=z.object({FeatureKey:z.string().nullish(),IsEnabled:z.boolean().nullish(),Rate:z.number().nullish(),Basis:z.string().nullish(),SourceCurrencyID:z.string().nullish(),TargetCurrencyID:z.string().nullish(),MinSourceAmount:z.number().nullish(),MaxRewardPerOperation:z.number().nullish(),Limits:ue.nullish()}).passthrough(),dn=z.object({IsEnabled:z.boolean().nullish(),ActivationReward:L.nullish(),InviteRewards:z.record(z.string(),ze).nullish(),SpendRewards:z.array(_f).nullish()}).passthrough(),Wl=z.object({ReferralDefinitions:dn.nullish()}).passthrough(),Ql=z.object({Referral:Vf.nullish(),InviteUrl:z.string().nullish()}).passthrough(),Kl=z.object({ReferralCode:z.string().nullish(),ReferrerUserID:z.string().nullish(),IsFirstActivation:z.boolean().nullish(),Resources:b.nullish()}).passthrough(),hn=z.object({RewardID:z.string().nullish(),Resources:b.nullish()}).passthrough(),Hl=Xe(hn),Ct={GetDefinitions:"GetDefinitions",GetUserState:"GetUserState",ActivateReferralCode:"ActivateReferralCode",ClaimInviteReward:"ClaimInviteReward",ClaimInviteRewardsBatch:"ClaimInviteRewardsBatch"};var jr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=A(this.ctx.settings.titleID,"Referral",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(Ct.GetDefinitions,e,Wl)}getUserState(e){return this.send(Ct.GetUserState,e,Ql)}activateReferralCode(e){return this.send(Ct.ActivateReferralCode,e,Kl)}claimInviteReward(e){return this.send(Ct.ClaimInviteReward,e,hn)}claimInviteRewardsBatch(e){return this.send(Ct.ClaimInviteRewardsBatch,e,Hl)}};var Wf={RequestSent:"RequestSent",Accepted:"Accepted",Declined:"Declined",Removed:"Removed"},Qf={Attack:"Attack",Raid:"Raid",FriendAdd:"FriendAdd"},$l=z.object({UserID:z.string(),PublicData:ve.nullish()}),Kf=z.object({OwnerUserID:z.string().nullish(),ActorUserID:z.string().nullish(),ActorProfile:ve.nullish(),Type:z.string().nullish(),CreatedAt:u.nullish(),OwnerImpact:b.nullish(),IsBlocked:z.boolean().nullish(),TargetObjectName:z.string().nullish()}).passthrough(),_t=z.object({Friends:z.array($l).nullish()}),Hf=z.object({FriendsCount:z.number().nullish(),IncomingRequestsCount:z.number().nullish(),OutgoingRequestsCount:z.number().nullish()}),Wt=z.object({TargetUserID:z.string().nullish(),Status:z.string().nullish(),Target:$l.nullish(),Counters:Hf.nullish()}),Zl=z.object({Events:z.array(Kf).nullish()}),$e={GetFriendsList:"GetFriendsList",GetIncomingRequests:"GetIncomingRequests",GetOutgoingRequests:"GetOutgoingRequests",GetRecommendedFriends:"GetRecommendedFriends",SendFriendRequest:"SendFriendRequest",AcceptFriendRequest:"AcceptFriendRequest",DeclineFriendRequest:"DeclineFriendRequest",RemoveFriend:"RemoveFriend",GetTimeline:"GetTimeline"};var Fr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=A(this.ctx.settings.titleID,"Social",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getFriendsList(e){return this.send($e.GetFriendsList,e,_t)}getIncomingRequests(e){return this.send($e.GetIncomingRequests,e,_t)}getOutgoingRequests(e){return this.send($e.GetOutgoingRequests,e,_t)}getRecommendedFriends(e){return this.send($e.GetRecommendedFriends,e,_t)}sendFriendRequest(e){return this.send($e.SendFriendRequest,e,Wt)}acceptFriendRequest(e){return this.send($e.AcceptFriendRequest,e,Wt)}declineFriendRequest(e){return this.send($e.DeclineFriendRequest,e,Wt)}removeFriend(e){return this.send($e.RemoveFriend,e,Wt)}getTimeline(e){return this.send($e.GetTimeline,e,Zl)}};var $f={Replace:"Replace",Refresh:"Refresh",KeepBest:"KeepBest",Stack:"Stack"};var Ut=z.object({Target:z.string().nullish(),Operation:z.string().nullish(),Value:z.number().nullish()}).passthrough(),Zf=z.object({BoostID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),PriceOptions:J.nullish(),Effect:Ut.nullish(),DurationSeconds:z.number().nullish(),Charges:z.number().nullish(),StackingPolicy:z.string().nullish(),MaxActiveInstances:z.number().nullish(),Tags:z.array(z.string()).nullish()}).passthrough(),Jf=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:de.nullish(),Effects:z.array(Ut).nullish(),Gate:W.nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),Yf=z.object({ChainedBoostID:z.string().nullish(),Order:z.number().nullish(),DurationSec:z.number().nullish(),Effects:z.array(Ut).nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),Xf=z.object({ChainID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),Schedule:de.nullish(),Phases:z.array(Yf).nullish(),Gate:W.nullish(),CustomParams:z.record(z.string(),z.string()).nullish()}).passthrough(),eg=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(Le).nullish(),Effects:z.array(Ut).nullish(),DurationSeconds:z.number().nullish(),Charges:z.number().nullish(),StackingPolicy:z.string().nullish(),MaxActiveInstances:z.number().nullish(),Gate:W.nullish()}).passthrough(),tg=z.object({MaxAddPercent:z.number().nullish(),MaxMultiply:z.number().nullish(),MaxAddFlat:z.number().nullish()}).passthrough(),ig=z.object({StackingCaps:z.record(z.string(),tg).nullish()}).passthrough(),Vr=z.object({Definitions:z.record(z.string(),Zf).nullish(),ScheduledBoosts:z.record(z.string(),Jf).nullish(),BoostChains:z.record(z.string(),Xf).nullish(),TriggeredBoosts:z.record(z.string(),eg).nullish(),Settings:ig.nullish()}).passthrough(),Jl=z.object({InstanceID:z.string(),BoostID:z.string(),ActivatedAtUtc:u.nullish(),ExpiresAtUtc:u.nullish(),RemainingCharges:z.number().nullish(),EffectSnapshot:Ut.nullish(),SourceType:z.string().nullish(),SourceRef:z.string().nullish()}).passthrough();z.object({Date:u.nullish(),DailyCount:z.number().nullish(),LastFiredUtc:u.nullish()}).passthrough();var Yl=z.object({ServerTimeUtc:u.nullish(),Active:z.record(z.string(),Jl).nullish()}),Xl=z.object({ServerTimeUtc:u.nullish(),BoostID:z.string().nullish(),StackingPolicy:z.string().nullish(),ActivatedBoost:Jl.nullish(),Resources:b.nullish()}),rg={Scheduled:"Scheduled",Chain:"Chain"},sg=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(Ut).nullish(),DisplayName:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish()}).passthrough(),eu=z.object({ServerTimeUtc:u.nullish(),Windows:z.array(sg).nullish()}),St={GetDefinitions:"GetDefinitions",GetActive:"GetActive",GetActiveWindows:"GetActiveWindows",Activate:"Activate",CleanupExpired:"CleanupExpired"};var _r=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=A(this.ctx.settings.titleID,"TimedBoost",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(St.GetDefinitions,e,Vr)}getActive(e){return this.send(St.GetActive,e,Yl)}getActiveWindows(e){return this.send(St.GetActiveWindows,e,eu)}activate(e){return this.send(St.Activate,e,Xl)}cleanupExpired(e){return this.send(St.CleanupExpired,e,De)}};var Wr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=A(this.ctx.settings.titleID,"UserCustomData",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getUserCustomDataDefinitions(e){return this.send(Ke.GetUserCustomDataDefinitions,e,Ni)}getMyUserCustomData(e){return this.send(Ke.GetMyUserCustomData,e,ho)}getPublicUserCustomDataOf(e){return this.send(Ke.GetPublicUserCustomDataOf,e,bs)}setPrivateData(e){return this.send(Ke.SetPrivateData,e,zs)}setPublicData(e){return this.send(Ke.SetPublicData,e,zs)}deleteKey(e){return this.send(Ke.DeleteKey,e,De)}batchSet(e){return this.send(Ke.BatchSet,e,mo)}batchDelete(e){return this.send(Ke.BatchDelete,e,fo)}batchGetPublicUserCustomDataOf(e){return this.send(Ke.BatchGetPublicUserCustomDataOf,e,go)}};var ng={Static:"Static",Runtime:"Runtime"},og={Public:"Public",Private:"Private"},ag=z.enum(["Client","Server","System"]).catch("Client"),lg=z.enum(["String","Int","Bool","Json"]).catch("String"),ug=z.object({Value:z.string().nullish(),UpdatedAt:u.nullish(),Version:z.number().nullish(),LastWriter:ag.nullish(),ExpiresAt:u.nullish()}).passthrough(),tu=z.record(z.string(),ug),mn=z.object({StaticVersion:z.number().nullish(),RuntimeVersion:z.number().nullish(),Static:tu.nullish(),Runtime:tu.nullish(),NotModified:z.boolean().nullish()}),cg=z.object({KeyID:z.string(),Scope:z.enum(["Static","Runtime"]).catch("Static").nullish(),Bucket:z.enum(["Public","Private"]).catch("Public").nullish(),ValueType:lg.nullish(),MaxValueLengthBytes:z.number().nullish(),TtlSeconds:z.number().nullish(),DefaultValue:z.string().nullish(),Description:z.string().nullish()}).passthrough(),Qr=z.object({Keys:z.record(z.string(),cg).nullish(),DefaultMaxValueLengthBytes:z.number().nullish(),DefaultTtlSeconds:z.number().nullish(),MaxKeysPerBucket:z.number().nullish(),MaxTotalSizeBytes:z.number().nullish(),RejectUnregisteredKeys:z.boolean().nullish()}).passthrough(),Qt={GetTitleCustomDataDefinitions:"GetTitleCustomDataDefinitions",GetPublicTitleData:"GetPublicTitleData",GetPublicTitleDataKeys:"GetPublicTitleDataKeys"};var Kr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=A(this.ctx.settings.titleID,"TitleCustomData",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getTitleCustomDataDefinitions(e){return this.send(Qt.GetTitleCustomDataDefinitions,e,Qr)}getPublicTitleData(e){return this.send(Qt.GetPublicTitleData,e,mn)}getPublicTitleDataKeys(e){return this.send(Qt.GetPublicTitleDataKeys,e,mn)}};var pg={Fast:"Fast",Sequential:"Sequential"},dg={Instant:"Instant",Timed:"Timed"};var hg={Hit:"Hit",Blocked:"Blocked"},mg=z.object({SlotIndex:z.number(),Level:z.number().nullish(),IsDamaged:z.boolean().nullish(),MaxLevelRewardClaimed:z.boolean().nullish()}).passthrough(),fg=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();var gg=z.object({RequiredValue:z.number().nullish(),Reward:L.nullish()}).passthrough(),Rg=z.object({Reward:L.nullish(),MetricPerReward:z.number().nullish(),MaxRewardUnits:z.number().nullish()}).passthrough();z.object({MetricID:z.string().nullish(),MaxValuePerClaim:z.number().nullish(),TierMode:z.string().nullish(),ApplyClaimMultiplier:z.boolean().nullish(),Tiers:z.array(gg).nullish(),Rate:Rg.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 iu=z.object({}).passthrough().transform(o=>o),ru=z.object({Min:z.number().nullish(),Max:z.number().nullish()}).passthrough(),Pe=z.object({Operation:b.nullish(),ScaleWithRollMultiplier:z.boolean().nullish()}).passthrough(),yg=z.object({Count:z.number().nullish(),Sides:z.number().nullish()}).passthrough(),Cg=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(),Sg=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:ge.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(),xg=z.object({CostMatrix:z.array(z.array(z.number())).nullish(),PerBoardGrowth:z.number().nullish(),EconomyScale:z.number().nullish(),ScaledResources:ge.nullish()}).passthrough(),su=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(),Dg=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(),bg=z.object({Tiles:z.record(z.string(),Dg).nullish()}).passthrough(),zg=z.object({Weight:z.number().nullish(),Bonus:Pe.nullish(),Tag:z.string().nullish()}).passthrough(),vg=z.object({Weight:z.number().nullish(),Tag:z.string().nullish(),MinBonusCells:z.number().nullish(),MaxBonusCells:z.number().nullish(),BonusPool:z.array(zg).nullish(),GuaranteedBonus:Pe.nullish(),IsJackpot:z.boolean().nullish(),JackpotFinalMultiplier:z.number().nullish(),JackpotSymbolDistribution:z.record(z.string(),z.number()).nullish()}).passthrough(),Tg=z.object({Variants:z.array(vg).nullish()}).passthrough(),Pg=z.object({Weight:z.number().nullish(),OutcomeID:z.string().nullish(),Reward:Pe.nullish(),ForceAction:z.string().nullish(),SpecialModeID:z.string().nullish()}).passthrough(),Ig=z.object({Outcomes:z.array(Pg).nullish()}).passthrough(),nu=z.object({PerAdMultiplierRange:ru.nullish(),MaxAdViews:z.number().nullish(),AdCreditCost:z.number().nullish(),FormulaKind:z.string().nullish(),ApplyMultiplierOnEarlyClaim:z.boolean().nullish()}).passthrough(),kg=z.object({ElapsedSeconds:z.number().nullish(),Reward:Pe.nullish()}).passthrough(),Mg=z.object({Tiers:z.array(kg).nullish(),TierMode:z.string().nullish(),BelowFirstTierReward:Pe.nullish()}).passthrough(),wg=z.object({RequiredValue:z.number().nullish(),Reward:Pe.nullish()}).passthrough(),Ag=z.object({Reward:Pe.nullish(),MetricPerReward:z.number().nullish(),MaxRewardUnits:z.number().nullish()}).passthrough(),Og=z.object({MetricID:z.string().nullish(),MaxValuePerClaim:z.number().nullish(),TierMode:z.string().nullish(),ApplyClaimMultiplier:z.boolean().nullish(),Tiers:z.array(wg).nullish(),Rate:Ag.nullish()}).passthrough(),ou=z.object({MetricsByID:z.record(z.string(),Og).nullish()}).passthrough(),Ug=z.object({ChoiceID:z.string().nullish(),Mode:z.string().nullish(),Reward:Pe.nullish(),DurationSeconds:z.number().nullish(),PriceOptions:J.nullish(),Multipliers:nu.nullish(),Gradation:Mg.nullish(),RunStats:ou.nullish()}).passthrough(),Bg=z.object({Choices:z.array(Ug).nullish(),OfferExpireSeconds:z.number().nullish(),ClaimExpireSeconds:z.number().nullish()}).passthrough(),Lg=z.object({Chance:z.number().nullish(),RequiredOutcome:z.string().nullish(),Reward:Pe.nullish(),Tag:z.string().nullish()}).passthrough(),qg=z.object({OnPassStart:Pe.nullish(),OnTileLanding:z.record(z.string(),Pe).nullish(),OnAttack:z.record(z.string(),Pe).nullish(),OnRaid:z.record(z.string(),Pe).nullish(),OnBuild:Pe.nullish(),OnStageComplete:Pe.nullish(),OnAttackBonusDrops:z.array(Lg).nullish(),ChanceTablesByID:z.record(z.string(),Ig).nullish(),SpecialModesByID:z.record(z.string(),Bg).nullish()}).passthrough(),au=z.object({BaseAttackReward:L.nullish(),BaseRaidReward:L.nullish(),MaxRollMultiplier:z.number().nullish(),MaxShields:z.number().nullish(),Buildings:z.array(su).nullish(),HeistGridBonusConfig:Tg.nullish(),StageOperations:qg.nullish(),TileLandingMultiplier:ru.nullish(),EconomyOverride:xg.nullish()}).passthrough(),Eg=z.object({Name:z.string().nullish(),AssetPaths:z.record(z.string(),z.string()).nullish(),BoardTemplateID:z.string().nullish(),Buildings:z.array(su).nullish(),StageTemplateID:z.string().nullish(),CostMatrixTemplateID:z.string().nullish(),UnitValue:z.number().nullish(),Override:au.nullish()}).passthrough(),Hr=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(),bg).nullish(),StageTemplatesByID:z.record(z.string(),au).nullish(),StagesByLevel:z.record(z.string(),Eg).nullish(),SoftCurrencyID:z.string().nullish(),ProceduralEconomy:Sg.nullish(),Dice:yg.nullish(),Bots:Cg.nullish()}).passthrough(),Gg=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(),ze).nullish(),GrandPrize:L.nullish()}).passthrough(),$r=z.object({Board:Hr.nullish(),CommunityChest:Gg.nullish()}).passthrough(),Ng=z.object({TargetUserID:z.string().nullish(),IsBot:z.boolean().nullish(),PublicData:ve.nullish(),TargetBuildingStates:z.array(mg).nullish(),TargetHasShield:z.boolean().nullish()}).passthrough(),jg=z.object({ChoiceID:z.string().nullish(),Mode:z.string().nullish(),Reward:Pe.nullish(),DurationSeconds:z.number().nullish(),PriceOptions:J.nullish(),Multipliers:nu.nullish(),RunStats:ou.nullish()}).passthrough(),Fg=z.object({ModeID:z.string().nullish(),Choices:z.array(jg).nullish()}).passthrough(),Vg=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(),lu=z.object({UsedMultiplier:z.number().nullish(),Steps:z.number().nullish(),DiceValues:z.array(z.number()).nullish(),OldPosition:z.number().nullish(),NewPosition:z.number(),CyclesCompletedDelta:M.nullish(),LandedTileType:z.string().nullish(),Operation:b.nullish(),ActionRequired:z.string().nullish(),ActionData:Ng.nullish(),SpecialModeOffer:Fg.nullish(),CommunityChestContribution:Vg.nullish()}).passthrough(),uu=z.object({Outcome:z.string().nullish(),IsBotTarget:z.boolean().nullish(),BuildingIndexHit:z.number().nullish(),Operation:b.nullish(),DualResult:ft.nullish()}).passthrough(),fn=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(fg).nullish(),HeistVariantTag:z.string().nullish(),IsJackpot:z.boolean().nullish(),Operation:b.nullish(),DualResult:ft.nullish()}).passthrough(),cu=z.object({BuiltIndex:z.number(),NewLevel:z.number().nullish(),StageComplete:z.boolean().nullish(),MaxLevelRewardClaimed:z.boolean().nullish(),Operation:b.nullish()}).passthrough(),pu=z.object({Mode:z.union([z.string(),z.number()]).nullish(),Operation:b.nullish(),DurationSeconds:z.number().nullish(),StartedAtUtc:u.nullish(),ExpiresAtUtc:u.nullish()}).passthrough(),du=z.object({AdViewsUsed:z.number().nullish(),RolledMultiplier:z.number().nullish(),AccumulatedMultiplier:z.number().nullish(),RemainingAdViews:z.number().nullish()}).passthrough(),_g=z.object({MetricID:z.string().nullish(),ReachedTierIndex:z.number().nullish(),RequiredValue:z.number().nullish(),RewardUnits:z.number().nullish()}).passthrough(),hu=z.object({FinalMultiplier:z.number().nullish(),AdViewsUsed:z.number().nullish(),AccumulatedMultiplier:z.number().nullish(),IsEarlyClaim:z.boolean().nullish(),ReachedTierIndex:z.number().nullish(),Operation:b.nullish(),AcceptedRunStats:z.record(z.string(),z.number()).nullish(),RunStatAwards:z.array(_g).nullish(),RunStatsClamped:z.boolean().nullish(),RunStatGrant:L.nullish()}).passthrough(),Wg={Forming:"Forming",Active:"Active",Completed:"Completed",Failed:"Failed",Expired:"Expired"},mu=z.enum(["Forming","Active","Completed","Failed","Expired"]).catch("Forming"),Qg={Active:"Active",Left:"Left",Replaced:"Replaced"},Kg=z.enum(["Active","Left","Replaced"]).catch("Active"),Hg=z.object({CurrentProgress:M.nullish(),MaxProgress:M.nullish()}).passthrough(),$g=z.object({UserID:z.string().nullish(),PublicData:ve.nullish(),IsBot:z.boolean().nullish(),ContributionPoints:M.nullish(),ClaimedMilestoneIDs:z.array(z.string()).nullish(),GrandPrizeClaimed:z.boolean().nullish(),MemberStatus:Kg.nullish(),JoinedAtUtc:u.nullish(),LeftAtUtc:u.nullish()}).passthrough(),fu=z.object({GroupID:z.string().nullish(),TitleID:z.string().nullish(),RoundIndex:z.number().nullish(),Members:z.array($g).nullish(),SharedProgress:Hg.nullish(),Status:mu.nullish(),CreatedAtUtc:u.nullish(),ExpiresAtUtc:u.nullish(),Version:z.number().nullish()}).passthrough(),Zg=z.object({GroupID:z.string().nullish(),RoundIndex:z.number().nullish(),FinalStatus:mu.nullish(),GrandPrizeReceived:z.boolean().nullish(),FinishedAtUtc:u.nullish()}).passthrough(),Jg=z.object({ActiveGroupID:z.string().nullish(),ActiveRoundIndex:z.number().nullish(),History:z.array(Zg).nullish()}).passthrough(),gu=z.object({ServerTimeUtc:u.nullish(),UserState:Jg.nullish(),ActiveGroup:fu.nullish(),SecondsRemaining:M.nullish()}),Ru=z.object({ServerTimeUtc:u.nullish(),Group:fu.nullish(),SecondsRemaining:M.nullish()}),gn=z.object({ServerTimeUtc:u.nullish(),GroupID:z.string().nullish(),RewardType:z.string().nullish(),MilestoneID:z.string().nullish(),Resources:b.nullish()}),yu=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(),Xg=z.object({ExperimentID:z.string().nullish(),DisplayName:z.string().nullish(),Description:z.string().nullish(),IsEnabled:z.boolean().nullish(),Schedule:de.nullish(),Gate:W.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(),Cu=z.object({Experiments:z.record(z.string(),Xg).nullish()}).passthrough();var eR={Mesh:"Mesh",Host:"Host"},Rn=z.enum(["Mesh","Host"]).catch("Mesh"),tR={ServerRelay:"ServerRelay",P2P:"P2P"},yn=z.enum(["ServerRelay","P2P"]).catch("ServerRelay"),iR={Public:"Public",Private:"Private"},rR=z.enum(["Public","Private"]).catch("Public"),sR={Signal:"Signal",Chat:"Chat",PlayerJoined:"PlayerJoined",PlayerLeft:"PlayerLeft",HostChanged:"HostChanged",RoomClosed:"RoomClosed",MemberState:"MemberState"},nR=z.enum(["Signal","Chat","PlayerJoined","PlayerLeft","HostChanged","RoomClosed","MemberState"]).catch("Signal"),Su=z.object({Urls:z.string().nullish(),Username:z.string().nullish(),Credential:z.string().nullish()}).passthrough(),oR=z.object({Enabled:z.boolean().nullish()}).passthrough(),xu=z.object({SystemState:oR.nullish(),DefaultTopology:Rn.nullish(),AllowCreatorTopologyOverride:z.boolean().nullish(),DefaultChatMode:yn.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(),aR=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(),lR=z.object({RoomID:z.string().nullish(),Name:z.string().nullish(),HostUserID:z.string().nullish(),Topology:Rn.nullish(),ChatMode:yn.nullish(),MaxPlayers:z.number().nullish(),MemberCount:z.number().nullish(),CreatedAt:z.number().nullish()}).passthrough(),uR=z.object({Seq:z.number().nullish(),Type:nR.nullish(),FromUserID:z.string().nullish(),ToUserID:z.string().nullish(),Kind:z.string().nullish(),Payload:z.string().nullish(),Ts:z.number().nullish()}).passthrough(),Zr=z.object({RoomID:z.string().nullish(),Name:z.string().nullish(),HostUserID:z.string().nullish(),OwnerUserID:z.string().nullish(),Topology:Rn.nullish(),ChatMode:yn.nullish(),Visibility:rR.nullish(),Status:z.string().nullish(),MaxPlayers:z.number().nullish(),Members:z.array(aR).nullish(),IceServers:z.array(Su).nullish(),Seq:z.number().nullish()}).passthrough(),Cn=z.object({Closed:z.boolean().nullish(),NewHostUserID:z.string().nullish()}).passthrough(),Du=z.object({Rooms:z.array(lR).nullish(),Page:z.number().nullish(),PageSize:z.number().nullish(),HasMore:z.boolean().nullish()}).passthrough(),bu=z.object({Envelopes:z.array(uR).nullish(),MaxSeq:z.number().nullish()}).passthrough(),Jr=z.object({Seq:z.number().nullish()}).passthrough(),Ve={CreateRoom:"CreateRoom",JoinRoom:"JoinRoom",LeaveRoom:"LeaveRoom",ListRooms:"ListRooms",GetRoom:"GetRoom",CloseRoom:"CloseRoom",Poll:"Poll",SendSignal:"SendSignal",SendChat:"SendChat",SetMemberState:"SetMemberState"};var Sn=z.object({TitleCustomData:Qr.nullish(),Character:Hi.nullish(),Item:lr.nullish(),Currency:Ki.nullish(),Store:cr.nullish(),Lootbox:$s.nullish(),Quest:ti.nullish(),TimedEvent:Sr.nullish(),Leaderboard:Tr.nullish(),Season:Ir.nullish(),Reward:Zs.nullish(),Collection:Lr.nullish(),Craft:nn.nullish(),DealOffer:pn.nullish(),Premium:sn.nullish(),TimedBoost:Vr.nullish(),CoopEvent:Er.nullish(),GameLoop:$r.nullish(),Match:Gs.nullish(),Experiment:Cu.nullish(),Blockchain:As.nullish(),Marketplace:Vs.nullish(),Multiplayer:xu.nullish(),UserCustomData:Ni.nullish(),Referral:dn.nullish(),Localization:xa.nullish()}).passthrough();var xt={GetTitlePublicConfiguration:"GetTitlePublicConfiguration",GetTitlePublicConfigurationExcept:"GetTitlePublicConfigurationExcept",GetCurrencyDefinitions:"GetCurrencyDefinitions",GetItemDefinitions:"GetItemDefinitions",GetServerTime:"GetServerTime"};var Yr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=A(this.ctx.settings.titleID,"Title",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getTitlePublicConfiguration(e){return this.send(xt.GetTitlePublicConfiguration,e,Sn)}getTitlePublicConfigurationExcept(e){return this.send(xt.GetTitlePublicConfigurationExcept,e,Sn)}getCurrencyDefinitions(e){return this.send(xt.GetCurrencyDefinitions,e,Ki)}getItemDefinitions(e){return this.send(xt.GetItemDefinitions,e,lr)}getServerTime(e){return this.send(xt.GetServerTime,e,De)}};var Xr=class{constructor(e){this.ctx=e;}ctx;send(e,t,i,r=false){let s=A(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,$r)}getBoardDefinition(e,t=false){return this.send(Se.GetBoardDefinition,e,Hr,t)}getBoardDefinitionForLevel(e,t=false){return this.send(Se.GetBoardDefinitionForLevel,e,Hr,t)}getUserBoardState(e){return this.send(Se.GetUserBoardState,e,iu)}boardLoopRoll(e){return this.send(Se.BoardLoopRoll,e,lu)}boardLoopAttack(e){return this.send(Se.BoardLoopAttack,e,uu)}boardLoopRaid(e){return this.send(Se.BoardLoopRaid,e,fn)}boardLoopRaidFast(e){return this.send(Se.BoardLoopRaidFast,e,fn)}boardLoopBuild(e){return this.send(Se.BoardLoopBuild,e,cu)}boardSpecialChoose(e){return this.send(Se.BoardSpecialChoose,e,pu)}boardSpecialApplyMultiplier(e){return this.send(Se.BoardSpecialApplyMultiplier,e,du)}boardSpecialClaim(e){return this.send(Se.BoardSpecialClaim,e,hu)}getCommunityChestState(e){return this.send(Se.GetCommunityChestState,e,gu)}joinOrCreateCommunityChest(e){return this.send(Se.JoinOrCreateCommunityChest,e,Ru)}claimCommunityChestMilestone(e){return this.send(Se.ClaimCommunityChestMilestone,e,gn)}claimCommunityChestGrandPrize(e){return this.send(Se.ClaimCommunityChestGrandPrize,e,gn)}leaveCommunityChest(e){return this.send(Se.LeaveCommunityChest,e,yu)}};var Kt=z.lazy(()=>z.union([z.string(),z.number(),z.boolean(),z.null(),z.array(Kt),z.record(z.string(),Kt)]));var pR={Live:"Live",Latest:"Latest",Specific:"Specific"},dR={Debug:"Debug",Info:"Info",Warning:"Warning",Error:"Error"},hR=z.enum(["Debug","Info","Warning","Error"]).catch("Debug"),mR={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"},fR=z.enum(["None","Disabled","NoActiveRevision","RevisionNotFound","InvalidFieldName","RateLimited","HandlerNotFound","HandlerDisabled","Timeout","StatementCountExceeded","StackOverflow","ApiCallLimitExceeded","JavaScriptException","ExecutionError"]).catch("None"),gR=z.object({Level:hR,Message:z.string().nullish(),Data:Kt.nullish()}),RR=z.object({Error:fR,Message:z.string().nullish(),StackTrace:z.string().nullish()}),zu=z.object({FunctionName:z.string().nullish(),Revision:z.number().nullish(),FunctionResult:Kt.nullish(),FunctionResultTooLarge:z.boolean().nullish(),Logs:z.array(gR).nullish(),LogsTooLarge:z.boolean().nullish(),ExecutionTimeSeconds:z.number().nullish(),APIRequestsIssued:z.number().nullish(),Error:RR.nullish()}),xn={Execute:"Execute"};var es=class{constructor(e){this.ctx=e;}ctx;execute(e){let t=A(this.ctx.settings.titleID,"CloudCode",xn.Execute,e.UserID??"");return this.ctx.transport.post(t,e,zu,{ticket:e.ClientSessionTicket})}};var ts=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=A(this.ctx.settings.titleID,"Blockchain",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}getDefinitions(e){return this.send(Ue.GetDefinitions,e,Vo)}getUserState(e){return this.send(Ue.GetUserState,e,_o)}depositToken(e){return this.send(Ue.DepositToken,e,Wo)}depositNFT(e){return this.send(Ue.DepositNFT,e,Qo)}requestTokenWithdrawal(e){return this.send(Ue.RequestTokenWithdrawal,e,Ko)}requestNFTWithdrawal(e){return this.send(Ue.RequestNFTWithdrawal,e,Ho)}getTransactionHistory(e){return this.send(Ue.GetTransactionHistory,e,$o)}retryWithdrawal(e){return this.send(Ue.RetryWithdrawal,e,Zo)}confirmWithdrawal(e){return this.send(Ue.ConfirmWithdrawal,e,Jo)}donateToDeveloper(e){return this.send(Ue.DonateToDeveloper,e,Bs)}donateToUsersPool(e){return this.send(Ue.DonateToUsersPool,e,Bs)}};var is=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=A(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,pa)}getGroupedOffers(e){return this.send(ae.GetGroupedOffers,e,da)}getOffersByItem(e){return this.send(ae.GetOffersByItem,e,_s)}getOffer(e){return this.send(ae.GetOffer,e,ha)}getBuyOrders(e){return this.send(ae.GetBuyOrders,e,_s)}getMyState(e){return this.send(ae.GetMyState,e,fa)}getHistory(e){return this.send(ae.GetHistory,e,ga)}createListing(e){return this.send(ae.CreateListing,e,Ft)}cancelListing(e){return this.send(ae.CancelListing,e,Ge)}buy(e){return this.send(ae.Buy,e,Ge)}marketBuy(e){return this.send(ae.MarketBuy,e,Ge)}marketSell(e){return this.send(ae.MarketSell,e,Ge)}createAuction(e){return this.send(ae.CreateAuction,e,Ft)}placeBid(e){return this.send(ae.PlaceBid,e,ma)}claimAuction(e){return this.send(ae.ClaimAuction,e,Ge)}createBuyOrder(e){return this.send(ae.CreateBuyOrder,e,Ft)}cancelBuyOrder(e){return this.send(ae.CancelBuyOrder,e,Ge)}fillBuyOrder(e){return this.send(ae.FillBuyOrder,e,Ge)}createDirectTrade(e){return this.send(ae.CreateDirectTrade,e,Ft)}respondDirectTrade(e){return this.send(ae.RespondDirectTrade,e,Ge)}cancelDirectTrade(e){return this.send(ae.CancelDirectTrade,e,Ge)}claimBack(e){return this.send(ae.ClaimBack,e,Ge)}};var rs=class{constructor(e){this.ctx=e;}ctx;send(e,t,i){let r=A(this.ctx.settings.titleID,"Multiplayer",e,t.UserID??"");return this.ctx.transport.post(r,t,i,{ticket:t.ClientSessionTicket})}createRoom(e){return this.send(Ve.CreateRoom,e,Zr)}joinRoom(e){return this.send(Ve.JoinRoom,e,Zr)}leaveRoom(e){return this.send(Ve.LeaveRoom,e,Cn)}listRooms(e){return this.send(Ve.ListRooms,e,Du)}getRoom(e){return this.send(Ve.GetRoom,e,Zr)}closeRoom(e){return this.send(Ve.CloseRoom,e,Cn)}poll(e){return this.send(Ve.Poll,e,bu)}sendSignal(e){return this.send(Ve.SendSignal,e,Jr)}sendChat(e){return this.send(Ve.SendChat,e,Jr)}setMemberState(e){return this.send(Ve.SetMemberState,e,Jr)}};var ss=class{settings;emitter;platform;acquisition;playtime;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=Tn(e$1),this.emitter=new Lt,this.platform=e$1.platform??new e,this.clientPlatform=e$1.clientPlatform??Bn(),this.acquisition=new mt(this.platform),this.acquisition.capture(),this.playtime=new qt(this),this.emitter.on("auth:loggedIn",()=>{this.playtime.start(),this.acquisition.clear();}),this.emitter.on("auth:loggedOut",()=>{this.playtime.stop();}),this.fetchImpl=e$1.fetch??globalThis.fetch.bind(globalThis),this.transport=new si({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 li(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 ui(this.platform.storage,this.settings.titleID),this.api={authentication:new rr(this),user:new nr(this),currency:new or(this),item:new ur(this),store:new pr(this),purchase:new dr(this),lootbox:new fr(this),reward:new gr(this),quest:new Cr(this),tutorial:new Rr(this),localization:new yr(this),timedEvent:new xr(this),leaderboard:new Pr(this),season:new kr(this),premium:new wr(this),character:new Ar(this),match:new Or(this),craft:new Br(this),collection:new qr(this),coopEvent:new Gr(this),dealOffer:new Nr(this),referral:new jr(this),social:new Fr(this),timedBoost:new _r(this),userCustomData:new Wr(this),titleCustomData:new Kr(this),title:new Yr(this),gameLoop:new Xr(this),cloudCode:new es(this),blockchain:new ts(this),marketplace:new is(this),multiplayer:new rs(this)},this.userService=new hi(this),this.auth=new ci(this),this.currency=new fi(this),this.item=new gi(this),this.store=new Ri(this),this.purchase=new yi(this),this.checkout=new Ci(this),this.lootbox=new Si(this),this.reward=new xi(this),this.quest=new vi(this),this.tutorial=new Di(this),this.localization=new zi(this),this.timedEvent=new Ti(this),this.leaderboard=new Pi(this),this.season=new Ii(this),this.premium=new ki(this),this.character=new Mi(this),this.match=new wi(this),this.craft=new Ai(this),this.collection=new Oi(this),this.coopEvent=new Ui(this),this.dealOffer=new Bi(this),this.referral=new Li(this),this.social=new qi(this),this.timedBoost=new Ei(this),this.userCustomData=new ji(this),this.titleCustomData=new Fi(this),this.title=new Vi(this),this.gameLoop=new _i(this),this.cloudCode=new Wi(this),this.blockchain=new Ji(this),this.marketplace=new tr(this),this.multiplayer=new ir(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 ns=class{ctx;constructor(e){this.ctx=new ss(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 yR(o){return new ns(o)}var vu="idos_sso",Tu="state",Dn="idos:sso:state",CR="https://idosgames.com/sso/";function SR(){if(typeof window>"u")return null;let o=window.location.hash?.startsWith("#")?window.location.hash.slice(1):window.location.hash;if(!o)return null;let e=new URLSearchParams(o),t=e.get(vu);if(!t)return null;let i=e.get(Tu)??"",r=vR();return PR(e),TR(),r&&i!==r?null:{code:t,state:i}}function xR(o){if(typeof window>"u")return;let e=o.returnTo??DR(),t=bR();zR(t);let i=new URL(o.ssoUrl??CR);i.searchParams.set("title",o.titleID),i.searchParams.set("return_to",e),i.searchParams.set("state",t),window.location.assign(i.toString());}function DR(){let{origin:o,pathname:e,search:t}=window.location;return `${o}${e}${t}`}function bR(){let o=new Uint8Array(16);if(typeof crypto<"u"&&crypto.getRandomValues)crypto.getRandomValues(o);else for(let e=0;e<o.length;e++)o[e]=Math.floor(Math.random()*256);return Array.from(o,e=>e.toString(16).padStart(2,"0")).join("")}function zR(o){try{window.sessionStorage.setItem(Dn,o);}catch{}}function vR(){try{return window.sessionStorage.getItem(Dn)}catch{return null}}function TR(){try{window.sessionStorage.removeItem(Dn);}catch{}}function PR(o){o.delete(vu),o.delete(Tu);let e=o.toString(),{pathname:t,search:i}=window.location;window.history.replaceState(null,"",`${t}${i}${e?`#${e}`:""}`);}function IR(o,e){return !!o?.Claims?.[e]?.ClaimedAt}function kR(o){let e=o?.Claims;return e?Object.keys(e).filter(t=>!!e[t]?.ClaimedAt):[]}function MR(o,e){return o?.Claims?.[e]?.PremiumTiers??[]}function Iu(o,e,t,i=1){if(!o)return e;let r=o.Base??e,s=Math.max(0,t-i),a;switch(o.Shape??"Flat"){case "PerStep":a=r+(o.PerStep??0)*s;break;case "PerStepRate":a=r*(1+(o.PerStepRate??0)*s);break;case "Geometric":a=r*Math.pow(1+(o.GrowthRate??0),s);break;case "Table":a=r*Pu(o,t,1);break;case "TableAbsolute":a=Pu(o,t,r);break;default:a=r;break}return Number.isNaN(a)?r:(o.MinResult!=null&&a<o.MinResult&&(a=o.MinResult),o.MaxResult!=null&&a>o.MaxResult&&(a=o.MaxResult),a)}function wR(o,e,t=1){return Iu(o,1,e,t)}function AR(o){if(!o)return false;switch(o.Shape??"Flat"){case "PerStep":return (o.PerStep??0)!==0;case "PerStepRate":return (o.PerStepRate??0)!==0;case "Geometric":return (o.GrowthRate??0)!==0;case "Table":case "TableAbsolute":return ku(o.Points).length>0;default:return o.MinResult!=null||o.MaxResult!=null}}function OR(o){if(Number.isNaN(o)||o<=0)return 0;if(!Number.isFinite(o))return Number.MAX_SAFE_INTEGER;let e=Math.round(o);return Math.abs(o-e)<=1e-9*Math.max(1,Math.abs(o))?e:Math.ceil(o)}function ku(o){if(!o)return [];let e=[];for(let t of o)t?.AtStep==null||t.Value==null||e.push({AtStep:t.AtStep,Value:t.Value});return e}function Pu(o,e,t){let i=ku(o.Points);if(i.length===0)return t;let r=null,s=null,a=null;for(let p of i)(a===null||p.AtStep>a.AtStep)&&(a=p),p.AtStep<=e&&(r===null||p.AtStep>=r.AtStep)&&(r=p),p.AtStep>e&&(s===null||p.AtStep<s.AtStep)&&(s=p);if(r===null)return t;if(s===null){let p=o.TailGrowthRate??0;return p===0?a.Value:a.Value*Math.pow(1+p,e-a.AtStep)}switch(o.Interpolation??"Step"){case "Linear":{let p=(e-r.AtStep)/(s.AtStep-r.AtStep);return r.Value+p*(s.Value-r.Value)}case "Geometric":{if(r.Value<=0||s.Value<=0){let x=(e-r.AtStep)/(s.AtStep-r.AtStep);return r.Value+x*(s.Value-r.Value)}let p=(e-r.AtStep)/(s.AtStep-r.AtStep);return r.Value*Math.pow(s.Value/r.Value,p)}default:return r.Value}}var UR={Banner:"Banner",Interstitial:"Interstitial",RewardedVideo:"RewardedVideo",RewardedInterstitial:"RewardedInterstitial",AppOpen:"AppOpen",Native:"Native"},bn=z.enum(["Banner","Interstitial","RewardedVideo","RewardedInterstitial","AppOpen","Native"]).catch("Banner"),BR={Top:"Top",Bottom:"Bottom",Left:"Left",Right:"Right"},LR=z.enum(["Top","Bottom","Left","Right"]).catch("Top"),qR=z.object({PlacementID:z.string().nullish(),Type:bn.nullish(),Enabled:z.boolean().nullish(),CooldownSeconds:z.number().nullish(),DailyImpressionCap:z.number().nullish(),CreditsRewarded:z.number().nullish(),AllowedProviderIDs:z.array(z.string()).nullish()}).passthrough(),ER=z.object({DefaultCreditsPerView:z.number().nullish(),MaxCreditsBalance:z.number().nullish(),DailyCreditEarnCap:z.number().nullish(),DailyViewCap:z.number().nullish(),MinSecondsBetweenViews:z.number().nullish()}).passthrough(),GR=z.object({CooldownSeconds:z.number().nullish(),MinSessionTimeBeforeFirstSeconds:z.number().nullish(),DailyImpressionCap:z.number().nullish(),MaxImpressionsPerSession:z.number().nullish()}).passthrough(),NR=z.object({Enabled:z.boolean().nullish(),Position:LR.nullish(),RefreshIntervalSeconds:z.number().nullish()}).passthrough(),jR=z.object({Enabled:z.boolean().nullish(),CooldownSeconds:z.number().nullish(),DailyImpressionCap:z.number().nullish()}).passthrough(),FR=z.object({MaxImpressionsPerHour:z.number().nullish(),MaxImpressionsPerDay:z.number().nullish(),MaxImpressionsPerSession:z.number().nullish()}).passthrough(),VR=z.object({MinPremiumTier:z.number().nullish(),RequiredPremiumID:z.string().nullish(),DisableInterstitials:z.boolean().nullish(),DisableBanners:z.boolean().nullish(),DisableAppOpen:z.boolean().nullish()}).passthrough(),_R=z.object({RequirePersonalizedAdsConsent:z.boolean().nullish(),RequireTrackingConsent:z.boolean().nullish(),CurrentPolicyVersion:z.string().nullish(),RegulatedRegions:z.array(z.string()).nullish()}).passthrough(),WR=z.object({RequireServerSideVerification:z.boolean().nullish(),PendingRequestTtlSeconds:z.number().nullish(),MaxPendingRequestsPerUser:z.number().nullish(),ProviderPublicKeys:z.record(z.string(),z.string()).nullish()}).passthrough(),QR=z.object({AndroidUnitID:z.string().nullish(),IosUnitID:z.string().nullish(),WebUnitID:z.string().nullish(),Type:bn.nullish()}).passthrough(),KR={AppLovinMax:"AppLovinMax",LevelPlay:"LevelPlay"},HR=z.enum(["AppLovinMax","LevelPlay"]).catch("AppLovinMax"),$R=z.object({ProviderID:z.string().nullish(),Kind:HR.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(),QR).nullish()}).passthrough();z.object({Enabled:z.boolean().nullish(),Placements:z.record(z.string(),qR).nullish(),Providers:z.record(z.string(),$R).nullish(),RewardedVideo:ER.nullish(),Interstitial:GR.nullish(),Banner:NR.nullish(),AppOpen:jR.nullish(),FrequencyCapping:FR.nullish(),PremiumAdReductions:z.array(VR).nullish(),Consent:_R.nullish(),Verification:WR.nullish()}).passthrough();var ZR=z.object({RewardedVideoCredit:z.number().nullish(),TotalEarned:z.number().nullish(),TotalSpent:z.number().nullish()}).passthrough(),JR=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(),YR=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(),XR=z.object({SessionID:z.string().nullish(),SessionStartAt:u.nullish(),Impressions:z.number().nullish(),InterstitialImpressions:z.number().nullish(),RewardedCompletions:z.number().nullish()}).passthrough(),ey=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(),ty=z.object({RequestID:z.string().nullish(),PlacementID:z.string().nullish(),ProviderID:z.string().nullish(),Type:bn.nullish(),IssuedAt:u.nullish(),ExpiresAt:u.nullish(),CreditsToAward:z.number().nullish()}).passthrough(),iy=z.object({InvalidSsvCount:z.number().nullish(),OrphanCompletions:z.number().nullish(),FastCompletions:z.number().nullish(),LastFlaggedAt:u.nullish()}).passthrough();z.object({Credits:ZR.nullish(),Placements:z.record(z.string(),JR).nullish(),Daily:YR.nullish(),Session:XR.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:ey.nullish(),PendingRequests:z.record(z.string(),ty).nullish(),FraudFlags:iy.nullish(),UpdatedAt:u.nullish()}).passthrough();var ry={Unread:"Unread",Read:"Read",Deleted:"Deleted",Expired:"Expired"},sy=z.enum(["Unread","Read","Deleted","Expired"]).catch("Unread"),ny={Admin:"Admin",Leaderboard:"Leaderboard",CoopEvent:"CoopEvent",Season:"Season",Collection:"Collection",MilestoneEvent:"MilestoneEvent",PlayerGift:"PlayerGift",Social:"Social",Compensation:"Compensation",Referral:"Referral",Quest:"Quest"},oy=z.enum(["Admin","Leaderboard","CoopEvent","Season","Collection","MilestoneEvent","PlayerGift","Social","Compensation","Referral","Quest"]).catch("Admin"),ay={Active:"Active",Paused:"Paused",Cancelled:"Cancelled",Completed:"Completed"},ly=z.enum(["Active","Paused","Cancelled","Completed"]).catch("Active"),uy=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(),cy=z.object({SegmentID:z.string().nullish(),DisplayName:z.string().nullish(),Gate:W.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(),uy).nullish(),Segments:z.array(cy).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:oy.nullish(),RelatedEntityID:z.string().nullish(),SenderUserID:z.string().nullish(),SenderPublicData:ve.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:sy.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:ly.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{mt as AcquisitionCapture,KR as AdProviderKind,UR as AdType,hg as AttackOutcome,Re as AuthType,we as AuthenticationAction,BR as BannerPosition,Ue as BlockchainAction,ud as BlockchainNetworkType,Eo as BlockchainOperationCategory,yd as BlockchainTransactionStatus,hd as BlockchainTransactionType,Fd as BodyPart,rg as BoostWindowKind,ay as BroadcastStatus,Oe as CharacterAction,Ye as ClientPlatform,xn as CloudCodeAction,mR as CloudCodeErrorCode,dR as CloudCodeLogLevel,pR as CloudCodeRevisionSelection,Te as CollectionAction,lh as CommissionSink,Qg as CommunityChestMemberStatus,Wg as CommunityChestStatus,Gp as ConversionRateMode,He as CoopEventAction,cf as CoopGroupStatus,pf as CoopMemberStatus,Ur as CraftAction,$m as CraftType,Qi as CurrencyAction,Ep as CurrencyStatus,_e as CurrencyType,sc as CurveInterpolation,ic as CurveShape,st as CustomDataBucket,Ip as CustomDataValueType,zp as CustomDataWriter,vn as DEFAULT_BASE_URL,Df as DealNodeRuntimeStatus,it as DealOfferAction,xf as DealOfferActivationStatus,sR as EnvelopeType,Vu as EventTokenType,Oh as FodderSelectionMode,wh as FodderValuationMode,Wf as FriendActionStatus,Se as GameLoopAction,ns as IDosGamesClient,$h as IapProductType,em as IapPurchaseStatus,Fu as IapStoreValues,ar as ItemAction,md as KycStatus,gd as KycTier,be as LeaderboardAction,sr as LocalizationAction,Th as LocalizationMissingKeyMode,mr as LootboxAction,ny as MailboxMessageSource,ry as MailboxMessageStatus,er as MarketGoodsType,ah as MarketOfferStatus,oh as MarketOfferType,ae as MarketplaceAction,tt as MatchAction,Vd as MatchStatus,Ve as MultiplayerAction,tR as MultiplayerChatMode,eR as MultiplayerTopology,qt as PlaytimeTracker,yt as PremiumAction,Mt as PurchaseAction,Qe as QuestAction,mc as QuestObjectiveSource,gc as QuestPrerequisiteMode,pc as QuestStatus,pg as RaidMode,Ct as ReferralAction,Ht as ResourceEntryType,ot as RewardAction,iR as RoomVisibility,_u as ScheduleMode,ht as SeasonAction,$e as SocialAction,dg as SpecialChoiceMode,kt as StoreAction,Qm as StoreType,St as TimedBoostAction,$f as TimedBoostStackingPolicy,Fe as TimedEventAction,Qf as TimelineEventType,xt as TitleAction,Qt as TitleCustomDataAction,og as TitleDataBucket,ng as TitleDataScope,Ym as TradeOfferStatus,Cd as TransactionDirection,qe as TutorialAction,wc as TutorialBoardAction,Ic as TutorialFlowStatus,Zu as TutorialGateMode,Tc as TutorialRestartPolicy,Mc as TutorialScriptModule,zc as TutorialStepCompletionMode,Lt as TypedEmitter,je as UserAction,Ke as UserCustomDataAction,pd as WalletLinkType,xR as beginSsoRedirect,kR as claimedMilestoneIDs,yR as createIDosGamesClient,wR as curveMultiplier,Iu as evaluateCurve,MR as grantedPremiumTiers,AR as isCurveConfigured,Qu as isFail,IR as isMilestoneClaimed,Wu as isOk,$i as normalizeBlockchainCategory,SR as readSsoCodeFromUrl,OR as roundAmount,$p as zPaymentProof,zo as zPriceOption,J as zPriceOptions};
|