@idosgames/core 0.8.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { KeyValueStorage, PlatformAdapter } from './platform/index.js';
2
+ import { PlatformAdapter, KeyValueStorage } from './platform/index.js';
3
3
  export { BrowserPlatformAdapter, BrowserStorage, MemoryStorage, NoopPlatformAdapter, TelegramInitDataUnsafe, TelegramWebApp } from './platform/index.js';
4
4
  import Decimal from 'decimal.js';
5
5
 
@@ -74,10 +74,10 @@ declare const IapStore$1: {
74
74
  readonly AppleAppStore: "AppleAppStore";
75
75
  };
76
76
  type IapStore$1 = (typeof IapStore$1)[keyof typeof IapStore$1];
77
- declare const zIapStore: z.ZodEnum<{
77
+ declare const zIapStore: z.ZodCatch<z.ZodEnum<{
78
78
  GooglePlay: "GooglePlay";
79
79
  AppleAppStore: "AppleAppStore";
80
- }>;
80
+ }>>;
81
81
  declare const EventTokenType: {
82
82
  readonly TimedEvent: "TimedEvent";
83
83
  readonly Quest: "Quest";
@@ -1138,7 +1138,7 @@ declare const MatchAction: {
1138
1138
  readonly GetDefinitions: "GetDefinitions";
1139
1139
  };
1140
1140
  type MatchAction = (typeof MatchAction)[keyof typeof MatchAction];
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; };
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; ArmorMode?: null | 'Flat' | 'PercentReduction'; MaxArmorReduction?: 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; };
1142
1142
  type MatchEconomySettings = { BurnRate?: null | number; [key: string]: unknown; };
1143
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; };
1144
1144
  type MatchCreationSettings = { PriceOptions?: null | PriceOptions; RefundCostOnCancel?: null | boolean; MaxOpenMatches?: null | number; Limits?: null | LimitSpec; AllowPrivateMatches?: null | boolean; MaxMatchesPerOpponentPerDay?: null | number; [key: string]: unknown; };
@@ -1529,13 +1529,34 @@ interface ReferralInviteRewardState {
1529
1529
  interface UserReferralState {
1530
1530
  SubscribedToUserID?: string | null;
1531
1531
  ActivationRewardGranted?: boolean;
1532
+ /**
1533
+ * This player's own SHORT invite code, e.g. `WDJBMJHT`. Show it, let them copy it, let them
1534
+ * dictate it.
1535
+ *
1536
+ * The server mints it LAZILY on the first `getUserState()` — most players never invite anyone,
1537
+ * so nobody gets a row in the code collection until they open the invite screen. Expect it to
1538
+ * be absent for a freshly registered player who has not opened that screen yet.
1539
+ *
1540
+ * NOT the player's `UserID`. It used to be, and a lot of older UI assumed so; a 24-character
1541
+ * id is not something a human dictates over voice chat.
1542
+ */
1543
+ Code?: string | null;
1544
+ /**
1545
+ * The activation reward is owed but not yet paid.
1546
+ *
1547
+ * This is what a binding that happened AT LOGIN looks like — the player arrived through an
1548
+ * invite link or a Telegram `start_param` rather than typing a code. The login path has no
1549
+ * per-user lock, so the server only flags the debt there and settles it on the next
1550
+ * `getUserState()`. Nothing for you to call: reading the state IS the settlement.
1551
+ */
1552
+ PendingActivationReward?: boolean;
1553
+ /** How many players activated this player's code. */
1532
1554
  FollowersCount?: number;
1533
- FollowerIDs?: string[];
1534
1555
  InviteRewardStates?: Record<string, ReferralInviteRewardState>;
1535
1556
  UpdatedAt?: string;
1536
1557
  [key: string]: unknown;
1537
1558
  }
1538
- type SpendRewardDefinition = { FeatureKey?: null | string; IsEnabled?: null | boolean; Percent?: null | number; SourceCurrencyID?: null | string; TargetCurrencyID?: null | string; [key: string]: unknown; };
1559
+ type SpendRewardDefinition = { FeatureKey?: null | string; IsEnabled?: null | boolean; Rate?: null | number; Basis?: null | string; SourceCurrencyID?: null | string; TargetCurrencyID?: null | string; MinSourceAmount?: null | number; MaxRewardPerOperation?: null | number; Limits?: null | LimitSpec; [key: string]: unknown; };
1539
1560
  interface ReferralDefinitions {
1540
1561
  IsEnabled?: boolean | null;
1541
1562
  /** One-time reward for the current user's first activation of another user's referral code. */
@@ -1547,9 +1568,9 @@ interface ReferralDefinitions {
1547
1568
  interface ReferralDefinitionsResponse {
1548
1569
  ReferralDefinitions?: ReferralDefinitions | null;
1549
1570
  }
1550
- type UserReferralStateResponse = { Referral?: null | UserReferralState; };
1551
- type ActivateReferralCodeResponse = { ReferralCode?: null | string; IsFirstActivation?: null | boolean; Resources?: null | ResourceOperation; };
1552
- type ClaimInviteRewardResponse = { RewardID?: null | string; Resources?: null | ResourceOperation; };
1571
+ type UserReferralStateResponse = { Referral?: null | UserReferralState; InviteUrl?: null | string; [key: string]: unknown; };
1572
+ type ActivateReferralCodeResponse = { ReferralCode?: null | string; ReferrerUserID?: null | string; IsFirstActivation?: null | boolean; Resources?: null | ResourceOperation; [key: string]: unknown; };
1573
+ type ClaimInviteRewardResponse = { RewardID?: null | string; Resources?: null | ResourceOperation; [key: string]: unknown; };
1553
1574
  type ClaimInviteRewardsBatchResponse = { ServerTimeUtc: string; Items: Array<{ Id: string; Success: boolean; Error?: null | string; Data?: null | ClaimInviteRewardResponse; }>; Resources?: null | ResourceOperation; };
1554
1575
  interface ReferralRequest extends BaseRequest {
1555
1576
  ReferralCode?: string;
@@ -1585,10 +1606,40 @@ declare const TimelineEventType: {
1585
1606
  type TimelineEventType = (typeof TimelineEventType)[keyof typeof TimelineEventType];
1586
1607
  type FriendPublicProfile = { UserID: string; PublicData?: null | UserPublicDataModel; };
1587
1608
  type SocialTimelineEvent = { OwnerUserID?: null | string; ActorUserID?: null | string; ActorProfile?: null | UserPublicDataModel; Type?: null | string; CreatedAt?: null | string; OwnerImpact?: null | ResourceOperation; IsBlocked?: null | boolean; TargetObjectName?: null | string; [key: string]: unknown; };
1609
+ /**
1610
+ * The player's social state.
1611
+ *
1612
+ * ⚠ **Two halves with different origins — do not confuse them.**
1613
+ *
1614
+ * The **counters** are what the server actually sends inside the player state. Friendships and
1615
+ * requests live in their own edge collection now (they used to be three arrays inside the player
1616
+ * document, which meant a third party — whoever sent you a request — could grow *your* document,
1617
+ * unbounded, and it was re-read on every one of *your* calls). Only the sizes travel with state.
1618
+ *
1619
+ * The **arrays below the counters are a local SDK cache**, not server state. Nothing fills them on
1620
+ * login: `getFriendsList()` fills `Accepted`, `getIncomingRequests()` fills `IncomingRequests`,
1621
+ * `getTimeline()` fills `Timeline`, and `OutgoingRequests` only ever grows client-side from your
1622
+ * own `sendFriendRequest()` calls. Consequence to plan the UI around: **until you call them, the
1623
+ * arrays are empty even for a player with friends** — while `FriendsCount` is already correct.
1624
+ * They are also lost on restart, because nothing re-sends them.
1625
+ *
1626
+ * Rule of thumb: render badges and counts from the counters, render lists only on a screen that
1627
+ * loads them.
1628
+ */
1588
1629
  interface UserSocialState {
1630
+ /** Number of friends. Server-sent, always current. */
1631
+ FriendsCount?: number;
1632
+ /** Number of requests awaiting this player's answer. Server-sent, always current. */
1633
+ IncomingCount?: number;
1634
+ /** Number of requests this player sent that are still unanswered. Server-sent. */
1635
+ OutgoingCount?: number;
1636
+ /** Local cache — friend UserIDs. Empty until `getFriendsList()`. */
1589
1637
  Accepted?: string[];
1638
+ /** Local cache — UserIDs who requested this player. Empty until `getIncomingRequests()`. */
1590
1639
  IncomingRequests?: string[];
1640
+ /** Local cache — UserIDs this player sent a request to. Client-side only; never server-sent. */
1591
1641
  OutgoingRequests?: string[];
1642
+ /** Local cache — activity feed. Empty until `getTimeline()`. */
1592
1643
  Timeline?: SocialTimelineEvent[];
1593
1644
  }
1594
1645
  type FriendsListResponse = { Friends?: null | Array<FriendPublicProfile>; };
@@ -1602,6 +1653,7 @@ interface SocialRequest extends BaseRequest {
1602
1653
  declare const SocialAction: {
1603
1654
  readonly GetFriendsList: "GetFriendsList";
1604
1655
  readonly GetIncomingRequests: "GetIncomingRequests";
1656
+ readonly GetOutgoingRequests: "GetOutgoingRequests";
1605
1657
  readonly GetRecommendedFriends: "GetRecommendedFriends";
1606
1658
  readonly SendFriendRequest: "SendFriendRequest";
1607
1659
  readonly AcceptFriendRequest: "AcceptFriendRequest";
@@ -1760,6 +1812,7 @@ type AttackOutcome = (typeof AttackOutcome)[keyof typeof AttackOutcome];
1760
1812
  type BuildingState = { SlotIndex: number; Level?: null | number; IsDamaged?: null | boolean; MaxLevelRewardClaimed?: null | boolean; [key: string]: unknown; };
1761
1813
  type HeistCell = { Symbol?: null | string | number; OnOpenBonus?: null | ResourceGrant; BonusTag?: null | string; [key: string]: unknown; };
1762
1814
  type SpecialGradationTierSnapshot = { ElapsedSeconds?: null | number; Reward?: null | ResourceGrant; [key: string]: unknown; };
1815
+ type SpecialStatMetricSnapshot = { MetricID?: null | string; MaxValuePerClaim?: null | number; TierMode?: null | string; ApplyClaimMultiplier?: null | boolean; Tiers?: null | Array<{ RequiredValue?: null | number; Reward?: null | ResourceGrant; [key: string]: unknown; }>; Rate?: null | { Reward?: null | ResourceGrant; MetricPerReward?: null | number; MaxRewardUnits?: null | number; [key: string]: unknown; }; [key: string]: unknown; };
1763
1816
  interface SpecialPendingState {
1764
1817
  ModeID?: string;
1765
1818
  ChoiceID?: string | null;
@@ -1768,9 +1821,15 @@ interface SpecialPendingState {
1768
1821
  DurationSeconds?: number | null;
1769
1822
  AdViewsUsed?: number;
1770
1823
  AccumulatedMultiplier?: number;
1824
+ /** Null = the choice has no time axis; the whole reward comes from RunStatTiers. */
1771
1825
  GradationTiers?: SpecialGradationTierSnapshot[] | null;
1826
+ /** Snapshot of SpecialGradationConfig.TierMode after defaulting. */
1827
+ GradationTierMode?: string | null;
1772
1828
  BelowFirstTierReward?: ResourceGrant | null;
1773
1829
  Multipliers?: SpecialClaimMultipliers | null;
1830
+ /** Run-statistics ladders frozen at Choose. Null = the choice has no run-stat rewards, or the
1831
+ * pending predates the feature; both mean the claim pays by the time ladder alone. */
1832
+ RunStatTiers?: SpecialStatMetricSnapshot[] | null;
1774
1833
  /** Offer choices stashed from the roll's SpecialModeOffer so the UI can render them in-session
1775
1834
  * (the server's GetUserBoardState pending only carries ModeID). */
1776
1835
  Choices?: SpecialModeChoice[] | null;
@@ -1824,7 +1883,8 @@ interface HeistGridBonusConfig {
1824
1883
  }
1825
1884
  type ChanceTable = { Outcomes?: null | Array<{ Weight?: null | number; OutcomeID?: null | string; Reward?: null | ScaledResourceOperation; ForceAction?: null | string; SpecialModeID?: null | string; [key: string]: unknown; }>; [key: string]: unknown; };
1826
1885
  type SpecialClaimMultipliers = { PerAdMultiplierRange?: null | RewardMultiplierRange; MaxAdViews?: null | number; AdCreditCost?: null | number; FormulaKind?: null | string; ApplyMultiplierOnEarlyClaim?: null | boolean; [key: string]: unknown; };
1827
- type SpecialGradationConfig = { Tiers?: null | Array<{ ElapsedSeconds?: null | number; Reward?: null | ScaledResourceOperation; [key: string]: unknown; }>; BelowFirstTierReward?: null | ScaledResourceOperation; [key: string]: unknown; };
1886
+ type SpecialGradationConfig = { Tiers?: null | Array<{ ElapsedSeconds?: null | number; Reward?: null | ScaledResourceOperation; [key: string]: unknown; }>; TierMode?: null | string; BelowFirstTierReward?: null | ScaledResourceOperation; [key: string]: unknown; };
1887
+ type SpecialRunStatsConfig = { MetricsByID?: null | Record<string, { MetricID?: null | string; MaxValuePerClaim?: null | number; TierMode?: null | string; ApplyClaimMultiplier?: null | boolean; Tiers?: null | Array<{ RequiredValue?: null | number; Reward?: null | ScaledResourceOperation; [key: string]: unknown; }>; Rate?: null | { Reward?: null | ScaledResourceOperation; MetricPerReward?: null | number; MaxRewardUnits?: null | number; [key: string]: unknown; }; [key: string]: unknown; }>; [key: string]: unknown; };
1828
1888
  /** A single choice in a Special mode (Instant reward or Timed flow with multipliers/gradation). */
1829
1889
  interface SpecialModeChoice {
1830
1890
  ChoiceID?: string | null;
@@ -1834,6 +1894,7 @@ interface SpecialModeChoice {
1834
1894
  EntryCost?: ResourceConsume | null;
1835
1895
  Multipliers?: SpecialClaimMultipliers | null;
1836
1896
  Gradation?: SpecialGradationConfig | null;
1897
+ RunStats?: SpecialRunStatsConfig | null;
1837
1898
  }
1838
1899
  /** Special-mode configuration bound to a tile via SpecialModeID. */
1839
1900
  interface SpecialModeDefinition {
@@ -1922,11 +1983,19 @@ interface GameLoopDefinitions {
1922
1983
  [key: string]: unknown;
1923
1984
  }
1924
1985
  type RollActionData = { TargetUserID?: null | string; IsBot?: null | boolean; PublicData?: null | UserPublicDataModel; TargetBuildingStates?: null | Array<BuildingState>; TargetHasShield?: null | boolean; [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; };
1986
+ 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; RunStats?: null | SpecialRunStatsConfig; [key: string]: unknown; }>; [key: string]: unknown; };
1926
1987
  type CommunityChestContributionResult = { GroupID?: null | string; Delta?: null | number; NewProgress?: null | number; MaxProgress?: null | number; UnlockedMilestoneIDs?: null | Array<string>; Completed?: null | boolean; [key: string]: unknown; };
1927
1988
  interface BoardRollResponse {
1928
1989
  UsedMultiplier?: number | null;
1990
+ /** Sum of DiceValues. */
1929
1991
  Steps?: number | null;
1992
+ /**
1993
+ * Per-die faces in roll order — one entry per BoardDiceConfig.Count, each 1..Sides,
1994
+ * summing to Steps. Render the dice from here; do NOT split Steps yourself.
1995
+ * null = the step was scripted by the tutorial, so no dice breakdown exists
1996
+ * (a scripted step may fall outside the dice range, up to a full lap).
1997
+ */
1998
+ DiceValues?: number[] | null;
1930
1999
  OldPosition?: number | null;
1931
2000
  NewPosition: number;
1932
2001
  CyclesCompletedDelta?: number | null;
@@ -1942,7 +2011,7 @@ type RaidResponse = { Status?: null | string; Outcome?: null | string; FoundSymb
1942
2011
  type BuildResponse = { BuiltIndex: number; NewLevel?: null | number; StageComplete?: null | boolean; MaxLevelRewardClaimed?: null | boolean; Operation?: null | ResourceOperation; [key: string]: unknown; };
1943
2012
  type SpecialChooseResponse = { Mode?: null | string | number; Operation?: null | ResourceOperation; DurationSeconds?: null | number; StartedAtUtc?: null | string; ExpiresAtUtc?: null | string; [key: string]: unknown; };
1944
2013
  type SpecialApplyMultiplierResponse = { AdViewsUsed?: null | number; RolledMultiplier?: null | number; AccumulatedMultiplier?: null | number; RemainingAdViews?: null | number; [key: string]: unknown; };
1945
- type SpecialClaimResponse = { FinalMultiplier?: null | number; AdViewsUsed?: null | number; AccumulatedMultiplier?: null | number; IsEarlyClaim?: null | boolean; Operation?: null | ResourceOperation; [key: string]: unknown; };
2014
+ type SpecialClaimResponse = { FinalMultiplier?: null | number; AdViewsUsed?: null | number; AccumulatedMultiplier?: null | number; IsEarlyClaim?: null | boolean; ReachedTierIndex?: null | number; Operation?: null | ResourceOperation; AcceptedRunStats?: null | Record<string, number>; RunStatAwards?: null | Array<{ MetricID?: null | string; ReachedTierIndex?: null | number; RequiredValue?: null | number; RewardUnits?: null | number; [key: string]: unknown; }>; RunStatsClamped?: null | boolean; RunStatGrant?: null | ResourceGrant; [key: string]: unknown; };
1946
2015
  /** enum CommunityChestStatus — mirror of CoopGroupStatus. */
1947
2016
  declare const CommunityChestStatus: {
1948
2017
  readonly Forming: "Forming";
@@ -1982,6 +2051,13 @@ interface GameLoopRequest extends BaseRequest {
1982
2051
  ChoiceID?: string;
1983
2052
  GroupID?: string;
1984
2053
  MilestoneID?: string;
2054
+ /** Gameplay statistics of a Special-mode run ({MetricID: value}), sent with BoardSpecialClaim.
2055
+ * Keys are matched against the whitelist frozen in SpecialPendingState.RunStatTiers; a metric
2056
+ * absent there is ignored. Omitted/empty = the claim pays by the time ladder only.
2057
+ *
2058
+ * Values are fractional by design (run time, experience) — do NOT round them here: the server
2059
+ * compares against thresholds with a relative epsilon and clamps by the per-metric cap. */
2060
+ RunStats?: Record<string, number>;
1985
2061
  }
1986
2062
  declare const GameLoopAction: {
1987
2063
  readonly GetGameLoops: "GetGameLoops";
@@ -2234,8 +2310,22 @@ interface UserDailyCounters {
2234
2310
  Earned: number;
2235
2311
  Spent: number;
2236
2312
  }
2313
+ /**
2314
+ * Auto-recharge state of one currency. The server materializes accrual lazily — on a state read
2315
+ * and on any operation with that currency — so `UserVirtualCurrencyState.Amount` is already up to
2316
+ * date; there is no background job and no push.
2317
+ *
2318
+ * Countdown to the next BATCH (see `RechargeConfig`: a batch is `Rate` units per full `Period`):
2319
+ *
2320
+ * ```ts
2321
+ * const elapsed = (Date.now() - Date.parse(LastRechargeAt)) / 1000 + PendingSeconds;
2322
+ * const secondsToNextBatch = Math.max(0, Period - elapsed);
2323
+ * ```
2324
+ */
2237
2325
  interface UserRechargeState {
2326
+ /** Reference point of the next accrual: last accrual or spend (ISO, UTC). */
2238
2327
  LastRechargeAt?: string;
2328
+ /** Carried time that did not add up to a FULL period — always less than `Period`. */
2239
2329
  PendingSeconds?: number;
2240
2330
  }
2241
2331
  interface UserVirtualCurrencyState {
@@ -2323,14 +2413,58 @@ interface DailyUsageRecord {
2323
2413
  ActiveHoursMask: number;
2324
2414
  LastActiveAt: string;
2325
2415
  }
2326
- /** Aggregated app-usage stats (UserDataDocument.Usage), foreground-activity seconds only. */
2416
+ /**
2417
+ * One rolled-up period (a month or a year) of usage.
2418
+ *
2419
+ * `Seconds`/`Sessions` are `number` here like everywhere else in JS, but note they are 64-bit on
2420
+ * the server: a year of activity does not fit the per-day `int`.
2421
+ */
2422
+ interface UsagePeriodRecord {
2423
+ Seconds: number;
2424
+ Sessions: number;
2425
+ /**
2426
+ * How many CALENDAR DAYS of the period the player was active.
2427
+ *
2428
+ * This is the field the rollup exists for: a month's total seconds cannot tell you whether the
2429
+ * player came every day for ten minutes or once for five hours, and once the per-day records
2430
+ * are gone that is unrecoverable.
2431
+ */
2432
+ ActiveDays: number;
2433
+ LongestSessionSeconds: number;
2434
+ ActiveHoursMask: number;
2435
+ FirstActiveDay: string;
2436
+ LastActiveAt: string;
2437
+ }
2438
+ /**
2439
+ * Aggregated app-usage stats (UserDataDocument.Usage), foreground-activity seconds only.
2440
+ *
2441
+ * ⚠ **History is rolled up: days → months → years, and the rollup is IRREVERSIBLE.** `Daily` used
2442
+ * to hold every day the player had ever been active; it grew forever inside the document that is
2443
+ * read on every request. It is now a WINDOW of the most recent days (400 by default, configurable
2444
+ * per title). Everything older is folded into {@link Monthly}, and months of finished years into
2445
+ * {@link Yearly}. Per-day detail outside the window is gone for good.
2446
+ *
2447
+ * Practical consequence: **do not sum `Daily` to get a lifetime or a year-long total** — you will
2448
+ * silently undercount. Use `TotalSeconds`/`TotalSessions` for lifetime (they are kept separately
2449
+ * and are exact), or add the periods.
2450
+ */
2327
2451
  interface UserUsageState {
2452
+ /** Lifetime foreground seconds. Kept separately, never affected by the rollup. */
2328
2453
  TotalSeconds: number;
2454
+ /** Lifetime session count. Kept separately, never affected by the rollup. */
2329
2455
  TotalSessions: number;
2330
2456
  FirstActiveAt?: string | null;
2331
2457
  LastActiveAt: string;
2332
2458
  Reactivations?: UsageReactivationEvent[];
2459
+ /**
2460
+ * Per-day stats for the recent window only. Key is `"ddMMyyyy"` (historic format, not sortable).
2461
+ * Older days are no longer here — see {@link Monthly}.
2462
+ */
2333
2463
  Daily?: Record<string, DailyUsageRecord>;
2464
+ /** Folded months. Key is `"yyyyMM"` — sortable, unlike the per-day key. */
2465
+ Monthly?: Record<string, UsagePeriodRecord>;
2466
+ /** Folded years. Key is `"yyyy"`. Top step: there is nothing coarser to fold into. */
2467
+ Yearly?: Record<string, UsagePeriodRecord>;
2334
2468
  }
2335
2469
  interface UserState {
2336
2470
  UserID?: string;
@@ -2706,9 +2840,16 @@ declare const MultiplayerAction: {
2706
2840
  };
2707
2841
  type MultiplayerAction = (typeof MultiplayerAction)[keyof typeof MultiplayerAction];
2708
2842
  type PlatformLoginResponse = { TitleUserID: string; TitleClientSessionTicket: string; TitleClientSessionTicketExpiration: string; PlatformUserID?: null | string; PlatformAuthToken?: null | string; PlatformAuthTokenExpiration?: null | string; };
2843
+ type EmailRegistrationResponse = { CodeTtlMinutes?: null | number; ResendCooldownSeconds?: null | number; };
2709
2844
  type SuccessResponse = { IsCompleted?: null | boolean; ServerTime?: null | string; };
2710
2845
  type WalletChallengeResponse = { Message: string; ExpiresAt: string; };
2711
- /** Client-supplied UTM/click-ID attribution signal, sent with login/register (port of AttributionInput). */
2846
+ /**
2847
+ * Acquisition signal sent with every login/register (port of the server's `AttributionInput`).
2848
+ *
2849
+ * It carries more than marketing tags: the referral code and the deferred-click token travel in
2850
+ * the same field, because they answer one question — where did this player come from. The SDK
2851
+ * fills it automatically (see `AcquisitionCapture`); a game normally never touches it.
2852
+ */
2712
2853
  interface AttributionInput {
2713
2854
  UtmSource?: string;
2714
2855
  UtmMedium?: string;
@@ -2720,6 +2861,22 @@ interface AttributionInput {
2720
2861
  Referrer?: string;
2721
2862
  Country?: string;
2722
2863
  AppVersion?: string;
2864
+ /** Short invite code of the referrer (`WDJB-MJHT`). Ignored by the server on Telegram logins. */
2865
+ ReferralCode?: string;
2866
+ /** Handle of a click registered earlier via `Acquisition/RegisterClick` — an exact match. */
2867
+ ClaimToken?: string;
2868
+ /** Where the client took the signal from. A HINT for analytics; never raises server-side trust. */
2869
+ ChannelHint?: string;
2870
+ /**
2871
+ * OS version — part of the deferred-match fingerprint.
2872
+ *
2873
+ * IMPORTANT: send it on every first launch even when there are no marketing tags at all.
2874
+ * The click recorded it, and if the install omits it the fingerprints differ and no match
2875
+ * happens. Fields like this are not treated as a signal on their own.
2876
+ */
2877
+ OsVersion?: string;
2878
+ /** Device model — reserved for the fingerprint; not part of the key yet. */
2879
+ DeviceModel?: string;
2723
2880
  }
2724
2881
  interface AuthenticationRequest extends BaseRequest {
2725
2882
  PlatformAuthToken?: string;
@@ -2734,13 +2891,14 @@ interface AuthenticationRequest extends BaseRequest {
2734
2891
  WalletAddress?: string;
2735
2892
  /** Wallet login: signature of the challenge message (EVM personal_sign hex / Solana ed25519, 0x-hex). */
2736
2893
  WalletSignature?: string;
2894
+ /** Code from the confirmation e-mail. See `AuthenticationAction.ConfirmEmailRegistration`. */
2895
+ VerificationCode?: string;
2737
2896
  }
2738
2897
  declare const AuthenticationAction: {
2739
2898
  readonly LoginWithDeviceID: "LoginWithDeviceID";
2740
2899
  readonly LoginWithTelegram: "LoginWithTelegram";
2741
2900
  readonly LoginWithEmail: "LoginWithEmail";
2742
2901
  readonly LoginWithGoogle: "LoginWithGoogle";
2743
- readonly LoginWithPlatformToken: "LoginWithPlatformToken";
2744
2902
  /**
2745
2903
  * Exchange a one-time SSO code (issued by idosgames.com) for a title session.
2746
2904
  *
@@ -2749,6 +2907,21 @@ declare const AuthenticationAction: {
2749
2907
  */
2750
2908
  readonly LoginWithSsoCode: "LoginWithSsoCode";
2751
2909
  readonly RegisterWithEmail: "RegisterWithEmail";
2910
+ /**
2911
+ * Confirm the address and create the player.
2912
+ *
2913
+ * Every way of getting it wrong answers with the same error — "no such registration", "code
2914
+ * expired" and "wrong code" are all statements ABOUT AN ADDRESS, and telling them apart would
2915
+ * bring the oracle back through the side door.
2916
+ */
2917
+ readonly ConfirmEmailRegistration: "ConfirmEmailRegistration";
2918
+ /**
2919
+ * Mail the code again.
2920
+ *
2921
+ * A NEW code is sent, not the previous one: only its hash is stored, so the old one cannot be
2922
+ * re-sent. The last code mailed is the one that works.
2923
+ */
2924
+ readonly ResendVerificationCode: "ResendVerificationCode";
2752
2925
  readonly RequestWalletChallenge: "RequestWalletChallenge";
2753
2926
  readonly LoginWithWallet: "LoginWithWallet";
2754
2927
  readonly ForgotPassword: "ForgotPassword";
@@ -2793,13 +2966,19 @@ declare const FodderSelectionMode: {
2793
2966
  readonly ProtectLeveled: "ProtectLeveled";
2794
2967
  readonly CheapestFirst: "CheapestFirst";
2795
2968
  readonly ClientSelected: "ClientSelected";
2969
+ /**
2970
+ * Кормом идут только копии ТОГО ЖЕ уровня, что и прокачиваемый предмет: на 2-й уровень —
2971
+ * первые, на 3-й — вторые. Классическое слияние по тирам: копия другого уровня не кандидат
2972
+ * вовсе, поэтому прокачанная не может сгореть «в счёт» дешёвой, а перерасхода не бывает.
2973
+ */
2974
+ readonly SameLevelOnly: "SameLevelOnly";
2796
2975
  };
2797
2976
  type FodderSelectionMode = (typeof FodderSelectionMode)[keyof typeof FodderSelectionMode];
2798
2977
  type NFTNetworkBinding = { ContractAddress?: null | string; TokenID?: null | string; TokenStandard?: null | string; [key: string]: unknown; };
2799
2978
  type NFTModel = { Networks?: null | Record<string, NFTNetworkBinding>; MetadataUrl?: null | string; [key: string]: unknown; };
2800
2979
  type ItemStats = { FlatBonuses?: null | Record<string, number>; PercentBonuses?: null | Record<string, number>; Power?: null | number; [key: string]: unknown; };
2801
2980
  type ItemEquipment = { MinCharacterLevel?: null | number; UseRequirements?: null | Record<string, number>; AllowedCharacterIDs?: null | Array<string>; AllowedSlotIDs?: null | Array<string>; [key: string]: unknown; };
2802
- type ItemUpgradeFodder = { ValuationMode?: null | 'FlatCount' | 'Merge' | 'InvestmentRefund'; WeightCurve?: null | ScalarCurveSpec; Selection?: null | 'ProtectLeveled' | 'CheapestFirst' | 'ClientSelected'; [key: string]: unknown; };
2981
+ type ItemUpgradeFodder = { ValuationMode?: null | 'FlatCount' | 'Merge' | 'InvestmentRefund'; WeightCurve?: null | ScalarCurveSpec; Selection?: null | 'ProtectLeveled' | 'CheapestFirst' | 'ClientSelected' | 'SameLevelOnly'; [key: string]: unknown; };
2803
2982
  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; };
2804
2983
  type ItemMetadata = { RarityID?: null | string; CollectionID?: null | string; AuthorID?: null | string; [key: string]: unknown; };
2805
2984
  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; };
@@ -3280,6 +3459,7 @@ interface SdkEvents {
3280
3459
  "referral:inviteRewardsBatchClaimed": ClaimInviteRewardsBatchResponse;
3281
3460
  "social:friendsListLoaded": FriendsListResponse;
3282
3461
  "social:incomingRequestsLoaded": FriendsListResponse;
3462
+ "social:outgoingRequestsLoaded": FriendsListResponse;
3283
3463
  "social:recommendedFriendsLoaded": FriendsListResponse;
3284
3464
  "social:friendRequestSent": FriendActionResponse;
3285
3465
  "social:friendRequestAccepted": FriendActionResponse;
@@ -3406,6 +3586,18 @@ interface IDosGamesSettings {
3406
3586
  * `client.localization.locale`, а не это поле.
3407
3587
  */
3408
3588
  readonly locale: string;
3589
+ /**
3590
+ * Версия сборки игры — например `"1.4.2"`.
3591
+ *
3592
+ * Уезжает вместе с сигналом привлечения на входе и записывается в касание. Без неё когортный
3593
+ * анализ по релизам невозможен в принципе: сервер видит игрока, но не видит, какую сборку он
3594
+ * запустил.
3595
+ *
3596
+ * Пусто по умолчанию, потому что взять её самому неоткуда: у веб-сборки нет аналога
3597
+ * `Application.version`. Хост-приложение обычно подставляет сюда значение, которое сборщик
3598
+ * подмешал в бандл.
3599
+ */
3600
+ readonly appVersion: string;
3409
3601
  }
3410
3602
  interface SettingsInput {
3411
3603
  titleID: string;
@@ -3416,6 +3608,113 @@ interface SettingsInput {
3416
3608
  debugLogging?: boolean;
3417
3609
  configStorage?: ConfigStorage;
3418
3610
  locale?: string;
3611
+ appVersion?: string;
3612
+ }
3613
+
3614
+ /**
3615
+ * Captures where the player came from and keeps it until they actually log in.
3616
+ *
3617
+ * WHY IT PERSISTS. The signal arrives once, in the URL that opened the page, but the login can
3618
+ * happen much later — after a redirect to the sign-in screen, after the e-mail confirmation step,
3619
+ * after a reload. Holding it in memory loses it for exactly the people who arrived through a
3620
+ * campaign or an invite, which is the only group that matters here.
3621
+ *
3622
+ * WHY IT IS AUTOMATIC. The signal is attached inside `AuthenticationService.baseRequest()`, so it
3623
+ * covers every sign-in method at once. A game does not have to remember to pass it, and cannot
3624
+ * forget to.
3625
+ */
3626
+ declare class AcquisitionCapture {
3627
+ private readonly platform;
3628
+ constructor(platform: PlatformAdapter);
3629
+ /**
3630
+ * Read the launch URL (and Telegram launch parameters) and remember anything worth keeping.
3631
+ * Safe to call more than once: a launch without any signal never overwrites a stored one.
3632
+ */
3633
+ capture(): void;
3634
+ /**
3635
+ * The signal to send with a login request: what was captured, plus the device facts the
3636
+ * deferred match needs.
3637
+ *
3638
+ * Returns `undefined` when there is nothing at all to report — an empty object would still be
3639
+ * serialised into every request for no reason.
3640
+ */
3641
+ buildForLogin(appVersion?: string): AttributionInput | undefined;
3642
+ /** Forget the stored signal — call it once it has been delivered with a successful login. */
3643
+ clear(): void;
3644
+ /**
3645
+ * Platform to report when registering a CLICK that is expected to end in a native install.
3646
+ *
3647
+ * IMPORTANT: report the platform of the DEVICE (`Android` / `iOS`), not `Web`. The fingerprint
3648
+ * is compared between two different programs — this page and the installed game — and the game
3649
+ * will report `Android`. Send `Web` here and the two never line up, which quietly turns the
3650
+ * whole deferred match into dead code for its main use case: an ad clicked in a browser, an
3651
+ * install from the store.
3652
+ */
3653
+ static detectDevicePlatform(userAgent: string): string;
3654
+ /** Pull a referral code out of whatever the player pasted: a bare code, or the whole link. */
3655
+ static parseReferralCode(input: string): string | null;
3656
+ private readFromEnvironment;
3657
+ private read;
3658
+ private store;
3659
+ }
3660
+
3661
+ /**
3662
+ * Counts how long the player actually plays and reports it to the server.
3663
+ *
3664
+ * WHY THIS EXISTS AT ALL. Every engagement number a publisher sees — DAU, WAU, MAU, stickiness,
3665
+ * playtime, session counts, and the retention cohorts built on top of them — is derived from the
3666
+ * per-day usage records this call writes. Nothing else feeds them. The API had been there from the
3667
+ * start and nothing in the web SDK ever called it, so a web-only title reported zero active users
3668
+ * no matter how many people played it.
3669
+ *
3670
+ * WHY THE NUMBERS MATCH UNITY. Flush interval and idle threshold are copied from the Unity
3671
+ * tracker deliberately. Different constants would make the same behaviour produce different
3672
+ * session counts on different platforms, and a publisher comparing web against mobile would be
3673
+ * comparing two different definitions of "a session".
3674
+ *
3675
+ * The buffer survives a reload: seconds already counted but not yet delivered are kept in storage
3676
+ * and go out with the next flush, so closing a tab does not silently discard playtime.
3677
+ */
3678
+ declare class PlaytimeTracker {
3679
+ private readonly ctx;
3680
+ private pendingSeconds;
3681
+ private currentSessionSeconds;
3682
+ private pendingClosedSessionSeconds;
3683
+ private isNewSessionPending;
3684
+ private lastTickAt;
3685
+ private suspendedAt;
3686
+ /**
3687
+ * Whether the stretch that is currently being measured counts as playtime.
3688
+ *
3689
+ * A flag rather than a live `visibilityState` read, and that is the whole point: the
3690
+ * `visibilitychange` event fires AFTER the state has already flipped, so a handler asking the
3691
+ * document gets "hidden" and throws away the visible seconds that led up to the switch — up to
3692
+ * a full flush interval of real playtime, lost every single time the player changes tab.
3693
+ */
3694
+ private countingPaused;
3695
+ private timer;
3696
+ private started;
3697
+ private flushing;
3698
+ constructor(ctx: ClientContext);
3699
+ /** Begin counting. Called by the client once the player is authenticated. */
3700
+ start(): void;
3701
+ /** Stop counting and hand over whatever is left. */
3702
+ stop(): Promise<void>;
3703
+ private onVisibilityChange;
3704
+ /**
3705
+ * The tab is going away. This is the last moment anything can be sent, so the buffer is
3706
+ * persisted first — delivery may well not finish, and unsent seconds must survive to the next
3707
+ * launch rather than disappear with the tab.
3708
+ */
3709
+ private onPageHide;
3710
+ private tick;
3711
+ private accumulate;
3712
+ private closeCurrentSession;
3713
+ private flush;
3714
+ private restore;
3715
+ private persist;
3716
+ private readNumber;
3717
+ private writeNumber;
3419
3718
  }
3420
3719
 
3421
3720
  /**
@@ -3508,10 +3807,19 @@ declare class UserData {
3508
3807
  patchCoopEventActiveGroup(groupID: string | null, coopEventID: string | null, myObjectIndex: number): void;
3509
3808
  applyDealOffer(data: UserDealOffersState | null): void;
3510
3809
  applyReferral(data: UserReferralState | null): void;
3511
- patchReferralSubscription(referralCode: string): void;
3810
+ /**
3811
+ * Record who this player is now subscribed to, after a successful activation.
3812
+ *
3813
+ * Takes the referrer's ID, NOT the code they typed. While a code and a `UserID` were the same
3814
+ * string, passing the code back happened to be right; with a short human code that same move
3815
+ * writes a code into an id field and the cache disagrees with the server until the next
3816
+ * `getUserState()`.
3817
+ */
3818
+ patchReferralSubscription(referrerUserID: string): void;
3512
3819
  patchReferralInviteRewardClaimed(rewardID: string): void;
3513
3820
  applySocialFriendsList(friends: FriendPublicProfile[] | null | undefined): void;
3514
3821
  applySocialIncomingRequests(profiles: FriendPublicProfile[] | null | undefined): void;
3822
+ applySocialOutgoingRequests(profiles: FriendPublicProfile[] | null | undefined): void;
3515
3823
  applySocialTimeline(events: SocialTimelineEvent[] | null | undefined): void;
3516
3824
  patchSocialAddOutgoingRequest(targetUserID: string): void;
3517
3825
  patchSocialAcceptFriend(requesterUserID: string): void;
@@ -3617,6 +3925,20 @@ interface AuthContext {
3617
3925
  platformAuthTokenExpiration?: string;
3618
3926
  }
3619
3927
 
3928
+ /**
3929
+ * Чем закончилось начало регистрации по почте.
3930
+ *
3931
+ * ⚠ Игрока здесь НЕ появляется никогда: на адрес ушёл код, и аккаунт создаст
3932
+ * `confirmEmailRegistration`. Сессии в этом ответе нет и быть не может — есть только то, что
3933
+ * нужно показать на экране ввода кода.
3934
+ */
3935
+ interface EmailRegistrationOutcome {
3936
+ /** Сколько живёт код — чтобы экран показал это, а не выдумывал. */
3937
+ codeTtlMinutes?: number;
3938
+ /** Через сколько секунд «отправить ещё раз» снова что-то сделает. */
3939
+ resendCooldownSeconds?: number;
3940
+ }
3941
+
3620
3942
  /** Port of AuthenticationService.cs: login methods, AutoLogin, single 401 refresh. */
3621
3943
  declare class AuthenticationService {
3622
3944
  private readonly ctx;
@@ -3626,6 +3948,16 @@ declare class AuthenticationService {
3626
3948
  private sessionAuthType;
3627
3949
  private sessionEmail;
3628
3950
  private sessionPassword;
3951
+ /**
3952
+ * Credentials from the first step of an e-mail registration.
3953
+ *
3954
+ * The account is created on the SECOND step, and that request carries no password — the server
3955
+ * has been holding its hash since the first one. Without keeping it here for the short gap
3956
+ * between the two, a player who registers is never remembered: `autoLogin()` has nothing to
3957
+ * replay, and the next launch drops them back on the login screen. Signing in with the same
3958
+ * password does remember them, which made the difference look like a bug in the game.
3959
+ */
3960
+ private pendingRegistration;
3629
3961
  constructor(ctx: ClientContext);
3630
3962
  get context(): AuthContext | null;
3631
3963
  get isLoggedIn(): boolean;
@@ -3644,11 +3976,48 @@ declare class AuthenticationService {
3644
3976
  */
3645
3977
  setRememberSession(remember: boolean): void;
3646
3978
  get remembersSession(): boolean;
3979
+ /**
3980
+ * The one place every sign-in method goes through — and therefore the one place the acquisition
3981
+ * signal is attached.
3982
+ *
3983
+ * Attaching it per method would mean eight places to remember, and the one forgotten would fail
3984
+ * silently: the player logs in fine, they just never appear in any acquisition report.
3985
+ */
3647
3986
  private baseRequest;
3648
3987
  loginWithDeviceID(): Promise<OperationResult<ClientState>>;
3649
3988
  loginWithTelegram(): Promise<OperationResult<ClientState>>;
3650
3989
  loginWithEmail(email: string, password: string): Promise<OperationResult<ClientState>>;
3651
- registerWithEmail(email: string, password: string): Promise<OperationResult<ClientState>>;
3990
+ /**
3991
+ * Start a registration by e-mail.
3992
+ *
3993
+ * ⚠ **This never creates an account by itself.** The server stores the attempt and mails a
3994
+ * code; the player appears on {@link confirmEmailRegistration}. A screen that waits for a
3995
+ * session here will spin forever.
3996
+ *
3997
+ * Why it works this way: without confirmation anyone can take someone else's address in a
3998
+ * single request, and the real owner is then unable to register and receives no e-mail at all.
3999
+ * This is platform behaviour — no title can switch it off.
4000
+ *
4001
+ * The answer is deliberately identical for a free and for a taken address — otherwise this form
4002
+ * would answer the question "does this person have an account here".
4003
+ */
4004
+ registerWithEmail(email: string, password: string): Promise<OperationResult<EmailRegistrationOutcome>>;
4005
+ /**
4006
+ * Finish a registration: exchange the code from the e-mail for a session.
4007
+ *
4008
+ * The password is not passed again — the server has been holding its hash since the first step,
4009
+ * and the plaintext never existed anywhere but that one request.
4010
+ */
4011
+ confirmEmailRegistration(email: string, code: string): Promise<OperationResult<ClientState>>;
4012
+ /**
4013
+ * Mail the confirmation code again.
4014
+ *
4015
+ * A NEW code arrives, not the previous one: the server keeps only its hash and cannot re-send
4016
+ * what it does not have. The last code mailed is the one that works.
4017
+ *
4018
+ * Always resolves successfully, whatever happened on the server — see the note on the action.
4019
+ */
4020
+ resendVerificationCode(email: string): Promise<OperationResult<void>>;
3652
4021
  loginWithGoogle(googleIDToken: string): Promise<OperationResult<ClientState>>;
3653
4022
  /**
3654
4023
  * Step 1 of wallet login: request the challenge message the wallet must sign. The signing itself
@@ -3662,7 +4031,6 @@ declare class AuthenticationService {
3662
4031
  * {@link autoLogin} routes AuthType.Wallet to the default (fail) branch.
3663
4032
  */
3664
4033
  loginWithWallet(walletAddress: string, networkID: string, signature: string): Promise<OperationResult<ClientState>>;
3665
- loginWithPlatformToken(authToken: string): Promise<OperationResult<ClientState>>;
3666
4034
  /**
3667
4035
  * Exchange a one-time SSO code from idosgames.com for a title session.
3668
4036
  *
@@ -4571,6 +4939,17 @@ declare class SocialService {
4571
4939
  constructor(ctx: ClientContext);
4572
4940
  getFriendsList(): Promise<OperationResult<FriendsListResponse>>;
4573
4941
  getIncomingRequests(): Promise<OperationResult<FriendsListResponse>>;
4942
+ /**
4943
+ * Requests this player has SENT and that are still unanswered.
4944
+ *
4945
+ * ⚠ The only way to know them across sessions. `OutgoingRequests` in the cache is otherwise
4946
+ * filled solely by your own `sendFriendRequest()` calls this run, so after a restart — or on a
4947
+ * second device — a player who already asked someone shows up as "not asked yet" and the UI
4948
+ * offers "Add" again. (`OutgoingCount` cannot fix that: it is a number, and the UI needs ids.)
4949
+ *
4950
+ * Call it on the screen that renders "Add friend" suggestions, next to `getRecommendedFriends()`.
4951
+ */
4952
+ getOutgoingRequests(): Promise<OperationResult<FriendsListResponse>>;
4574
4953
  getRecommendedFriends(limit?: number): Promise<OperationResult<FriendsListResponse>>;
4575
4954
  sendFriendRequest(targetUserID: string): Promise<OperationResult<FriendActionResponse>>;
4576
4955
  acceptFriendRequest(requesterUserID: string): Promise<OperationResult<FriendActionResponse>>;
@@ -4683,7 +5062,15 @@ declare class GameLoopService {
4683
5062
  boardLoopBuild(buildingIndex: number): Promise<OperationResult<BuildResponse>>;
4684
5063
  boardSpecialChoose(choiceID: string, selectedOptionID?: string): Promise<OperationResult<SpecialChooseResponse>>;
4685
5064
  boardSpecialApplyMultiplier(existingRelatedEntityID?: string): Promise<OperationResult<SpecialApplyMultiplierResponse>>;
4686
- boardSpecialClaim(): Promise<OperationResult<SpecialClaimResponse>>;
5065
+ /**
5066
+ * Claims the Timed Special reward.
5067
+ *
5068
+ * @param runStats Optional gameplay statistics of the run ({MetricID: value}), used by the server
5069
+ * to pay the run-stat reward ladders on top of the time ladder. Omit it whenever the run never
5070
+ * happened or its numbers could not be recovered — the server then pays by time alone, which is
5071
+ * the correct outcome, not a degraded one.
5072
+ */
5073
+ boardSpecialClaim(runStats?: Record<string, number>): Promise<OperationResult<SpecialClaimResponse>>;
4687
5074
  /** Fetch this player's Community Chest state (active group, if any) + seconds remaining. */
4688
5075
  getCommunityChestState(): Promise<OperationResult<CommunityChestUserStateResponse>>;
4689
5076
  /** Join an existing forming/active Community Chest group, or create one if none is open. */
@@ -4840,9 +5227,27 @@ declare class AuthenticationApi {
4840
5227
  loginWithTelegram(request: AuthenticationRequest): Promise<OperationResult<PlatformLoginResponse>>;
4841
5228
  loginWithEmail(request: AuthenticationRequest): Promise<OperationResult<PlatformLoginResponse>>;
4842
5229
  loginWithGoogle(request: AuthenticationRequest): Promise<OperationResult<PlatformLoginResponse>>;
4843
- loginWithPlatformToken(request: AuthenticationRequest): Promise<OperationResult<PlatformLoginResponse>>;
4844
5230
  loginWithSsoCode(request: AuthenticationRequest): Promise<OperationResult<PlatformLoginResponse>>;
4845
- registerWithEmail(request: AuthenticationRequest): Promise<OperationResult<PlatformLoginResponse>>;
5231
+ /**
5232
+ * Start a registration. Anonymous.
5233
+ *
5234
+ * ⚠ Success does NOT mean the account exists. This only mails a code; the player is created by
5235
+ * {@link confirmEmailRegistration}. Always move on to the code screen — there is no flag to
5236
+ * check and no title that skips this step: confirmation is platform behaviour, not a setting.
5237
+ *
5238
+ * The response carries only `CodeTtlMinutes` and `ResendCooldownSeconds`, so the screen can
5239
+ * state how long the code lives and when "send again" will do something.
5240
+ */
5241
+ registerWithEmail(request: AuthenticationRequest): Promise<OperationResult<EmailRegistrationResponse>>;
5242
+ /** Confirm the address with the code from the e-mail and create the player. Anonymous. */
5243
+ confirmEmailRegistration(request: AuthenticationRequest): Promise<OperationResult<PlatformLoginResponse>>;
5244
+ /**
5245
+ * Mail the confirmation code again. Anonymous.
5246
+ *
5247
+ * Always answers with success — whether a registration was started, whether the cooldown has
5248
+ * passed, whether the letter left. Any other answer would say something about the address.
5249
+ */
5250
+ resendVerificationCode(request: AuthenticationRequest): Promise<OperationResult<SuccessResponse>>;
4846
5251
  /** Step 1 of wallet login: fetch the challenge message the wallet must sign. Anonymous. */
4847
5252
  requestWalletChallenge(request: AuthenticationRequest): Promise<OperationResult<WalletChallengeResponse>>;
4848
5253
  /** Step 2 of wallet login: exchange the signed challenge for a session. */
@@ -5157,6 +5562,7 @@ declare class SocialApi {
5157
5562
  private send;
5158
5563
  getFriendsList(request: SocialRequest): Promise<OperationResult<FriendsListResponse>>;
5159
5564
  getIncomingRequests(request: SocialRequest): Promise<OperationResult<FriendsListResponse>>;
5565
+ getOutgoingRequests(request: SocialRequest): Promise<OperationResult<FriendsListResponse>>;
5160
5566
  getRecommendedFriends(request: SocialRequest): Promise<OperationResult<FriendsListResponse>>;
5161
5567
  sendFriendRequest(request: SocialRequest): Promise<OperationResult<FriendActionResponse>>;
5162
5568
  acceptFriendRequest(request: SocialRequest): Promise<OperationResult<FriendActionResponse>>;
@@ -5338,6 +5744,18 @@ declare class ClientContext {
5338
5744
  readonly settings: IDosGamesSettings;
5339
5745
  readonly emitter: TypedEmitter<SdkEvents>;
5340
5746
  readonly platform: PlatformAdapter;
5747
+ /**
5748
+ * Where the player came from. Captured on client creation, delivered with the first login.
5749
+ *
5750
+ * Reading it later would be too late: the launch URL is gone after the first redirect, and the
5751
+ * players it would lose are exactly the ones who arrived through a campaign or an invite.
5752
+ */
5753
+ readonly acquisition: AcquisitionCapture;
5754
+ /**
5755
+ * Counts playtime and reports it. Every engagement number the publisher sees is derived from
5756
+ * what it sends — without it a web title reports zero active users.
5757
+ */
5758
+ readonly playtime: PlaytimeTracker;
5341
5759
  /** Platform reported to the server; services read it to filter payment options. */
5342
5760
  readonly clientPlatform: ClientPlatform;
5343
5761
  readonly data: IDosGamesData;
@@ -5497,6 +5915,20 @@ declare function readSsoCodeFromUrl(): SsoCodeFromUrl | null;
5497
5915
  *
5498
5916
  * Top-level redirect rather than a popup: popups are blocked by default on mobile browsers and
5499
5917
  * inside standalone/PWA windows, which is exactly where games run.
5918
+ *
5919
+ * ⚠ **No PKCE here, deliberately — and the plumbing for it exists on the other side.** The /sso
5920
+ * page reads a `code_challenge` query parameter, the management backend stores it on the code, and
5921
+ * the engine verifies a `code_verifier` at exchange. Nothing in this SDK ever puts one in the URL,
5922
+ * so on the web that whole path stays inert.
5923
+ *
5924
+ * That is the intended state, not an omission: on the web the code comes back in the URL FRAGMENT,
5925
+ * which the browser never sends to a server, so there is no leg for anyone to intercept it on. PKCE
5926
+ * exists for the NATIVE flow, where the code would come back over an app URL scheme that any app on
5927
+ * the device can claim — and that flow does send one (see the Unity SDK's native-SSO manager).
5928
+ *
5929
+ * So don't "fix" this by adding a challenge here: `loginWithSsoCode` has no `CodeVerifier` field to
5930
+ * present at exchange, so a challenge added to the URL by hand would produce a code that this SDK
5931
+ * can never redeem.
5500
5932
  */
5501
5933
  declare function beginSsoRedirect(options: {
5502
5934
  titleID: string;
@@ -5702,4 +6134,4 @@ declare class LocalizationCache {
5702
6134
  private versionsKey;
5703
6135
  }
5704
6136
 
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 };
6137
+ export { type AcceptTradeOfferResponse, AcquisitionCapture, 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, PlaytimeTracker, 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 UsagePeriodRecord, 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 };