@idosgames/core 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -45,9 +45,39 @@ declare const ResourceEntryType: {
45
45
  readonly Item: "Item";
46
46
  readonly VirtualCurrency: "VirtualCurrency";
47
47
  readonly CryptoCurrency: "CryptoCurrency";
48
- readonly UsdCent: "UsdCent";
48
+ /** Rewarded-video credit: one verified ad view, spendable in ad-gated actions. */
49
+ readonly RewardedVideoCredit: "RewardedVideoCredit";
50
+ /**
51
+ * Real-money payment in a store. Only `ProductID` is populated — the amount and currency come
52
+ * from the SKU price tier, not from us. Never a stored resource: the money is paid outside,
53
+ * and the server settles the receipt before the resource operation runs.
54
+ */
55
+ readonly Purchase: "Purchase";
49
56
  };
50
57
  type ResourceEntryType = (typeof ResourceEntryType)[keyof typeof ResourceEntryType];
58
+ /**
59
+ * Platform the client runs on. Sent with every request (header `X-IG-Platform`) because the set
60
+ * of available payment options depends on it: an App Store build must not offer payment outside
61
+ * IAP. `Unknown` is a value of its own, not a synonym for `Web` — a client that does not report
62
+ * its platform only gets options that are safe everywhere.
63
+ */
64
+ declare const ClientPlatform: {
65
+ readonly Unknown: "Unknown";
66
+ readonly Web: "Web";
67
+ readonly Android: "Android";
68
+ readonly Ios: "Ios";
69
+ };
70
+ type ClientPlatform = (typeof ClientPlatform)[keyof typeof ClientPlatform];
71
+ /** Store that issued a receipt. Must match a key in the title's `Purchase.Stores`. */
72
+ declare const IapStore$1: {
73
+ readonly GooglePlay: "GooglePlay";
74
+ readonly AppleAppStore: "AppleAppStore";
75
+ };
76
+ type IapStore$1 = (typeof IapStore$1)[keyof typeof IapStore$1];
77
+ declare const zIapStore: z.ZodEnum<{
78
+ GooglePlay: "GooglePlay";
79
+ AppleAppStore: "AppleAppStore";
80
+ }>;
51
81
  declare const EventTokenType: {
52
82
  readonly TimedEvent: "TimedEvent";
53
83
  readonly Quest: "Quest";
@@ -190,11 +220,32 @@ interface EventTokenMetaData {
190
220
  JoinedAtUtc?: string;
191
221
  LastEarnedAtUtc?: string;
192
222
  }
193
- /** Claimed/unlocked milestone ids for a per-cycle token (points-track / leaderboard / quest). */
223
+ /**
224
+ * Milestone state of a per-cycle token (points-track / leaderboard / quest): MilestoneID -> what
225
+ * already happened for that milestone.
226
+ *
227
+ * One container instead of parallel claimed/unlocked/granted-tier lists — mirrors the server
228
+ * (`EventTokenMilestoneData.Claims`). The base part is claimed once, while premium tiers arrive as
229
+ * the player buys or upgrades a pass, so both live in the same entry.
230
+ */
194
231
  interface EventTokenMilestoneData {
195
- ClaimedIDs?: string[];
196
- UnlockedIDs?: string[];
232
+ Claims?: Record<string, MilestoneClaimEntry>;
197
233
  }
234
+ /** What happened for a single milestone. */
235
+ interface MilestoneClaimEntry {
236
+ /** When the base part was claimed. Absent = not claimed. */
237
+ ClaimedAt?: string | null;
238
+ /** Keys of granted premium tier bundles (`{RequiredPremiumID|*}#{MinPremiumTier}`). */
239
+ PremiumTiers?: string[];
240
+ /** Threshold reached but the claim is still gated by the claim mode. */
241
+ Unlocked?: boolean;
242
+ }
243
+ /** Is the base part of the milestone claimed. */
244
+ declare function isMilestoneClaimed(milestone: EventTokenMilestoneData | null | undefined, milestoneID: string): boolean;
245
+ /** IDs of milestones whose base part is claimed. */
246
+ declare function claimedMilestoneIDs(milestone: EventTokenMilestoneData | null | undefined): string[];
247
+ /** Keys of premium tiers already granted for the milestone. */
248
+ declare function grantedPremiumTiers(milestone: EventTokenMilestoneData | null | undefined, milestoneID: string): string[];
198
249
  interface UserEventTokenProgress {
199
250
  Balance?: EventTokenBalanceData;
200
251
  Daily?: EventTokenDailyData;
@@ -208,6 +259,9 @@ interface UserEventTokensState {
208
259
  CoopEvent?: Record<string, UserEventTokenProgress>;
209
260
  Season?: Record<string, UserEventTokenProgress>;
210
261
  }
262
+ type PriceOption = { OptionID?: null | string; Name?: null | string; Cost?: null | ResourceConsume; AllowedPlatforms?: null | Array<'Unknown' | 'Web' | 'Android' | 'Ios'>; AssetPaths?: null | Record<string, string>; [key: string]: unknown; };
263
+ type PriceOptions = Record<string, PriceOption>;
264
+ type PaymentProof = { Store: 'GooglePlay' | 'AppleAppStore'; Receipt: string; Signature?: null | string; [key: string]: unknown; };
211
265
 
212
266
  interface StorePurchaseState {
213
267
  OfferID: string;
@@ -222,7 +276,7 @@ interface UserStoreState {
222
276
  type StorePurchaseResponse = { ServerTimeUtc: string; OfferID: string; Count: number; Resources?: null | ResourceOperation; };
223
277
  type PurchaseBatchResponse = Array<{ Id: string; Success: boolean; Error?: null | string; Data?: null | StorePurchaseResponse; }>;
224
278
  type StoreDefinition = { StoreID: string; Type?: null | string; Name?: null | string; Description?: null | string; Rules?: null | { StartUtc?: null | string; EndUtc?: null | string; RequiredFlags?: null | Array<string>; [key: string]: unknown; }; AssetPaths?: null | Record<string, string>; [key: string]: unknown; };
225
- type StoreOfferDefinition = { OfferID: string; StoreIDs?: null | Array<string>; Name?: null | string; Cost?: null | ResourceConsume; Rewards?: null | ResourceGrant; Rules?: null | { StartUtc?: null | string; EndUtc?: null | string; Gate?: null | SegmentGate; Limits?: null | LimitSpec; [key: string]: unknown; }; AssetPaths?: null | Record<string, string>; [key: string]: unknown; };
279
+ type StoreOfferDefinition = { OfferID: string; StoreIDs?: null | Array<string>; Name?: null | string; PriceOptions?: null | PriceOptions; Rewards?: null | ResourceGrant; Rules?: null | { StartUtc?: null | string; EndUtc?: null | string; Gate?: null | SegmentGate; Limits?: null | LimitSpec; [key: string]: unknown; }; AssetPaths?: null | Record<string, string>; [key: string]: unknown; };
226
280
  /** The title's shop system (config), returned by getStoreDefinitions(). */
227
281
  interface StoreDefinitions {
228
282
  Stores?: Record<string, StoreDefinition> | null;
@@ -232,10 +286,19 @@ interface StoreDefinitions {
232
286
  interface StorePurchaseRef {
233
287
  OfferID?: string;
234
288
  Count?: number;
289
+ /** Chosen payment option. Empty = first one available on this platform. */
290
+ SelectedOptionID?: string;
235
291
  }
236
292
  interface StoreRequest extends BaseRequest {
237
293
  OfferID?: string;
238
294
  Count?: number;
295
+ /** Chosen payment option (`PriceOption.OptionID`). Empty = first one available here. */
296
+ SelectedOptionID?: string;
297
+ /**
298
+ * Store receipt. Required exactly when the chosen option is paid with real money
299
+ * (a `Purchase` entry in its cost); ignored for resource prices.
300
+ */
301
+ Payment?: PaymentProof;
239
302
  /** PurchaseBatch: per-offer purchase counts (deduped by OfferID). */
240
303
  Purchases?: StorePurchaseRef[];
241
304
  }
@@ -269,7 +332,7 @@ type PresetBinding = { PresetID?: null | string; Remove?: null | Array<string>;
269
332
  type SeasonTierRewardBundle = { SeasonChainID?: null | string; MinSeasonTier?: null | number; Rewards?: null | ResourceGrant; [key: string]: unknown; };
270
333
  type SeasonTierRewardMultiplier = { SeasonChainID?: null | string; MinSeasonTier?: null | number; Multiplier?: null | number; [key: string]: unknown; };
271
334
  type SeasonTierRewardSet = { Bundles?: null | Array<SeasonTierRewardBundle>; Multipliers?: null | Array<SeasonTierRewardMultiplier>; [key: string]: unknown; };
272
- type RewardProgressionMultiplierSpec = { Source?: null | 'BoardStageLevel' | 'BoardRank' | 'BoardCyclesCompleted' | 'CharacterLevel' | 'SeasonTier' | 'EventTokenTotalEarned' | 'VirtualCurrencyBalance' | 'PlayerLevel'; SourceKey?: null | string; CurveType?: null | 'Tiered' | 'Linear'; Tiers?: null | Array<{ AtProgress?: null | number; Multiplier?: null | number; [key: string]: unknown; }>; TierMode?: null | 'Linear' | 'Step'; BaseMultiplier?: null | number; PerUnit?: null | number; Anchor?: null | number; MinMultiplier?: null | number; MaxMultiplier?: null | number; IncludeRewards?: null | ResourceBundle; ExcludeRewards?: null | ResourceBundle; [key: string]: unknown; };
335
+ type RewardProgressionMultiplierSpec = { Source?: null | 'BoardStageLevel' | 'BoardRank' | 'BoardCyclesCompleted' | 'CharacterLevel' | 'SeasonTier' | 'EventTokenTotalEarned' | 'VirtualCurrencyBalance' | 'PlayerLevel'; SourceKey?: null | string; Curve?: null | ScalarCurveSpec; Anchor?: null | number; IncludeRewards?: null | ResourceBundle; ExcludeRewards?: null | ResourceBundle; [key: string]: unknown; };
273
336
  type MilestoneDefinition = { MilestoneID?: null | string; DisplayName?: null | string; AssetPaths?: null | Record<string, string>; RequiredProgress?: null | number; Rewards?: null | ResourceGrant; BonusRewards?: null | ResourceGrant; SeasonTierRewards?: null | SeasonTierRewardSet; SortOrder?: null | number; IsFeatured?: null | boolean; [key: string]: unknown; };
274
337
  /**
275
338
  * Thin wrapper for a reusable milestone set (port of Core/Milestone/Models/MilestoneSet.cs,
@@ -292,7 +355,8 @@ interface UserLootboxState {
292
355
  Pity?: Record<string, UserLootboxPityCounter>;
293
356
  }
294
357
  type LootboxPityTriggerResponse = { RuleID: string; BoxIndex?: null | number; };
295
- type LootboxOpenResponse = { ServerTimeUtc: string; LootboxID: string; OpenedCount?: null | number; SelectedOptionID?: null | number; Resources?: null | ResourceOperation; Inventory?: null | InventoryDelta; Results?: null | Array<ResourceOperation>; TriggeredPity?: null | Array<LootboxPityTriggerResponse>; };
358
+ type LootboxOpenResponse = { ServerTimeUtc: string; LootboxID: string; OpenedCount?: null | number; SelectedOptionID?: null | string; Resources?: null | ResourceOperation; Inventory?: null | InventoryDelta; Results?: null | Array<ResourceOperation>; TriggeredPity?: null | Array<LootboxPityTriggerResponse>; };
359
+ /** One opening price option: an idempotent option ID and its consume-only cost. */
296
360
  /**
297
361
  * Container of preset wiring for a lootbox — one PresetBinding per block. Inline data
298
362
  * (RewardSlots/PityRules) lives on LootboxDefinition. null = presets unused.
@@ -302,7 +366,7 @@ interface LootboxPresetBindings {
302
366
  PityRules?: PresetBinding | null;
303
367
  }
304
368
  type LootboxSupplyRule = { CatalogID?: null | string; ItemID?: null | string; MaxDrops?: null | number; [key: string]: unknown; };
305
- type LootboxDefinition = { LootboxID: string; AssetPaths?: null | Record<string, string>; PriceOptions?: null | Record<string, { PriceOptionID?: null | number; RequiredResources?: null | ResourceConsume; [key: string]: unknown; }>; RewardSlots?: null | Array<LootboxRewardSlot>; PityRules?: null | Array<LootboxPityRule>; Presets?: null | LootboxPresetBindings; RewardMultiplier?: null | RewardProgressionMultiplierSpec; SupplyLimits?: null | Array<LootboxSupplyRule>; MaxOpenCount?: null | number; [key: string]: unknown; };
369
+ type LootboxDefinition = { LootboxID: string; AssetPaths?: null | Record<string, string>; PriceOptions?: null | PriceOptions; RewardSlots?: null | Array<LootboxRewardSlot>; PityRules?: null | Array<LootboxPityRule>; Presets?: null | LootboxPresetBindings; RewardMultiplier?: null | RewardProgressionMultiplierSpec; SupplyLimits?: null | Array<LootboxSupplyRule>; MaxOpenCount?: null | number; [key: string]: unknown; };
306
370
  /** The title's lootbox catalog (config), returned by getDefinitions(). */
307
371
  /** Module-wide Lootbox settings shared by every lootbox of the title. */
308
372
  interface LootboxGlobalSettings {
@@ -322,7 +386,10 @@ type LootboxDefinitionsResponse = { LootboxDefinitions?: null | LootboxDefinitio
322
386
  interface LootboxRequest extends BaseRequest {
323
387
  LootboxID?: string;
324
388
  Count?: number;
325
- SelectedOptionID?: number;
389
+ /** Chosen payment option. Empty = first one available on this platform. */
390
+ SelectedOptionID?: string;
391
+ /** Store receipt — required when the chosen option is paid with real money. */
392
+ Payment?: PaymentProof;
326
393
  }
327
394
  declare const LootboxAction: {
328
395
  readonly GetDefinitions: "GetDefinitions";
@@ -412,7 +479,7 @@ declare const TutorialGateMode: {
412
479
  };
413
480
  type TutorialGateMode = (typeof TutorialGateMode)[keyof typeof TutorialGateMode];
414
481
  type TutorialGateCondition = { FlowIDs?: null | Array<string>; Mode?: null | 'Completed' | 'Started' | 'StepReached'; StepID?: null | string; Negate?: null | boolean; SkippedCountsAsCompleted?: null | boolean; [key: string]: unknown; };
415
- type SegmentGate = { Segments?: null | Array<string>; MinPremiumTier?: null | number; RequiredPremiumIDs?: null | Array<string>; MinLevel?: null | number; MaxLevel?: null | number; Countries?: null | Array<string>; RegisteredWithinDays?: null | number; ActiveWithinDays?: null | number; Experiment?: null | ExperimentVariantCondition; Tutorial?: null | TutorialGateCondition; [key: string]: unknown; };
482
+ type SegmentGate = { Segments?: null | Array<string>; MinPremiumTier?: null | number; RequiredPremiumIDs?: null | Array<string>; MinLevel?: null | number; MaxLevel?: null | number; Countries?: null | Array<string>; RegisteredWithinDays?: null | number; ActiveWithinDays?: null | number; Experiment?: null | ExperimentVariantCondition; Tutorial?: null | TutorialGateCondition; Platforms?: null | Array<'Unknown' | 'Web' | 'Android' | 'Ios'>; [key: string]: unknown; };
416
483
  type RelativeWindow = { OffsetSecondsFromParentStart?: null | number; DurationSeconds?: null | number; AllowEarningAfterEnd?: null | boolean; ClaimGraceHours?: null | number; [key: string]: unknown; };
417
484
  type ScheduledWindow = { StartUtc?: null | string; EndUtc?: null | string; AllowEarningAfterEnd?: null | boolean; ClaimGraceHours?: null | number; [key: string]: unknown; };
418
485
  type ScheduleChain = { AnchorUtc?: null | string; MaxCycles?: null | number; PauseBetweenPhasesSec?: null | number; PauseBetweenCyclesSec?: null | number; [key: string]: unknown; };
@@ -658,7 +725,7 @@ declare const TutorialAction: {
658
725
  readonly ResetFlow: "ResetFlow";
659
726
  };
660
727
  type TutorialAction = (typeof TutorialAction)[keyof typeof TutorialAction];
661
- type ResourceEntry = { Type?: null | 'Item' | 'VirtualCurrency' | 'CryptoCurrency' | 'UsdCent'; CurrencyID?: null | string; Amount?: null | number; CatalogID?: null | string; ItemID?: null | string; };
728
+ type ResourceEntry = { Type?: null | 'Item' | 'VirtualCurrency' | 'CryptoCurrency' | 'RewardedVideoCredit' | 'Purchase'; CurrencyID?: null | string; Amount?: null | number; CatalogID?: null | string; ItemID?: null | string; ProductID?: null | string; };
662
729
  type EventTokenAddress = { EntityID: string; Type?: null | 'TimedEvent' | 'Quest' | 'Leaderboard' | 'CoopEvent' | 'Season'; };
663
730
  type EventTokenOperation = { Address?: null | EventTokenAddress; Amount?: null | number; Source?: null | string; };
664
731
  type ResourceBundle = { Entries?: null | Array<ResourceEntry>; EventTokens?: null | Array<EventTokenOperation>; };
@@ -876,7 +943,7 @@ interface UserPremiumState {
876
943
  ActivatedTrialIDs?: string[];
877
944
  MaxActiveTier?: number;
878
945
  }
879
- type PremiumDefinition = { PremiumID?: null | string; DisplayName?: null | string; Tier?: null | number; DurationDays?: null | number; TrialDurationDays?: null | number; PriceOptions?: null | Record<string, { OptionID?: null | string; Name?: null | string; RequiredResources?: null | ResourceConsume; [key: string]: unknown; }>; AppleProductID?: null | string; GoogleProductID?: null | string; Benefits?: null | Record<string, string>; [key: string]: unknown; };
946
+ type PremiumDefinition = { PremiumID?: null | string; DisplayName?: null | string; Tier?: null | number; DurationDays?: null | number; TrialDurationDays?: null | number; PriceOptions?: null | PriceOptions; Benefits?: null | Record<string, string>; [key: string]: unknown; };
880
947
  interface PremiumDefinitions {
881
948
  Definitions?: Record<string, PremiumDefinition> | null;
882
949
  }
@@ -926,21 +993,21 @@ type UnlockCharactersBatchResponse = { ServerTimeUtc: string; Items: Array<{ Id:
926
993
  type UpgradeCharacterLevelsBatchResponse = { ServerTimeUtc: string; Items: Array<{ Id: string; Success: boolean; Error?: null | string; Data?: null | UpgradeCharacterLevelResponse; }>; Resources?: null | ResourceOperation; };
927
994
  type UpgradeStatLevelsBatchResponse = { ServerTimeUtc: string; Items: Array<{ Id: string; Success: boolean; Error?: null | string; Data?: null | UpgradeStatLevelResponse; }>; Resources?: null | ResourceOperation; };
928
995
  type StatRequirement = { RequiredStatID: string; RequiredLevel: number; [key: string]: unknown; };
929
- type StatDefinition = { StatID: string; TypeID?: null | string; DisplayName?: null | string; Description?: null | string; MaxLevel?: null | number; Weight?: null | number; BaseCostResource?: null | ResourceConsume; CostScalingFactor?: null | number; BaseStatValue?: null | number; StatScalingFactor?: null | number; CharacterLevelScalingFactor?: null | number; Requirements?: null | Array<StatRequirement>; AssetPaths?: null | Record<string, string>; [key: string]: unknown; };
930
- type CharacterLevelDefinition = { Level?: null | number; UpgradeCost?: null | ResourceConsume; GlobalStatMultiplier?: null | number; StatMaxLevelMultiplier?: null | number; AssetPaths?: null | Record<string, string>; [key: string]: unknown; };
996
+ type StatDefinition = { StatID: string; TypeID?: null | string; DisplayName?: null | string; Description?: null | string; MaxLevel?: null | number; Weight?: null | number; PriceOptions?: null | PriceOptions; CostCurve?: null | ScalarCurveSpec; BaseStatValue?: null | number; ValueCurve?: null | ScalarCurveSpec; RankCurve?: null | ScalarCurveSpec; Requirements?: null | Array<StatRequirement>; AssetPaths?: null | Record<string, string>; [key: string]: unknown; };
931
997
  type CharacterEquipmentSlot = { SlotID: string; MinCharacterLevel?: null | number; StatRequirements?: null | Array<StatRequirement>; AllowedRarityIDs?: null | Array<string>; AllowedItemTags?: null | Array<string>; MinItemLevel?: null | number; MaxItemLevel?: null | number; [key: string]: unknown; };
932
998
  type CharacterEquipment = { Slots?: null | Record<string, CharacterEquipmentSlot>; [key: string]: unknown; };
933
999
  type CharacterIdentity = { DisplayName?: null | string; Description?: null | string; Lore?: null | string; SortOrder?: null | number; AssetPaths?: null | Record<string, string>; [key: string]: unknown; };
934
1000
  type CharacterClassification = { ClassID?: null | string; RarityID?: null | string; Tags?: null | Array<string>; [key: string]: unknown; };
935
- type CharacterUnlock = { UnlockedByDefault?: null | boolean; Cost?: null | ResourceConsume; [key: string]: unknown; };
936
- type CharacterDefinition = { CharacterID: string; Identity?: null | CharacterIdentity; Classification?: null | CharacterClassification; Unlock?: null | CharacterUnlock; Presets?: null | { Stats?: null | PresetBinding; Levels?: null | PresetBinding; Equipment?: null | PresetBinding; [key: string]: unknown; }; Equipment?: null | CharacterEquipment; Stats?: null | Record<string, StatDefinition>; Levels?: null | Record<string, CharacterLevelDefinition>; [key: string]: unknown; };
1001
+ type CharacterUnlock = { UnlockedByDefault?: null | boolean; PriceOptions?: null | PriceOptions; [key: string]: unknown; };
1002
+ type CharacterRankLadder = { MaxRank?: null | number; FirstPaidRank?: null | number; PriceOptions?: null | PriceOptions; CostCurve?: null | ScalarCurveSpec; [key: string]: unknown; };
1003
+ type CharacterDefinition = { CharacterID: string; Identity?: null | CharacterIdentity; Classification?: null | CharacterClassification; Unlock?: null | CharacterUnlock; Presets?: null | { Stats?: null | PresetBinding; Levels?: null | PresetBinding; Equipment?: null | PresetBinding; [key: string]: unknown; }; Equipment?: null | CharacterEquipment; Stats?: null | Record<string, StatDefinition>; RankLadder?: null | CharacterRankLadder; RankStatCurve?: null | ScalarCurveSpec; StatMaxLevelCurve?: null | ScalarCurveSpec; [key: string]: unknown; };
937
1004
  type StatsPreset = { Stats?: null | Record<string, StatDefinition>; [key: string]: unknown; };
938
- type LevelsPreset = { Levels?: null | Record<string, CharacterLevelDefinition>; [key: string]: unknown; };
1005
+ type LevelsPreset = { RankLadder?: null | CharacterRankLadder; [key: string]: unknown; };
939
1006
  type EquipmentPreset = { Equipment?: null | CharacterEquipment; [key: string]: unknown; };
940
1007
  /**
941
- * Registry of shared (reusable) character setting sets (stats / levels / equipment).
942
- * Characters reference them via CharacterDefinition.Presets. All blocks merge with inline by
943
- * key: Stats by StatID, Levels by level key, Equipment by SlotID inside Slots.
1008
+ * Registry of shared (reusable) character setting sets (stats / rank ladder / equipment).
1009
+ * Characters reference them via CharacterDefinition.Presets. Stats and Equipment merge with the
1010
+ * inline block by key (StatID / SlotID); the rank ladder is replaced whole, not merged.
944
1011
  */
945
1012
  interface CharacterPresetRegistry {
946
1013
  Stats?: Record<string, StatsPreset> | null;
@@ -975,6 +1042,13 @@ interface CharacterStatRef {
975
1042
  }
976
1043
  interface CharacterRequest extends BaseRequest {
977
1044
  CharacterID?: string;
1045
+ /**
1046
+ * Chosen way to pay (`PriceOption.OptionID`). Empty = the first option available on this
1047
+ * player's platform, which is what keeps single-price entities working unchanged.
1048
+ */
1049
+ SelectedOptionID?: string;
1050
+ /** Store receipt. Required exactly when the chosen option is paid in a store. */
1051
+ Payment?: PaymentProof;
978
1052
  StatID?: string;
979
1053
  ItemsToEquip?: EquipSlotPair[];
980
1054
  UnequipSlotIDs?: string[];
@@ -1035,6 +1109,11 @@ type InstantBattleResponse = { Battle?: null | BattleResult; Resources?: null |
1035
1109
  type MatchesPageResponse = { Matches?: null | Array<PvPMatch>; Page?: null | number; PageSize?: null | number; HasMore?: null | boolean; };
1036
1110
  interface MatchRequest extends BaseRequest {
1037
1111
  MatchID?: string;
1112
+ /**
1113
+ * Chosen way to pay (`PriceOption.OptionID`). Empty = the first option available on this
1114
+ * player's platform, which keeps single-price entities working unchanged.
1115
+ */
1116
+ SelectedOptionID?: string;
1038
1117
  TargetUserID?: string;
1039
1118
  /** Entry stake for one side (currencies / stackable items / event tokens). */
1040
1119
  Entry?: ResourceBundle;
@@ -1059,10 +1138,10 @@ declare const MatchAction: {
1059
1138
  readonly GetDefinitions: "GetDefinitions";
1060
1139
  };
1061
1140
  type MatchAction = (typeof MatchAction)[keyof typeof MatchAction];
1062
- type InstantBattleSettings = { StatMapping?: null | { HealthStatID?: null | string; DamageStatID?: null | string; ArmorStatID?: null | string; AttackSpeedStatID?: null | string; CritChanceStatID?: null | string; CritDamageStatID?: null | string; DodgeStatID?: null | string; AllMightStatID?: null | string; [key: string]: unknown; }; Combat?: null | { MaxRounds?: null | number; BlockDamageMultiplier?: null | number; MinHitDamage?: null | number; DefaultCritMultiplier?: null | number; MaxCritChance?: null | number; MaxDodgeChance?: null | number; [key: string]: unknown; }; Formula?: null | { Health?: null | { Terms?: null | Array<{ Coefficient?: null | number; Factors?: null | Array<{ Source?: null | 'Constant' | 'Stat' | 'RankMultiplier' | 'AllMight' | 'GearFlat' | 'GearPercent'; StatID?: null | string; Value?: null | number; OnePlus?: null | boolean; [key: string]: unknown; }>; [key: string]: unknown; }>; [key: string]: unknown; }; Damage?: null | { Terms?: null | Array<{ Coefficient?: null | number; Factors?: null | Array<{ Source?: null | 'Constant' | 'Stat' | 'RankMultiplier' | 'AllMight' | 'GearFlat' | 'GearPercent'; StatID?: null | string; Value?: null | number; OnePlus?: null | boolean; [key: string]: unknown; }>; [key: string]: unknown; }>; [key: string]: unknown; }; Armor?: null | { Terms?: null | Array<{ Coefficient?: null | number; Factors?: null | Array<{ Source?: null | 'Constant' | 'Stat' | 'RankMultiplier' | 'AllMight' | 'GearFlat' | 'GearPercent'; StatID?: null | string; Value?: null | number; OnePlus?: null | boolean; [key: string]: unknown; }>; [key: string]: unknown; }>; [key: string]: unknown; }; AttackSpeed?: null | { Terms?: null | Array<{ Coefficient?: null | number; Factors?: null | Array<{ Source?: null | 'Constant' | 'Stat' | 'RankMultiplier' | 'AllMight' | 'GearFlat' | 'GearPercent'; StatID?: null | string; Value?: null | number; OnePlus?: null | boolean; [key: string]: unknown; }>; [key: string]: unknown; }>; [key: string]: unknown; }; CritChance?: null | { Terms?: null | Array<{ Coefficient?: null | number; Factors?: null | Array<{ Source?: null | 'Constant' | 'Stat' | 'RankMultiplier' | 'AllMight' | 'GearFlat' | 'GearPercent'; StatID?: null | string; Value?: null | number; OnePlus?: null | boolean; [key: string]: unknown; }>; [key: string]: unknown; }>; [key: string]: unknown; }; CritDamage?: null | { Terms?: null | Array<{ Coefficient?: null | number; Factors?: null | Array<{ Source?: null | 'Constant' | 'Stat' | 'RankMultiplier' | 'AllMight' | 'GearFlat' | 'GearPercent'; StatID?: null | string; Value?: null | number; OnePlus?: null | boolean; [key: string]: unknown; }>; [key: string]: unknown; }>; [key: string]: unknown; }; Dodge?: null | { Terms?: null | Array<{ Coefficient?: null | number; Factors?: null | Array<{ Source?: null | 'Constant' | 'Stat' | 'RankMultiplier' | 'AllMight' | 'GearFlat' | 'GearPercent'; StatID?: null | string; Value?: null | number; OnePlus?: null | boolean; [key: string]: unknown; }>; [key: string]: unknown; }>; [key: string]: unknown; }; [key: string]: unknown; }; [key: string]: unknown; };
1141
+ type InstantBattleSettings = { StatMapping?: null | { HealthStatID?: null | string; DamageStatID?: null | string; ArmorStatID?: null | string; AttackSpeedStatID?: null | string; CritChanceStatID?: null | string; CritDamageStatID?: null | string; DodgeStatID?: null | string; AllMightStatID?: null | string; [key: string]: unknown; }; Combat?: null | { MaxRounds?: null | number; BlockDamageMultiplier?: null | number; MinHitDamage?: null | number; DefaultCritMultiplier?: null | number; MaxCritChance?: null | number; MaxDodgeChance?: null | number; [key: string]: unknown; }; Formula?: null | { Health?: null | { Terms?: null | Array<{ Coefficient?: null | number; Factors?: null | Array<{ Kind?: null | 'Curve' | 'Constant' | 'Variable'; Constant?: null | number; VariableID?: null | string; Argument?: null | string; Curve?: null | ScalarCurveSpec; OnePlus?: null | boolean; [key: string]: unknown; }>; [key: string]: unknown; }>; [key: string]: unknown; }; Damage?: null | { Terms?: null | Array<{ Coefficient?: null | number; Factors?: null | Array<{ Kind?: null | 'Curve' | 'Constant' | 'Variable'; Constant?: null | number; VariableID?: null | string; Argument?: null | string; Curve?: null | ScalarCurveSpec; OnePlus?: null | boolean; [key: string]: unknown; }>; [key: string]: unknown; }>; [key: string]: unknown; }; Armor?: null | { Terms?: null | Array<{ Coefficient?: null | number; Factors?: null | Array<{ Kind?: null | 'Curve' | 'Constant' | 'Variable'; Constant?: null | number; VariableID?: null | string; Argument?: null | string; Curve?: null | ScalarCurveSpec; OnePlus?: null | boolean; [key: string]: unknown; }>; [key: string]: unknown; }>; [key: string]: unknown; }; AttackSpeed?: null | { Terms?: null | Array<{ Coefficient?: null | number; Factors?: null | Array<{ Kind?: null | 'Curve' | 'Constant' | 'Variable'; Constant?: null | number; VariableID?: null | string; Argument?: null | string; Curve?: null | ScalarCurveSpec; OnePlus?: null | boolean; [key: string]: unknown; }>; [key: string]: unknown; }>; [key: string]: unknown; }; CritChance?: null | { Terms?: null | Array<{ Coefficient?: null | number; Factors?: null | Array<{ Kind?: null | 'Curve' | 'Constant' | 'Variable'; Constant?: null | number; VariableID?: null | string; Argument?: null | string; Curve?: null | ScalarCurveSpec; OnePlus?: null | boolean; [key: string]: unknown; }>; [key: string]: unknown; }>; [key: string]: unknown; }; CritDamage?: null | { Terms?: null | Array<{ Coefficient?: null | number; Factors?: null | Array<{ Kind?: null | 'Curve' | 'Constant' | 'Variable'; Constant?: null | number; VariableID?: null | string; Argument?: null | string; Curve?: null | ScalarCurveSpec; OnePlus?: null | boolean; [key: string]: unknown; }>; [key: string]: unknown; }>; [key: string]: unknown; }; Dodge?: null | { Terms?: null | Array<{ Coefficient?: null | number; Factors?: null | Array<{ Kind?: null | 'Curve' | 'Constant' | 'Variable'; Constant?: null | number; VariableID?: null | string; Argument?: null | string; Curve?: null | ScalarCurveSpec; OnePlus?: null | boolean; [key: string]: unknown; }>; [key: string]: unknown; }>; [key: string]: unknown; }; [key: string]: unknown; }; [key: string]: unknown; };
1063
1142
  type MatchEconomySettings = { BurnRate?: null | number; [key: string]: unknown; };
1064
1143
  type MatchEntrySettings = { AllowVirtualCurrency?: null | boolean; AllowItems?: null | boolean; AllowEventTokens?: null | boolean; Allowed?: null | Array<{ Kind?: null | 'Item' | 'VirtualCurrency' | 'EventToken'; CurrencyID?: null | string; CatalogID?: null | string; ItemID?: null | string; TokenType?: null | 'TimedEvent' | 'Quest' | 'Leaderboard' | 'CoopEvent' | 'Season'; EntityID?: null | string; MinAmount?: null | number; MaxAmount?: null | number; [key: string]: unknown; }>; MaxPositions?: null | number; [key: string]: unknown; };
1065
- type MatchCreationSettings = { Cost?: null | ResourceConsume; RefundCostOnCancel?: null | boolean; MaxOpenMatches?: null | number; Limits?: null | LimitSpec; AllowPrivateMatches?: null | boolean; MaxMatchesPerOpponentPerDay?: null | number; [key: string]: unknown; };
1144
+ type MatchCreationSettings = { PriceOptions?: null | PriceOptions; RefundCostOnCancel?: null | boolean; MaxOpenMatches?: null | number; Limits?: null | LimitSpec; AllowPrivateMatches?: null | boolean; MaxMatchesPerOpponentPerDay?: null | number; [key: string]: unknown; };
1066
1145
  /** One instant-battle rule, keyed by RuleID in InstantBattleDefinitions.Rules. */
1067
1146
  interface InstantBattleRule {
1068
1147
  RuleID?: string | null;
@@ -1131,7 +1210,7 @@ type AcceptTradeOfferResponse = { OfferID: string; ReceivedCollectibleID?: null
1131
1210
  type DeclineTradeOfferResponse = { OfferID: string; Resources?: null | ResourceOperation; };
1132
1211
  type GetTradeOffersResponse = { Offers?: null | Array<CollectionTradeOfferDocument>; };
1133
1212
  type CollectionDefinition = { CollectionID?: null | string; DisplayName?: null | string; Description?: null | string; AssetPaths?: null | Record<string, string>; SeasonChainID?: null | string; Sets?: null | Array<{ SetID?: null | string; DisplayName?: null | string; AssetPaths?: null | Record<string, string>; SortOrder?: null | number; Collectibles?: null | Array<{ CollectibleID?: null | string; DisplayName?: null | string; AssetPaths?: null | Record<string, string>; Rarity?: null | number; HasSpecialVersion?: null | boolean; SortOrder?: null | number; [key: string]: unknown; }>; SetCompletionReward?: null | ResourceGrant; [key: string]: unknown; }>; GrandPrize?: null | ResourceGrant; [key: string]: unknown; };
1134
- type CollectionPackTypeDefinition = { PackTypeID?: null | string; Cost?: null | ResourceConsume; BonusRewardSlots?: null | Array<LootboxRewardSlot>; PityRules?: null | Array<LootboxPityRule>; Presets?: null | { BonusRewardSlots?: null | PresetBinding; PityRules?: null | PresetBinding; [key: string]: unknown; }; DisplayName?: null | string; AssetPaths?: null | Record<string, string>; CollectibleCount?: null | number; MaxOpenCount?: null | number; GuaranteedMinRarity?: null | number; GuaranteeMaxRarity?: null | boolean; RarityWeights?: null | Record<string, number>; ColorTier?: null | number; [key: string]: unknown; };
1213
+ type CollectionPackTypeDefinition = { PackTypeID?: null | string; PriceOptions?: null | PriceOptions; BonusRewardSlots?: null | Array<LootboxRewardSlot>; PityRules?: null | Array<LootboxPityRule>; Presets?: null | { BonusRewardSlots?: null | PresetBinding; PityRules?: null | PresetBinding; [key: string]: unknown; }; DisplayName?: null | string; AssetPaths?: null | Record<string, string>; CollectibleCount?: null | number; MaxOpenCount?: null | number; GuaranteedMinRarity?: null | number; GuaranteeMaxRarity?: null | boolean; RarityWeights?: null | Record<string, number>; ColorTier?: null | number; [key: string]: unknown; };
1135
1214
  type DuplicateCollectionCurrencyConversion = { Rarity?: null | number; CollectionCurrencyGranted?: null | number; [key: string]: unknown; };
1136
1215
  type CollectionChestDefinition = { CollectionChestID?: null | string; DisplayName?: null | string; AssetPaths?: null | Record<string, string>; CollectionCurrencyCost?: null | number; MaxOpenCount?: null | number; MinCollectibleCount?: null | number; MaxCollectibleCount?: null | number; GuaranteedMinRarity?: null | number; BonusRewardSlots?: null | Array<LootboxRewardSlot>; PityRules?: null | Array<LootboxPityRule>; Presets?: null | { BonusRewardSlots?: null | PresetBinding; PityRules?: null | PresetBinding; [key: string]: unknown; }; Tier?: null | number; [key: string]: unknown; };
1137
1216
  type SpecialTradeEventDefinition = { SpecialTradeEventID?: null | string; StartUtc?: null | string; EndUtc?: null | string; AllowedSpecialCollectibleIDs?: null | Array<string>; SpecialTradeEventDailyTradeLimit?: null | number; [key: string]: unknown; };
@@ -1163,6 +1242,13 @@ interface CollectionSetRef {
1163
1242
  }
1164
1243
  interface CollectionRequest extends BaseRequest {
1165
1244
  CollectionID?: string;
1245
+ /**
1246
+ * Chosen way to pay (`PriceOption.OptionID`). Empty = the first option available on this
1247
+ * player's platform, which is what keeps single-price entities working unchanged.
1248
+ */
1249
+ SelectedOptionID?: string;
1250
+ /** Store receipt. Required exactly when the chosen option is paid in a store. */
1251
+ Payment?: PaymentProof;
1166
1252
  CollectibleID?: string;
1167
1253
  PackTypeID?: string;
1168
1254
  CollectionChestID?: string;
@@ -1235,7 +1321,7 @@ type CoopPartnerObjectState = { Index?: null | number; OwnerUserID?: null | stri
1235
1321
  type CoopBuildObjectsState = { Objects?: null | Array<CoopPartnerObjectState>; [key: string]: unknown; };
1236
1322
  type CoopGroupDocument = { GroupID?: null | string; TitleID?: null | string; CoopChainID?: null | string; CoopEventID?: null | string; CycleIndex?: null | number; Members?: null | Array<CoopGroupMember>; BuildObjectsState?: null | CoopBuildObjectsState; Status?: null | string; CreatedAtUtc?: null | string; ExpiresAtUtc?: null | string; Version?: null | number; [key: string]: unknown; };
1237
1323
  type ActiveCoopEventInfo = { CoopChainID: string; [key: string]: unknown; };
1238
- type CoopEventDefinition = { CoopEventID?: null | string; Order?: null | number; DurationSec?: null | number; DisplayName?: null | string; Description?: null | string; AssetPaths?: null | Record<string, string>; EventType?: null | string; PartnerCount?: null | number; MatchmakingTimeoutMinutes?: null | number; MemberGracePeriodMinutes?: null | number; BuildObjects?: null | { Objects?: null | Array<{ Index?: null | number; DisplayName?: null | string; AssetPaths?: null | Record<string, string>; MaxProgress?: null | number; CompletionReward?: null | ResourceGrant; [key: string]: unknown; }>; SpinCost?: null | ResourceConsume; SpinnerTable?: null | Array<{ DisplayName?: null | string; AssetPaths?: null | Record<string, string>; Weight?: null | number; MinProgress?: null | number; MaxProgress?: null | number; [key: string]: unknown; }>; MaxSpinsPerCall?: null | number; [key: string]: unknown; }; GrandPrize?: null | ResourceGrant; [key: string]: unknown; };
1324
+ type CoopEventDefinition = { CoopEventID?: null | string; Order?: null | number; DurationSec?: null | number; DisplayName?: null | string; Description?: null | string; AssetPaths?: null | Record<string, string>; EventType?: null | string; PartnerCount?: null | number; MatchmakingTimeoutMinutes?: null | number; MemberGracePeriodMinutes?: null | number; BuildObjects?: null | { Objects?: null | Array<{ Index?: null | number; DisplayName?: null | string; AssetPaths?: null | Record<string, string>; MaxProgress?: null | number; CompletionReward?: null | ResourceGrant; [key: string]: unknown; }>; PriceOptions?: null | PriceOptions; SpinnerTable?: null | Array<{ DisplayName?: null | string; AssetPaths?: null | Record<string, string>; Weight?: null | number; MinProgress?: null | number; MaxProgress?: null | number; [key: string]: unknown; }>; MaxSpinsPerCall?: null | number; [key: string]: unknown; }; GrandPrize?: null | ResourceGrant; [key: string]: unknown; };
1239
1325
  /** A coop event chain: cyclic schedule + ordered events + audience gate. */
1240
1326
  interface CoopEventChainDefinition {
1241
1327
  CoopChainID?: string | null;
@@ -1258,6 +1344,11 @@ interface CoopEventDefinitions {
1258
1344
  }
1259
1345
  interface CoopEventRequest extends BaseRequest {
1260
1346
  CoopChainID?: string;
1347
+ /**
1348
+ * Chosen way to pay (`PriceOption.OptionID`). Empty = the first option available on this
1349
+ * player's platform, which keeps single-price entities working unchanged.
1350
+ */
1351
+ SelectedOptionID?: string;
1261
1352
  GroupID?: string;
1262
1353
  /**
1263
1354
  * How many spins to perform in a single Spin call. Default 1. Clamped to
@@ -1309,7 +1400,7 @@ interface UserDealOffersState {
1309
1400
  LastUpdatedUtc?: string | null;
1310
1401
  }
1311
1402
  type DealSlotDefinition = { SlotID?: null | string; Enabled?: null | boolean; SortOrder?: null | number; Queue?: null | Array<{ Order?: null | number; OfferID?: null | string; DurationSec?: null | number; DelayBeforeActivationSec?: null | number; [key: string]: unknown; }>; Schedule?: null | ScheduleSpec; Gate?: null | SegmentGate; AllowDismissSkip?: null | boolean; DismissSkipDelaySec?: null | number; [key: string]: unknown; };
1312
- type DealNodeActionDefinition = { Purchase?: null | { StoreOfferID?: null | string; BillingProductID?: null | string; DirectCost?: null | ResourceConsume; UseExternalRewards?: null | boolean; [key: string]: unknown; }; RewardedVideo?: null | { AdPlacementID?: null | string; ViewsRequiredToComplete?: null | number; MaxViewsPerActivation?: null | number; CooldownSecondsBetweenViews?: null | number; RequireServerVerification?: null | boolean; GrantRewardsPerView?: null | boolean; [key: string]: unknown; }; [key: string]: unknown; };
1403
+ type DealNodeActionDefinition = { Purchase?: null | { StoreOfferID?: null | string; BillingProductID?: null | string; PriceOptions?: null | PriceOptions; UseExternalRewards?: null | boolean; [key: string]: unknown; }; RewardedVideo?: null | { AdPlacementID?: null | string; ViewsRequiredToComplete?: null | number; MaxViewsPerActivation?: null | number; CooldownSecondsBetweenViews?: null | number; RequireServerVerification?: null | boolean; GrantRewardsPerView?: null | boolean; [key: string]: unknown; }; [key: string]: unknown; };
1313
1404
  /**
1314
1405
  * Container of preset wiring for an offer — one PresetBinding per block. Inline data (Milestones)
1315
1406
  * lives on DealOfferDefinition. null = presets unused.
@@ -1407,6 +1498,13 @@ type ClaimDealMilestoneResponse = { ServerTimeUtc?: null | string; SlotID?: null
1407
1498
  type ClaimDealMilestonesBatchResponse = { ServerTimeUtc?: null | string; SlotID?: null | string; ClaimedIDs?: null | Array<string>; Rejected?: null | Record<string, string>; Resources?: null | ResourceOperation; };
1408
1499
  interface DealOfferRequest extends BaseRequest {
1409
1500
  SlotID?: string;
1501
+ /**
1502
+ * Chosen way to pay (`PriceOption.OptionID`). Empty = the first option available on this
1503
+ * player's platform, which keeps single-price entities working unchanged.
1504
+ */
1505
+ SelectedOptionID?: string;
1506
+ /** Store receipt. Required exactly when the chosen option is paid in a store. */
1507
+ Payment?: PaymentProof;
1410
1508
  NodeID?: string;
1411
1509
  MilestoneID?: string;
1412
1510
  MilestoneIDs?: string[];
@@ -1520,7 +1618,7 @@ declare const TimedBoostStackingPolicy: {
1520
1618
  readonly Stack: "Stack";
1521
1619
  };
1522
1620
  type TimedBoostStackingPolicy = (typeof TimedBoostStackingPolicy)[keyof typeof TimedBoostStackingPolicy];
1523
- type TimedBoostDefinition = { BoostID?: null | string; DisplayName?: null | string; Description?: null | string; AssetPaths?: null | Record<string, string>; ActivationCost?: null | ResourceConsume; Effect?: null | { Target?: null | string; Operation?: null | string; Value?: null | number; [key: string]: unknown; }; DurationSeconds?: null | number; Charges?: null | number; StackingPolicy?: null | string; MaxActiveInstances?: null | number; Tags?: null | Array<string>; [key: string]: unknown; };
1621
+ type TimedBoostDefinition = { BoostID?: null | string; DisplayName?: null | string; Description?: null | string; AssetPaths?: null | Record<string, string>; PriceOptions?: null | PriceOptions; Effect?: null | { Target?: null | string; Operation?: null | string; Value?: null | number; [key: string]: unknown; }; DurationSeconds?: null | number; Charges?: null | number; StackingPolicy?: null | string; MaxActiveInstances?: null | number; Tags?: null | Array<string>; [key: string]: unknown; };
1524
1622
  type ScheduledBoostDefinition = { ScheduledBoostID?: null | string; DisplayName?: null | string; Description?: null | string; AssetPaths?: null | Record<string, string>; Tags?: null | Array<string>; Schedule?: null | ScheduleSpec; Effects?: null | Array<{ Target?: null | string; Operation?: null | string; Value?: null | number; [key: string]: unknown; }>; Gate?: null | SegmentGate; CustomParams?: null | Record<string, string>; [key: string]: unknown; };
1525
1623
  type BoostChainDefinition = { ChainID?: null | string; DisplayName?: null | string; Description?: null | string; AssetPaths?: null | Record<string, string>; Schedule?: null | ScheduleSpec; Phases?: null | Array<{ ChainedBoostID?: null | string; Order?: null | number; DurationSec?: null | number; Effects?: null | Array<{ Target?: null | string; Operation?: null | string; Value?: null | number; [key: string]: unknown; }>; CustomParams?: null | Record<string, string>; [key: string]: unknown; }>; Gate?: null | SegmentGate; CustomParams?: null | Record<string, string>; [key: string]: unknown; };
1526
1624
  type TriggeredBoostDefinition = { TriggeredBoostID?: null | string; DisplayName?: null | string; AssetPaths?: null | Record<string, string>; Tags?: null | Array<string>; Sources?: null | Array<TriggerSource>; Effects?: null | Array<{ Target?: null | string; Operation?: null | string; Value?: null | number; [key: string]: unknown; }>; DurationSeconds?: null | number; Charges?: null | number; StackingPolicy?: null | string; MaxActiveInstances?: null | number; Gate?: null | SegmentGate; [key: string]: unknown; };
@@ -1551,6 +1649,13 @@ type ActiveBoostWindowInfo = { Kind?: null | string; SourceID?: null | string; P
1551
1649
  type GetActiveBoostWindowsResponse = { ServerTimeUtc?: null | string; Windows?: null | Array<ActiveBoostWindowInfo>; };
1552
1650
  interface TimedBoostRequest extends BaseRequest {
1553
1651
  BoostID?: string;
1652
+ /**
1653
+ * Chosen way to pay (`PriceOption.OptionID`). Empty = the first option available on this
1654
+ * player's platform, which keeps single-price entities working unchanged.
1655
+ */
1656
+ SelectedOptionID?: string;
1657
+ /** Store receipt. Required exactly when the chosen option is paid in a store. */
1658
+ Payment?: PaymentProof;
1554
1659
  }
1555
1660
  declare const TimedBoostAction: {
1556
1661
  readonly GetDefinitions: "GetDefinitions";
@@ -1817,7 +1922,7 @@ interface GameLoopDefinitions {
1817
1922
  [key: string]: unknown;
1818
1923
  }
1819
1924
  type RollActionData = { TargetUserID?: null | string; IsBot?: null | boolean; PublicData?: null | UserPublicDataModel; TargetBuildingStates?: null | Array<BuildingState>; TargetHasShield?: null | boolean; [key: string]: unknown; };
1820
- type SpecialModeOfferData = { ModeID?: null | string; Choices?: null | Array<{ ChoiceID?: null | string; Mode?: null | string; Reward?: null | ScaledResourceOperation; DurationSeconds?: null | number; EntryCost?: null | ResourceConsume; Multipliers?: null | SpecialClaimMultipliers; [key: string]: unknown; }>; [key: string]: unknown; };
1925
+ type SpecialModeOfferData = { ModeID?: null | string; Choices?: null | Array<{ ChoiceID?: null | string; Mode?: null | string; Reward?: null | ScaledResourceOperation; DurationSeconds?: null | number; PriceOptions?: null | PriceOptions; Multipliers?: null | SpecialClaimMultipliers; [key: string]: unknown; }>; [key: string]: unknown; };
1821
1926
  type CommunityChestContributionResult = { GroupID?: null | string; Delta?: null | number; NewProgress?: null | number; MaxProgress?: null | number; UnlockedMilestoneIDs?: null | Array<string>; Completed?: null | boolean; [key: string]: unknown; };
1822
1927
  interface BoardRollResponse {
1823
1928
  UsedMultiplier?: number | null;
@@ -1865,6 +1970,11 @@ type CommunityChestClaimResponse = { ServerTimeUtc?: null | string; GroupID?: nu
1865
1970
  type CommunityChestLeaveResponse = { ServerTimeUtc?: null | string; GroupID?: null | string; Success?: null | boolean; };
1866
1971
  interface GameLoopRequest extends BaseRequest {
1867
1972
  RollMultiplier?: number;
1973
+ /**
1974
+ * Chosen way to pay (`PriceOption.OptionID`). Empty = the first option available on this
1975
+ * player's platform, which keeps single-price entities working unchanged.
1976
+ */
1977
+ SelectedOptionID?: string;
1868
1978
  BuildingIndex?: number;
1869
1979
  DigIndex?: number;
1870
1980
  StageLevel?: number;
@@ -1927,14 +2037,14 @@ type MarketplaceCommissionOverride = { Percent?: null | number; MinPerPosition?:
1927
2037
  type MarketplacePricePolicy = { AllowVirtualCurrency?: null | boolean; AllowItems?: null | boolean; AllowEventTokens?: null | boolean; Allowed?: null | Array<{ Kind?: null | 'Item' | 'VirtualCurrency' | 'EventToken'; CurrencyID?: null | string; CatalogID?: null | string; ItemID?: null | string; TokenType?: null | 'TimedEvent' | 'Quest' | 'Leaderboard' | 'CoopEvent' | 'Season'; EntityID?: null | string; MinAmount?: null | number; MaxAmount?: null | number; [key: string]: unknown; }>; MaxPositions?: null | number; [key: string]: unknown; };
1928
2038
  type MarketplaceCommissionPolicy = { Percent?: null | number; MinPerPosition?: null | number; Sink?: null | 'Burn' | 'Ledger'; LedgerAccountID?: null | string; PerCatalogOverrides?: null | Record<string, MarketplaceCommissionOverride>; ApplyToDirectTrades?: null | boolean; [key: string]: unknown; };
1929
2039
  type MarketplaceTradabilityPolicy = { AllowedCatalogIDs?: null | Array<string>; DeniedCatalogIDs?: null | Array<string>; DeniedItemIDs?: null | Array<string>; AllowUnstackableWithState?: null | boolean; [key: string]: unknown; };
1930
- type MarketplaceListingSettings = { Enabled?: null | boolean; AllowedDurationsHours?: null | Array<number>; MaxActiveListings?: null | number; CreateLimits?: null | LimitSpec; BuyLimits?: null | LimitSpec; ListingFee?: null | ResourceConsume; RefundListingFeeOnCancel?: null | boolean; [key: string]: unknown; };
2040
+ type MarketplaceListingSettings = { Enabled?: null | boolean; AllowedDurationsHours?: null | Array<number>; MaxActiveListings?: null | number; CreateLimits?: null | LimitSpec; BuyLimits?: null | LimitSpec; ListingFeeOptions?: null | PriceOptions; RefundListingFeeOnCancel?: null | boolean; [key: string]: unknown; };
1931
2041
  type MarketplaceAuctionSettings = { Enabled?: null | boolean; MinDurationHours?: null | number; MaxDurationHours?: null | number; AntiSnipeWindowSeconds?: null | number; AntiSnipeExtensionSeconds?: null | number; MaxAntiSnipeExtensions?: null | number; MinBidStepPercent?: null | number; MinBidStepAbsolute?: null | number; BidLimits?: null | LimitSpec; [key: string]: unknown; };
1932
2042
  type MarketplaceBuyOrderSettings = { Enabled?: null | boolean; MaxActiveOrders?: null | number; AllowedDurationsHours?: null | Array<number>; CreateLimits?: null | LimitSpec; FillLimits?: null | LimitSpec; [key: string]: unknown; };
1933
2043
  type MarketplaceDirectTradeSettings = { Enabled?: null | boolean; OfferExpirationHours?: null | number; MaxPendingOutgoing?: null | number; AllowGifts?: null | boolean; CreateLimits?: null | LimitSpec; [key: string]: unknown; };
1934
2044
  type MarketplaceMatchingSettings = { Enabled?: null | boolean; [key: string]: unknown; };
1935
2045
  type MarketplaceDefinitions = { Enabled?: null | boolean; Gate?: null | SegmentGate; Schedule?: null | ScheduleSpec; PricePolicy?: null | MarketplacePricePolicy; Commission?: null | MarketplaceCommissionPolicy; Tradability?: null | MarketplaceTradabilityPolicy; Listings?: null | MarketplaceListingSettings; Auctions?: null | MarketplaceAuctionSettings; BuyOrders?: null | MarketplaceBuyOrderSettings; DirectTrades?: null | MarketplaceDirectTradeSettings; Matching?: null | MarketplaceMatchingSettings; [key: string]: unknown; };
1936
2046
  type MarketplaceBidRefund = { BidIndex?: null | number; UserID?: null | string; Amount?: null | number; Settled?: null | boolean; SettledAt?: null | string; [key: string]: unknown; };
1937
- type MarketplaceAuctionState = { BidAxisType?: null | 'Item' | 'VirtualCurrency' | 'CryptoCurrency' | 'UsdCent'; BidCurrencyID?: null | string; BidCatalogID?: null | string; BidItemID?: null | string; StartingBid?: null | number; CurrentBid?: null | number; CurrentBidderID?: null | string; BidCount?: null | number; ExtensionCount?: null | number; PendingRefunds?: null | Array<MarketplaceBidRefund>; [key: string]: unknown; };
2047
+ type MarketplaceAuctionState = { BidAxisType?: null | 'Item' | 'VirtualCurrency' | 'CryptoCurrency' | 'RewardedVideoCredit' | 'Purchase'; BidCurrencyID?: null | string; BidCatalogID?: null | string; BidItemID?: null | string; StartingBid?: null | number; CurrentBid?: null | number; CurrentBidderID?: null | string; BidCount?: null | number; ExtensionCount?: null | number; PendingRefunds?: null | Array<MarketplaceBidRefund>; [key: string]: unknown; };
1938
2048
  type MarketplaceActionCounter = { LastAt?: null | string; DailyCount?: null | number; DailyResetUtc?: null | string; [key: string]: unknown; };
1939
2049
  type UserMarketplaceState = { Create?: null | MarketplaceActionCounter; Buy?: null | MarketplaceActionCounter; Sell?: null | MarketplaceActionCounter; Bid?: null | MarketplaceActionCounter; [key: string]: unknown; };
1940
2050
  type MarketplaceOfferView = { OfferID?: null | string; OfferType?: null | 'Listing' | 'Auction' | 'BuyOrder' | 'DirectTrade'; Status?: null | 'Active' | 'Completed' | 'Expired' | 'Cancelled' | 'Declined'; CreatorUserID?: null | string; CreatorPublicData?: null | UserPublicDataModel; TargetUserID?: null | string; GoodsType?: null | 'Item' | 'VirtualCurrency'; GoodsCatalogID?: null | string; GoodsItemID?: null | string; GoodsCurrencyID?: null | string; GoodsAmount?: null | number; GoodsInstances?: null | Array<UnstackableItemInstanceState>; Price?: null | ResourceBundle; Auction?: null | MarketplaceAuctionState; CreatedAt?: null | string; ExpiresAt?: null | string; [key: string]: unknown; };
@@ -1955,6 +2065,11 @@ type MarketplaceHistoryEntryView = { OfferID?: null | string; OfferType?: null |
1955
2065
  type MarketplaceHistoryResponse = { Entries?: null | Array<MarketplaceHistoryEntryView>; ContinuationToken?: null | string; [key: string]: unknown; };
1956
2066
  interface MarketplaceRequest extends BaseRequest {
1957
2067
  OfferID?: string;
2068
+ /**
2069
+ * Chosen way to pay (`PriceOption.OptionID`). Empty = the first option available on this
2070
+ * player's platform, which keeps single-price entities working unchanged.
2071
+ */
2072
+ SelectedOptionID?: string;
1958
2073
  /**
1959
2074
  * Item (default) or VirtualCurrency. For Create actions / MarketBuy / MarketSell: what's
1960
2075
  * traded. For browsing (GetOffersByItem/GetBuyOrders): a storefront filter.
@@ -2652,6 +2767,11 @@ interface ItemUpgradeRef {
2652
2767
  }
2653
2768
  interface ItemRequest extends BaseRequest {
2654
2769
  ItemInstanceID?: string;
2770
+ /**
2771
+ * Chosen way to pay (`PriceOption.OptionID`). Empty = the first option available on this
2772
+ * player's platform, which keeps single-price entities working unchanged.
2773
+ */
2774
+ SelectedOptionID?: string;
2655
2775
  Levels?: number;
2656
2776
  TargetLevel?: number;
2657
2777
  FodderInstanceIDs?: string[];
@@ -2679,8 +2799,8 @@ type NFTNetworkBinding = { ContractAddress?: null | string; TokenID?: null | str
2679
2799
  type NFTModel = { Networks?: null | Record<string, NFTNetworkBinding>; MetadataUrl?: null | string; [key: string]: unknown; };
2680
2800
  type ItemStats = { FlatBonuses?: null | Record<string, number>; PercentBonuses?: null | Record<string, number>; Power?: null | number; [key: string]: unknown; };
2681
2801
  type ItemEquipment = { MinCharacterLevel?: null | number; UseRequirements?: null | Record<string, number>; AllowedCharacterIDs?: null | Array<string>; AllowedSlotIDs?: null | Array<string>; [key: string]: unknown; };
2682
- type ItemUpgradeFodder = { ValuationMode?: null | 'FlatCount' | 'Merge' | 'InvestmentRefund'; MergeRatio?: null | number; Selection?: null | 'ProtectLeveled' | 'CheapestFirst' | 'ClientSelected'; [key: string]: unknown; };
2683
- type ItemUpgrade = { MaxLevel?: null | number; BaseCostResource?: null | ResourceConsume; CostScalingFactor?: null | number; FlatScalingFactor?: null | number; PercentScalingFactor?: null | number; PowerScalingFactor?: null | number; Fodder?: null | ItemUpgradeFodder; [key: string]: unknown; };
2802
+ type ItemUpgradeFodder = { ValuationMode?: null | 'FlatCount' | 'Merge' | 'InvestmentRefund'; WeightCurve?: null | ScalarCurveSpec; Selection?: null | 'ProtectLeveled' | 'CheapestFirst' | 'ClientSelected'; [key: string]: unknown; };
2803
+ type ItemUpgrade = { MaxLevel?: null | number; PriceOptions?: null | PriceOptions; CostCurve?: null | ScalarCurveSpec; FlatBonusCurve?: null | ScalarCurveSpec; PercentBonusCurve?: null | ScalarCurveSpec; PowerCurve?: null | ScalarCurveSpec; Fodder?: null | ItemUpgradeFodder; [key: string]: unknown; };
2684
2804
  type ItemMetadata = { RarityID?: null | string; CollectionID?: null | string; AuthorID?: null | string; [key: string]: unknown; };
2685
2805
  type ItemDefinition = { ItemID: string; CatalogID: string; ItemClass?: null | string; DisplayName?: null | string; Description?: null | string; Tags?: null | Array<string>; CustomData?: null | string; IsStackable?: null | boolean; IsTradable?: null | boolean; Weight?: null | number; AssetPaths?: null | Record<string, string>; NFT?: null | NFTModel; Stats?: null | ItemStats; Equipment?: null | ItemEquipment; Upgrade?: null | ItemUpgrade; Metadata?: null | ItemMetadata; ExpirationDurationSeconds?: null | number; [key: string]: unknown; };
2686
2806
  /** Catalog: a set of items of one thematic group. Key of `Items` is ItemID. */
@@ -2842,7 +2962,7 @@ declare const CraftType: {
2842
2962
  type CraftType = (typeof CraftType)[keyof typeof CraftType];
2843
2963
  type CraftSingleResult = { Index?: null | number; BurnedItemIDs?: null | Array<string>; RolledCollectionID?: null | string; UsedCollections?: null | Record<string, number>; Output?: null | ResourceEntry; };
2844
2964
  type CraftResponse = { ServerTimeUtc: string; CraftID: string; Type?: null | 'TradeUpRarity' | 'TradeUpCollection'; CraftedCount?: null | number; SelectedOptionID?: null | string; InputRarity?: null | string; OutputRarity?: null | string; Resources?: null | ResourceOperation; Results?: null | Array<CraftSingleResult>; };
2845
- type CraftDefinition = { CraftID?: null | string; Type?: null | 'TradeUpRarity' | 'TradeUpCollection'; CatalogID?: null | string; CollectionID?: null | string; InputRarityID?: null | string; OutputRarityID?: null | string; RequiredItemCount?: null | number; PriceOptions?: null | Record<string, { OptionID?: null | string; RequiredResources?: null | ResourceConsume; [key: string]: unknown; }>; [key: string]: unknown; };
2965
+ type CraftDefinition = { CraftID?: null | string; Type?: null | 'TradeUpRarity' | 'TradeUpCollection'; CatalogID?: null | string; CollectionID?: null | string; InputRarityID?: null | string; OutputRarityID?: null | string; RequiredItemCount?: null | number; PriceOptions?: null | PriceOptions; [key: string]: unknown; };
2846
2966
  /** The title's craft catalog (config), returned by getDefinitions(). */
2847
2967
  interface CraftDefinitions {
2848
2968
  Definitions?: Record<string, CraftDefinition> | null;
@@ -3335,7 +3455,7 @@ declare class UserData {
3335
3455
  patchClaimRewardState(claimID: string, newState: UserClaimRewardState): void;
3336
3456
  applyQuest(data: UserQuestState | null): void;
3337
3457
  patchQuestStatus(questID: string, cycleID: string | null | undefined, status: QuestStatus): void;
3338
- /** Claimed points-milestone state lives in the Quest event-token bucket (Milestone.ClaimedIDs). */
3458
+ /** Claimed points-milestone state lives in the Quest event-token bucket (one entry per milestone). */
3339
3459
  patchMilestoneClaimed(cycleID: string, milestoneID: string): void;
3340
3460
  /** Stores the authoritative points-track snapshot in the Quest event-token bucket. */
3341
3461
  patchQuestPointsTracks(tracks: Record<string, QuestPointsTrackView> | null | undefined): void;
@@ -3729,7 +3849,7 @@ declare class ItemService {
3729
3849
  * Upgrade an item instance's level, optionally consuming fodder instances. On success the
3730
3850
  * server-authoritative inventory is re-fetched (mirrors the C# GetUserInventory call).
3731
3851
  */
3732
- upgradeLevel(itemInstanceID: string, fodderInstanceIDs?: readonly string[]): Promise<OperationResult<UpgradeItemLevelResponse>>;
3852
+ upgradeLevel(itemInstanceID: string, fodderInstanceIDs?: readonly string[], selectedOptionID?: string): Promise<OperationResult<UpgradeItemLevelResponse>>;
3733
3853
  /**
3734
3854
  * Upgrade several item instances (+1 level each, or a multi-level/target-level upgrade per
3735
3855
  * ref) in one atomic operation. On success the server-authoritative inventory is re-fetched.
@@ -3741,7 +3861,17 @@ declare class ItemService {
3741
3861
  declare class StoreService {
3742
3862
  private readonly ctx;
3743
3863
  constructor(ctx: ClientContext);
3744
- purchase(offerID: string, count?: number): Promise<OperationResult<StorePurchaseResponse>>;
3864
+ /**
3865
+ * Buys an offer.
3866
+ *
3867
+ * `selectedOptionID` picks the way to pay; omitting it takes the first option available on this
3868
+ * platform, which is what keeps single-price offers working without any client change.
3869
+ * `payment` is required exactly when the chosen option is paid in a store — see CheckoutService.
3870
+ */
3871
+ purchase(offerID: string, count?: number, options?: {
3872
+ selectedOptionID?: string;
3873
+ payment?: PaymentProof;
3874
+ }): Promise<OperationResult<StorePurchaseResponse>>;
3745
3875
  /** Buy several offers in one atomic operation. Each ref is `{ OfferID, Count }`. */
3746
3876
  purchaseBatch(purchases: StorePurchaseRef[]): Promise<OperationResult<PurchaseBatchResponse>>;
3747
3877
  getDefinitions(): Promise<OperationResult<StoreDefinitions>>;
@@ -3749,12 +3879,181 @@ declare class StoreService {
3749
3879
  private baseRequest;
3750
3880
  }
3751
3881
 
3882
+ /** What happens after a receipt is verified. */
3883
+ declare const IapProductType: {
3884
+ readonly Consumable: "Consumable";
3885
+ readonly NonConsumable: "NonConsumable";
3886
+ readonly Subscription: "Subscription";
3887
+ };
3888
+ type IapProductType = (typeof IapProductType)[keyof typeof IapProductType];
3889
+ type IapProductRules = { StartUtc?: null | string; EndUtc?: null | string; Gate?: null | SegmentGate; Limits?: null | LimitSpec; [key: string]: unknown; };
3890
+ type IapProductDefinition = { ProductID?: null | string; Name?: null | string; Type?: null | 'Subscription' | 'Consumable' | 'NonConsumable'; Enabled?: null | boolean; StoreProductIDs?: null | Record<string, string>; Rewards?: null | ResourceGrant; PriceUsdCents?: null | number; Rules?: null | IapProductRules; Refund?: null | { ResourceAction?: null | string; RevokeEntitlement?: null | boolean; BlockFuturePurchases?: null | boolean; [key: string]: unknown; }; AssetPaths?: null | Record<string, string>; CustomParams?: null | Record<string, string>; [key: string]: unknown; };
3891
+ type PurchaseDefinitions = { Enabled?: null | boolean; Products?: null | Record<string, IapProductDefinition>; [key: string]: unknown; };
3892
+ type IapProductPurchaseState = { ProductID?: null | string; TotalPurchases?: null | number; DailyPurchases?: null | number; DailyResetUtc?: null | string; LastPurchasedAt?: null | string; Owned?: null | boolean; Refunded?: null | boolean; PurchaseBlocked?: null | boolean; [key: string]: unknown; };
3893
+ type UserPurchaseState = { Products?: null | Record<string, IapProductPurchaseState>; LifetimeSpendUsdCents?: null | number; [key: string]: unknown; };
3894
+ /** How the server treated the receipt. */
3895
+ declare const IapPurchaseStatus: {
3896
+ readonly Granted: "Granted";
3897
+ readonly Restored: "Restored";
3898
+ readonly AlreadyProcessed: "AlreadyProcessed";
3899
+ };
3900
+ type IapPurchaseStatus = (typeof IapPurchaseStatus)[keyof typeof IapPurchaseStatus];
3901
+ type PurchaseValidationResponse = { ServerTimeUtc: string; Store?: null | 'GooglePlay' | 'AppleAppStore'; ProductID?: null | string; TransactionID?: null | string; Status?: null | 'Granted' | 'Restored' | 'AlreadyProcessed'; Granted?: null | boolean; Quantity?: null | number; Resources?: null | ResourceOperation; ProductState?: null | IapProductPurchaseState; [key: string]: unknown; };
3902
+ type PurchaseValidationBatchResponse = { ServerTimeUtc: string; Items: Array<{ Id: string; Success: boolean; Error?: null | string; Data?: null | PurchaseValidationResponse; }>; Resources?: null | ResourceOperation; };
3903
+ interface PurchaseReceiptRef {
3904
+ Store?: IapStore;
3905
+ Receipt?: string;
3906
+ Signature?: string;
3907
+ /** Only used when the receipt itself is opaque (legacy Apple app receipt). */
3908
+ ProductID?: string;
3909
+ /** See {@link PurchaseRequest.TransactionID}. */
3910
+ TransactionID?: string;
3911
+ }
3912
+ interface PurchaseRequest extends BaseRequest {
3913
+ Store?: IapStore;
3914
+ Receipt?: string;
3915
+ Signature?: string;
3916
+ ProductID?: string;
3917
+ /**
3918
+ * Store transaction id. Apple only, and only when the receipt is opaque: a StoreKit 1 app
3919
+ * receipt carries no transaction id, while the App Store Server API answers by exactly that
3920
+ * id — so without this the server cannot verify such a purchase at all.
3921
+ *
3922
+ * Ignored when the id can be read from the receipt (StoreKit 2 signed transaction), and unused
3923
+ * for Google, where the purchase token inside the receipt plays the same role.
3924
+ */
3925
+ TransactionID?: string;
3926
+ /** ValidatePurchasesBatch: receipts to restore after a reinstall. */
3927
+ Receipts?: PurchaseReceiptRef[];
3928
+ }
3929
+ type IapStore = 'GooglePlay' | 'AppleAppStore';
3930
+ declare const PurchaseAction: {
3931
+ readonly GetDefinitions: "GetDefinitions";
3932
+ readonly GetUserState: "GetUserState";
3933
+ readonly ValidatePurchase: "ValidatePurchase";
3934
+ readonly ValidatePurchasesBatch: "ValidatePurchasesBatch";
3935
+ };
3936
+ type PurchaseAction = (typeof PurchaseAction)[keyof typeof PurchaseAction];
3937
+
3938
+ /**
3939
+ * Real-money purchases (IAP) — the catalog of store products and receipt validation.
3940
+ *
3941
+ * The money is paid in the store BEFORE the server hears about it, so a refusal here is an
3942
+ * incident, not "not enough funds": every refusal is recorded in the title's transaction ledger.
3943
+ * That is also why the client must hand every receipt it receives to `validatePurchase`, including
3944
+ * the ones the store re-delivers on startup — an order confirmed to the store but never delivered
3945
+ * to us is a purchase the player paid for and will never get.
3946
+ *
3947
+ * This service covers products that ARE the goods. When a store product is used as the *price* of
3948
+ * something else (an offer, a lootbox, a deal), the purchase goes through that module instead —
3949
+ * see `CheckoutService`.
3950
+ */
3951
+ declare class PurchaseService {
3952
+ private readonly ctx;
3953
+ constructor(ctx: ClientContext);
3954
+ /** Product catalog with per-player availability. */
3955
+ getDefinitions(): Promise<OperationResult<PurchaseDefinitions>>;
3956
+ /** Player's IAP state: per-product counters, ownership, lifetime spend. */
3957
+ getUserState(): Promise<OperationResult<UserPurchaseState>>;
3958
+ /**
3959
+ * Verifies a receipt and grants the product.
3960
+ *
3961
+ * `productID` is only a hint for stores whose receipt is opaque (legacy Apple app receipt): in
3962
+ * every other case the SKU is read from the receipt itself, because the client's claim about
3963
+ * what was bought cannot be trusted.
3964
+ *
3965
+ * `transactionID` is the other half of that same case — pass it whenever the store SDK reports
3966
+ * one alongside an opaque Apple receipt: it is the only handle the server can use to ask Apple
3967
+ * about the purchase.
3968
+ */
3969
+ validatePurchase(store: IapStore, receipt: string, options?: {
3970
+ signature?: string;
3971
+ productID?: string;
3972
+ transactionID?: string;
3973
+ }): Promise<OperationResult<PurchaseValidationResponse>>;
3974
+ /**
3975
+ * Restores purchases after a reinstall: several receipts in one call.
3976
+ *
3977
+ * Non-consumables come back as `Restored` (ownership confirmed, nothing granted twice), while a
3978
+ * consumable that never reached us is granted now.
3979
+ */
3980
+ validatePurchasesBatch(receipts: PurchaseReceiptRef[]): Promise<OperationResult<PurchaseValidationBatchResponse>>;
3981
+ }
3982
+
3983
+ /** What a price option needs before it can be paid. */
3984
+ interface PaymentRequirement {
3985
+ /** The option itself — pass its `OptionID` to the module that sells the entity. */
3986
+ option: PriceOption;
3987
+ /** `store` = a receipt is required; `resources` = the server charges the player's balances. */
3988
+ kind: "store" | "resources";
3989
+ /** IAP product to buy in the store. Set only when `kind` is `"store"`. */
3990
+ productID?: string;
3991
+ /** Crypto shortfall, if this option is paid with an on-chain currency the player is short on. */
3992
+ shortfall?: CryptoShortfall;
3993
+ }
3994
+ /** How much of a crypto currency is missing to pay for an option. */
3995
+ interface CryptoShortfall {
3996
+ currencyID: string;
3997
+ /** Price of the option in that currency. */
3998
+ required: number;
3999
+ /** What the player currently holds in-game. */
4000
+ available: number;
4001
+ /** `required - available` — what a deposit has to cover. */
4002
+ missing: number;
4003
+ }
4004
+ /**
4005
+ * Helper layer over prices: which options this client may show, what each of them needs, and how
4006
+ * much crypto is missing to pay one.
4007
+ *
4008
+ * It deliberately does NOT buy anything. Buying belongs to the module that owns the entity
4009
+ * (`client.store.purchase`, `client.lootbox.open`, …), because only that module knows the rest of
4010
+ * the request — count, target ids, idempotency key. This service answers the question that comes
4011
+ * *before* the call: which option, and what does it need.
4012
+ *
4013
+ * Depositing crypto lives in `@idosgames/wallet`: `core` never imports a wallet stack, so a game
4014
+ * that pays only with in-game currencies does not ship one.
4015
+ */
4016
+ declare class CheckoutService {
4017
+ private readonly ctx;
4018
+ constructor(ctx: ClientContext);
4019
+ /** Platform this client reports to the server. */
4020
+ get platform(): ClientPlatform;
4021
+ /**
4022
+ * Options this client may show, in the order the server would pick them (by `OptionID`).
4023
+ *
4024
+ * ⚠ Filtering here is what the player SEES. The server re-checks the platform when charging, so
4025
+ * a hidden option cannot be paid anyway — but showing one that a store forbids is itself a
4026
+ * policy violation, which is why the filter exists on the client at all.
4027
+ */
4028
+ availableOptions(options: PriceOptions | null | undefined): PriceOption[];
4029
+ /** Is this option offered on the current platform? Empty `AllowedPlatforms` = everywhere. */
4030
+ isAvailable(option: PriceOption | null | undefined): boolean;
4031
+ /**
4032
+ * What the option needs before it can be paid: a store receipt, or just the player's balances.
4033
+ *
4034
+ * For a crypto price it also reports the shortfall — the number a deposit has to cover. The
4035
+ * balance comes from the cached player state, so it is as fresh as the last server response.
4036
+ */
4037
+ requirementOf(option: PriceOption): PaymentRequirement;
4038
+ /** IAP product this option is paid with, or `null` when it is a resource price. */
4039
+ storeProductOf(cost: ResourceConsume | null | undefined): string | null;
4040
+ /**
4041
+ * Crypto shortfall of a price, or `null` when the player can already afford it.
4042
+ *
4043
+ * Only the first crypto entry is reported: a price mixing two on-chain currencies would need two
4044
+ * deposits, and no wallet flow does that in one go — such a price is a config mistake, not a
4045
+ * case to paper over here.
4046
+ */
4047
+ cryptoShortfallOf(cost: ResourceConsume | null | undefined): CryptoShortfall | null;
4048
+ private cryptoBalance;
4049
+ }
4050
+
3752
4051
  /** Port of LootboxService.cs. */
3753
4052
  declare class LootboxService {
3754
4053
  private readonly ctx;
3755
4054
  constructor(ctx: ClientContext);
3756
4055
  getDefinitions(): Promise<OperationResult<LootboxDefinitionsResponse>>;
3757
- open(lootboxID: string, count: number, selectedOptionID: number): Promise<OperationResult<LootboxOpenResponse>>;
4056
+ open(lootboxID: string, count: number, selectedOptionID?: string, payment?: PaymentProof): Promise<OperationResult<LootboxOpenResponse>>;
3758
4057
  private baseRequest;
3759
4058
  }
3760
4059
 
@@ -4085,7 +4384,16 @@ declare class CharacterService {
4085
4384
  constructor(ctx: ClientContext);
4086
4385
  getCharacterDefinitions(): Promise<OperationResult<CharacterDefinitions>>;
4087
4386
  getUserCharacters(): Promise<OperationResult<GetCharactersResponse>>;
4088
- unlockCharacter(characterID: string): Promise<OperationResult<UnlockCharacterResponse>>;
4387
+ /**
4388
+ * Unlocks a character.
4389
+ *
4390
+ * `options.selectedOptionID` picks the way to pay; omitting it takes the first option available
4391
+ * on this platform. `options.payment` is required exactly when that option is paid in a store.
4392
+ */
4393
+ unlockCharacter(characterID: string, options?: {
4394
+ selectedOptionID?: string;
4395
+ payment?: PaymentProof;
4396
+ }): Promise<OperationResult<UnlockCharacterResponse>>;
4089
4397
  upgradeStatLevel(characterID: string, statID: string, opts?: UpgradeLevelsOptions): Promise<OperationResult<UpgradeStatLevelResponse>>;
4090
4398
  upgradeCharacterLevel(characterID: string, opts?: UpgradeLevelsOptions): Promise<OperationResult<UpgradeCharacterLevelResponse>>;
4091
4399
  equipItems(characterID: string, itemsToEquip: EquipSlotPair[]): Promise<OperationResult<EquipItemsResponse>>;
@@ -4127,7 +4435,7 @@ declare class CharacterService {
4127
4435
  declare class MatchService {
4128
4436
  private readonly ctx;
4129
4437
  constructor(ctx: ClientContext);
4130
- createMatch(entry: ResourceBundle, ruleID: string, characterID?: string, battleStrategy?: BattleStepConfig[], targetUserID?: string): Promise<OperationResult<CreateMatchResponse>>;
4438
+ createMatch(entry: ResourceBundle, ruleID: string, characterID?: string, battleStrategy?: BattleStepConfig[], targetUserID?: string, selectedOptionID?: string): Promise<OperationResult<CreateMatchResponse>>;
4131
4439
  /** Edit an open match's own fields (e.g. privacy) before anyone joins. */
4132
4440
  updateMatch(matchID: string, fields?: {
4133
4441
  targetUserID?: string;
@@ -4169,7 +4477,10 @@ declare class CollectionService {
4169
4477
  * ceiling (pack type → module setting → platform default); the response reports what actually
4170
4478
  * happened in `OpenedCount` and breaks it down per pack in `Packs`.
4171
4479
  */
4172
- openPack(collectionID: string, packTypeID: string, count?: number): Promise<OperationResult<OpenPackResponse>>;
4480
+ openPack(collectionID: string, packTypeID: string, count?: number, options?: {
4481
+ selectedOptionID?: string;
4482
+ payment?: PaymentProof;
4483
+ }): Promise<OperationResult<OpenPackResponse>>;
4173
4484
  /** Opens `count` chests in ONE atomic operation. See openPack() for the multi-open contract. */
4174
4485
  openCollectionChest(collectionID: string, collectionChestID: string, count?: number): Promise<OperationResult<OpenCollectionChestResponse>>;
4175
4486
  useCollectibleJoker(collectionID: string, collectibleID: string): Promise<OperationResult<UseCollectibleJokerResponse>>;
@@ -4202,7 +4513,7 @@ declare class CoopEventService {
4202
4513
  * object, and the remainder is neither rolled nor billed — check `SpinsUsed` against
4203
4514
  * `RequestedSpins`. `count` is clamped server-side to `MaxSpinsPerCall`.
4204
4515
  */
4205
- spin(coopChainID: string, groupID: string, count?: number): Promise<OperationResult<CoopSpinResponse>>;
4516
+ spin(coopChainID: string, groupID: string, count?: number, selectedOptionID?: string): Promise<OperationResult<CoopSpinResponse>>;
4206
4517
  claimObjectReward(groupID: string): Promise<OperationResult<CoopClaimRewardResponse>>;
4207
4518
  claimGrandPrize(groupID: string): Promise<OperationResult<CoopClaimRewardResponse>>;
4208
4519
  leaveGroup(groupID?: string): Promise<OperationResult<CoopLeaveGroupResponse>>;
@@ -4217,7 +4528,17 @@ declare class DealOfferService {
4217
4528
  getUserState(): Promise<OperationResult<UserDealOffersStateResponse>>;
4218
4529
  getActiveDeals(): Promise<OperationResult<GetActiveDealsResponse>>;
4219
4530
  dismissDeal(slotID: string): Promise<OperationResult<DismissDealResponse>>;
4220
- executeNode(slotID: string, nodeID: string, externalRefID?: string): Promise<OperationResult<ExecuteNodeResponse>>;
4531
+ /**
4532
+ * Executes a node of an active deal.
4533
+ *
4534
+ * `options.selectedOptionID` picks the way to pay the node; `options.payment` carries the store
4535
+ * receipt and is required exactly when that option is paid in a store — the main monetization
4536
+ * path of deal offers.
4537
+ */
4538
+ executeNode(slotID: string, nodeID: string, externalRefID?: string, options?: {
4539
+ selectedOptionID?: string;
4540
+ payment?: PaymentProof;
4541
+ }): Promise<OperationResult<ExecuteNodeResponse>>;
4221
4542
  recordShow(slotID: string): Promise<OperationResult<RecordShowResponse>>;
4222
4543
  claimMilestone(slotID: string, milestoneID: string): Promise<OperationResult<ClaimDealMilestoneResponse>>;
4223
4544
  claimMilestonesBatch(slotID: string, milestoneIDs: string[]): Promise<OperationResult<ClaimDealMilestonesBatchResponse>>;
@@ -4266,7 +4587,10 @@ declare class TimedBoostService {
4266
4587
  getDefinitions(): Promise<OperationResult<TimedBoostDefinitions>>;
4267
4588
  getActive(): Promise<OperationResult<GetActiveTimedBoostsResponse>>;
4268
4589
  getActiveWindows(): Promise<OperationResult<GetActiveBoostWindowsResponse>>;
4269
- activate(boostID: string): Promise<OperationResult<ActivateTimedBoostResponse>>;
4590
+ activate(boostID: string, options?: {
4591
+ selectedOptionID?: string;
4592
+ payment?: PaymentProof;
4593
+ }): Promise<OperationResult<ActivateTimedBoostResponse>>;
4270
4594
  cleanupExpired(): Promise<OperationResult<SuccessResponse>>;
4271
4595
  private baseRequest;
4272
4596
  }
@@ -4357,7 +4681,7 @@ declare class GameLoopService {
4357
4681
  boardLoopRaid(digIndex: number, existingRelatedEntityID?: string): Promise<OperationResult<RaidResponse>>;
4358
4682
  boardLoopRaidFast(digIndices: number[]): Promise<OperationResult<RaidResponse>>;
4359
4683
  boardLoopBuild(buildingIndex: number): Promise<OperationResult<BuildResponse>>;
4360
- boardSpecialChoose(choiceID: string): Promise<OperationResult<SpecialChooseResponse>>;
4684
+ boardSpecialChoose(choiceID: string, selectedOptionID?: string): Promise<OperationResult<SpecialChooseResponse>>;
4361
4685
  boardSpecialApplyMultiplier(existingRelatedEntityID?: string): Promise<OperationResult<SpecialApplyMultiplierResponse>>;
4362
4686
  boardSpecialClaim(): Promise<OperationResult<SpecialClaimResponse>>;
4363
4687
  /** Fetch this player's Community Chest state (active group, if any) + seconds remaining. */
@@ -4417,7 +4741,7 @@ declare class MarketplaceService {
4417
4741
  getBuyOrders(itemID?: string, continuationToken?: string, pageSize?: number): Promise<OperationResult<MarketplaceBrowseResponse>>;
4418
4742
  getMyState(): Promise<OperationResult<MarketplaceMyStateResponse>>;
4419
4743
  getHistory(continuationToken?: string, pageSize?: number): Promise<OperationResult<MarketplaceHistoryResponse>>;
4420
- createListing(itemID: string, catalogID: string, goodsAmount: number, priceBundle: ResourceBundle, durationHours: number, itemInstanceIDs?: string[]): Promise<OperationResult<MarketplaceCreateOfferResponse>>;
4744
+ createListing(itemID: string, catalogID: string, goodsAmount: number, priceBundle: ResourceBundle, durationHours: number, itemInstanceIDs?: string[], selectedOptionID?: string): Promise<OperationResult<MarketplaceCreateOfferResponse>>;
4421
4745
  cancelListing(offerID: string): Promise<OperationResult<MarketplaceSettlementResponse>>;
4422
4746
  buy(offerID: string): Promise<OperationResult<MarketplaceSettlementResponse>>;
4423
4747
  /** Immediate-or-cancel market buy against the best matching active Listing (no resting order left behind on miss). */
@@ -4439,6 +4763,8 @@ declare class MarketplaceService {
4439
4763
  bidCatalogID?: string;
4440
4764
  bidItemID?: string;
4441
4765
  itemInstanceIDs?: string[];
4766
+ /** Way to pay the listing fee (`PriceOption.OptionID`). */
4767
+ selectedOptionID?: string;
4442
4768
  }): Promise<OperationResult<MarketplaceCreateOfferResponse>>;
4443
4769
  placeBid(offerID: string, bidAmount: number): Promise<OperationResult<MarketplacePlaceBidResponse>>;
4444
4770
  /** Role-dependent lazy finalization: winner claims goods, seller claims proceeds (net). */
@@ -4570,6 +4896,17 @@ declare class StoreApi {
4570
4896
  getUserState(request: StoreRequest): Promise<OperationResult<UserStoreState>>;
4571
4897
  }
4572
4898
 
4899
+ /** Thin transport wrapper for the Purchase feature (port of PurchaseAPI.cs). */
4900
+ declare class PurchaseApi {
4901
+ private readonly ctx;
4902
+ constructor(ctx: ClientContext);
4903
+ private send;
4904
+ getDefinitions(request: PurchaseRequest): Promise<OperationResult<PurchaseDefinitions>>;
4905
+ getUserState(request: PurchaseRequest): Promise<OperationResult<UserPurchaseState>>;
4906
+ validatePurchase(request: PurchaseRequest): Promise<OperationResult<PurchaseValidationResponse>>;
4907
+ validatePurchasesBatch(request: PurchaseRequest): Promise<OperationResult<PurchaseValidationBatchResponse>>;
4908
+ }
4909
+
4573
4910
  /** Thin transport wrapper for the Lootbox feature (port of LootboxAPI.cs). */
4574
4911
  declare class LootboxApi {
4575
4912
  private readonly ctx;
@@ -4982,6 +5319,11 @@ declare class MultiplayerApi {
4982
5319
  interface IDosGamesClientConfig extends SettingsInput {
4983
5320
  /** Platform adapter (defaults to BrowserPlatformAdapter). Inject NoopPlatformAdapter in tests. */
4984
5321
  platform?: PlatformAdapter;
5322
+ /**
5323
+ * Platform reported to the server (`X-IG-Platform`). Auto-detected when omitted; set it
5324
+ * explicitly in a native wrapper — the wrapper knows for certain, sniffing does not.
5325
+ */
5326
+ clientPlatform?: ClientPlatform;
4985
5327
  /** Custom fetch (defaults to global fetch). Inject a mock in tests. */
4986
5328
  fetch?: typeof fetch;
4987
5329
  /** Override the per-endpoint throttle window (ms). Default 600. */
@@ -4996,6 +5338,8 @@ declare class ClientContext {
4996
5338
  readonly settings: IDosGamesSettings;
4997
5339
  readonly emitter: TypedEmitter<SdkEvents>;
4998
5340
  readonly platform: PlatformAdapter;
5341
+ /** Platform reported to the server; services read it to filter payment options. */
5342
+ readonly clientPlatform: ClientPlatform;
4999
5343
  readonly data: IDosGamesData;
5000
5344
  readonly authStore: AuthStore;
5001
5345
  readonly api: {
@@ -5004,6 +5348,7 @@ declare class ClientContext {
5004
5348
  currency: CurrencyApi;
5005
5349
  item: ItemApi;
5006
5350
  store: StoreApi;
5351
+ purchase: PurchaseApi;
5007
5352
  lootbox: LootboxApi;
5008
5353
  reward: RewardApi;
5009
5354
  quest: QuestApi;
@@ -5036,6 +5381,8 @@ declare class ClientContext {
5036
5381
  readonly currency: CurrencyService;
5037
5382
  readonly item: ItemService;
5038
5383
  readonly store: StoreService;
5384
+ readonly purchase: PurchaseService;
5385
+ readonly checkout: CheckoutService;
5039
5386
  readonly lootbox: LootboxService;
5040
5387
  readonly reward: RewardService;
5041
5388
  readonly quest: QuestService;
@@ -5082,6 +5429,13 @@ declare class IDosGamesClient {
5082
5429
  get currency(): CurrencyService;
5083
5430
  get item(): ItemService;
5084
5431
  get store(): StoreService;
5432
+ /** Real-money purchases: the store product catalog and receipt validation. */
5433
+ get purchase(): PurchaseService;
5434
+ /**
5435
+ * Price options: what this client may show, what each option needs, how much crypto is missing.
5436
+ * Buying itself stays in the module that owns the entity — see the service docs.
5437
+ */
5438
+ get checkout(): CheckoutService;
5085
5439
  get lootbox(): LootboxService;
5086
5440
  get reward(): RewardService;
5087
5441
  get quest(): QuestService;
@@ -5152,6 +5506,70 @@ declare function beginSsoRedirect(options: {
5152
5506
  ssoUrl?: string;
5153
5507
  }): void;
5154
5508
 
5509
+ /**
5510
+ * Shape of a scalar curve: how a value changes from step to step.
5511
+ *
5512
+ * No shape reads another shape's field. A filled `PerStep` under `Shape: "Geometric"` is
5513
+ * simply ignored — the platform never validates a config semantically, because a
5514
+ * publisher's typo must not break live players.
5515
+ */
5516
+ declare const CurveShape: {
5517
+ /** Value does not change with the step. Same behaviour as an unset curve. */
5518
+ readonly Flat: "Flat";
5519
+ /** Additive in the value's own units: `base + PerStep * (step - firstStep)`. */
5520
+ readonly PerStep: "PerStep";
5521
+ /** Additive share of the base: `base * (1 + PerStepRate * (step - firstStep))`. */
5522
+ readonly PerStepRate: "PerStepRate";
5523
+ /** Compounding: `base * (1 + GrowthRate) ** (step - firstStep)`. */
5524
+ readonly Geometric: "Geometric";
5525
+ /** Table of multipliers over the base: `base * interpolate(Points, step)`. */
5526
+ readonly Table: "Table";
5527
+ /** Table of absolute values: `interpolate(Points, step)`; the base is ignored. */
5528
+ readonly TableAbsolute: "TableAbsolute";
5529
+ };
5530
+ type CurveShape = (typeof CurveShape)[keyof typeof CurveShape];
5531
+ /** How a value between two table points is computed. */
5532
+ declare const CurveInterpolation: {
5533
+ /** Hold the previous point's value until the next one. Behaviour of an unset field. */
5534
+ readonly Step: "Step";
5535
+ /** Linear between adjacent points. */
5536
+ readonly Linear: "Linear";
5537
+ /** Geometric between adjacent points: `lo * (hi / lo) ** t`. */
5538
+ readonly Geometric: "Geometric";
5539
+ };
5540
+ type CurveInterpolation = (typeof CurveInterpolation)[keyof typeof CurveInterpolation];
5541
+ type CurvePoint = { AtStep?: null | number; Value?: null | number; [key: string]: unknown; };
5542
+ type ScalarCurveSpec = { Base?: null | number; Shape?: null | 'Flat' | 'PerStep' | 'PerStepRate' | 'Geometric' | 'Table' | 'TableAbsolute'; PerStep?: null | number; PerStepRate?: null | number; GrowthRate?: null | number; Points?: null | Array<CurvePoint>; Interpolation?: null | 'Geometric' | 'Step' | 'Linear'; TailGrowthRate?: null | number; MinResult?: null | number; MaxResult?: null | number; [key: string]: unknown; };
5543
+
5544
+ /**
5545
+ * Evaluator for scalar curves — the client-side port of the backend's `CurveEvaluator`
5546
+ * (`API/Core/Formula/Services/CurveEvaluator.cs`). Pure, no allocation on the
5547
+ * non-table shapes: a curve is evaluated per stat per fighter.
5548
+ *
5549
+ * An unset curve is the IDENTITY: `evaluateCurve(null, base, n) === base`. That is not
5550
+ * null-safety, it is the rule of the module — an empty field does nothing.
5551
+ *
5552
+ * `firstStep` is supplied by the CALLING code, not by the publisher: a stat level is
5553
+ * numbered from 0 (a missing stat is level 0, worth exactly the base), while prices,
5554
+ * item levels and ranks are numbered from 1. Getting it wrong shifts every value by one
5555
+ * step of the curve.
5556
+ */
5557
+ declare function evaluateCurve(spec: ScalarCurveSpec | null | undefined, baseValue: number, step: number, firstStep?: number): number;
5558
+ /** The curve as a multiplier: the same evaluation from a base of 1. */
5559
+ declare function curveMultiplier(spec: ScalarCurveSpec | null | undefined, step: number, firstStep?: number): number;
5560
+ /** The curve is set and able to change something. */
5561
+ declare function isCurveConfigured(spec: ScalarCurveSpec | null | undefined): boolean;
5562
+ /**
5563
+ * The platform's single rounding convention, ported for values the client shows BEFORE
5564
+ * the server confirms them (an upgrade cap, a level price): UP, once, to the total.
5565
+ *
5566
+ * The value is first magnetised to the nearest integer: without it `100 * (1 - 0.1)`
5567
+ * gives `90.000000000000014` in floating point, and rounding up turns that into 91 —
5568
+ * every rate would silently overcharge by one. The threshold is relative, because on
5569
+ * large sums the floating-point step is already coarser than an absolute epsilon.
5570
+ */
5571
+ declare function roundAmount(value: number): number;
5572
+
5155
5573
  /** enum AdType — ad format. */
5156
5574
  declare const AdType: {
5157
5575
  readonly Banner: "Banner";
@@ -5180,7 +5598,20 @@ type PremiumAdReduction = { MinPremiumTier?: null | number; RequiredPremiumID?:
5180
5598
  type AdConsentSettings = { RequirePersonalizedAdsConsent?: null | boolean; RequireTrackingConsent?: null | boolean; CurrentPolicyVersion?: null | string; RegulatedRegions?: null | Array<string>; [key: string]: unknown; };
5181
5599
  type AdVerificationSettings = { RequireServerSideVerification?: null | boolean; PendingRequestTtlSeconds?: null | number; MaxPendingRequestsPerUser?: null | number; ProviderPublicKeys?: null | Record<string, string>; [key: string]: unknown; };
5182
5600
  type AdUnitConfig = { AndroidUnitID?: null | string; IosUnitID?: null | string; WebUnitID?: null | string; Type?: null | 'RewardedVideo' | 'Banner' | 'Interstitial' | 'RewardedInterstitial' | 'AppOpen' | 'Native'; [key: string]: unknown; };
5183
- type AdProviderDefinition = { ProviderID?: null | string; Enabled?: null | boolean; Priority?: null | number; AndroidAppID?: null | string; IosAppID?: null | string; WebAppID?: null | string; Units?: null | Record<string, AdUnitConfig>; [key: string]: unknown; };
5601
+ /**
5602
+ * enum AdProviderKind — which mediation vendor a provider entry describes.
5603
+ *
5604
+ * This is the one field a client actually acts on: the ProviderID is a free-form string the
5605
+ * publisher types, so a game deciding which mediation SDK to boot must switch on the Kind,
5606
+ * never on the id. Absent = AppLovinMax (the backend's enum value 0 and its migration
5607
+ * contract — titles configured before the field existed must keep working).
5608
+ */
5609
+ declare const AdProviderKind: {
5610
+ readonly AppLovinMax: "AppLovinMax";
5611
+ readonly LevelPlay: "LevelPlay";
5612
+ };
5613
+ type AdProviderKind = (typeof AdProviderKind)[keyof typeof AdProviderKind];
5614
+ type AdProviderDefinition = { ProviderID?: null | string; Kind?: null | 'AppLovinMax' | 'LevelPlay'; Enabled?: null | boolean; Priority?: null | number; AndroidAppID?: null | string; IosAppID?: null | string; WebAppID?: null | string; Units?: null | Record<string, AdUnitConfig>; [key: string]: unknown; };
5184
5615
  type AdvertisingDefinitions = { Enabled?: null | boolean; Placements?: null | Record<string, AdPlacementDefinition>; Providers?: null | Record<string, AdProviderDefinition>; RewardedVideo?: null | RewardedVideoSettings; Interstitial?: null | InterstitialSettings; Banner?: null | BannerSettings; AppOpen?: null | AppOpenSettings; FrequencyCapping?: null | AdFrequencyCappingSettings; PremiumAdReductions?: null | Array<PremiumAdReduction>; Consent?: null | AdConsentSettings; Verification?: null | AdVerificationSettings; [key: string]: unknown; };
5185
5616
  type AdCreditsData = { RewardedVideoCredit?: null | number; TotalEarned?: null | number; TotalSpent?: null | number; [key: string]: unknown; };
5186
5617
  type AdPlacementUserState = { PlacementID?: null | string; LastShownAt?: null | string; LastCompletedAt?: null | string; TotalImpressions?: null | number; TotalCompletions?: null | number; ConsecutiveFailures?: null | number; [key: string]: unknown; };
@@ -5271,4 +5702,4 @@ declare class LocalizationCache {
5271
5702
  private versionsKey;
5272
5703
  }
5273
5704
 
5274
- export { type AcceptTradeOfferResponse, type ActivateReferralCodeResponse, type ActivateTimedBoostResponse, type ActiveBoostWindowInfo, type ActiveCoopEventInfo, type ActiveDealSlotInfo, type ActiveEventInfo, type ActiveSeasonInfo, type ActiveTimedBoost, type AdConsentSettings, type AdConsentState, type AdCreditsData, type AdDailyData, type AdFraudFlags, type AdFrequencyCappingSettings, type AdPendingRequest, type AdPlacementDefinition, type AdPlacementUserState, type AdProviderDefinition, type AdSessionData, AdType, type AdUnitConfig, type AdVerificationSettings, type AddQuestProgressResponse, type AdvertisingDefinitions, type AppOpenSettings, AttackOutcome, type AttackResponse, type AttributionInput, type AuthContext, AuthType, AuthenticationAction, type AuthenticationRequest, AuthenticationService, BannerPosition, type BannerSettings, type BaseRequest, type BatchDeleteUserCustomDataResponse, type BatchGetPublicUserCustomDataResponse, type BatchItemResult, type BatchResponse, type BatchSetUserCustomDataResponse, type BattleResult, type BattleStepConfig, type BlockchainAccountSafetyPolicy, BlockchainAction, type BlockchainConfigResponse, type BlockchainDefinitions, type BlockchainNetworkDefinition, BlockchainNetworkType, type BlockchainNftCollectionBinding, BlockchainOperationCategory, type BlockchainRequest, BlockchainService, type BlockchainStats, type BlockchainSystemState, BlockchainTransactionStatus, BlockchainTransactionType, type BoardLoopDefinition, type BoardLoopState, type BoardPendingInteraction, type BoardRollResponse, BodyPart, type BoostTriggerCounter, BoostWindowKind, BroadcastStatus, type BuildResponse, type BuildingState, type CancelMatchResponse, type CancelTradeOfferResponse, type ChangeUsernameResponse, CharacterAction, type CharacterClassification, type CharacterDefinition, type CharacterDefinitions, type CharacterEquipment, type CharacterEquipmentSlot, type CharacterIdentity, type CharacterLevelDefinition, type CharacterLevelRef, type CharacterModel, type CharacterRequest, CharacterService, type CharacterStatRef, type CharacterUnequipResult, type CharacterUnlock, type ClaimAllRewardsBatchResponse, type ClaimAllRewardsResult, type ClaimComebackRewardResponse, type ClaimCycleRewardResponse, type ClaimCycleRewardsBatchResponse, type ClaimDailyRewardResponse, type ClaimDealMilestoneResponse, type ClaimDealMilestonesBatchResponse, type ClaimGrandPrizeResponse, type ClaimGroupCompletionRewardResponse, type ClaimInviteRewardResponse, type ClaimInviteRewardsBatchResponse, type ClaimLeaderboardMilestoneResponse, type ClaimLeaderboardMilestonesBatchResponse, type ClaimMilestoneRewardResponse, type ClaimMilestoneRewardsBatchResponse, type ClaimMilestonesBatchResponse, type ClaimQuestRewardResponse, type ClaimQuestRewardsBatchResponse, type ClaimRewardResponse, type ClaimSetRewardResponse, type ClaimSetRewardsBatchResponse, type ClaimTierRewardResponse, type ClaimTierRewardsBatchResponse, type ClientState, CloudCodeAction, CloudCodeErrorCode, type CloudCodeLogEntry, CloudCodeLogLevel, type CloudCodeRequest, CloudCodeRevisionSelection, CloudCodeService, type CodeExecutionError, type CollectIdleAccrualResponse, CollectionAction, type CollectionDefinitions, type CollectionGlobalSettings, type CollectionRequest, CollectionService, type CollectionSetRef, type CollectionTradeOfferDocument, CommissionSink, type CommunityChestClaimResponse, type CommunityChestGroupDocument, type CommunityChestGroupStateResponse, type CommunityChestHistoryEntry, type CommunityChestLeaveResponse, type CommunityChestMember, CommunityChestMemberStatus, type CommunityChestSharedState, CommunityChestStatus, type CommunityChestUserStateResponse, type ConfirmWithdrawalResponse, type ConversionDailyCounter, ConversionRateMode, type ConversionTarget, type ConvertResponse, type CoopBuildObjectsMemberState, type CoopBuildObjectsState, type CoopClaimRewardResponse, CoopEventAction, type CoopEventDefinitions, type CoopEventRequest, CoopEventService, type CoopGroupDocument, type CoopGroupMember, type CoopGroupStateResponse, CoopGroupStatus, type CoopLeaveGroupResponse, CoopMemberStatus, type CoopPartnerObjectState, type CoopSpinResponse, type CoopUserStateResponse, CraftAction, type CraftDefinitions, type CraftDefinitionsResponse, type CraftRequest, type CraftResponse, CraftService, type CraftSingleResult, CraftType, type CreateMatchResponse, type CryptoConvertResponse, type CryptoCurrencyDefinition, type CryptoCurrencyPermissions, type CryptoLimits, type CryptoNetworkBinding, CurrencyAction, type CurrencyAudit, type CurrencyConversion, type CurrencyDefinitions, type CurrencyRequest, CurrencyService, CurrencyStatus, CurrencyType, CustomDataBucket, CustomDataValueType, CustomDataWriter, type CyclicSchedule, DEFAULT_BASE_URL, type DailyUsageRecord, type DealMilestoneProgressInfo, DealNodeRuntimeStatus, DealOfferAction, DealOfferActivationStatus, type DealOfferDefinitions, type DealOfferRequest, DealOfferService, type DealOffersDefinitionResponse, type DeclineTradeOfferResponse, type DepositNFTResponse, type DepositTokenResponse, type DismissDealResponse, type DonationResponse, EnvelopeType, type EquipItemsResponse, type EquipSlotPair, type EquipmentPreset, type EquipmentSlot, type EquippedItem, type EventMap, type EventMilestoneClaimResponse, type EventTokenAddress, type EventTokenConversion, type EventTokenDefinition, type EventTokenGrantResponse, type EventTokenOperation, type EventTokenSpendResponse, EventTokenType, type ExecuteCloudCodeResponse, type ExecuteNodeResponse, type ExperimentDefinition, type ExperimentDefinitions, type ExperimentVariant, type ExperimentVariantCondition, type FodderConsumedEntry, FodderSelectionMode, FodderValuationMode, type FriendActionResponse, FriendActionStatus, type FriendPublicProfile, type FriendsListResponse, GameLoopAction, type GameLoopDefinitions, type GameLoopRequest, GameLoopService, type GetActiveBoostWindowsResponse, type GetActiveDealsResponse, type GetActiveEventsResponse, type GetActiveTimedBoostsResponse, type GetCharactersResponse, type GetLeaderboardResponse, type GetLeaderboardsBatchResponse, type GetMatchDefinitionsResponse, type GetMilestoneRewardMultiplierResponse, type GetMyProgressResponse, type GetMyUserCustomDataResponse, type GetOverviewBatchResponse, type GetProgressBatchResponse, type GetPublicTitleDataResponse, type GetPublicUserCustomDataResponse, type GetTradeOffersResponse, type GetUserQuestStateResponse, type GetUserTutorialStateResponse, type GrantStatusTokensResponse, type GrantTokensBatchResponse, type GrantedCollectible, type HeistCell, IDosGamesClient, type IDosGamesClientConfig, IDosGamesData, type IDosGamesSettings, type IceServer, type InstantBattleDefinitions, type InstantBattleResponse, type InstantBattleRule, type InterstitialSettings, type InventoryDelta, ItemAction, type ItemCatalog, type ItemDefinition, type ItemDefinitions, type ItemEquipment, type ItemMetadata, type ItemRequest, ItemService, type ItemStats, type ItemTotals, type ItemUpgrade, type ItemUpgradeFodder, type ItemUpgradeRef, type JsonValue, KeyValueStorage, KycStatus, KycTier, LeaderboardAction, type LeaderboardDefinitions, type LeaderboardMilestoneRef, type LeaderboardOverview, type LeaderboardRequest, type LeaderboardScoreRef, LeaderboardService, type LeaderboardUserEntry, type LeaveRoomResponse, type LevelsPreset, type LimitSpec, type LinkedWalletInfo, type Listener, LocalizationAction, LocalizationCache, type LocalizationDefinitions, type LocalizationLocaleDefinition, type LocalizationLocaleInfo, type LocalizationManifestResponse, LocalizationMissingKeyMode, type LocalizationParams, type LocalizationRequest, LocalizationService, type LocalizationState, type LocalizationTableRef, type LocalizationTableResponse, LootboxAction, type LootboxAmountRange, type LootboxDefinitions, type LootboxDefinitionsResponse, type LootboxGlobalSettings, type LootboxOpenResponse, type LootboxPityRule, type LootboxPityTriggerResponse, type LootboxRequest, type LootboxRewardRoll, type LootboxRewardSlot, LootboxService, type LootboxSupplyRule, type MailboxBroadcastDocument, type MailboxDefinition, type MailboxMessageDocument, MailboxMessageSource, MailboxMessageStatus, type MailboxMessageTypeDefinition, type MailboxSegmentDefinition, MarketGoodsType, MarketOfferStatus, MarketOfferType, MarketplaceAction, type MarketplaceActionCounter, type MarketplaceAuctionSettings, type MarketplaceAuctionState, type MarketplaceBidRefund, type MarketplaceBrowseResponse, type MarketplaceBuyOrderSettings, type MarketplaceCommissionOverride, type MarketplaceCommissionPolicy, type MarketplaceCreateOfferResponse, type MarketplaceDefinitions, type MarketplaceDirectTradeSettings, type MarketplaceGetDefinitionsResponse, type MarketplaceGroupedOfferView, type MarketplaceGroupedOffersResponse, type MarketplaceHistoryEntryView, type MarketplaceHistoryResponse, type MarketplaceListingSettings, type MarketplaceMatchingSettings, type MarketplaceMyStateResponse, type MarketplaceOfferResponse, type MarketplaceOfferView, type MarketplacePlaceBidResponse, type MarketplacePricePolicy, type MarketplaceRequest, MarketplaceService, type MarketplaceSettlementResponse, type MarketplaceTradabilityPolicy, MatchAction, type MatchDefinitions, type MatchRequest, MatchService, MatchStatus, type MatchesPageResponse, type MilestoneClaimRef, type MilestoneDefinition, MultiplayerAction, MultiplayerChatMode, type MultiplayerDefinitions, type MultiplayerRequest, MultiplayerService, type MultiplayerSystemState, MultiplayerTopology, type NFTModel, type NFTNetworkBinding, type NFTTransactionDocument, type NFTWithdrawalResponse, type NftCollectionStats, type NftStatsContainer, type OpenCollectionChestResponse, type OpenPackResponse, type OperationFailure, type OperationFailureReason, type OperationResult, type OperationSuccess, type PackOpenResult, type PendingWithdrawalRef, PlatformAdapter, type PlatformBlockchainState, type PlatformLoginResponse, type PlayerEconomyTuningState, type PollResponse, PremiumAction, type PremiumAdReduction, type PremiumDefinitions, type PremiumDefinitionsResponse, type PremiumPurchaseResponse, type PremiumRequest, PremiumService, type PremiumStateResponse, type PremiumSubscription, type PublishResponse, type PurchaseBatchResponse, type PvPMatch, QuestAction, type QuestAvailability, type QuestClaimRef, type QuestCycleDefinition, type QuestDefinition, type QuestDefinitions, type QuestGroupCompletionDefinition, type QuestIdentity, type QuestLinking, type QuestObjectiveDefinition, QuestObjectiveSource, type QuestPhaseDefinition, type QuestPointsTrackView, QuestPrerequisiteMode, type QuestPresetBindings, type QuestPresetRegistry, type QuestProgressUpdate, type QuestRequest, type QuestReward, QuestService, QuestStatus, RaidMode, type RaidResponse, type RealtimeEnvelope, type RechargeConfig, type RecordShowResponse, ReferralAction, type ReferralDefinitions, type ReferralDefinitionsResponse, type ReferralInviteRewardState, type ReferralRequest, ReferralService, type RelativeWindow, type ResourceBundle, type ResourceConsume, type ResourceDualPartyResult, type ResourceEntry, ResourceEntryType, type ResourceGrant, type ResourceOperation, type ResourceTransferResult, type RetryWithdrawalResponse, RewardAction, type RewardDefinitions, type RewardDefinitionsResponse, type RewardRequest, RewardService, type RewardedVideoSettings, type RollActionData, type RoomListItem, type RoomMemberView, type RoomSnapshotResponse, RoomVisibility, type RoomsPageResponse, type ScheduleChain, type ScheduleChainPhase, ScheduleMode, type ScheduleSpec, type ScheduledWindow, type SdkEvents, SeasonAction, type SeasonDefinitions, type SeasonRequest, SeasonService, type SeasonTierRewardBundle, type SeasonTierRewardMultiplier, type SeasonTierRewardSet, type SegmentGate, type SendTradeOfferResponse, type SetUserCustomDataResponse, type SettingsInput, SocialAction, type SocialCounters, type SocialRequest, SocialService, type SocialTimelineEvent, type SolanaWithdrawalSignature, type SpecialApplyMultiplierResponse, SpecialChoiceMode, type SpecialChooseResponse, type SpecialClaimResponse, type SpecialModeOfferData, type SpecialPendingState, type SpendRewardDefinition, type SpendTokensBatchResponse, type SsoCodeFromUrl, type StatDefinition, type StatRequirement, type StatsPreset, StoreAction, type StoreDefinitions, type StorePurchaseRef, type StorePurchaseResponse, type StorePurchaseState, type StoreRequest, StoreService, StoreType, type StoredLocalizationTable, type SubmitScoreResponse, type SubmitScoresBatchResponse, type SuccessResponse, TimedBoostAction, type TimedBoostDefinitions, type TimedBoostRequest, TimedBoostService, TimedBoostStackingPolicy, TimedEventAction, type TimedEventDefinitions, type TimedEventGrantRef, type TimedEventInstanceRef, type TimedEventMilestoneRef, type TimedEventRequest, TimedEventService, type TimedEventSpendRef, TimelineEventType, type TimelineResponse, TitleAction, TitleConfig, TitleCustomDataAction, type TitleCustomDataDefinitions, type TitleCustomDataKeyDefinition, type TitleCustomDataRecord, type TitleCustomDataRequest, TitleCustomDataService, TitleDataBucket, TitleDataScope, type TitlePublicConfigurationModel, type TitleRequest, TitleService, type TokenCurrencyStats, type TokenStatsContainer, type TokenTransactionDocument, type TokenWithdrawalResponse, TradeOfferStatus, TransactionDirection, type TransactionHistoryResponse, type TriggerContext, type TriggerSource, TutorialAction, type TutorialAvailability, type TutorialBlockingPolicy, TutorialBoardAction, type TutorialBoardScript, type TutorialClaimResponse, type TutorialDefinitions, type TutorialFlowBatchResponse, type TutorialFlowDefinition, type TutorialFlowPolicy, type TutorialFlowResponse, TutorialFlowStatus, type TutorialFlowView, type TutorialGateCondition, TutorialGateMode, type TutorialGlobalSettings, type TutorialIdentity, type TutorialPresetBindings, type TutorialPresetRegistry, type TutorialRequest, TutorialRestartPolicy, type TutorialReward, TutorialScriptModule, type TutorialScriptedOutcome, type TutorialStepCompletion, TutorialStepCompletionMode, type TutorialStepDefinition, type TutorialStepEffects, type TutorialStepIdentity, type TutorialStepPolicy, type TutorialStepProgress, TypedEmitter, type UnequipAllCharactersResponse, type UnequipItemsResponse, type UnlockCharacterResponse, type UnlockCharactersBatchResponse, type UnstackableItemInstanceState, type Unsubscribe, type UpdateMatchResponse, type UpgradeCharacterLevelResponse, type UpgradeCharacterLevelsBatchResponse, type UpgradeItemLevelResponse, type UpgradeLevelsBatchResponse, type UpgradeLevelsOptions, type UpgradeStatLevelResponse, type UpgradeStatLevelsBatchResponse, type UsageReactivationEvent, type UsageTimeStats, type UseCollectibleJokerResponse, UserAction, type UserAdvertisingState, type UserBlockchainState, type UserBlockchainStateResponse, type UserCharactersState, type UserClaimRewardState, type UserCollectionState, type UserComebackState, type UserCommunityChestState, type UserCoopEventState, type UserCryptoComplianceCounters, type UserCryptoCurrencyState, UserCustomDataAction, type UserCustomDataBatchDeleteItem, type UserCustomDataBatchSetItem, type UserCustomDataDefinitions, type UserCustomDataKeyDefinition, type UserCustomDataRecord, type UserCustomDataRequest, UserCustomDataService, type UserCustomDataState, type UserDailyCalendarState, type UserDailyCounters, UserData, type UserDealNodeLifetimeCounts, type UserDealNodeState, type UserDealOfferActivationState, type UserDealOfferHistory, type UserDealOffersState, type UserDealOffersStateResponse, type UserDealSlotState, type UserDealTrackState, type UserDepositAddress, type UserEventTokenProgress, type UserEventTokensState, type UserGameLoopsState, type UserIdleAccrualState, type UserInventoryState, type UserKycState, type UserLeaderboardProgress, type UserLeaderboardsState, type UserLootboxPityCounter, type UserLootboxState, type UserMailboxState, type UserMarketplaceState, type UserMatchCreationLimitState, type UserMatchState, type UserPremiumState, type UserPublicDataModel, type UserQuestCycleState, type UserQuestObjectiveProgress, type UserQuestProgress, type UserQuestState, type UserReferralState, type UserReferralStateResponse, type UserRequest, type UserRewardState, type UserRewardsStateResponse, type UserSeasonState, type UserSeasonStateResponse, type UserSeasonsState, UserService, type UserSocialState, type UserState, type UserStateSlice, type UserStateVersions, type UserStoreState, type UserTimedBoostsState, type UserTimedEventStateResponse, type UserTutorialFlowState, type UserTutorialState, type UserTutorialStepState, type UserUsageState, type UserVirtualCurrencyState, type VirtualCurrencyDefinition, type VirtualCurrencyEconomy, type VirtualCurrencyPermissions, type WalletChallengeResponse, WalletLinkType, type WithdrawalSignatureResponse, type WithdrawalSplit, beginSsoRedirect, createIDosGamesClient, isFail, isOk, normalizeBlockchainCategory, readSsoCodeFromUrl };
5705
+ export { type AcceptTradeOfferResponse, type ActivateReferralCodeResponse, type ActivateTimedBoostResponse, type ActiveBoostWindowInfo, type ActiveCoopEventInfo, type ActiveDealSlotInfo, type ActiveEventInfo, type ActiveSeasonInfo, type ActiveTimedBoost, type AdConsentSettings, type AdConsentState, type AdCreditsData, type AdDailyData, type AdFraudFlags, type AdFrequencyCappingSettings, type AdPendingRequest, type AdPlacementDefinition, type AdPlacementUserState, type AdProviderDefinition, AdProviderKind, type AdSessionData, AdType, type AdUnitConfig, type AdVerificationSettings, type AddQuestProgressResponse, type AdvertisingDefinitions, type AppOpenSettings, AttackOutcome, type AttackResponse, type AttributionInput, type AuthContext, AuthType, AuthenticationAction, type AuthenticationRequest, AuthenticationService, BannerPosition, type BannerSettings, type BaseRequest, type BatchDeleteUserCustomDataResponse, type BatchGetPublicUserCustomDataResponse, type BatchItemResult, type BatchResponse, type BatchSetUserCustomDataResponse, type BattleResult, type BattleStepConfig, type BlockchainAccountSafetyPolicy, BlockchainAction, type BlockchainConfigResponse, type BlockchainDefinitions, type BlockchainNetworkDefinition, BlockchainNetworkType, type BlockchainNftCollectionBinding, BlockchainOperationCategory, type BlockchainRequest, BlockchainService, type BlockchainStats, type BlockchainSystemState, BlockchainTransactionStatus, BlockchainTransactionType, type BoardLoopDefinition, type BoardLoopState, type BoardPendingInteraction, type BoardRollResponse, BodyPart, type BoostTriggerCounter, BoostWindowKind, BroadcastStatus, type BuildResponse, type BuildingState, type CancelMatchResponse, type CancelTradeOfferResponse, type ChangeUsernameResponse, CharacterAction, type CharacterClassification, type CharacterDefinition, type CharacterDefinitions, type CharacterEquipment, type CharacterEquipmentSlot, type CharacterIdentity, type CharacterLevelRef, type CharacterModel, type CharacterRankLadder, type CharacterRequest, CharacterService, type CharacterStatRef, type CharacterUnequipResult, type CharacterUnlock, CheckoutService, type ClaimAllRewardsBatchResponse, type ClaimAllRewardsResult, type ClaimComebackRewardResponse, type ClaimCycleRewardResponse, type ClaimCycleRewardsBatchResponse, type ClaimDailyRewardResponse, type ClaimDealMilestoneResponse, type ClaimDealMilestonesBatchResponse, type ClaimGrandPrizeResponse, type ClaimGroupCompletionRewardResponse, type ClaimInviteRewardResponse, type ClaimInviteRewardsBatchResponse, type ClaimLeaderboardMilestoneResponse, type ClaimLeaderboardMilestonesBatchResponse, type ClaimMilestoneRewardResponse, type ClaimMilestoneRewardsBatchResponse, type ClaimMilestonesBatchResponse, type ClaimQuestRewardResponse, type ClaimQuestRewardsBatchResponse, type ClaimRewardResponse, type ClaimSetRewardResponse, type ClaimSetRewardsBatchResponse, type ClaimTierRewardResponse, type ClaimTierRewardsBatchResponse, ClientPlatform, type ClientState, CloudCodeAction, CloudCodeErrorCode, type CloudCodeLogEntry, CloudCodeLogLevel, type CloudCodeRequest, CloudCodeRevisionSelection, CloudCodeService, type CodeExecutionError, type CollectIdleAccrualResponse, CollectionAction, type CollectionDefinitions, type CollectionGlobalSettings, type CollectionRequest, CollectionService, type CollectionSetRef, type CollectionTradeOfferDocument, CommissionSink, type CommunityChestClaimResponse, type CommunityChestGroupDocument, type CommunityChestGroupStateResponse, type CommunityChestHistoryEntry, type CommunityChestLeaveResponse, type CommunityChestMember, CommunityChestMemberStatus, type CommunityChestSharedState, CommunityChestStatus, type CommunityChestUserStateResponse, type ConfirmWithdrawalResponse, type ConversionDailyCounter, ConversionRateMode, type ConversionTarget, type ConvertResponse, type CoopBuildObjectsMemberState, type CoopBuildObjectsState, type CoopClaimRewardResponse, CoopEventAction, type CoopEventDefinitions, type CoopEventRequest, CoopEventService, type CoopGroupDocument, type CoopGroupMember, type CoopGroupStateResponse, CoopGroupStatus, type CoopLeaveGroupResponse, CoopMemberStatus, type CoopPartnerObjectState, type CoopSpinResponse, type CoopUserStateResponse, CraftAction, type CraftDefinitions, type CraftDefinitionsResponse, type CraftRequest, type CraftResponse, CraftService, type CraftSingleResult, CraftType, type CreateMatchResponse, type CryptoConvertResponse, type CryptoCurrencyDefinition, type CryptoCurrencyPermissions, type CryptoLimits, type CryptoNetworkBinding, type CryptoShortfall, CurrencyAction, type CurrencyAudit, type CurrencyConversion, type CurrencyDefinitions, type CurrencyRequest, CurrencyService, CurrencyStatus, CurrencyType, CurveInterpolation, type CurvePoint, CurveShape, CustomDataBucket, CustomDataValueType, CustomDataWriter, type CyclicSchedule, DEFAULT_BASE_URL, type DailyUsageRecord, type DealMilestoneProgressInfo, DealNodeRuntimeStatus, DealOfferAction, DealOfferActivationStatus, type DealOfferDefinitions, type DealOfferRequest, DealOfferService, type DealOffersDefinitionResponse, type DeclineTradeOfferResponse, type DepositNFTResponse, type DepositTokenResponse, type DismissDealResponse, type DonationResponse, EnvelopeType, type EquipItemsResponse, type EquipSlotPair, type EquipmentPreset, type EquipmentSlot, type EquippedItem, type EventMap, type EventMilestoneClaimResponse, type EventTokenAddress, type EventTokenConversion, type EventTokenDefinition, type EventTokenGrantResponse, type EventTokenMilestoneData, type EventTokenOperation, type EventTokenSpendResponse, EventTokenType, type ExecuteCloudCodeResponse, type ExecuteNodeResponse, type ExperimentDefinition, type ExperimentDefinitions, type ExperimentVariant, type ExperimentVariantCondition, type FodderConsumedEntry, FodderSelectionMode, FodderValuationMode, type FriendActionResponse, FriendActionStatus, type FriendPublicProfile, type FriendsListResponse, GameLoopAction, type GameLoopDefinitions, type GameLoopRequest, GameLoopService, type GetActiveBoostWindowsResponse, type GetActiveDealsResponse, type GetActiveEventsResponse, type GetActiveTimedBoostsResponse, type GetCharactersResponse, type GetLeaderboardResponse, type GetLeaderboardsBatchResponse, type GetMatchDefinitionsResponse, type GetMilestoneRewardMultiplierResponse, type GetMyProgressResponse, type GetMyUserCustomDataResponse, type GetOverviewBatchResponse, type GetProgressBatchResponse, type GetPublicTitleDataResponse, type GetPublicUserCustomDataResponse, type GetTradeOffersResponse, type GetUserQuestStateResponse, type GetUserTutorialStateResponse, type GrantStatusTokensResponse, type GrantTokensBatchResponse, type GrantedCollectible, type HeistCell, IDosGamesClient, type IDosGamesClientConfig, IDosGamesData, type IDosGamesSettings, type IapProductDefinition, type IapProductPurchaseState, type IapProductRules, IapProductType, IapPurchaseStatus, type IapStore, IapStore$1 as IapStoreValues, type IceServer, type InstantBattleDefinitions, type InstantBattleResponse, type InstantBattleRule, type InterstitialSettings, type InventoryDelta, ItemAction, type ItemCatalog, type ItemDefinition, type ItemDefinitions, type ItemEquipment, type ItemMetadata, type ItemRequest, ItemService, type ItemStats, type ItemTotals, type ItemUpgrade, type ItemUpgradeFodder, type ItemUpgradeRef, type JsonValue, KeyValueStorage, KycStatus, KycTier, LeaderboardAction, type LeaderboardDefinitions, type LeaderboardMilestoneRef, type LeaderboardOverview, type LeaderboardRequest, type LeaderboardScoreRef, LeaderboardService, type LeaderboardUserEntry, type LeaveRoomResponse, type LevelsPreset, type LimitSpec, type LinkedWalletInfo, type Listener, LocalizationAction, LocalizationCache, type LocalizationDefinitions, type LocalizationLocaleDefinition, type LocalizationLocaleInfo, type LocalizationManifestResponse, LocalizationMissingKeyMode, type LocalizationParams, type LocalizationRequest, LocalizationService, type LocalizationState, type LocalizationTableRef, type LocalizationTableResponse, LootboxAction, type LootboxAmountRange, type LootboxDefinitions, type LootboxDefinitionsResponse, type LootboxGlobalSettings, type LootboxOpenResponse, type LootboxPityRule, type LootboxPityTriggerResponse, type LootboxRequest, type LootboxRewardRoll, type LootboxRewardSlot, LootboxService, type LootboxSupplyRule, type MailboxBroadcastDocument, type MailboxDefinition, type MailboxMessageDocument, MailboxMessageSource, MailboxMessageStatus, type MailboxMessageTypeDefinition, type MailboxSegmentDefinition, MarketGoodsType, MarketOfferStatus, MarketOfferType, MarketplaceAction, type MarketplaceActionCounter, type MarketplaceAuctionSettings, type MarketplaceAuctionState, type MarketplaceBidRefund, type MarketplaceBrowseResponse, type MarketplaceBuyOrderSettings, type MarketplaceCommissionOverride, type MarketplaceCommissionPolicy, type MarketplaceCreateOfferResponse, type MarketplaceDefinitions, type MarketplaceDirectTradeSettings, type MarketplaceGetDefinitionsResponse, type MarketplaceGroupedOfferView, type MarketplaceGroupedOffersResponse, type MarketplaceHistoryEntryView, type MarketplaceHistoryResponse, type MarketplaceListingSettings, type MarketplaceMatchingSettings, type MarketplaceMyStateResponse, type MarketplaceOfferResponse, type MarketplaceOfferView, type MarketplacePlaceBidResponse, type MarketplacePricePolicy, type MarketplaceRequest, MarketplaceService, type MarketplaceSettlementResponse, type MarketplaceTradabilityPolicy, MatchAction, type MatchDefinitions, type MatchRequest, MatchService, MatchStatus, type MatchesPageResponse, type MilestoneClaimEntry, type MilestoneClaimRef, type MilestoneDefinition, MultiplayerAction, MultiplayerChatMode, type MultiplayerDefinitions, type MultiplayerRequest, MultiplayerService, type MultiplayerSystemState, MultiplayerTopology, type NFTModel, type NFTNetworkBinding, type NFTTransactionDocument, type NFTWithdrawalResponse, type NftCollectionStats, type NftStatsContainer, type OpenCollectionChestResponse, type OpenPackResponse, type OperationFailure, type OperationFailureReason, type OperationResult, type OperationSuccess, type PackOpenResult, type PaymentProof, type PaymentRequirement, type PendingWithdrawalRef, PlatformAdapter, type PlatformBlockchainState, type PlatformLoginResponse, type PlayerEconomyTuningState, type PollResponse, PremiumAction, type PremiumAdReduction, type PremiumDefinitions, type PremiumDefinitionsResponse, type PremiumPurchaseResponse, type PremiumRequest, PremiumService, type PremiumStateResponse, type PremiumSubscription, type PriceOption, type PriceOptions, type PublishResponse, PurchaseAction, type PurchaseBatchResponse, type PurchaseDefinitions, type PurchaseReceiptRef, type PurchaseRequest, PurchaseService, type PurchaseValidationBatchResponse, type PurchaseValidationResponse, type PvPMatch, QuestAction, type QuestAvailability, type QuestClaimRef, type QuestCycleDefinition, type QuestDefinition, type QuestDefinitions, type QuestGroupCompletionDefinition, type QuestIdentity, type QuestLinking, type QuestObjectiveDefinition, QuestObjectiveSource, type QuestPhaseDefinition, type QuestPointsTrackView, QuestPrerequisiteMode, type QuestPresetBindings, type QuestPresetRegistry, type QuestProgressUpdate, type QuestRequest, type QuestReward, QuestService, QuestStatus, RaidMode, type RaidResponse, type RealtimeEnvelope, type RechargeConfig, type RecordShowResponse, ReferralAction, type ReferralDefinitions, type ReferralDefinitionsResponse, type ReferralInviteRewardState, type ReferralRequest, ReferralService, type RelativeWindow, type ResourceBundle, type ResourceConsume, type ResourceDualPartyResult, type ResourceEntry, ResourceEntryType, type ResourceGrant, type ResourceOperation, type ResourceTransferResult, type RetryWithdrawalResponse, RewardAction, type RewardDefinitions, type RewardDefinitionsResponse, type RewardRequest, RewardService, type RewardedVideoSettings, type RollActionData, type RoomListItem, type RoomMemberView, type RoomSnapshotResponse, RoomVisibility, type RoomsPageResponse, type ScalarCurveSpec, type ScheduleChain, type ScheduleChainPhase, ScheduleMode, type ScheduleSpec, type ScheduledWindow, type SdkEvents, SeasonAction, type SeasonDefinitions, type SeasonRequest, SeasonService, type SeasonTierRewardBundle, type SeasonTierRewardMultiplier, type SeasonTierRewardSet, type SegmentGate, type SendTradeOfferResponse, type SetUserCustomDataResponse, type SettingsInput, SocialAction, type SocialCounters, type SocialRequest, SocialService, type SocialTimelineEvent, type SolanaWithdrawalSignature, type SpecialApplyMultiplierResponse, SpecialChoiceMode, type SpecialChooseResponse, type SpecialClaimResponse, type SpecialModeOfferData, type SpecialPendingState, type SpendRewardDefinition, type SpendTokensBatchResponse, type SsoCodeFromUrl, type StatDefinition, type StatRequirement, type StatsPreset, StoreAction, type StoreDefinitions, type StorePurchaseRef, type StorePurchaseResponse, type StorePurchaseState, type StoreRequest, StoreService, StoreType, type StoredLocalizationTable, type SubmitScoreResponse, type SubmitScoresBatchResponse, type SuccessResponse, TimedBoostAction, type TimedBoostDefinitions, type TimedBoostRequest, TimedBoostService, TimedBoostStackingPolicy, TimedEventAction, type TimedEventDefinitions, type TimedEventGrantRef, type TimedEventInstanceRef, type TimedEventMilestoneRef, type TimedEventRequest, TimedEventService, type TimedEventSpendRef, TimelineEventType, type TimelineResponse, TitleAction, TitleConfig, TitleCustomDataAction, type TitleCustomDataDefinitions, type TitleCustomDataKeyDefinition, type TitleCustomDataRecord, type TitleCustomDataRequest, TitleCustomDataService, TitleDataBucket, TitleDataScope, type TitlePublicConfigurationModel, type TitleRequest, TitleService, type TokenCurrencyStats, type TokenStatsContainer, type TokenTransactionDocument, type TokenWithdrawalResponse, TradeOfferStatus, TransactionDirection, type TransactionHistoryResponse, type TriggerContext, type TriggerSource, TutorialAction, type TutorialAvailability, type TutorialBlockingPolicy, TutorialBoardAction, type TutorialBoardScript, type TutorialClaimResponse, type TutorialDefinitions, type TutorialFlowBatchResponse, type TutorialFlowDefinition, type TutorialFlowPolicy, type TutorialFlowResponse, TutorialFlowStatus, type TutorialFlowView, type TutorialGateCondition, TutorialGateMode, type TutorialGlobalSettings, type TutorialIdentity, type TutorialPresetBindings, type TutorialPresetRegistry, type TutorialRequest, TutorialRestartPolicy, type TutorialReward, TutorialScriptModule, type TutorialScriptedOutcome, type TutorialStepCompletion, TutorialStepCompletionMode, type TutorialStepDefinition, type TutorialStepEffects, type TutorialStepIdentity, type TutorialStepPolicy, type TutorialStepProgress, TypedEmitter, type UnequipAllCharactersResponse, type UnequipItemsResponse, type UnlockCharacterResponse, type UnlockCharactersBatchResponse, type UnstackableItemInstanceState, type Unsubscribe, type UpdateMatchResponse, type UpgradeCharacterLevelResponse, type UpgradeCharacterLevelsBatchResponse, type UpgradeItemLevelResponse, type UpgradeLevelsBatchResponse, type UpgradeLevelsOptions, type UpgradeStatLevelResponse, type UpgradeStatLevelsBatchResponse, type UsageReactivationEvent, type UsageTimeStats, type UseCollectibleJokerResponse, UserAction, type UserAdvertisingState, type UserBlockchainState, type UserBlockchainStateResponse, type UserCharactersState, type UserClaimRewardState, type UserCollectionState, type UserComebackState, type UserCommunityChestState, type UserCoopEventState, type UserCryptoComplianceCounters, type UserCryptoCurrencyState, UserCustomDataAction, type UserCustomDataBatchDeleteItem, type UserCustomDataBatchSetItem, type UserCustomDataDefinitions, type UserCustomDataKeyDefinition, type UserCustomDataRecord, type UserCustomDataRequest, UserCustomDataService, type UserCustomDataState, type UserDailyCalendarState, type UserDailyCounters, UserData, type UserDealNodeLifetimeCounts, type UserDealNodeState, type UserDealOfferActivationState, type UserDealOfferHistory, type UserDealOffersState, type UserDealOffersStateResponse, type UserDealSlotState, type UserDealTrackState, type UserDepositAddress, type UserEventTokenProgress, type UserEventTokensState, type UserGameLoopsState, type UserIdleAccrualState, type UserInventoryState, type UserKycState, type UserLeaderboardProgress, type UserLeaderboardsState, type UserLootboxPityCounter, type UserLootboxState, type UserMailboxState, type UserMarketplaceState, type UserMatchCreationLimitState, type UserMatchState, type UserPremiumState, type UserPublicDataModel, type UserPurchaseState, type UserQuestCycleState, type UserQuestObjectiveProgress, type UserQuestProgress, type UserQuestState, type UserReferralState, type UserReferralStateResponse, type UserRequest, type UserRewardState, type UserRewardsStateResponse, type UserSeasonState, type UserSeasonStateResponse, type UserSeasonsState, UserService, type UserSocialState, type UserState, type UserStateSlice, type UserStateVersions, type UserStoreState, type UserTimedBoostsState, type UserTimedEventStateResponse, type UserTutorialFlowState, type UserTutorialState, type UserTutorialStepState, type UserUsageState, type UserVirtualCurrencyState, type VirtualCurrencyDefinition, type VirtualCurrencyEconomy, type VirtualCurrencyPermissions, type WalletChallengeResponse, WalletLinkType, type WithdrawalSignatureResponse, type WithdrawalSplit, beginSsoRedirect, claimedMilestoneIDs, createIDosGamesClient, curveMultiplier, evaluateCurve, grantedPremiumTiers, isCurveConfigured, isFail, isMilestoneClaimed, isOk, normalizeBlockchainCategory, readSsoCodeFromUrl, roundAmount, zPaymentProof, zPriceOption, zPriceOptions };