@idosgames/core 0.1.5 → 0.3.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
@@ -439,7 +439,7 @@ interface UserQuestState {
439
439
  PermanentQuests?: Record<string, UserQuestProgress>;
440
440
  LastUpdatedUtc?: string;
441
441
  }
442
- type QuestPointsTrackView = { CycleID: string; InstanceKey?: null | string; CycleStartUtc?: null | string; CycleEndUtc?: null | string; PointsTotalEarned?: null | number; PointsCurrent?: null | number; ClaimedPointMilestoneIDs?: null | Array<string>; };
442
+ type QuestPointsTrackView = { CycleID: string; InstanceKey?: null | string; PhaseID?: null | string; CycleIndex?: null | number; CycleStartUtc?: null | string; CycleEndUtc?: null | string; PointsTotalEarned?: null | number; PointsCurrent?: null | number; ClaimedPointMilestoneIDs?: null | Array<string>; };
443
443
  type QuestProgressUpdate = { QuestID: string; Status: 'Active' | 'Completed' | 'Claimed' | 'Expired'; CycleID?: null | string; ObjectiveID?: null | string; NewValue?: null | number; ObjectiveCompleted?: null | boolean; };
444
444
  type GetUserQuestStateResponse = { State?: null | UserQuestState; PointsTracks?: null | Record<string, QuestPointsTrackView>; };
445
445
  type ClaimQuestRewardResponse = { ServerTimeUtc: string; QuestID: string; CycleID?: null | string; NewStatus?: null | 'Active' | 'Completed' | 'Claimed' | 'Expired'; Resources?: null | ResourceOperation; };
@@ -461,8 +461,16 @@ declare const QuestPrerequisiteMode: {
461
461
  readonly BlockClaimOnly: "BlockClaimOnly";
462
462
  };
463
463
  type QuestPrerequisiteMode = (typeof QuestPrerequisiteMode)[keyof typeof QuestPrerequisiteMode];
464
- type QuestDefinition = { QuestID?: null | string; CycleIDs?: null | Array<string>; DisplayName?: null | string; Description?: null | string; SortOrder?: null | number; RequiredQuestIDs?: null | Array<string>; PrerequisiteMode?: null | 'BlockProgressAndClaim' | 'BlockClaimOnly'; PointsReward?: null | number; Schedule?: null | ScheduleSpec; AccrueProgressWhenLocked?: null | boolean; Gate?: null | SegmentGate; Limits?: null | LimitSpec; GroupID?: null | string; Objectives?: null | Record<string, { ObjectiveID?: null | string; Source?: null | 'ClientApi' | 'ServerApi' | 'SystemEvent'; MaxProgressPerCall?: null | number; MetricID?: null | string; TargetValue?: null | number; AggregationMethod?: null | string; Filters?: null | Record<string, string>; [key: string]: unknown; }>; Reward?: null | ResourceGrant; [key: string]: unknown; };
464
+ type QuestObjectiveDefinition = { ObjectiveID?: null | string; Source?: null | 'ClientApi' | 'ServerApi' | 'SystemEvent'; MaxProgressPerCall?: null | number; MetricID?: null | string; Triggers?: null | Array<TriggerSource>; TargetValue?: null | number; AggregationMethod?: null | string; [key: string]: unknown; };
465
+ type QuestPresetBindings = { Milestones?: null | PresetBinding; Linking?: null | PresetBinding; Availability?: null | PresetBinding; Reward?: null | PresetBinding; Objectives?: null | PresetBinding; [key: string]: unknown; };
466
+ type QuestIdentity = { DisplayName?: null | string; Description?: null | string; SortOrder?: null | number; AssetPaths?: null | Record<string, string>; CustomParams?: null | Record<string, string>; [key: string]: unknown; };
467
+ type QuestLinking = { CycleIDs?: null | Array<string>; GroupID?: null | string; PhaseIDs?: null | Array<string>; RequiredQuestIDs?: null | Array<string>; PrerequisiteMode?: null | 'BlockProgressAndClaim' | 'BlockClaimOnly'; [key: string]: unknown; };
468
+ type QuestAvailability = { Schedule?: null | ScheduleSpec; AccrueProgressWhenLocked?: null | boolean; Gate?: null | SegmentGate; Limits?: null | LimitSpec; [key: string]: unknown; };
469
+ type QuestReward = { Grant?: null | ResourceGrant; PointsReward?: null | number; [key: string]: unknown; };
470
+ type QuestDefinition = { QuestID?: null | string; Identity?: null | QuestIdentity; Linking?: null | QuestLinking; Availability?: null | QuestAvailability; Objectives?: null | Record<string, QuestObjectiveDefinition>; Reward?: null | QuestReward; Presets?: null | QuestPresetBindings; [key: string]: unknown; };
465
471
  type QuestGroupCompletionDefinition = { CompletionID?: null | string; GroupID?: null | string; RequiredCompletedQuests?: null | number; Gate?: null | SegmentGate; Reward?: null | ResourceGrant; PointsReward?: null | number; [key: string]: unknown; };
472
+ type QuestPhaseDefinition = { PhaseID?: null | string; Order?: null | number; DurationSec?: null | number; ClaimGraceHours?: null | number; DisplayName?: null | string; AssetPaths?: null | Record<string, string>; CustomParams?: null | Record<string, string>; Gate?: null | SegmentGate; Milestones?: null | Record<string, MilestoneDefinition>; Presets?: null | QuestPresetBindings; PointsToken?: null | EventTokenDefinition; [key: string]: unknown; };
473
+ type QuestPresetRegistry = { Milestones?: null | Record<string, MilestoneSet>; Linking?: null | Record<string, QuestLinking>; Availability?: null | Record<string, QuestAvailability>; Reward?: null | Record<string, QuestReward>; Objectives?: null | Record<string, Record<string, QuestObjectiveDefinition>>; [key: string]: unknown; };
466
474
  /** Cycle definition: schedule + milestone rewards + points-track token. */
467
475
  interface QuestCycleDefinition {
468
476
  CycleID?: string | null;
@@ -472,12 +480,19 @@ interface QuestCycleDefinition {
472
480
  Gate?: SegmentGate | null;
473
481
  PointsToken?: EventTokenDefinition | null;
474
482
  GroupCompletions?: Record<string, QuestGroupCompletionDefinition> | null;
483
+ /** Chain phases, keyed by PhaseID — only for `Schedule.Mode = "Chained"`. */
484
+ Phases?: Record<string, QuestPhaseDefinition> | null;
485
+ Presets?: QuestPresetBindings | null;
486
+ AssetPaths?: Record<string, string> | null;
487
+ CustomParams?: Record<string, string> | null;
475
488
  [key: string]: unknown;
476
489
  }
477
490
  /** Root block of the quest system in the title config. */
478
491
  interface QuestDefinitions {
479
492
  Cycles?: Record<string, QuestCycleDefinition> | null;
480
493
  Quests?: Record<string, QuestDefinition> | null;
494
+ /** Reusable blocks referenced by cycles, phases and quests. The only reuse mechanism. */
495
+ Presets?: QuestPresetRegistry | null;
481
496
  [key: string]: unknown;
482
497
  }
483
498
  /** One (cycle, quest) pair for a batch reward claim. CycleID null/empty = permanent quest. */
@@ -1828,228 +1843,383 @@ declare const MarketplaceAction: {
1828
1843
  readonly ClaimBack: "ClaimBack";
1829
1844
  };
1830
1845
  type MarketplaceAction = (typeof MarketplaceAction)[keyof typeof MarketplaceAction];
1831
- type FodderConsumedEntry = { ItemInstanceID: string; Units: number; Level: number; };
1832
- type UpgradeItemLevelResponse = { ServerTimeUtc: string; ItemInstanceID: string; ItemID: string; Level: number; CatalogID?: null | string; Resources?: null | ResourceOperation; FodderConsumed?: null | Array<FodderConsumedEntry>; };
1833
- type UpgradeLevelsBatchResponse = Array<{ Id: string; Success: boolean; Error?: null | string; Data?: null | UpgradeItemLevelResponse; }>;
1834
- /** One instance's upgrade in a batch (with optional multi-level Levels/TargetLevel). */
1835
- interface ItemUpgradeRef {
1836
- ItemInstanceID?: string;
1837
- Levels?: number;
1838
- TargetLevel?: number;
1839
- FodderInstanceIDs?: string[];
1846
+
1847
+ interface UserDailyCounters {
1848
+ PeriodStartUtc: string;
1849
+ Earned: number;
1850
+ Spent: number;
1840
1851
  }
1841
- interface ItemRequest extends BaseRequest {
1842
- ItemInstanceID?: string;
1843
- Levels?: number;
1844
- TargetLevel?: number;
1845
- FodderInstanceIDs?: string[];
1846
- /** UpgradeLevelsBatch: per-instance upgrades (deduped by ItemInstanceID). */
1847
- Upgrades?: ItemUpgradeRef[];
1852
+ interface UserRechargeState {
1853
+ LastRechargeAt?: string;
1854
+ PendingSeconds?: number;
1848
1855
  }
1849
- declare const ItemAction: {
1850
- readonly UpgradeLevel: "UpgradeLevel";
1851
- readonly UpgradeLevelsBatch: "UpgradeLevelsBatch";
1852
- };
1853
- type ItemAction = (typeof ItemAction)[keyof typeof ItemAction];
1854
- declare const FodderValuationMode: {
1855
- readonly FlatCount: "FlatCount";
1856
- readonly Merge: "Merge";
1857
- readonly InvestmentRefund: "InvestmentRefund";
1858
- };
1859
- type FodderValuationMode = (typeof FodderValuationMode)[keyof typeof FodderValuationMode];
1860
- declare const FodderSelectionMode: {
1861
- readonly ProtectLeveled: "ProtectLeveled";
1862
- readonly CheapestFirst: "CheapestFirst";
1863
- readonly ClientSelected: "ClientSelected";
1864
- };
1865
- type FodderSelectionMode = (typeof FodderSelectionMode)[keyof typeof FodderSelectionMode];
1866
- type NFTNetworkBinding = { ContractAddress?: null | string; TokenID?: null | string; TokenStandard?: null | string; [key: string]: unknown; };
1867
- type NFTModel = { Networks?: null | Record<string, NFTNetworkBinding>; MetadataUrl?: null | string; [key: string]: unknown; };
1868
- type ItemStats = { FlatBonuses?: null | Record<string, number>; PercentBonuses?: null | Record<string, number>; Power?: null | number; [key: string]: unknown; };
1869
- type ItemEquipment = { MinCharacterLevel?: null | number; UseRequirements?: null | Record<string, number>; AllowedCharacterIDs?: null | Array<string>; AllowedSlotIDs?: null | Array<string>; [key: string]: unknown; };
1870
- type ItemUpgradeFodder = { ValuationMode?: null | 'FlatCount' | 'Merge' | 'InvestmentRefund'; MergeRatio?: null | number; Selection?: null | 'ProtectLeveled' | 'CheapestFirst' | 'ClientSelected'; [key: string]: unknown; };
1871
- type ItemUpgrade = { MaxLevel?: null | number; BaseCostResource?: null | ResourceConsume; CostScalingFactor?: null | number; FlatScalingFactor?: null | number; PercentScalingFactor?: null | number; PowerScalingFactor?: null | number; Fodder?: null | ItemUpgradeFodder; [key: string]: unknown; };
1872
- type ItemMetadata = { RarityID?: null | string; CollectionID?: null | string; AuthorID?: null | string; [key: string]: unknown; };
1873
- 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; };
1874
- /** Catalog: a set of items of one thematic group. Key of `Items` is ItemID. */
1875
- interface ItemCatalog {
1876
- Items?: Record<string, ItemDefinition> | null;
1856
+ interface UserVirtualCurrencyState {
1857
+ Amount: number;
1858
+ Recharge?: UserRechargeState | null;
1859
+ Daily?: UserDailyCounters | null;
1860
+ CreatedAt?: string;
1861
+ UpdatedAt?: string;
1877
1862
  }
1878
- /** Root container for all item catalogs of a title. Key of `Catalogs` is CatalogID. */
1879
- interface ItemDefinitions {
1880
- Catalogs?: Record<string, ItemCatalog> | null;
1863
+ /** Personal deposit address assigned to the player in one network (lazily generated). */
1864
+ interface UserDepositAddress {
1865
+ Address: string;
1866
+ Memo?: string | null;
1867
+ AssignedAt: string;
1881
1868
  }
1882
- type BonusWindowConfig = { Schedule?: null | Array<{ Order?: null | number; Type?: null | string; DurationSec?: null | number; BonusMultiplier?: null | number; [key: string]: unknown; }>; RepeatCycle?: null | boolean; MaxCycles?: null | number; [key: string]: unknown; };
1883
- type BonusWindowState = { IsActive?: null | boolean; CurrentPhaseEndUtc?: null | string; NextBonusStartUtc?: null | string; CurrentCycleIndex?: null | number; CurrentPhaseIndex?: null | number; ActiveBonusMultiplier?: null | number; [key: string]: unknown; };
1884
- /**
1885
- * Container of preset wiring for event content — one PresetBinding per block. Inline data
1886
- * (Milestones) lives on EventContent. null = presets unused.
1887
- */
1888
- interface TimedEventPresetBindings {
1889
- Milestones?: PresetBinding | null;
1869
+ /** Spent-compliance (AML) window counters, checked against CryptoCurrencyDefinition.Limits. */
1870
+ interface UserCryptoComplianceCounters {
1871
+ DailyPeriodStartUtc: string;
1872
+ /** decimal string use Decimal for arithmetic. */
1873
+ DailyWithdrawnUsd: string;
1874
+ MonthlyPeriodStartUtc: string;
1875
+ /** decimal string — use Decimal for arithmetic. */
1876
+ MonthlyWithdrawnUsd: string;
1890
1877
  }
1891
- /** Event content: display, token, sources, rewards, milestones, bonus window. */
1892
- interface EventContent {
1893
- DisplayName?: string | null;
1894
- Description?: string | null;
1895
- AssetPaths?: Record<string, string> | null;
1896
- Category?: string | null;
1897
- Token?: EventTokenDefinition | null;
1898
- TokenSources?: TriggerSource[] | null;
1899
- ClaimMode?: string | null;
1900
- Milestones?: Record<string, MilestoneDefinition> | null;
1901
- /** Container of content preset wiring (milestones). null = presets unused. */
1902
- Presets?: TimedEventPresetBindings | null;
1903
- BonusWindow?: BonusWindowConfig | null;
1878
+ interface UserCryptoCurrencyState {
1879
+ /** decimal string — use Decimal for arithmetic. */
1880
+ Amount: string;
1881
+ Frozen: string;
1882
+ DepositAddresses?: Record<string, UserDepositAddress>;
1883
+ Compliance?: UserCryptoComplianceCounters;
1884
+ CreatedAt?: string;
1885
+ UpdatedAt?: string;
1886
+ [k: string]: unknown;
1904
1887
  }
1905
- /** One event inside a cyclic chain (dates computed from AnchorUtc + DurationSec). */
1906
- interface ChainedEventDefinition {
1907
- ChainedEventID?: string | null;
1908
- Order?: number | null;
1909
- DurationSec?: number | null;
1910
- Content?: EventContent | null;
1911
- ClaimGraceHours?: number | null;
1912
- CustomParams?: Record<string, string> | null;
1888
+ interface ItemTotals {
1889
+ StackableAmount: number;
1890
+ UnstackableAmount: number;
1891
+ TotalAmount: number;
1913
1892
  }
1914
- /** Definition of a single event (Scheduled single-window or Chained phase-chain). */
1915
- interface TimedEventDefinition {
1916
- TimedEventID?: string | null;
1917
- DisplayName?: string | null;
1918
- Description?: string | null;
1919
- AssetPaths?: Record<string, string> | null;
1920
- Schedule?: ScheduleSpec | null;
1921
- Content?: EventContent | null;
1922
- Events?: ChainedEventDefinition[] | null;
1923
- Gate?: SegmentGate | null;
1924
- CustomParams?: Record<string, string> | null;
1893
+ interface UnstackableItemInstanceState {
1894
+ ItemInstanceID: string;
1895
+ ItemID: string;
1896
+ CatalogID?: string | null;
1897
+ Quantity?: number;
1898
+ RemainingUses?: number;
1899
+ Level?: number;
1900
+ AcquiredAt: string;
1901
+ ExpiresAt?: string | null;
1902
+ EquippedSlot?: EquipmentSlot | null;
1903
+ CustomData?: string | null;
1925
1904
  }
1926
- type LimitedTimeEventsGlobalSettings = { MaxConcurrentEvents?: null | number; [key: string]: unknown; };
1927
- /** Registry of reusable event presets (milestones). Phases/events reference them via EventContent.Presets. */
1928
- interface TimedEventPresetRegistry {
1929
- Milestones?: Record<string, MilestoneSet> | null;
1905
+ /** Daily-window counter for one conversion pair ("{srcType}:{srcID}->{tgtType}:{tgtID}"). */
1906
+ interface ConversionDailyCounter {
1907
+ PeriodStartUtc: string;
1908
+ /** decimal string use Decimal for arithmetic. */
1909
+ AmountToday: string;
1930
1910
  }
1931
- /** Root config of the limited-time events system, returned by getDefinitions(). */
1932
- interface TimedEventDefinitions {
1933
- Definitions?: Record<string, TimedEventDefinition> | null;
1934
- Settings?: LimitedTimeEventsGlobalSettings | null;
1935
- /** Registry of reusable event presets (milestones). null = unused. */
1936
- Presets?: TimedEventPresetRegistry | null;
1911
+ interface UserInventoryState {
1912
+ Version?: number;
1913
+ VirtualCurrencies?: Record<string, UserVirtualCurrencyState>;
1914
+ CryptoCurrencies?: Record<string, UserCryptoCurrencyState>;
1915
+ Items?: Record<string, ItemTotals>;
1916
+ UnstackableItems?: Record<string, UnstackableItemInstanceState>;
1917
+ ConversionDaily?: Record<string, ConversionDailyCounter>;
1937
1918
  }
1938
- interface ActiveEventInfo {
1939
- Type?: ScheduleMode;
1940
- TimedEventID?: string;
1941
- CurrentChainedEventID?: string | null;
1942
- Content?: EventContent | null;
1943
- Progress?: UserEventTokenProgress | null;
1944
- ComputedStartUtc?: string | null;
1945
- ComputedEndUtc?: string | null;
1946
- CanEarn?: boolean | null;
1947
- CanClaim?: boolean | null;
1948
- NextMilestone?: MilestoneDefinition | null;
1949
- BonusWindow?: BonusWindowState | null;
1950
- CurrentCycleIndex?: number | null;
1951
- /** Chained-mode only: this event's 1-based position within the chain. */
1952
- CurrentEventOrder?: number | null;
1953
- /** Chained-mode only: total number of events in the chain. */
1954
- TotalEventsInChain?: number | null;
1919
+ /** Personal "balance tuning" multiplier, server-only in intent but present on ClientState.User. */
1920
+ interface PlayerEconomyTuningState {
1921
+ Segment: string;
1922
+ RewardMultiplier: number;
1923
+ CostMultiplier: number;
1924
+ MaxRollMultiplierOverride: number;
1925
+ ExpiresAtUtc: string;
1926
+ Version: number;
1955
1927
  }
1956
- interface GetActiveEventsResponse {
1957
- ActiveEvents?: ActiveEventInfo[] | null;
1928
+ /** One recorded reactivation — a return after a silence gap of 7+ days. */
1929
+ interface UsageReactivationEvent {
1930
+ ReactivatedAt: string;
1931
+ DaysSinceLastActive: number;
1958
1932
  }
1959
- type UserTimedEventStateResponse = { Tokens?: null | Record<string, UserEventTokenProgress>; };
1960
- type EventTokenSpendResponse = { Type?: null | 'Scheduled' | 'Cyclic' | 'Chained'; LteID?: null | string; Resources?: null | ResourceOperation; };
1961
- type EventMilestoneClaimResponse = { Type?: null | 'Scheduled' | 'Cyclic' | 'Chained'; LteID?: null | string; MilestoneID?: null | string; Rewards?: null | ResourceOperation; };
1962
- type EventTokenGrantResponse = { Type?: null | 'Scheduled' | 'Cyclic' | 'Chained'; LteID?: null | string; Resources?: null | ResourceOperation; };
1963
- type ClaimMilestonesBatchResponse = Array<{ Id: string; Success: boolean; Error?: null | string; Data?: null | EventMilestoneClaimResponse; }>;
1964
- type SpendTokensBatchResponse = Array<{ Id: string; Success: boolean; Error?: null | string; Data?: null | EventTokenSpendResponse; }>;
1965
- type GrantTokensBatchResponse = Array<{ Id: string; Success: boolean; Error?: null | string; Data?: null | EventTokenGrantResponse; }>;
1966
- /** Addresses one event instance in a batch request (Type+LteID, optionally CycleIndex/ChainedEventID). */
1967
- interface TimedEventInstanceRef {
1968
- Type?: ScheduleMode;
1969
- LteID?: string;
1970
- CycleIndex?: number;
1971
- ChainedEventID?: string;
1933
+ /** One calendar day's usage stats (UTC). Key in UserUsageState.Daily is "ddMMyyyy". */
1934
+ interface DailyUsageRecord {
1935
+ Seconds: number;
1936
+ Sessions: number;
1937
+ LongestSessionSeconds: number;
1938
+ ActiveHoursMask: number;
1939
+ LastActiveAt: string;
1972
1940
  }
1973
- /** One milestone claim in a batch (for ClaimMilestonesBatch). */
1974
- interface TimedEventMilestoneRef extends TimedEventInstanceRef {
1975
- MilestoneID?: string;
1941
+ /** Aggregated app-usage stats (UserDataDocument.Usage), foreground-activity seconds only. */
1942
+ interface UserUsageState {
1943
+ TotalSeconds: number;
1944
+ TotalSessions: number;
1945
+ FirstActiveAt?: string | null;
1946
+ LastActiveAt: string;
1947
+ Reactivations?: UsageReactivationEvent[];
1948
+ Daily?: Record<string, DailyUsageRecord>;
1976
1949
  }
1977
- /** One token spend in a batch (for SpendTokensBatch). */
1978
- interface TimedEventSpendRef extends TimedEventInstanceRef {
1979
- SpendAmount?: number;
1980
- RelatedEntityID?: string;
1950
+ interface UserState {
1951
+ UserID?: string;
1952
+ InventoryV2?: UserInventoryState;
1953
+ EventToken?: UserEventTokensState;
1954
+ Store?: UserStoreState | null;
1955
+ Lootbox?: UserLootboxState | null;
1956
+ Reward?: UserRewardState | null;
1957
+ Quest?: UserQuestState | null;
1958
+ Leaderboard?: UserLeaderboardsState | null;
1959
+ Season?: UserSeasonsState | null;
1960
+ Premium?: UserPremiumState | null;
1961
+ Character?: UserCharactersState | null;
1962
+ Match?: UserMatchState | null;
1963
+ Collection?: UserCollectionState | null;
1964
+ CoopEvent?: UserCoopEventState | null;
1965
+ DealOffer?: UserDealOffersState | null;
1966
+ Referral?: UserReferralState | null;
1967
+ Social?: UserSocialState | null;
1968
+ TimedBoost?: UserTimedBoostsState | null;
1969
+ CustomData?: UserCustomDataState | null;
1970
+ GameLoop?: UserGameLoopsState | null;
1971
+ Blockchain?: UserBlockchainState | null;
1972
+ Marketplace?: UserMarketplaceState | null;
1973
+ PublicData?: UserPublicDataModel | null;
1974
+ EconomyTuning?: PlayerEconomyTuningState | null;
1975
+ Usage?: UserUsageState | null;
1976
+ [k: string]: unknown;
1981
1977
  }
1982
- /** One token grant in a batch (for GrantTokensBatch). */
1983
- interface TimedEventGrantRef extends TimedEventInstanceRef {
1984
- SourceType?: string;
1985
- Outcome?: string;
1986
- SourceParams?: Record<string, string>;
1987
- AmountOverride?: number;
1988
- RollMultiplier?: number;
1989
- RelatedEntityID?: string;
1978
+ interface ClientState {
1979
+ /**
1980
+ * Версия конфига тайтла для запрошенного набора полей. Приходит всегда; клиент хранит её
1981
+ * рядом с конфигом и присылает обратно в `KnownTitleConfigVersion`.
1982
+ */
1983
+ TitleConfigVersion?: string | null;
1984
+ /**
1985
+ * Конфиг тайтла. ОТСУТСТВУЕТ, если клиент прислал актуальную `KnownTitleConfigVersion` —
1986
+ * значит, сервер не стал гнать неизменившийся конфиг повторно, и брать его надо из
1987
+ * локального хранилища (`TitleConfigCache`). `UserService` делает это сам.
1988
+ */
1989
+ /**
1990
+ * Ссылка на конфиг тайтла на CDN. Самого конфига в этом ответе НЕТ — он забирается по
1991
+ * ссылке и кладётся в локальное хранилище. `null`, если конфиг у клиента уже актуален
1992
+ * (см. `TitleConfigVersion`) либо раздача с CDN недоступна.
1993
+ *
1994
+ * `UserService` разбирается с этим сам: качает по ссылке, а при неудаче (или при её
1995
+ * отсутствии) идёт за конфигом в `client.title.getTitlePublicConfiguration*`.
1996
+ */
1997
+ TitleConfigUrl?: string | null;
1998
+ User?: UserState | null;
1999
+ /**
2000
+ * Версии контейнеров состояния на момент ответа: «имя контейнера → номер». Присутствуют
2001
+ * только запрошенные поля.
2002
+ *
2003
+ * Клиент хранит карту рядом с самим состоянием (`UserStateCache`) и присылает обратно в
2004
+ * `KnownStateVersions`. Контейнеры с совпавшей версией сервер в ответ не кладёт — у клиента
2005
+ * они уже актуальны. `UserService` делает это сам.
2006
+ *
2007
+ * ВАЖНО для чтения ответа вручную: «контейнера нет в `User`» НЕ значит «его нет у игрока».
2008
+ * Отличить «не изменился» от «стал пустым» можно только по этой карте — сравнив номер с тем,
2009
+ * который присылал сам.
2010
+ */
2011
+ StateVersions?: Record<string, number> | null;
2012
+ /**
2013
+ * Эпоха карты версий. Хранится вместе с ней; сервер сменил — вся сохранённая карта
2014
+ * недействительна, состояние приходит целиком.
2015
+ */
2016
+ StateEpoch?: string | null;
2017
+ [k: string]: unknown;
1990
2018
  }
1991
- interface TimedEventRequest extends BaseRequest {
1992
- Type?: ScheduleMode;
1993
- LteID?: string;
1994
- CycleIndex?: number;
1995
- ChainedEventID?: string;
1996
- SourceType?: string;
1997
- AmountOverride?: number;
1998
- SourceParams?: Record<string, string>;
1999
- SpendAmount?: number;
2000
- MilestoneID?: string;
2001
- Outcome?: string;
2002
- RollMultiplier?: number;
2003
- /** ClaimMilestonesBatch: milestones to claim (deduped by Type+LteID+instance+MilestoneID). */
2004
- Milestones?: TimedEventMilestoneRef[];
2005
- /** ClaimAllMilestones: event instances to sweep. Null/empty = all active events. */
2006
- Events?: TimedEventInstanceRef[];
2007
- /** SpendTokensBatch: spends to apply (deduped by Type+LteID+instance). */
2008
- Spends?: TimedEventSpendRef[];
2009
- /** GrantTokensBatch: grants to apply (deduped by event address). */
2010
- Grants?: TimedEventGrantRef[];
2019
+ /**
2020
+ * Ответ `User/GetStateVersions`: только карта версий, данных нет вовсе.
2021
+ *
2022
+ * Нужен, чтобы выяснить «что у меня протухло», не выкачивая состояние: два десятка чисел против
2023
+ * десятков килобайт. Дальше разошедшееся забирается через `User/GetUserState`.
2024
+ */
2025
+ interface UserStateVersions {
2026
+ StateEpoch?: string | null;
2027
+ StateVersions?: Record<string, number> | null;
2028
+ [k: string]: unknown;
2011
2029
  }
2012
- declare const TimedEventAction: {
2013
- readonly GetActiveEvents: "GetActiveEvents";
2014
- readonly GrantTokens: "GrantTokens";
2015
- readonly SpendTokens: "SpendTokens";
2016
- readonly ClaimMilestone: "ClaimMilestone";
2017
- readonly GetDefinitions: "GetDefinitions";
2018
- readonly GetUserLteState: "GetUserLteState";
2019
- readonly ClaimMilestonesBatch: "ClaimMilestonesBatch";
2020
- readonly ClaimAllMilestones: "ClaimAllMilestones";
2021
- readonly SpendTokensBatch: "SpendTokensBatch";
2022
- readonly GrantTokensBatch: "GrantTokensBatch";
2030
+ /**
2031
+ * Ответ `User/GetUserState`: адресная выборка контейнеров — без конфига тайтла.
2032
+ *
2033
+ * Если в запросе были `KnownStateVersions`, в `User` лежат только те контейнеры, чья версия
2034
+ * разошлась. Контейнера нет = «не изменился»; отличить это от «стал пустым» можно ТОЛЬКО по
2035
+ * номеру в `StateVersions`.
2036
+ */
2037
+ interface UserStateSlice {
2038
+ StateEpoch?: string | null;
2039
+ StateVersions?: Record<string, number> | null;
2040
+ User?: UserState | null;
2041
+ [k: string]: unknown;
2042
+ }
2043
+ type UsageTimeStats = { Today: number; Yesterday: number; CurrentWeek: number; CurrentMonth: number; Total: number; TotalSessions: number; FirstActiveAt?: null | string; LastActiveAt?: null | string; LongestSessionEverSeconds?: null | number; CurrentWeekActiveHoursMask?: null | number; CurrentMonthActiveHoursMask?: null | number; ReactivationCount?: null | number; History?: null | Record<string, unknown>; [key: string]: unknown; };
2044
+ type ChangeUsernameResponse = { Username: string; };
2045
+ interface UserRequest extends BaseRequest {
2046
+ IsNewSession?: boolean;
2047
+ SessionDurationSeconds?: number;
2048
+ Fields?: string[];
2049
+ TitleFields?: string[];
2050
+ ExcludeFields?: string[];
2051
+ ExcludeTitleFields?: string[];
2052
+ /** Версия конфига тайтла, которая уже есть у клиента (см. `ClientState.TitleConfigVersion`). */
2053
+ KnownTitleConfigVersion?: string;
2054
+ /**
2055
+ * Версии контейнеров состояния, которые уже есть у клиента (см. `ClientState.StateVersions`).
2056
+ * Совпавшие контейнеры сервер в ответ не кладёт. Проставляется SDK автоматически из
2057
+ * `UserStateCache`; вручную задавать не нужно.
2058
+ */
2059
+ KnownStateVersions?: Record<string, number>;
2060
+ /** Эпоха, при которой была получена `KnownStateVersions`. Без неё карта версий игнорируется. */
2061
+ KnownStateEpoch?: string;
2062
+ /**
2063
+ * Отдать конфиг телом, даже если он выложен на CDN. Ставится SDK автоматически при повторе
2064
+ * запроса, когда скачать артефакт не удалось; вручную задавать не нужно.
2065
+ */
2066
+ ForceInlineConfig?: boolean;
2067
+ }
2068
+ declare const UserAction: {
2069
+ readonly GetClientState: "GetClientState";
2070
+ readonly GetClientStateExcept: "GetClientStateExcept";
2071
+ readonly GetStateVersions: "GetStateVersions";
2072
+ readonly GetUserState: "GetUserState";
2073
+ readonly GetInventory: "GetInventory";
2074
+ readonly GetEventTokens: "GetEventTokens";
2075
+ readonly GetUsageTime: "GetUsageTime";
2076
+ readonly AddUsageTime: "AddUsageTime";
2077
+ readonly DeleteUserAccount: "DeleteUserAccount";
2078
+ readonly ChangeUsername: "ChangeUsername";
2023
2079
  };
2024
- type TimedEventAction = (typeof TimedEventAction)[keyof typeof TimedEventAction];
2080
+ type UserAction = (typeof UserAction)[keyof typeof UserAction];
2025
2081
 
2026
- declare const CraftType: {
2027
- readonly TradeUpRarity: "TradeUpRarity";
2028
- readonly TradeUpCollection: "TradeUpCollection";
2082
+ /** enum BlockchainNetworkType — chain family; controls signature payload shape. */
2083
+ declare const BlockchainNetworkType: {
2084
+ readonly EVM: "EVM";
2085
+ readonly Solana: "Solana";
2029
2086
  };
2030
- type CraftType = (typeof CraftType)[keyof typeof CraftType];
2031
- type CraftSingleResult = { Index?: null | number; BurnedItemIDs?: null | Array<string>; RolledCollectionID?: null | string; UsedCollections?: null | Record<string, number>; Output?: null | ResourceEntry; };
2032
- type CraftResponse = { ServerTimeUtc: string; CraftID: string; Type?: null | 'TradeUpRarity' | 'TradeUpCollection'; CraftedCount?: null | number; SelectedOptionID?: null | string; InputRarity?: null | string; OutputRarity?: null | string; Resources?: null | ResourceOperation; Results?: null | Array<CraftSingleResult>; };
2033
- type CraftDefinition = { CraftID?: null | string; Type?: null | 'TradeUpRarity' | 'TradeUpCollection'; CatalogID?: null | string; CollectionID?: null | string; InputRarityID?: null | string; OutputRarityID?: null | string; RequiredItemCount?: null | number; PriceOptions?: null | Record<string, { OptionID?: null | string; RequiredResources?: null | ResourceConsume; [key: string]: unknown; }>; [key: string]: unknown; };
2034
- /** The title's craft catalog (config), returned by getDefinitions(). */
2035
- interface CraftDefinitions {
2036
- Definitions?: Record<string, CraftDefinition> | null;
2037
- }
2038
- type CraftDefinitionsResponse = { ServerTimeUtc?: null | string; CraftDefinitions?: null | CraftDefinitions; };
2039
- interface CraftRequest extends BaseRequest {
2040
- CraftID?: string;
2041
- Count?: number;
2042
- SelectedOptionID?: string;
2043
- InputItemIDs?: string[];
2087
+ type BlockchainNetworkType = (typeof BlockchainNetworkType)[keyof typeof BlockchainNetworkType];
2088
+ /** enum WalletLinkType how a wallet address became linked to the account. */
2089
+ declare const WalletLinkType: {
2090
+ readonly AutoLinkedFromTransaction: "AutoLinkedFromTransaction";
2091
+ readonly SignatureVerified: "SignatureVerified";
2092
+ readonly ManuallyLinked: "ManuallyLinked";
2093
+ };
2094
+ type WalletLinkType = (typeof WalletLinkType)[keyof typeof WalletLinkType];
2095
+ /** enum BlockchainTransactionType asset kind of a pending/retryable withdrawal. */
2096
+ declare const BlockchainTransactionType: {
2097
+ readonly Token: "Token";
2098
+ readonly Nft: "Nft";
2099
+ };
2100
+ type BlockchainTransactionType = (typeof BlockchainTransactionType)[keyof typeof BlockchainTransactionType];
2101
+ /** enum KycStatus — player's KYC verification status. */
2102
+ declare const KycStatus: {
2103
+ readonly NotRequested: "NotRequested";
2104
+ readonly Pending: "Pending";
2105
+ readonly Verified: "Verified";
2106
+ readonly Rejected: "Rejected";
2107
+ readonly Expired: "Expired";
2108
+ };
2109
+ type KycStatus = (typeof KycStatus)[keyof typeof KycStatus];
2110
+ /** enum KycTier — verification depth reached. */
2111
+ declare const KycTier: {
2112
+ readonly None: "None";
2113
+ readonly Tier1: "Tier1";
2114
+ readonly Tier2: "Tier2";
2115
+ readonly Tier3: "Tier3";
2116
+ };
2117
+ type KycTier = (typeof KycTier)[keyof typeof KycTier];
2118
+ /** enum BlockchainTransactionStatus — lifecycle status of one deposit/withdrawal transaction. */
2119
+ declare const BlockchainTransactionStatus: {
2120
+ readonly Pending: "Pending";
2121
+ readonly Completed: "Completed";
2122
+ readonly Failed: "Failed";
2123
+ readonly Expired: "Expired";
2124
+ readonly Abandoned: "Abandoned";
2125
+ };
2126
+ type BlockchainTransactionStatus = (typeof BlockchainTransactionStatus)[keyof typeof BlockchainTransactionStatus];
2127
+ /**
2128
+ * Generic "kind" of a deposit/withdrawal operation. Stored as a free string (not an enum) so new
2129
+ * kinds can be added without a redeploy — it mirrors the RewardPool contract, where it is also a
2130
+ * string. Only the known values are listed here; arbitrary strings are allowed (the server signs
2131
+ * whatever it receives after normalization). On a withdrawal the client MUST pass the same value
2132
+ * on-chain that the server signed, or the contract rejects the signature. Empty → "game_topup".
2133
+ * Port of Blockchain/Models/BlockchainOperationCategory.cs.
2134
+ */
2135
+ declare const BlockchainOperationCategory: {
2136
+ /** Top up the game / withdraw to a wallet — the default kind. */
2137
+ readonly GameTopUp: "game_topup";
2138
+ /** Community reward (social promotion etc.) — a grant payout. */
2139
+ readonly CommunityReward: "community_reward";
2140
+ };
2141
+ type BlockchainOperationCategory = (typeof BlockchainOperationCategory)[keyof typeof BlockchainOperationCategory];
2142
+ /** Empty/absent category is treated as {@link BlockchainOperationCategory.GameTopUp}. */
2143
+ declare function normalizeBlockchainCategory(category?: string | null): string;
2144
+ /** enum TransactionDirection — which side of the platform pool the asset is moving to/from. */
2145
+ declare const TransactionDirection: {
2146
+ readonly UsersCryptoWallet: "UsersCryptoWallet";
2147
+ readonly Game: "Game";
2148
+ };
2149
+ type TransactionDirection = (typeof TransactionDirection)[keyof typeof TransactionDirection];
2150
+ type BlockchainNftCollectionBinding = { ContractAddress?: null | string; ItemCatalogID?: null | string; DisplayName?: null | string; DepositsEnabled?: null | boolean; WithdrawalsEnabled?: null | boolean; [key: string]: unknown; };
2151
+ type PlatformBlockchainState = { Ios?: null | boolean; Android?: null | boolean; Web?: null | boolean; [key: string]: unknown; };
2152
+ type BlockchainNetworkDefinition = { NetworkID?: null | string; DisplayName?: null | string; Type?: null | 'EVM' | 'Solana'; ChainID?: null | number; ChainTicker?: null | string; RewardPoolAddress?: null | string; VaultDepositAddress?: null | string; ChainConfigVersion?: null | number; RequiredConfirmations?: null | number; DepositsEnabled?: null | boolean; WithdrawalsEnabled?: null | boolean; NftDepositsEnabled?: null | boolean; NftWithdrawalsEnabled?: null | boolean; PlatformOverrides?: null | PlatformBlockchainState; NftCollections?: null | Array<BlockchainNftCollectionBinding>; AssetPaths?: null | Record<string, string>; [key: string]: unknown; };
2153
+ type BlockchainSystemState = { DepositsEnabled?: null | boolean; WithdrawalsEnabled?: null | boolean; NftDepositsEnabled?: null | boolean; NftWithdrawalsEnabled?: null | boolean; PlatformOverrides?: null | PlatformBlockchainState; [key: string]: unknown; };
2154
+ type BlockchainAccountSafetyPolicy = { MinAccountAgeDays?: null | number; MultiAccountCheckEnabled?: null | boolean; BanOnSharedWithdrawalAddress?: null | boolean; PendingWithdrawalTtlHours?: null | number; [key: string]: unknown; };
2155
+ type BlockchainDefinitions = { SystemState?: null | BlockchainSystemState; Networks?: null | Record<string, BlockchainNetworkDefinition>; AccountSafety?: null | BlockchainAccountSafetyPolicy; WalletLogin?: null | { Enabled?: null | boolean; TokenGates?: null | Array<{ Enabled?: null | boolean; NetworkID?: null | string; CurrencyID?: null | string; MinBalance?: null | string; BalanceSource?: null | 'OnChain' | 'Combined'; DenyMessage?: null | string; [key: string]: unknown; }>; WalletConnectProjectId?: null | string; [key: string]: unknown; }; [key: string]: unknown; };
2156
+ type LinkedWalletInfo = { NetworkID?: null | string; Address?: null | string; LinkedAt?: null | string; LastUsedAt?: null | string; LinkType?: null | 'AutoLinkedFromTransaction' | 'SignatureVerified' | 'ManuallyLinked'; IsSignatureVerified?: null | boolean; [key: string]: unknown; };
2157
+ type PendingWithdrawalRef = { TitleTransactionID?: null | string; Type?: null | 'Token' | 'Nft'; NetworkID?: null | string; AssetID?: null | string; Amount?: null | string; CreatedAt?: null | string; ExpiresAt?: null | string; [key: string]: unknown; };
2158
+ type UserKycState = { Status?: null | 'Expired' | 'Pending' | 'Rejected' | 'NotRequested' | 'Verified'; Tier?: null | 'None' | 'Tier1' | 'Tier2' | 'Tier3'; VerifiedAt?: null | string; ExpiresAt?: null | string; RejectedAt?: null | string; ProviderReference?: null | string; RejectionReason?: null | string; [key: string]: unknown; };
2159
+ type TokenCurrencyStats = { CurrencyID?: null | string; Deposits?: null | number; DepositsVolumeNative?: null | string; DepositsVolumeUsd?: null | string; Withdrawals?: null | number; WithdrawalsVolumeNative?: null | string; WithdrawalsVolumeUsd?: null | string; FailedWithdrawals?: null | number; RejectedDeposits?: null | number; FirstDepositAt?: null | string; LastDepositAt?: null | string; FirstWithdrawalAt?: null | string; LastWithdrawalAt?: null | string; [key: string]: unknown; };
2160
+ type TokenStatsContainer = { TotalDeposits?: null | number; TotalWithdrawals?: null | number; FailedWithdrawals?: null | number; RejectedDeposits?: null | number; TotalDepositsVolumeUsd?: null | string; TotalWithdrawalsVolumeUsd?: null | string; PerCurrency?: null | Record<string, TokenCurrencyStats>; [key: string]: unknown; };
2161
+ type NftCollectionStats = { NetworkID?: null | string; ItemCatalogID?: null | string; Deposits?: null | number; Withdrawals?: null | number; FailedWithdrawals?: null | number; RejectedDeposits?: null | number; FirstDepositAt?: null | string; LastDepositAt?: null | string; FirstWithdrawalAt?: null | string; LastWithdrawalAt?: null | string; [key: string]: unknown; };
2162
+ type NftStatsContainer = { TotalDeposits?: null | number; TotalWithdrawals?: null | number; FailedWithdrawals?: null | number; RejectedDeposits?: null | number; PerCollection?: null | Record<string, NftCollectionStats>; [key: string]: unknown; };
2163
+ type BlockchainStats = { Tokens?: null | TokenStatsContainer; Nfts?: null | NftStatsContainer; [key: string]: unknown; };
2164
+ type UserBlockchainState = { Version?: null | number; Stats?: null | BlockchainStats; LinkedWallets?: null | Record<string, LinkedWalletInfo>; LastWalletLogin?: null | { NetworkID?: null | string; Address?: null | string; CheckedAt?: null | string; LoggedInAt?: null | string; GatePassed?: null | boolean; GatedBalances?: null | Array<{ CurrencyID?: null | string; Balance?: null | string; MinBalance?: null | string; [key: string]: unknown; }>; [key: string]: unknown; }; PendingWithdrawals?: null | Array<PendingWithdrawalRef>; Kyc?: null | UserKycState; FirstActivityAt?: null | string; LastActivityAt?: null | string; IsFlagged?: null | boolean; FlagReason?: null | string; [key: string]: unknown; };
2165
+ type TokenTransactionDocument = { ID?: null | string; TitleID?: null | string; CreatedAt?: null | string; UpdatedAt?: null | string; UserID?: null | string; TransactionHash?: null | string; Nonce?: null | string; NetworkID?: null | string; ChainType?: null | string; ChainID?: null | number; Direction?: null | 'UsersCryptoWallet' | 'Game'; From?: null | string; To?: null | string; Amount?: null | string; Status?: null | 'Completed' | 'Expired' | 'Pending' | 'Failed' | 'Abandoned'; SignatureData?: null | string; CompletedAt?: null | string; ExpiresAt?: null | string; FailReason?: null | string; Reason?: null | string; Category?: null | string; TokenID?: null | string; CurrencyID?: null | string; AmountUsd?: null | string; NetPayoutAmount?: null | string; [key: string]: unknown; };
2166
+ type NFTTransactionDocument = { ID?: null | string; TitleID?: null | string; CreatedAt?: null | string; UpdatedAt?: null | string; UserID?: null | string; TransactionHash?: null | string; Nonce?: null | string; NetworkID?: null | string; ChainType?: null | string; ChainID?: null | number; Direction?: null | 'UsersCryptoWallet' | 'Game'; From?: null | string; To?: null | string; Amount?: null | string; Status?: null | 'Completed' | 'Expired' | 'Pending' | 'Failed' | 'Abandoned'; SignatureData?: null | string; CompletedAt?: null | string; ExpiresAt?: null | string; FailReason?: null | string; Reason?: null | string; Category?: null | string; NFTID?: null | string; ItemID?: null | string; CatalogID?: null | string; SkinID?: null | string; [key: string]: unknown; };
2167
+ type WithdrawalSplit = { To?: null | string; Amount?: null | string | number; [key: string]: unknown; };
2168
+ type WithdrawalSignatureResponse = { TokenAddress?: null | string; WalletAddress?: null | string; Amount?: null | string; BurnAmount?: null | string; TokenId?: null | string; Nonce?: null | string; ContractAddress?: null | string; UserID?: null | string; TitleID?: null | string; Category?: null | string; Deadline?: null | string; SignatureEpoch?: null | string; Splits?: null | Array<WithdrawalSplit>; Signature?: null | string; [key: string]: unknown; };
2169
+ type SolanaWithdrawalSignature = { Mint?: null | string; WalletAddress?: null | string; Amount?: null | string; BurnAmount?: null | string; Nonce?: null | string; ExpiresAt?: null | string; ProgramID?: null | string; SignatureEpoch?: null | string; Domain?: null | string; Splits?: null | Array<WithdrawalSplit>; SignatureHex?: null | string; SigIxIndex?: null | number; Ed25519PublicKey?: null | string; Ed25519Message?: null | string; UserID?: null | string; TitleID?: null | string; Category?: null | string; [key: string]: unknown; };
2170
+ type BlockchainConfigResponse = { Blockchain?: null | BlockchainDefinitions; CryptoCurrencies?: null | Record<string, CryptoCurrencyDefinition>; [key: string]: unknown; };
2171
+ type UserBlockchainStateResponse = { State?: null | UserBlockchainState; CryptoBalances?: null | Record<string, UserCryptoCurrencyState>; [key: string]: unknown; };
2172
+ type DepositTokenResponse = { ServerTimeUtc?: null | string; TransactionHash?: null | string; NetworkID?: null | string; CurrencyID?: null | string; AmountNative?: null | string; AmountUsd?: null | string; StateDelta?: null | { CryptoBalances?: null | Record<string, { CurrencyID: string; AmountDelta: string; FrozenDelta: string; UpdatedAt: string; [key: string]: unknown; }>; PendingAdded?: null | PendingWithdrawalRef; PendingRemovedIDs?: null | Array<string>; [key: string]: unknown; }; [key: string]: unknown; };
2173
+ type DepositNFTResponse = { ServerTimeUtc?: null | string; TransactionHash?: null | string; NetworkID?: null | string; ItemID?: null | string; CatalogID?: null | string; NftTokenID?: null | string; Amount?: null | number; Resources?: null | ResourceOperation; Inventory?: null | InventoryDelta; [key: string]: unknown; };
2174
+ type TokenWithdrawalResponse = { ServerTimeUtc?: null | string; TitleTransactionID?: null | string; NetworkID?: null | string; CurrencyID?: null | string; AmountNative?: null | string; NetAmountNative?: null | string; BurnAmountNative?: null | string; AmountUsd?: null | string; ExpiresAt?: null | string; EvmSignature?: null | WithdrawalSignatureResponse; SolanaSignature?: null | SolanaWithdrawalSignature; StateDelta?: null | { CryptoBalances?: null | Record<string, { CurrencyID: string; AmountDelta: string; FrozenDelta: string; UpdatedAt: string; [key: string]: unknown; }>; PendingAdded?: null | PendingWithdrawalRef; PendingRemovedIDs?: null | Array<string>; [key: string]: unknown; }; [key: string]: unknown; };
2175
+ type NFTWithdrawalResponse = { ServerTimeUtc?: null | string; TitleTransactionID?: null | string; NetworkID?: null | string; ItemID?: null | string; CatalogID?: null | string; NftTokenID?: null | string; Amount?: null | number; ExpiresAt?: null | string; Resources?: null | ResourceOperation; EvmSignature?: null | WithdrawalSignatureResponse; SolanaSignature?: null | SolanaWithdrawalSignature; StateDelta?: null | { CryptoBalances?: null | Record<string, { CurrencyID: string; AmountDelta: string; FrozenDelta: string; UpdatedAt: string; [key: string]: unknown; }>; PendingAdded?: null | PendingWithdrawalRef; PendingRemovedIDs?: null | Array<string>; [key: string]: unknown; }; Inventory?: null | InventoryDelta; [key: string]: unknown; };
2176
+ type TransactionHistoryResponse = { TokenTransactions?: null | Array<TokenTransactionDocument>; NFTTransactions?: null | Array<NFTTransactionDocument>; [key: string]: unknown; };
2177
+ type DonationResponse = { ServerTimeUtc?: null | string; TransactionHash?: null | string; NetworkID?: null | string; CurrencyID?: null | string; AmountNative?: null | string; AmountUsd?: null | string; Target?: null | string; [key: string]: unknown; };
2178
+ type RetryWithdrawalResponse = { TitleTransactionID?: null | string; Kind?: null | 'Token' | 'Nft'; EvmSignature?: null | WithdrawalSignatureResponse; SolanaSignature?: null | SolanaWithdrawalSignature; [key: string]: unknown; };
2179
+ type ConfirmWithdrawalResponse = { TitleTransactionID?: null | string; OnChainTxHash?: null | string; Status?: null | 'Completed' | 'Expired' | 'Pending' | 'Failed' | 'Abandoned'; StateDelta?: null | { CryptoBalances?: null | Record<string, { CurrencyID: string; AmountDelta: string; FrozenDelta: string; UpdatedAt: string; [key: string]: unknown; }>; PendingAdded?: null | PendingWithdrawalRef; PendingRemovedIDs?: null | Array<string>; [key: string]: unknown; }; [key: string]: unknown; };
2180
+ interface BlockchainRequest extends BaseRequest {
2181
+ TitleTransactionID?: string;
2182
+ NetworkID?: string;
2183
+ CurrencyID?: string;
2184
+ TransactionHash?: string;
2185
+ WalletAddress?: string;
2186
+ /** Decimal string for token withdrawals, integer string for NFT withdrawals/tx-history limit. */
2187
+ Amount?: string;
2188
+ ItemID?: string;
2189
+ /**
2190
+ * Operation kind for withdrawals (e.g. "game_topup", "community_reward"). The server signs this
2191
+ * into the withdrawal hash and the client must submit the same value on-chain. Empty → "game_topup".
2192
+ * Ignored by deposits (there the category is read back from the on-chain transaction).
2193
+ */
2194
+ Category?: string;
2195
+ /**
2196
+ * Item level for RequestNFTWithdrawal. Determines the tokenId (tokenId = base + Level - 1) and
2197
+ * which instances are debited. 0/1 → base level (stackable/level-1, prior behavior). >1 → debits
2198
+ * unstackable instances of that level. Defaults to 1 server-side.
2199
+ */
2200
+ Level?: number;
2201
+ /**
2202
+ * Specific instance ID to withdraw as an ERC-721 unique token. Required when the item's NFT
2203
+ * binding has TokenStandard == "ERC-721" — the server debits and tokenizes exactly this
2204
+ * instance, preserving its state (Level/RemainingUses/CustomData) in the registry. Ignored for
2205
+ * ERC-1155.
2206
+ */
2207
+ ItemInstanceID?: string;
2044
2208
  }
2045
- declare const CraftAction: {
2209
+ declare const BlockchainAction: {
2046
2210
  readonly GetDefinitions: "GetDefinitions";
2047
- readonly Craft: "Craft";
2211
+ readonly GetUserState: "GetUserState";
2212
+ readonly DepositToken: "DepositToken";
2213
+ readonly DepositNFT: "DepositNFT";
2214
+ readonly RequestTokenWithdrawal: "RequestTokenWithdrawal";
2215
+ readonly RequestNFTWithdrawal: "RequestNFTWithdrawal";
2216
+ readonly GetTransactionHistory: "GetTransactionHistory";
2217
+ readonly RetryWithdrawal: "RetryWithdrawal";
2218
+ readonly ConfirmWithdrawal: "ConfirmWithdrawal";
2219
+ readonly DonateToDeveloper: "DonateToDeveloper";
2220
+ readonly DonateToUsersPool: "DonateToUsersPool";
2048
2221
  };
2049
- type CraftAction = (typeof CraftAction)[keyof typeof CraftAction];
2050
- type ExperimentVariant = { VariantID?: null | string; DisplayName?: null | string; Weight?: null | number; IsControl?: null | boolean; Params?: null | Record<string, string>; [key: string]: unknown; };
2051
- type ExperimentDefinition = { ExperimentID?: null | string; DisplayName?: null | string; Description?: null | string; IsEnabled?: null | boolean; Schedule?: null | ScheduleSpec; Gate?: null | SegmentGate; Variants?: null | Array<ExperimentVariant>; Salt?: null | string; LayerID?: null | string; StickyAssignment?: null | boolean; CustomParams?: null | Record<string, string>; [key: string]: unknown; };
2052
- type ExperimentDefinitions = { Experiments?: null | Record<string, ExperimentDefinition>; [key: string]: unknown; };
2222
+ type BlockchainAction = (typeof BlockchainAction)[keyof typeof BlockchainAction];
2053
2223
 
2054
2224
  /** enum MultiplayerTopology — p2p connection topology within a room. */
2055
2225
  declare const MultiplayerTopology: {
@@ -2125,392 +2295,351 @@ declare const MultiplayerAction: {
2125
2295
  readonly SetMemberState: "SetMemberState";
2126
2296
  };
2127
2297
  type MultiplayerAction = (typeof MultiplayerAction)[keyof typeof MultiplayerAction];
2128
- type TitlePublicData = { Data?: null | string; SchemaVersion?: null | number; UpdatedAt?: null | string; };
2129
- type TitleCustomData = { PublicData?: null | Record<string, TitlePublicData>; PrivateData?: null | Record<string, TitlePublicData>; };
2130
- interface TitlePublicConfigurationModel {
2131
- TitleCustomData?: TitleCustomData | null;
2132
- Character?: CharacterDefinitions | null;
2133
- Item?: ItemDefinitions | null;
2134
- Currency?: CurrencyDefinitions | null;
2135
- Store?: StoreDefinitions | null;
2136
- Lootbox?: LootboxDefinitions | null;
2137
- Quest?: QuestDefinitions | null;
2138
- TimedEvent?: TimedEventDefinitions | null;
2139
- Leaderboard?: LeaderboardDefinitions | null;
2140
- Season?: SeasonDefinitions | null;
2141
- Reward?: RewardDefinitions | null;
2142
- Collection?: CollectionDefinitions | null;
2143
- Craft?: CraftDefinitions | null;
2144
- DealOffer?: DealOfferDefinitions | null;
2145
- Premium?: PremiumDefinitions | null;
2146
- TimedBoost?: TimedBoostDefinitions | null;
2147
- CoopEvent?: CoopEventDefinitions | null;
2148
- GameLoop?: GameLoopDefinitions | null;
2149
- Match?: MatchDefinitions | null;
2150
- Experiment?: ExperimentDefinitions | null;
2151
- Blockchain?: BlockchainDefinitions | null;
2152
- Marketplace?: MarketplaceDefinitions | null;
2153
- Multiplayer?: MultiplayerDefinitions | null;
2154
- UserCustomData?: UserCustomDataDefinitions | null;
2155
- Referral?: ReferralDefinitions | null;
2156
- [key: string]: unknown;
2298
+ type PlatformLoginResponse = { TitleUserID: string; TitleClientSessionTicket: string; TitleClientSessionTicketExpiration: string; PlatformUserID?: null | string; PlatformAuthToken?: null | string; PlatformAuthTokenExpiration?: null | string; };
2299
+ type SuccessResponse = { IsCompleted?: null | boolean; ServerTime?: null | string; };
2300
+ type WalletChallengeResponse = { Message: string; ExpiresAt: string; };
2301
+ /** Client-supplied UTM/click-ID attribution signal, sent with login/register (port of AttributionInput). */
2302
+ interface AttributionInput {
2303
+ UtmSource?: string;
2304
+ UtmMedium?: string;
2305
+ UtmCampaign?: string;
2306
+ UtmTerm?: string;
2307
+ UtmContent?: string;
2308
+ /** gclid / fbclid / ttclid / msclkid / yclid. */
2309
+ ClickID?: string;
2310
+ Referrer?: string;
2311
+ Country?: string;
2312
+ AppVersion?: string;
2157
2313
  }
2158
- type TitleCustomDataResponse = { PublicData?: null | Record<string, TitlePublicData>; };
2159
-
2160
- interface TitleRequest extends BaseRequest {
2161
- Fields?: string[];
2162
- ExcludeFields?: string[];
2314
+ interface AuthenticationRequest extends BaseRequest {
2315
+ PlatformAuthToken?: string;
2316
+ PlatformRefreshToken?: string;
2317
+ GoogleIDToken?: string;
2318
+ Attribution?: AttributionInput;
2319
+ /** Wallet login: NetworkID (key of cfg.Blockchain.Networks) the wallet is proving on. */
2320
+ NetworkID?: string;
2321
+ /** Wallet login: the crypto wallet address (EVM 0x… / Solana base58). */
2322
+ WalletAddress?: string;
2323
+ /** Wallet login: signature of the challenge message (EVM personal_sign hex / Solana ed25519, 0x-hex). */
2324
+ WalletSignature?: string;
2163
2325
  }
2164
- declare const TitleAction: {
2165
- readonly GetTitlePublicConfiguration: "GetTitlePublicConfiguration";
2166
- readonly GetTitlePublicConfigurationExcept: "GetTitlePublicConfigurationExcept";
2167
- readonly GetPublicCustomTitleData: "GetPublicCustomTitleData";
2168
- readonly GetCurrencyDefinitions: "GetCurrencyDefinitions";
2169
- readonly GetItemDefinitions: "GetItemDefinitions";
2170
- readonly GetServerTime: "GetServerTime";
2326
+ declare const AuthenticationAction: {
2327
+ readonly LoginWithDeviceID: "LoginWithDeviceID";
2328
+ readonly LoginWithTelegram: "LoginWithTelegram";
2329
+ readonly LoginWithEmail: "LoginWithEmail";
2330
+ readonly LoginWithGoogle: "LoginWithGoogle";
2331
+ readonly LoginWithPlatformToken: "LoginWithPlatformToken";
2332
+ readonly RegisterWithEmail: "RegisterWithEmail";
2333
+ readonly RefreshPlatformToken: "RefreshPlatformToken";
2334
+ readonly RequestWalletChallenge: "RequestWalletChallenge";
2335
+ readonly LoginWithWallet: "LoginWithWallet";
2336
+ readonly ForgotPassword: "ForgotPassword";
2337
+ readonly ResetPassword: "ResetPassword";
2171
2338
  };
2172
- type TitleAction = (typeof TitleAction)[keyof typeof TitleAction];
2173
-
2174
- interface UserDailyCounters {
2175
- PeriodStartUtc: string;
2176
- Earned: number;
2177
- Spent: number;
2339
+ type AuthenticationAction = (typeof AuthenticationAction)[keyof typeof AuthenticationAction];
2340
+ type FodderConsumedEntry = { ItemInstanceID: string; Units: number; Level: number; };
2341
+ type UpgradeItemLevelResponse = { ServerTimeUtc: string; ItemInstanceID: string; ItemID: string; Level: number; CatalogID?: null | string; Resources?: null | ResourceOperation; FodderConsumed?: null | Array<FodderConsumedEntry>; };
2342
+ type UpgradeLevelsBatchResponse = Array<{ Id: string; Success: boolean; Error?: null | string; Data?: null | UpgradeItemLevelResponse; }>;
2343
+ /** One instance's upgrade in a batch (with optional multi-level Levels/TargetLevel). */
2344
+ interface ItemUpgradeRef {
2345
+ ItemInstanceID?: string;
2346
+ Levels?: number;
2347
+ TargetLevel?: number;
2348
+ FodderInstanceIDs?: string[];
2178
2349
  }
2179
- interface UserRechargeState {
2180
- LastRechargeAt?: string;
2181
- PendingSeconds?: number;
2350
+ interface ItemRequest extends BaseRequest {
2351
+ ItemInstanceID?: string;
2352
+ Levels?: number;
2353
+ TargetLevel?: number;
2354
+ FodderInstanceIDs?: string[];
2355
+ /** UpgradeLevelsBatch: per-instance upgrades (deduped by ItemInstanceID). */
2356
+ Upgrades?: ItemUpgradeRef[];
2182
2357
  }
2183
- interface UserVirtualCurrencyState {
2184
- Amount: number;
2185
- Recharge?: UserRechargeState | null;
2186
- Daily?: UserDailyCounters | null;
2187
- CreatedAt?: string;
2188
- UpdatedAt?: string;
2358
+ declare const ItemAction: {
2359
+ readonly UpgradeLevel: "UpgradeLevel";
2360
+ readonly UpgradeLevelsBatch: "UpgradeLevelsBatch";
2361
+ };
2362
+ type ItemAction = (typeof ItemAction)[keyof typeof ItemAction];
2363
+ declare const FodderValuationMode: {
2364
+ readonly FlatCount: "FlatCount";
2365
+ readonly Merge: "Merge";
2366
+ readonly InvestmentRefund: "InvestmentRefund";
2367
+ };
2368
+ type FodderValuationMode = (typeof FodderValuationMode)[keyof typeof FodderValuationMode];
2369
+ declare const FodderSelectionMode: {
2370
+ readonly ProtectLeveled: "ProtectLeveled";
2371
+ readonly CheapestFirst: "CheapestFirst";
2372
+ readonly ClientSelected: "ClientSelected";
2373
+ };
2374
+ type FodderSelectionMode = (typeof FodderSelectionMode)[keyof typeof FodderSelectionMode];
2375
+ type NFTNetworkBinding = { ContractAddress?: null | string; TokenID?: null | string; TokenStandard?: null | string; [key: string]: unknown; };
2376
+ type NFTModel = { Networks?: null | Record<string, NFTNetworkBinding>; MetadataUrl?: null | string; [key: string]: unknown; };
2377
+ type ItemStats = { FlatBonuses?: null | Record<string, number>; PercentBonuses?: null | Record<string, number>; Power?: null | number; [key: string]: unknown; };
2378
+ type ItemEquipment = { MinCharacterLevel?: null | number; UseRequirements?: null | Record<string, number>; AllowedCharacterIDs?: null | Array<string>; AllowedSlotIDs?: null | Array<string>; [key: string]: unknown; };
2379
+ type ItemUpgradeFodder = { ValuationMode?: null | 'FlatCount' | 'Merge' | 'InvestmentRefund'; MergeRatio?: null | number; Selection?: null | 'ProtectLeveled' | 'CheapestFirst' | 'ClientSelected'; [key: string]: unknown; };
2380
+ type ItemUpgrade = { MaxLevel?: null | number; BaseCostResource?: null | ResourceConsume; CostScalingFactor?: null | number; FlatScalingFactor?: null | number; PercentScalingFactor?: null | number; PowerScalingFactor?: null | number; Fodder?: null | ItemUpgradeFodder; [key: string]: unknown; };
2381
+ type ItemMetadata = { RarityID?: null | string; CollectionID?: null | string; AuthorID?: null | string; [key: string]: unknown; };
2382
+ 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; };
2383
+ /** Catalog: a set of items of one thematic group. Key of `Items` is ItemID. */
2384
+ interface ItemCatalog {
2385
+ Items?: Record<string, ItemDefinition> | null;
2189
2386
  }
2190
- /** Personal deposit address assigned to the player in one network (lazily generated). */
2191
- interface UserDepositAddress {
2192
- Address: string;
2193
- Memo?: string | null;
2194
- AssignedAt: string;
2387
+ /** Root container for all item catalogs of a title. Key of `Catalogs` is CatalogID. */
2388
+ interface ItemDefinitions {
2389
+ Catalogs?: Record<string, ItemCatalog> | null;
2195
2390
  }
2196
- /** Spent-compliance (AML) window counters, checked against CryptoCurrencyDefinition.Limits. */
2197
- interface UserCryptoComplianceCounters {
2198
- DailyPeriodStartUtc: string;
2199
- /** decimal string use Decimal for arithmetic. */
2200
- DailyWithdrawnUsd: string;
2201
- MonthlyPeriodStartUtc: string;
2202
- /** decimal string — use Decimal for arithmetic. */
2203
- MonthlyWithdrawnUsd: string;
2391
+ type BonusWindowConfig = { Schedule?: null | Array<{ Order?: null | number; Type?: null | string; DurationSec?: null | number; BonusMultiplier?: null | number; [key: string]: unknown; }>; RepeatCycle?: null | boolean; MaxCycles?: null | number; [key: string]: unknown; };
2392
+ type BonusWindowState = { IsActive?: null | boolean; CurrentPhaseEndUtc?: null | string; NextBonusStartUtc?: null | string; CurrentCycleIndex?: null | number; CurrentPhaseIndex?: null | number; ActiveBonusMultiplier?: null | number; [key: string]: unknown; };
2393
+ /**
2394
+ * Container of preset wiring for event content — one PresetBinding per block. Inline data
2395
+ * (Milestones) lives on EventContent. null = presets unused.
2396
+ */
2397
+ interface TimedEventPresetBindings {
2398
+ Milestones?: PresetBinding | null;
2204
2399
  }
2205
- interface UserCryptoCurrencyState {
2206
- /** decimal string — use Decimal for arithmetic. */
2207
- Amount: string;
2208
- Frozen: string;
2209
- DepositAddresses?: Record<string, UserDepositAddress>;
2210
- Compliance?: UserCryptoComplianceCounters;
2211
- CreatedAt?: string;
2212
- UpdatedAt?: string;
2213
- [k: string]: unknown;
2400
+ /** Event content: display, token, sources, rewards, milestones, bonus window. */
2401
+ interface EventContent {
2402
+ DisplayName?: string | null;
2403
+ Description?: string | null;
2404
+ AssetPaths?: Record<string, string> | null;
2405
+ Category?: string | null;
2406
+ Token?: EventTokenDefinition | null;
2407
+ TokenSources?: TriggerSource[] | null;
2408
+ ClaimMode?: string | null;
2409
+ Milestones?: Record<string, MilestoneDefinition> | null;
2410
+ /** Container of content preset wiring (milestones). null = presets unused. */
2411
+ Presets?: TimedEventPresetBindings | null;
2412
+ BonusWindow?: BonusWindowConfig | null;
2214
2413
  }
2215
- interface ItemTotals {
2216
- StackableAmount: number;
2217
- UnstackableAmount: number;
2218
- TotalAmount: number;
2414
+ /** One event inside a cyclic chain (dates computed from AnchorUtc + DurationSec). */
2415
+ interface ChainedEventDefinition {
2416
+ ChainedEventID?: string | null;
2417
+ Order?: number | null;
2418
+ DurationSec?: number | null;
2419
+ Content?: EventContent | null;
2420
+ ClaimGraceHours?: number | null;
2421
+ CustomParams?: Record<string, string> | null;
2219
2422
  }
2220
- interface UnstackableItemInstanceState {
2221
- ItemInstanceID: string;
2222
- ItemID: string;
2223
- CatalogID?: string | null;
2224
- Quantity?: number;
2225
- RemainingUses?: number;
2226
- Level?: number;
2227
- AcquiredAt: string;
2228
- ExpiresAt?: string | null;
2229
- EquippedSlot?: EquipmentSlot | null;
2230
- CustomData?: string | null;
2423
+ /** Definition of a single event (Scheduled single-window or Chained phase-chain). */
2424
+ interface TimedEventDefinition {
2425
+ TimedEventID?: string | null;
2426
+ DisplayName?: string | null;
2427
+ Description?: string | null;
2428
+ AssetPaths?: Record<string, string> | null;
2429
+ Schedule?: ScheduleSpec | null;
2430
+ Content?: EventContent | null;
2431
+ Events?: ChainedEventDefinition[] | null;
2432
+ Gate?: SegmentGate | null;
2433
+ CustomParams?: Record<string, string> | null;
2231
2434
  }
2232
- /** Daily-window counter for one conversion pair ("{srcType}:{srcID}->{tgtType}:{tgtID}"). */
2233
- interface ConversionDailyCounter {
2234
- PeriodStartUtc: string;
2235
- /** decimal string use Decimal for arithmetic. */
2236
- AmountToday: string;
2435
+ type LimitedTimeEventsGlobalSettings = { MaxConcurrentEvents?: null | number; [key: string]: unknown; };
2436
+ /** Registry of reusable event presets (milestones). Phases/events reference them via EventContent.Presets. */
2437
+ interface TimedEventPresetRegistry {
2438
+ Milestones?: Record<string, MilestoneSet> | null;
2237
2439
  }
2238
- interface UserInventoryState {
2239
- Version?: number;
2240
- VirtualCurrencies?: Record<string, UserVirtualCurrencyState>;
2241
- CryptoCurrencies?: Record<string, UserCryptoCurrencyState>;
2242
- Items?: Record<string, ItemTotals>;
2243
- UnstackableItems?: Record<string, UnstackableItemInstanceState>;
2244
- ConversionDaily?: Record<string, ConversionDailyCounter>;
2440
+ /** Root config of the limited-time events system, returned by getDefinitions(). */
2441
+ interface TimedEventDefinitions {
2442
+ Definitions?: Record<string, TimedEventDefinition> | null;
2443
+ Settings?: LimitedTimeEventsGlobalSettings | null;
2444
+ /** Registry of reusable event presets (milestones). null = unused. */
2445
+ Presets?: TimedEventPresetRegistry | null;
2245
2446
  }
2246
- /** Personal "balance tuning" multiplier, server-only in intent but present on ClientState.User. */
2247
- interface PlayerEconomyTuningState {
2248
- Segment: string;
2249
- RewardMultiplier: number;
2250
- CostMultiplier: number;
2251
- MaxRollMultiplierOverride: number;
2252
- ExpiresAtUtc: string;
2253
- Version: number;
2447
+ interface ActiveEventInfo {
2448
+ Type?: ScheduleMode;
2449
+ TimedEventID?: string;
2450
+ CurrentChainedEventID?: string | null;
2451
+ Content?: EventContent | null;
2452
+ Progress?: UserEventTokenProgress | null;
2453
+ ComputedStartUtc?: string | null;
2454
+ ComputedEndUtc?: string | null;
2455
+ CanEarn?: boolean | null;
2456
+ CanClaim?: boolean | null;
2457
+ NextMilestone?: MilestoneDefinition | null;
2458
+ BonusWindow?: BonusWindowState | null;
2459
+ CurrentCycleIndex?: number | null;
2460
+ /** Chained-mode only: this event's 1-based position within the chain. */
2461
+ CurrentEventOrder?: number | null;
2462
+ /** Chained-mode only: total number of events in the chain. */
2463
+ TotalEventsInChain?: number | null;
2254
2464
  }
2255
- /** One recorded reactivation — a return after a silence gap of 7+ days. */
2256
- interface UsageReactivationEvent {
2257
- ReactivatedAt: string;
2258
- DaysSinceLastActive: number;
2465
+ interface GetActiveEventsResponse {
2466
+ ActiveEvents?: ActiveEventInfo[] | null;
2259
2467
  }
2260
- /** One calendar day's usage stats (UTC). Key in UserUsageState.Daily is "ddMMyyyy". */
2261
- interface DailyUsageRecord {
2262
- Seconds: number;
2263
- Sessions: number;
2264
- LongestSessionSeconds: number;
2265
- ActiveHoursMask: number;
2266
- LastActiveAt: string;
2468
+ type UserTimedEventStateResponse = { Tokens?: null | Record<string, UserEventTokenProgress>; };
2469
+ type EventTokenSpendResponse = { Type?: null | 'Scheduled' | 'Cyclic' | 'Chained'; LteID?: null | string; Resources?: null | ResourceOperation; };
2470
+ type EventMilestoneClaimResponse = { Type?: null | 'Scheduled' | 'Cyclic' | 'Chained'; LteID?: null | string; MilestoneID?: null | string; Rewards?: null | ResourceOperation; };
2471
+ type EventTokenGrantResponse = { Type?: null | 'Scheduled' | 'Cyclic' | 'Chained'; LteID?: null | string; Resources?: null | ResourceOperation; };
2472
+ type ClaimMilestonesBatchResponse = Array<{ Id: string; Success: boolean; Error?: null | string; Data?: null | EventMilestoneClaimResponse; }>;
2473
+ type SpendTokensBatchResponse = Array<{ Id: string; Success: boolean; Error?: null | string; Data?: null | EventTokenSpendResponse; }>;
2474
+ type GrantTokensBatchResponse = Array<{ Id: string; Success: boolean; Error?: null | string; Data?: null | EventTokenGrantResponse; }>;
2475
+ /** Addresses one event instance in a batch request (Type+LteID, optionally CycleIndex/ChainedEventID). */
2476
+ interface TimedEventInstanceRef {
2477
+ Type?: ScheduleMode;
2478
+ LteID?: string;
2479
+ CycleIndex?: number;
2480
+ ChainedEventID?: string;
2267
2481
  }
2268
- /** Aggregated app-usage stats (UserDataDocument.Usage), foreground-activity seconds only. */
2269
- interface UserUsageState {
2270
- TotalSeconds: number;
2271
- TotalSessions: number;
2272
- FirstActiveAt?: string | null;
2273
- LastActiveAt: string;
2274
- Reactivations?: UsageReactivationEvent[];
2275
- Daily?: Record<string, DailyUsageRecord>;
2482
+ /** One milestone claim in a batch (for ClaimMilestonesBatch). */
2483
+ interface TimedEventMilestoneRef extends TimedEventInstanceRef {
2484
+ MilestoneID?: string;
2276
2485
  }
2277
- interface UserState {
2278
- UserID?: string;
2279
- InventoryV2?: UserInventoryState;
2280
- EventToken?: UserEventTokensState;
2281
- Store?: UserStoreState | null;
2282
- Lootbox?: UserLootboxState | null;
2283
- Reward?: UserRewardState | null;
2284
- Quest?: UserQuestState | null;
2285
- Leaderboard?: UserLeaderboardsState | null;
2286
- Season?: UserSeasonsState | null;
2287
- Premium?: UserPremiumState | null;
2288
- Character?: UserCharactersState | null;
2289
- Match?: UserMatchState | null;
2290
- Collection?: UserCollectionState | null;
2291
- CoopEvent?: UserCoopEventState | null;
2292
- DealOffer?: UserDealOffersState | null;
2293
- Referral?: UserReferralState | null;
2294
- Social?: UserSocialState | null;
2295
- TimedBoost?: UserTimedBoostsState | null;
2296
- CustomData?: UserCustomDataState | null;
2297
- GameLoop?: UserGameLoopsState | null;
2298
- Blockchain?: UserBlockchainState | null;
2299
- Marketplace?: UserMarketplaceState | null;
2300
- PublicData?: UserPublicDataModel | null;
2301
- EconomyTuning?: PlayerEconomyTuningState | null;
2302
- Usage?: UserUsageState | null;
2303
- [k: string]: unknown;
2486
+ /** One token spend in a batch (for SpendTokensBatch). */
2487
+ interface TimedEventSpendRef extends TimedEventInstanceRef {
2488
+ SpendAmount?: number;
2489
+ RelatedEntityID?: string;
2304
2490
  }
2305
- interface ClientState {
2306
- Title?: TitlePublicConfigurationModel | null;
2307
- User?: UserState | null;
2308
- [k: string]: unknown;
2491
+ /** One token grant in a batch (for GrantTokensBatch). */
2492
+ interface TimedEventGrantRef extends TimedEventInstanceRef {
2493
+ SourceType?: string;
2494
+ Outcome?: string;
2495
+ SourceParams?: Record<string, string>;
2496
+ AmountOverride?: number;
2497
+ RollMultiplier?: number;
2498
+ RelatedEntityID?: string;
2309
2499
  }
2310
- type UsageTimeStats = { Today: number; Yesterday: number; CurrentWeek: number; CurrentMonth: number; Total: number; TotalSessions: number; FirstActiveAt?: null | string; LastActiveAt?: null | string; LongestSessionEverSeconds?: null | number; CurrentWeekActiveHoursMask?: null | number; CurrentMonthActiveHoursMask?: null | number; ReactivationCount?: null | number; History?: null | Record<string, unknown>; [key: string]: unknown; };
2311
- type ChangeUsernameResponse = { Username: string; };
2312
- interface UserRequest extends BaseRequest {
2313
- IsNewSession?: boolean;
2314
- SessionDurationSeconds?: number;
2315
- Fields?: string[];
2316
- TitleFields?: string[];
2317
- ExcludeFields?: string[];
2318
- ExcludeTitleFields?: string[];
2500
+ interface TimedEventRequest extends BaseRequest {
2501
+ Type?: ScheduleMode;
2502
+ LteID?: string;
2503
+ CycleIndex?: number;
2504
+ ChainedEventID?: string;
2505
+ SourceType?: string;
2506
+ AmountOverride?: number;
2507
+ SourceParams?: Record<string, string>;
2508
+ SpendAmount?: number;
2509
+ MilestoneID?: string;
2510
+ Outcome?: string;
2511
+ RollMultiplier?: number;
2512
+ /** ClaimMilestonesBatch: milestones to claim (deduped by Type+LteID+instance+MilestoneID). */
2513
+ Milestones?: TimedEventMilestoneRef[];
2514
+ /** ClaimAllMilestones: event instances to sweep. Null/empty = all active events. */
2515
+ Events?: TimedEventInstanceRef[];
2516
+ /** SpendTokensBatch: spends to apply (deduped by Type+LteID+instance). */
2517
+ Spends?: TimedEventSpendRef[];
2518
+ /** GrantTokensBatch: grants to apply (deduped by event address). */
2519
+ Grants?: TimedEventGrantRef[];
2319
2520
  }
2320
- declare const UserAction: {
2321
- readonly GetClientState: "GetClientState";
2322
- readonly GetClientStateExcept: "GetClientStateExcept";
2323
- readonly GetInventory: "GetInventory";
2324
- readonly GetEventTokens: "GetEventTokens";
2325
- readonly GetUsageTime: "GetUsageTime";
2326
- readonly AddUsageTime: "AddUsageTime";
2327
- readonly DeleteUserAccount: "DeleteUserAccount";
2328
- readonly ChangeUsername: "ChangeUsername";
2521
+ declare const TimedEventAction: {
2522
+ readonly GetActiveEvents: "GetActiveEvents";
2523
+ readonly GrantTokens: "GrantTokens";
2524
+ readonly SpendTokens: "SpendTokens";
2525
+ readonly ClaimMilestone: "ClaimMilestone";
2526
+ readonly GetDefinitions: "GetDefinitions";
2527
+ readonly GetUserLteState: "GetUserLteState";
2528
+ readonly ClaimMilestonesBatch: "ClaimMilestonesBatch";
2529
+ readonly ClaimAllMilestones: "ClaimAllMilestones";
2530
+ readonly SpendTokensBatch: "SpendTokensBatch";
2531
+ readonly GrantTokensBatch: "GrantTokensBatch";
2329
2532
  };
2330
- type UserAction = (typeof UserAction)[keyof typeof UserAction];
2533
+ type TimedEventAction = (typeof TimedEventAction)[keyof typeof TimedEventAction];
2331
2534
 
2332
- /** enum BlockchainNetworkType — chain family; controls signature payload shape. */
2333
- declare const BlockchainNetworkType: {
2334
- readonly EVM: "EVM";
2335
- readonly Solana: "Solana";
2336
- };
2337
- type BlockchainNetworkType = (typeof BlockchainNetworkType)[keyof typeof BlockchainNetworkType];
2338
- /** enum WalletLinkType — how a wallet address became linked to the account. */
2339
- declare const WalletLinkType: {
2340
- readonly AutoLinkedFromTransaction: "AutoLinkedFromTransaction";
2341
- readonly SignatureVerified: "SignatureVerified";
2342
- readonly ManuallyLinked: "ManuallyLinked";
2343
- };
2344
- type WalletLinkType = (typeof WalletLinkType)[keyof typeof WalletLinkType];
2345
- /** enum BlockchainTransactionType — asset kind of a pending/retryable withdrawal. */
2346
- declare const BlockchainTransactionType: {
2347
- readonly Token: "Token";
2348
- readonly Nft: "Nft";
2349
- };
2350
- type BlockchainTransactionType = (typeof BlockchainTransactionType)[keyof typeof BlockchainTransactionType];
2351
- /** enum KycStatus — player's KYC verification status. */
2352
- declare const KycStatus: {
2353
- readonly NotRequested: "NotRequested";
2354
- readonly Pending: "Pending";
2355
- readonly Verified: "Verified";
2356
- readonly Rejected: "Rejected";
2357
- readonly Expired: "Expired";
2358
- };
2359
- type KycStatus = (typeof KycStatus)[keyof typeof KycStatus];
2360
- /** enum KycTier — verification depth reached. */
2361
- declare const KycTier: {
2362
- readonly None: "None";
2363
- readonly Tier1: "Tier1";
2364
- readonly Tier2: "Tier2";
2365
- readonly Tier3: "Tier3";
2535
+ declare const CraftType: {
2536
+ readonly TradeUpRarity: "TradeUpRarity";
2537
+ readonly TradeUpCollection: "TradeUpCollection";
2366
2538
  };
2367
- type KycTier = (typeof KycTier)[keyof typeof KycTier];
2368
- /** enum BlockchainTransactionStatus lifecycle status of one deposit/withdrawal transaction. */
2369
- declare const BlockchainTransactionStatus: {
2370
- readonly Pending: "Pending";
2371
- readonly Completed: "Completed";
2372
- readonly Failed: "Failed";
2373
- readonly Expired: "Expired";
2374
- readonly Abandoned: "Abandoned";
2539
+ type CraftType = (typeof CraftType)[keyof typeof CraftType];
2540
+ type CraftSingleResult = { Index?: null | number; BurnedItemIDs?: null | Array<string>; RolledCollectionID?: null | string; UsedCollections?: null | Record<string, number>; Output?: null | ResourceEntry; };
2541
+ type CraftResponse = { ServerTimeUtc: string; CraftID: string; Type?: null | 'TradeUpRarity' | 'TradeUpCollection'; CraftedCount?: null | number; SelectedOptionID?: null | string; InputRarity?: null | string; OutputRarity?: null | string; Resources?: null | ResourceOperation; Results?: null | Array<CraftSingleResult>; };
2542
+ type CraftDefinition = { CraftID?: null | string; Type?: null | 'TradeUpRarity' | 'TradeUpCollection'; CatalogID?: null | string; CollectionID?: null | string; InputRarityID?: null | string; OutputRarityID?: null | string; RequiredItemCount?: null | number; PriceOptions?: null | Record<string, { OptionID?: null | string; RequiredResources?: null | ResourceConsume; [key: string]: unknown; }>; [key: string]: unknown; };
2543
+ /** The title's craft catalog (config), returned by getDefinitions(). */
2544
+ interface CraftDefinitions {
2545
+ Definitions?: Record<string, CraftDefinition> | null;
2546
+ }
2547
+ type CraftDefinitionsResponse = { ServerTimeUtc?: null | string; CraftDefinitions?: null | CraftDefinitions; };
2548
+ interface CraftRequest extends BaseRequest {
2549
+ CraftID?: string;
2550
+ Count?: number;
2551
+ SelectedOptionID?: string;
2552
+ InputItemIDs?: string[];
2553
+ }
2554
+ declare const CraftAction: {
2555
+ readonly GetDefinitions: "GetDefinitions";
2556
+ readonly Craft: "Craft";
2375
2557
  };
2376
- type BlockchainTransactionStatus = (typeof BlockchainTransactionStatus)[keyof typeof BlockchainTransactionStatus];
2377
- /**
2378
- * Generic "kind" of a deposit/withdrawal operation. Stored as a free string (not an enum) so new
2379
- * kinds can be added without a redeploy — it mirrors the RewardPool contract, where it is also a
2380
- * string. Only the known values are listed here; arbitrary strings are allowed (the server signs
2381
- * whatever it receives after normalization). On a withdrawal the client MUST pass the same value
2382
- * on-chain that the server signed, or the contract rejects the signature. Empty → "game_topup".
2383
- * Port of Blockchain/Models/BlockchainOperationCategory.cs.
2384
- */
2385
- declare const BlockchainOperationCategory: {
2386
- /** Top up the game / withdraw to a wallet — the default kind. */
2387
- readonly GameTopUp: "game_topup";
2388
- /** Community reward (social promotion etc.) — a grant payout. */
2389
- readonly CommunityReward: "community_reward";
2558
+ type CraftAction = (typeof CraftAction)[keyof typeof CraftAction];
2559
+
2560
+ /** Storage scope: who may write a record and whether it is cached server-side. */
2561
+ declare const TitleDataScope: {
2562
+ /** Authored configuration. Written by the publisher / AI Coder; cached with the title config. */
2563
+ readonly Static: "Static";
2564
+ /** Mutable title state. Written only by CloudCode scripts; never cached. */
2565
+ readonly Runtime: "Runtime";
2390
2566
  };
2391
- type BlockchainOperationCategory = (typeof BlockchainOperationCategory)[keyof typeof BlockchainOperationCategory];
2392
- /** Empty/absent category is treated as {@link BlockchainOperationCategory.GameTopUp}. */
2393
- declare function normalizeBlockchainCategory(category?: string | null): string;
2394
- /** enum TransactionDirection which side of the platform pool the asset is moving to/from. */
2395
- declare const TransactionDirection: {
2396
- readonly UsersCryptoWallet: "UsersCryptoWallet";
2397
- readonly Game: "Game";
2567
+ type TitleDataScope = (typeof TitleDataScope)[keyof typeof TitleDataScope];
2568
+ /** Visibility bucket. Clients never write title data — the bucket only decides who reads. */
2569
+ declare const TitleDataBucket: {
2570
+ /** Readable by game clients. */
2571
+ readonly Public: "Public";
2572
+ /** Server and CloudCode only — never returned to a client. */
2573
+ readonly Private: "Private";
2398
2574
  };
2399
- type TransactionDirection = (typeof TransactionDirection)[keyof typeof TransactionDirection];
2400
- type BlockchainNftCollectionBinding = { ContractAddress?: null | string; ItemCatalogID?: null | string; DisplayName?: null | string; DepositsEnabled?: null | boolean; WithdrawalsEnabled?: null | boolean; [key: string]: unknown; };
2401
- type PlatformBlockchainState = { Ios?: null | boolean; Android?: null | boolean; Web?: null | boolean; [key: string]: unknown; };
2402
- type BlockchainNetworkDefinition = { NetworkID?: null | string; DisplayName?: null | string; Type?: null | 'EVM' | 'Solana'; ChainID?: null | number; ChainTicker?: null | string; RewardPoolAddress?: null | string; VaultDepositAddress?: null | string; ChainConfigVersion?: null | number; RequiredConfirmations?: null | number; DepositsEnabled?: null | boolean; WithdrawalsEnabled?: null | boolean; NftDepositsEnabled?: null | boolean; NftWithdrawalsEnabled?: null | boolean; PlatformOverrides?: null | PlatformBlockchainState; NftCollections?: null | Array<BlockchainNftCollectionBinding>; AssetPaths?: null | Record<string, string>; [key: string]: unknown; };
2403
- type BlockchainSystemState = { DepositsEnabled?: null | boolean; WithdrawalsEnabled?: null | boolean; NftDepositsEnabled?: null | boolean; NftWithdrawalsEnabled?: null | boolean; PlatformOverrides?: null | PlatformBlockchainState; [key: string]: unknown; };
2404
- type BlockchainAccountSafetyPolicy = { MinAccountAgeDays?: null | number; MultiAccountCheckEnabled?: null | boolean; BanOnSharedWithdrawalAddress?: null | boolean; PendingWithdrawalTtlHours?: null | number; [key: string]: unknown; };
2405
- type BlockchainDefinitions = { SystemState?: null | BlockchainSystemState; Networks?: null | Record<string, BlockchainNetworkDefinition>; AccountSafety?: null | BlockchainAccountSafetyPolicy; WalletLogin?: null | { Enabled?: null | boolean; TokenGates?: null | Array<{ Enabled?: null | boolean; NetworkID?: null | string; CurrencyID?: null | string; MinBalance?: null | string; BalanceSource?: null | 'OnChain' | 'Combined'; DenyMessage?: null | string; [key: string]: unknown; }>; WalletConnectProjectId?: null | string; [key: string]: unknown; }; [key: string]: unknown; };
2406
- type LinkedWalletInfo = { NetworkID?: null | string; Address?: null | string; LinkedAt?: null | string; LastUsedAt?: null | string; LinkType?: null | 'AutoLinkedFromTransaction' | 'SignatureVerified' | 'ManuallyLinked'; IsSignatureVerified?: null | boolean; [key: string]: unknown; };
2407
- type PendingWithdrawalRef = { TitleTransactionID?: null | string; Type?: null | 'Token' | 'Nft'; NetworkID?: null | string; AssetID?: null | string; Amount?: null | string; CreatedAt?: null | string; ExpiresAt?: null | string; [key: string]: unknown; };
2408
- type UserKycState = { Status?: null | 'Expired' | 'Pending' | 'Rejected' | 'NotRequested' | 'Verified'; Tier?: null | 'None' | 'Tier1' | 'Tier2' | 'Tier3'; VerifiedAt?: null | string; ExpiresAt?: null | string; RejectedAt?: null | string; ProviderReference?: null | string; RejectionReason?: null | string; [key: string]: unknown; };
2409
- type TokenCurrencyStats = { CurrencyID?: null | string; Deposits?: null | number; DepositsVolumeNative?: null | string; DepositsVolumeUsd?: null | string; Withdrawals?: null | number; WithdrawalsVolumeNative?: null | string; WithdrawalsVolumeUsd?: null | string; FailedWithdrawals?: null | number; RejectedDeposits?: null | number; FirstDepositAt?: null | string; LastDepositAt?: null | string; FirstWithdrawalAt?: null | string; LastWithdrawalAt?: null | string; [key: string]: unknown; };
2410
- type TokenStatsContainer = { TotalDeposits?: null | number; TotalWithdrawals?: null | number; FailedWithdrawals?: null | number; RejectedDeposits?: null | number; TotalDepositsVolumeUsd?: null | string; TotalWithdrawalsVolumeUsd?: null | string; PerCurrency?: null | Record<string, TokenCurrencyStats>; [key: string]: unknown; };
2411
- type NftCollectionStats = { NetworkID?: null | string; ItemCatalogID?: null | string; Deposits?: null | number; Withdrawals?: null | number; FailedWithdrawals?: null | number; RejectedDeposits?: null | number; FirstDepositAt?: null | string; LastDepositAt?: null | string; FirstWithdrawalAt?: null | string; LastWithdrawalAt?: null | string; [key: string]: unknown; };
2412
- type NftStatsContainer = { TotalDeposits?: null | number; TotalWithdrawals?: null | number; FailedWithdrawals?: null | number; RejectedDeposits?: null | number; PerCollection?: null | Record<string, NftCollectionStats>; [key: string]: unknown; };
2413
- type BlockchainStats = { Tokens?: null | TokenStatsContainer; Nfts?: null | NftStatsContainer; [key: string]: unknown; };
2414
- type UserBlockchainState = { Version?: null | number; Stats?: null | BlockchainStats; LinkedWallets?: null | Record<string, LinkedWalletInfo>; LastWalletLogin?: null | { NetworkID?: null | string; Address?: null | string; CheckedAt?: null | string; LoggedInAt?: null | string; GatePassed?: null | boolean; GatedBalances?: null | Array<{ CurrencyID?: null | string; Balance?: null | string; MinBalance?: null | string; [key: string]: unknown; }>; [key: string]: unknown; }; PendingWithdrawals?: null | Array<PendingWithdrawalRef>; Kyc?: null | UserKycState; FirstActivityAt?: null | string; LastActivityAt?: null | string; IsFlagged?: null | boolean; FlagReason?: null | string; [key: string]: unknown; };
2415
- type TokenTransactionDocument = { ID?: null | string; TitleID?: null | string; CreatedAt?: null | string; UpdatedAt?: null | string; UserID?: null | string; TransactionHash?: null | string; Nonce?: null | string; NetworkID?: null | string; ChainType?: null | string; ChainID?: null | number; Direction?: null | 'UsersCryptoWallet' | 'Game'; From?: null | string; To?: null | string; Amount?: null | string; Status?: null | 'Completed' | 'Expired' | 'Pending' | 'Failed' | 'Abandoned'; SignatureData?: null | string; CompletedAt?: null | string; ExpiresAt?: null | string; FailReason?: null | string; Reason?: null | string; Category?: null | string; TokenID?: null | string; CurrencyID?: null | string; AmountUsd?: null | string; NetPayoutAmount?: null | string; [key: string]: unknown; };
2416
- type NFTTransactionDocument = { ID?: null | string; TitleID?: null | string; CreatedAt?: null | string; UpdatedAt?: null | string; UserID?: null | string; TransactionHash?: null | string; Nonce?: null | string; NetworkID?: null | string; ChainType?: null | string; ChainID?: null | number; Direction?: null | 'UsersCryptoWallet' | 'Game'; From?: null | string; To?: null | string; Amount?: null | string; Status?: null | 'Completed' | 'Expired' | 'Pending' | 'Failed' | 'Abandoned'; SignatureData?: null | string; CompletedAt?: null | string; ExpiresAt?: null | string; FailReason?: null | string; Reason?: null | string; Category?: null | string; NFTID?: null | string; ItemID?: null | string; CatalogID?: null | string; SkinID?: null | string; [key: string]: unknown; };
2417
- type WithdrawalSignatureResponse = { TokenAddress?: null | string; WalletAddress?: null | string; Amount?: null | string; BurnAmount?: null | string; TokenId?: null | string; Nonce?: null | string; ContractAddress?: null | string; UserID?: null | string; TitleID?: null | string; Category?: null | string; Deadline?: null | string; Signature?: null | string; [key: string]: unknown; };
2418
- type SolanaWithdrawalSignature = { Mint?: null | string; WalletAddress?: null | string; Amount?: null | string; Nonce?: null | string; ExpiresAt?: null | string; ProgramID?: null | string; SignatureHex?: null | string; SigIxIndex?: null | number; Ed25519PublicKey?: null | string; Ed25519Message?: null | string; UserID?: null | string; [key: string]: unknown; };
2419
- type BlockchainConfigResponse = { Blockchain?: null | BlockchainDefinitions; CryptoCurrencies?: null | Record<string, CryptoCurrencyDefinition>; [key: string]: unknown; };
2420
- type UserBlockchainStateResponse = { State?: null | UserBlockchainState; CryptoBalances?: null | Record<string, UserCryptoCurrencyState>; [key: string]: unknown; };
2421
- type DepositTokenResponse = { ServerTimeUtc?: null | string; TransactionHash?: null | string; NetworkID?: null | string; CurrencyID?: null | string; AmountNative?: null | string; AmountUsd?: null | string; StateDelta?: null | { CryptoBalances?: null | Record<string, { CurrencyID: string; AmountDelta: string; FrozenDelta: string; UpdatedAt: string; [key: string]: unknown; }>; PendingAdded?: null | PendingWithdrawalRef; PendingRemovedIDs?: null | Array<string>; [key: string]: unknown; }; [key: string]: unknown; };
2422
- type DepositNFTResponse = { ServerTimeUtc?: null | string; TransactionHash?: null | string; NetworkID?: null | string; ItemID?: null | string; CatalogID?: null | string; NftTokenID?: null | string; Amount?: null | number; Resources?: null | ResourceOperation; Inventory?: null | InventoryDelta; [key: string]: unknown; };
2423
- type TokenWithdrawalResponse = { ServerTimeUtc?: null | string; TitleTransactionID?: null | string; NetworkID?: null | string; CurrencyID?: null | string; AmountNative?: null | string; NetAmountNative?: null | string; BurnAmountNative?: null | string; AmountUsd?: null | string; ExpiresAt?: null | string; EvmSignature?: null | WithdrawalSignatureResponse; SolanaSignature?: null | SolanaWithdrawalSignature; StateDelta?: null | { CryptoBalances?: null | Record<string, { CurrencyID: string; AmountDelta: string; FrozenDelta: string; UpdatedAt: string; [key: string]: unknown; }>; PendingAdded?: null | PendingWithdrawalRef; PendingRemovedIDs?: null | Array<string>; [key: string]: unknown; }; [key: string]: unknown; };
2424
- type NFTWithdrawalResponse = { ServerTimeUtc?: null | string; TitleTransactionID?: null | string; NetworkID?: null | string; ItemID?: null | string; CatalogID?: null | string; NftTokenID?: null | string; Amount?: null | number; ExpiresAt?: null | string; Resources?: null | ResourceOperation; EvmSignature?: null | WithdrawalSignatureResponse; SolanaSignature?: null | SolanaWithdrawalSignature; StateDelta?: null | { CryptoBalances?: null | Record<string, { CurrencyID: string; AmountDelta: string; FrozenDelta: string; UpdatedAt: string; [key: string]: unknown; }>; PendingAdded?: null | PendingWithdrawalRef; PendingRemovedIDs?: null | Array<string>; [key: string]: unknown; }; Inventory?: null | InventoryDelta; [key: string]: unknown; };
2425
- type TransactionHistoryResponse = { TokenTransactions?: null | Array<TokenTransactionDocument>; NFTTransactions?: null | Array<NFTTransactionDocument>; [key: string]: unknown; };
2426
- type DonationResponse = { ServerTimeUtc?: null | string; TransactionHash?: null | string; NetworkID?: null | string; CurrencyID?: null | string; AmountNative?: null | string; AmountUsd?: null | string; Target?: null | string; [key: string]: unknown; };
2427
- type RetryWithdrawalResponse = { TitleTransactionID?: null | string; Kind?: null | 'Token' | 'Nft'; EvmSignature?: null | WithdrawalSignatureResponse; SolanaSignature?: null | SolanaWithdrawalSignature; [key: string]: unknown; };
2428
- type ConfirmWithdrawalResponse = { TitleTransactionID?: null | string; OnChainTxHash?: null | string; Status?: null | 'Completed' | 'Expired' | 'Pending' | 'Failed' | 'Abandoned'; StateDelta?: null | { CryptoBalances?: null | Record<string, { CurrencyID: string; AmountDelta: string; FrozenDelta: string; UpdatedAt: string; [key: string]: unknown; }>; PendingAdded?: null | PendingWithdrawalRef; PendingRemovedIDs?: null | Array<string>; [key: string]: unknown; }; [key: string]: unknown; };
2429
- interface BlockchainRequest extends BaseRequest {
2430
- TitleTransactionID?: string;
2431
- NetworkID?: string;
2432
- CurrencyID?: string;
2433
- TransactionHash?: string;
2434
- WalletAddress?: string;
2435
- /** Decimal string for token withdrawals, integer string for NFT withdrawals/tx-history limit. */
2436
- Amount?: string;
2437
- ItemID?: string;
2438
- /**
2439
- * Operation kind for withdrawals (e.g. "game_topup", "community_reward"). The server signs this
2440
- * into the withdrawal hash and the client must submit the same value on-chain. Empty → "game_topup".
2441
- * Ignored by deposits (there the category is read back from the on-chain transaction).
2442
- */
2443
- Category?: string;
2444
- /**
2445
- * Item level for RequestNFTWithdrawal. Determines the tokenId (tokenId = base + Level - 1) and
2446
- * which instances are debited. 0/1 → base level (stackable/level-1, prior behavior). >1 → debits
2447
- * unstackable instances of that level. Defaults to 1 server-side.
2448
- */
2449
- Level?: number;
2450
- /**
2451
- * Specific instance ID to withdraw as an ERC-721 unique token. Required when the item's NFT
2452
- * binding has TokenStandard == "ERC-721" — the server debits and tokenizes exactly this
2453
- * instance, preserving its state (Level/RemainingUses/CustomData) in the registry. Ignored for
2454
- * ERC-1155.
2455
- */
2456
- ItemInstanceID?: string;
2575
+ type TitleDataBucket = (typeof TitleDataBucket)[keyof typeof TitleDataBucket];
2576
+ type TitleCustomDataRecord = { Value?: null | string; UpdatedAt?: null | string; Version?: null | number; LastWriter?: null | 'Client' | 'Server' | 'System'; ExpiresAt?: null | string; [key: string]: unknown; };
2577
+ type GetPublicTitleDataResponse = { StaticVersion?: null | number; RuntimeVersion?: null | number; Static?: null | Record<string, TitleCustomDataRecord>; Runtime?: null | Record<string, TitleCustomDataRecord>; NotModified?: null | boolean; };
2578
+ type TitleCustomDataKeyDefinition = { KeyID: string; Scope?: null | 'Static' | 'Runtime'; Bucket?: null | 'Private' | 'Public'; ValueType?: null | 'String' | 'Int' | 'Bool' | 'Json'; MaxValueLengthBytes?: null | number; TtlSeconds?: null | number; DefaultValue?: null | string; Description?: null | string; [key: string]: unknown; };
2579
+ /** Title-data schema as served to clients: public-bucket keys plus the title's limits. */
2580
+ interface TitleCustomDataDefinitions {
2581
+ Keys?: Record<string, TitleCustomDataKeyDefinition> | null;
2582
+ DefaultMaxValueLengthBytes?: number | null;
2583
+ DefaultTtlSeconds?: number | null;
2584
+ MaxKeysPerBucket?: number | null;
2585
+ MaxTotalSizeBytes?: number | null;
2586
+ RejectUnregisteredKeys?: boolean | null;
2457
2587
  }
2458
- declare const BlockchainAction: {
2459
- readonly GetDefinitions: "GetDefinitions";
2460
- readonly GetUserState: "GetUserState";
2461
- readonly DepositToken: "DepositToken";
2462
- readonly DepositNFT: "DepositNFT";
2463
- readonly RequestTokenWithdrawal: "RequestTokenWithdrawal";
2464
- readonly RequestNFTWithdrawal: "RequestNFTWithdrawal";
2465
- readonly GetTransactionHistory: "GetTransactionHistory";
2466
- readonly RetryWithdrawal: "RetryWithdrawal";
2467
- readonly ConfirmWithdrawal: "ConfirmWithdrawal";
2468
- readonly DonateToDeveloper: "DonateToDeveloper";
2469
- readonly DonateToUsersPool: "DonateToUsersPool";
2588
+ interface TitleCustomDataRequest extends BaseRequest {
2589
+ KeyIDs?: string[];
2590
+ KnownRuntimeVersion?: number;
2591
+ }
2592
+ declare const TitleCustomDataAction: {
2593
+ readonly GetTitleCustomDataDefinitions: "GetTitleCustomDataDefinitions";
2594
+ readonly GetPublicTitleData: "GetPublicTitleData";
2595
+ readonly GetPublicTitleDataKeys: "GetPublicTitleDataKeys";
2470
2596
  };
2471
- type BlockchainAction = (typeof BlockchainAction)[keyof typeof BlockchainAction];
2472
- type PlatformLoginResponse = { TitleUserID: string; TitleClientSessionTicket: string; TitleClientSessionTicketExpiration: string; PlatformUserID?: null | string; PlatformAuthToken?: null | string; PlatformAuthTokenExpiration?: null | string; };
2473
- type SuccessResponse = { IsCompleted?: null | boolean; ServerTime?: null | string; };
2474
- type WalletChallengeResponse = { Message: string; ExpiresAt: string; };
2475
- /** Client-supplied UTM/click-ID attribution signal, sent with login/register (port of AttributionInput). */
2476
- interface AttributionInput {
2477
- UtmSource?: string;
2478
- UtmMedium?: string;
2479
- UtmCampaign?: string;
2480
- UtmTerm?: string;
2481
- UtmContent?: string;
2482
- /** gclid / fbclid / ttclid / msclkid / yclid. */
2483
- ClickID?: string;
2484
- Referrer?: string;
2485
- Country?: string;
2486
- AppVersion?: string;
2597
+ type TitleCustomDataAction = (typeof TitleCustomDataAction)[keyof typeof TitleCustomDataAction];
2598
+ type ExperimentVariant = { VariantID?: null | string; DisplayName?: null | string; Weight?: null | number; IsControl?: null | boolean; Params?: null | Record<string, string>; [key: string]: unknown; };
2599
+ type ExperimentDefinition = { ExperimentID?: null | string; DisplayName?: null | string; Description?: null | string; IsEnabled?: null | boolean; Schedule?: null | ScheduleSpec; Gate?: null | SegmentGate; Variants?: null | Array<ExperimentVariant>; Salt?: null | string; LayerID?: null | string; StickyAssignment?: null | boolean; CustomParams?: null | Record<string, string>; [key: string]: unknown; };
2600
+ type ExperimentDefinitions = { Experiments?: null | Record<string, ExperimentDefinition>; [key: string]: unknown; };
2601
+
2602
+ interface TitlePublicConfigurationModel {
2603
+ /** Schema of the title-wide key-value store; the values live in client.titleCustomData. */
2604
+ TitleCustomData?: TitleCustomDataDefinitions | null;
2605
+ Character?: CharacterDefinitions | null;
2606
+ Item?: ItemDefinitions | null;
2607
+ Currency?: CurrencyDefinitions | null;
2608
+ Store?: StoreDefinitions | null;
2609
+ Lootbox?: LootboxDefinitions | null;
2610
+ Quest?: QuestDefinitions | null;
2611
+ TimedEvent?: TimedEventDefinitions | null;
2612
+ Leaderboard?: LeaderboardDefinitions | null;
2613
+ Season?: SeasonDefinitions | null;
2614
+ Reward?: RewardDefinitions | null;
2615
+ Collection?: CollectionDefinitions | null;
2616
+ Craft?: CraftDefinitions | null;
2617
+ DealOffer?: DealOfferDefinitions | null;
2618
+ Premium?: PremiumDefinitions | null;
2619
+ TimedBoost?: TimedBoostDefinitions | null;
2620
+ CoopEvent?: CoopEventDefinitions | null;
2621
+ GameLoop?: GameLoopDefinitions | null;
2622
+ Match?: MatchDefinitions | null;
2623
+ Experiment?: ExperimentDefinitions | null;
2624
+ Blockchain?: BlockchainDefinitions | null;
2625
+ Marketplace?: MarketplaceDefinitions | null;
2626
+ Multiplayer?: MultiplayerDefinitions | null;
2627
+ UserCustomData?: UserCustomDataDefinitions | null;
2628
+ Referral?: ReferralDefinitions | null;
2629
+ [key: string]: unknown;
2487
2630
  }
2488
- interface AuthenticationRequest extends BaseRequest {
2489
- PlatformAuthToken?: string;
2490
- PlatformRefreshToken?: string;
2491
- GoogleIDToken?: string;
2492
- Attribution?: AttributionInput;
2493
- /** Wallet login: NetworkID (key of cfg.Blockchain.Networks) the wallet is proving on. */
2494
- NetworkID?: string;
2495
- /** Wallet login: the crypto wallet address (EVM 0x… / Solana base58). */
2496
- WalletAddress?: string;
2497
- /** Wallet login: signature of the challenge message (EVM personal_sign hex / Solana ed25519, 0x-hex). */
2498
- WalletSignature?: string;
2631
+ interface TitleRequest extends BaseRequest {
2632
+ Fields?: string[];
2633
+ ExcludeFields?: string[];
2499
2634
  }
2500
- declare const AuthenticationAction: {
2501
- readonly LoginWithDeviceID: "LoginWithDeviceID";
2502
- readonly LoginWithTelegram: "LoginWithTelegram";
2503
- readonly LoginWithEmail: "LoginWithEmail";
2504
- readonly LoginWithGoogle: "LoginWithGoogle";
2505
- readonly LoginWithPlatformToken: "LoginWithPlatformToken";
2506
- readonly RegisterWithEmail: "RegisterWithEmail";
2507
- readonly RefreshPlatformToken: "RefreshPlatformToken";
2508
- readonly RequestWalletChallenge: "RequestWalletChallenge";
2509
- readonly LoginWithWallet: "LoginWithWallet";
2510
- readonly ForgotPassword: "ForgotPassword";
2511
- readonly ResetPassword: "ResetPassword";
2635
+ declare const TitleAction: {
2636
+ readonly GetTitlePublicConfiguration: "GetTitlePublicConfiguration";
2637
+ readonly GetTitlePublicConfigurationExcept: "GetTitlePublicConfigurationExcept";
2638
+ readonly GetCurrencyDefinitions: "GetCurrencyDefinitions";
2639
+ readonly GetItemDefinitions: "GetItemDefinitions";
2640
+ readonly GetServerTime: "GetServerTime";
2512
2641
  };
2513
- type AuthenticationAction = (typeof AuthenticationAction)[keyof typeof AuthenticationAction];
2642
+ type TitleAction = (typeof TitleAction)[keyof typeof TitleAction];
2514
2643
 
2515
2644
  interface SdkEvents {
2516
2645
  "transport:busy": boolean;
@@ -2578,6 +2707,13 @@ interface SdkEvents {
2578
2707
  "quest:milestonesClaimedBatch": ClaimMilestoneRewardsBatchResponse;
2579
2708
  "quest:groupCompletionClaimed": ClaimGroupCompletionRewardResponse;
2580
2709
  "quest:progressAdded": AddQuestProgressResponse;
2710
+ /**
2711
+ * The backend advanced quests by itself while handling some other call — objectives with
2712
+ * `Source: "SystemEvent"` (board roll, store purchase, marketplace deal, claiming another
2713
+ * quest). The cached user state is already patched when this fires; subscribe to refresh the
2714
+ * quest UI. Nothing to call to trigger it.
2715
+ */
2716
+ "quest:systemProgress": QuestProgressUpdate[];
2581
2717
  "timedEvent:activeEventsLoaded": GetActiveEventsResponse;
2582
2718
  "timedEvent:definitionsLoaded": TimedEventDefinitions;
2583
2719
  "timedEvent:userStateLoaded": UserTimedEventStateResponse;
@@ -2694,8 +2830,9 @@ interface SdkEvents {
2694
2830
  "userCustomData:batchSet": BatchSetUserCustomDataResponse;
2695
2831
  "userCustomData:batchDeleted": BatchDeleteUserCustomDataResponse;
2696
2832
  "userCustomData:batchPublicDataLoaded": BatchGetPublicUserCustomDataResponse;
2833
+ "titleCustomData:definitionsLoaded": TitleCustomDataDefinitions;
2834
+ "titleCustomData:publicDataLoaded": GetPublicTitleDataResponse;
2697
2835
  "title:publicConfigurationReceived": TitlePublicConfigurationModel;
2698
- "title:publicCustomDataReceived": TitleCustomDataResponse;
2699
2836
  "title:currencyDefinitionsReceived": CurrencyDefinitions;
2700
2837
  "title:itemDefinitionsReceived": ItemDefinitions;
2701
2838
  "title:serverTimeReceived": SuccessResponse;
@@ -2762,6 +2899,20 @@ interface SdkEvents {
2762
2899
  "multiplayer:memberStateSet": PublishResponse;
2763
2900
  }
2764
2901
 
2902
+ /**
2903
+ * Хранилище, переживающее перезапуск игры. Нужно ровно для одной вещи — держать конфиг тайтла
2904
+ * между сессиями, чтобы не качать его заново на каждом заходе (см. TitleConfigCache).
2905
+ *
2906
+ * Интерфейс намеренно узкий и допускает как синхронную реализацию (localStorage), так и
2907
+ * асинхронную (IndexedDB, файловая система, PlayerPrefs в обёртке): вызывающий всегда делает
2908
+ * `await`, а синхронная реализация просто вернёт значение.
2909
+ */
2910
+ interface ConfigStorage {
2911
+ get(key: string): Promise<string | null> | string | null;
2912
+ set(key: string, value: string): Promise<void> | void;
2913
+ remove(key: string): Promise<void> | void;
2914
+ }
2915
+
2765
2916
  declare const DEFAULT_BASE_URL = "https://api.idosgames.com";
2766
2917
  interface IDosGamesSettings {
2767
2918
  readonly titleID: string;
@@ -2770,6 +2921,12 @@ interface IDosGamesSettings {
2770
2921
  readonly baseUrl: string;
2771
2922
  readonly devBuild: boolean;
2772
2923
  readonly debugLogging: boolean;
2924
+ /**
2925
+ * Куда складывать конфиг тайтла между сессиями. По умолчанию — `localStorage` с откатом
2926
+ * в память. Своя реализация нужна там, где `localStorage` нет или он не переживает
2927
+ * перезапуск (React Native, встраивание в нативную оболочку).
2928
+ */
2929
+ readonly configStorage: ConfigStorage;
2773
2930
  }
2774
2931
  interface SettingsInput {
2775
2932
  titleID: string;
@@ -2778,6 +2935,7 @@ interface SettingsInput {
2778
2935
  baseUrl?: string;
2779
2936
  devBuild?: boolean;
2780
2937
  debugLogging?: boolean;
2938
+ configStorage?: ConfigStorage;
2781
2939
  }
2782
2940
 
2783
2941
  /**
@@ -2793,6 +2951,15 @@ declare class UserData {
2793
2951
  getCachedActiveEvents(): GetActiveEventsResponse | null;
2794
2952
  clear(): void;
2795
2953
  applyUserState(state: UserState): void;
2954
+ /**
2955
+ * Точечная замена перечисленных контейнеров — для адресной выборки (`getUserState`), которая
2956
+ * приносит только часть состояния.
2957
+ *
2958
+ * Обычный `applyUserState` заменяет состояние ЦЕЛИКОМ и обнулил бы всё, чего в выборке нет.
2959
+ * Список контейнеров передаётся отдельно от самих данных намеренно: контейнер, ставший у
2960
+ * игрока пустым, приходит отсутствующим — и его нужно именно стереть, а не «не трогать».
2961
+ */
2962
+ applyUserStateContainers(state: UserState, containers: string[]): void;
2796
2963
  applyInventory(inventory: UserInventoryState): void;
2797
2964
  applyVirtualCurrency(data: Record<string, UserVirtualCurrencyState>): void;
2798
2965
  applyResourceOperation(op: ResourceOperation | null | undefined, itemDefs?: ItemDefinitions, now?: Date): void;
@@ -3046,13 +3213,70 @@ declare class UserService {
3046
3213
  private readonly ctx;
3047
3214
  constructor(ctx: ClientContext);
3048
3215
  private baseRequest;
3216
+ private get configCache();
3217
+ private cache?;
3218
+ private get stateCache();
3219
+ private userStateCache?;
3049
3220
  getClientState(): Promise<OperationResult<ClientState>>;
3221
+ /**
3222
+ * Подготовка версионного хендшейка состояния: достаём сохранённое состояние игрока и
3223
+ * прикладываем к запросу версии контейнеров, которые у нас уже есть. Сервер не станет
3224
+ * присылать те, что не изменились.
3225
+ *
3226
+ * Ничего не сохранено (первый вход, другое устройство, битый кэш) — запрос уходит как раньше
3227
+ * и приходит полное состояние.
3228
+ */
3229
+ private prepareStateHandshake;
3230
+ /**
3231
+ * Достройка ответа до полного состояния и сохранение нового снимка.
3232
+ *
3233
+ * `data.User` ЗАМЕНЯЕТСЯ склеенным состоянием — это главное обещание механики: вызывающий код
3234
+ * и подписчики `user:clientStateReceived` видят ровно то же, что видели бы без дельты. Иначе
3235
+ * каждая игра на свете обязана была бы узнать про версии и научиться доклеивать сама.
3236
+ */
3237
+ private finishStateHandshake;
3238
+ /**
3239
+ * Приводит конфиг тайтла к пригодному виду. Тела конфига в ответе `GetClientState` НЕТ —
3240
+ * там только версия и, если артефакт выложен, ссылка на CDN. Порядок источников:
3241
+ *
3242
+ * 1. версия совпала с сохранённой — берём из локального хранилища, сети не касаемся;
3243
+ * 2. пришла ссылка — качаем артефакт с CDN;
3244
+ * 3. иначе (ссылки нет или не скачалось) — просим конфиг телом у эндпоинта `Title`.
3245
+ *
3246
+ * Третий шаг существует, чтобы недоступность CDN не означала незапускающуюся игру: до
3247
+ * появления раздачи через CDN хватало работающего API, и терять это свойство нельзя.
3248
+ * Возвращает null, только если не сработало вообще ничего.
3249
+ */
3250
+ private resolveTitleConfig;
3251
+ private fetchConfigFromCdn;
3252
+ /**
3253
+ * Фолбэк на эндпоинт `Title`. Набор полей передаётся ТОТ ЖЕ, что просили у `GetClientState`:
3254
+ * иначе конфиг не будет соответствовать версии, под которой мы его сохраним.
3255
+ */
3256
+ private fetchConfigFromApi;
3050
3257
  /**
3051
3258
  * Loads ClientState excluding the given fields. At login GameLoop is excluded (loaded
3052
3259
  * per-stage separately) and carried across the wholesale state replace so a mid-session
3053
3260
  * refresh doesn't wipe the active board.
3054
3261
  */
3055
3262
  getClientStateExcept(excludeFields?: string[], excludeTitleFields?: string[]): Promise<OperationResult<ClientState>>;
3263
+ /**
3264
+ * Только версии контейнеров — без единого байта данных.
3265
+ *
3266
+ * Дешёвый способ узнать, что протухло: два десятка чисел вместо всего состояния. Типовой цикл
3267
+ * после эндпоинта, меняющего данные: сюда → сравнить с `client.data.user.stateVersions` →
3268
+ * забрать разошедшееся через `getUserState`. Ходить сюда ради одного известного контейнера
3269
+ * смысла нет — дешевле сразу `getUserState([контейнер])`, он и так пришлёт только изменённое.
3270
+ */
3271
+ getStateVersions(fields?: string[]): Promise<OperationResult<UserStateVersions>>;
3272
+ /**
3273
+ * Адресная выборка контейнеров состояния — без конфига тайтла.
3274
+ *
3275
+ * Версионный хендшейк работает и здесь: запросить можно широко, а приедет только разошедшееся.
3276
+ * В отличие от `getClientState`, локальное состояние правится ТОЧЕЧНО — контейнеры, которых в
3277
+ * выборке нет, остаются нетронутыми.
3278
+ */
3279
+ getUserState(fields?: string[]): Promise<OperationResult<UserStateSlice>>;
3056
3280
  getUserInventory(): Promise<OperationResult<UserInventoryState>>;
3057
3281
  getEventTokens(): Promise<OperationResult<UserEventTokensState>>;
3058
3282
  getUsageTime(): Promise<OperationResult<UsageTimeStats>>;
@@ -3422,12 +3646,51 @@ declare class UserCustomDataService {
3422
3646
  private baseRequest;
3423
3647
  }
3424
3648
 
3649
+ /**
3650
+ * Title-scoped key-value data: values shared by every player of the title —
3651
+ * event state, global counters, server-side thresholds, feature toggles.
3652
+ *
3653
+ * Read-only by design. There is no client write path at all: authored values
3654
+ * (Static) are written by the publisher/AI Coder, and mutable values (Runtime)
3655
+ * only by CloudCode scripts. A shared value a client could write would be a
3656
+ * value any player could set for everyone.
3657
+ *
3658
+ * Per-player data belongs in `client.userCustomData`, not here.
3659
+ */
3660
+ declare class TitleCustomDataService {
3661
+ private readonly ctx;
3662
+ /** Last RuntimeVersion seen, used to make repeat polls cheap. */
3663
+ private lastRuntimeVersion;
3664
+ /** Latest known runtime records, kept so a NotModified response still has data to return. */
3665
+ private runtimeCache;
3666
+ constructor(ctx: ClientContext);
3667
+ /** Schema of the title's public keys plus its size/TTL limits. */
3668
+ getTitleCustomDataDefinitions(): Promise<OperationResult<TitleCustomDataDefinitions>>;
3669
+ /**
3670
+ * All public title data: authored (`Static`) and live (`Runtime`).
3671
+ *
3672
+ * Pass `useKnownVersion` (default true) to let the server skip the Runtime map
3673
+ * when nothing changed since the last call — the response comes back with
3674
+ * `NotModified: true` and this service fills `Runtime` from its own cache, so
3675
+ * callers never have to special-case it.
3676
+ */
3677
+ getPublicTitleData(useKnownVersion?: boolean): Promise<OperationResult<GetPublicTitleDataResponse>>;
3678
+ /** Same as {@link getPublicTitleData} but returns only the requested keys. */
3679
+ getPublicTitleDataKeys(keyIDs: string[]): Promise<OperationResult<GetPublicTitleDataResponse>>;
3680
+ /** Value of one key from the last full read, checking Runtime first, then Static. */
3681
+ getValue(keyID: string): string | undefined;
3682
+ /** Change counter of the mutable part from the last read — `null` before the first read. */
3683
+ get runtimeVersion(): number | null;
3684
+ private staticCache;
3685
+ private absorb;
3686
+ private baseRequest;
3687
+ }
3688
+
3425
3689
  /** Port of TitleService.cs (standalone config fetches). */
3426
3690
  declare class TitleService {
3427
3691
  private readonly ctx;
3428
3692
  constructor(ctx: ClientContext);
3429
3693
  getTitlePublicConfiguration(): Promise<OperationResult<TitlePublicConfigurationModel>>;
3430
- getPublicTitleCustomData(): Promise<OperationResult<TitleCustomDataResponse>>;
3431
3694
  getCurrencyDefinitions(): Promise<OperationResult<CurrencyDefinitions>>;
3432
3695
  getItemDefinitions(): Promise<OperationResult<ItemDefinitions>>;
3433
3696
  getServerTime(): Promise<OperationResult<SuccessResponse>>;
@@ -3626,6 +3889,8 @@ declare class UserApi {
3626
3889
  private endpoint;
3627
3890
  getClientState(request: UserRequest): Promise<OperationResult<ClientState>>;
3628
3891
  getClientStateExcept(request: UserRequest): Promise<OperationResult<ClientState>>;
3892
+ getStateVersions(request: UserRequest): Promise<OperationResult<UserStateVersions>>;
3893
+ getUserState(request: UserRequest): Promise<OperationResult<UserStateSlice>>;
3629
3894
  getInventory(request: UserRequest): Promise<OperationResult<UserInventoryState>>;
3630
3895
  getEventTokens(request: UserRequest): Promise<OperationResult<UserEventTokensState>>;
3631
3896
  getUsageTime(request: UserRequest): Promise<OperationResult<UsageTimeStats>>;
@@ -3912,13 +4177,29 @@ declare class UserCustomDataApi {
3912
4177
  batchGetPublicUserCustomDataOf(request: UserCustomDataRequest): Promise<OperationResult<BatchGetPublicUserCustomDataResponse>>;
3913
4178
  }
3914
4179
 
4180
+ /** Thin transport wrapper for the TitleCustomData feature (port of TitleCustomDataV2.cs). */
4181
+ declare class TitleCustomDataApi {
4182
+ private readonly ctx;
4183
+ constructor(ctx: ClientContext);
4184
+ private send;
4185
+ getTitleCustomDataDefinitions(request: TitleCustomDataRequest): Promise<OperationResult<TitleCustomDataDefinitions>>;
4186
+ getPublicTitleData(request: TitleCustomDataRequest): Promise<OperationResult<GetPublicTitleDataResponse>>;
4187
+ getPublicTitleDataKeys(request: TitleCustomDataRequest): Promise<OperationResult<GetPublicTitleDataResponse>>;
4188
+ }
4189
+
3915
4190
  /** Thin transport wrapper for the Title feature (port of TitleAPI.cs). */
3916
4191
  declare class TitleApi {
3917
4192
  private readonly ctx;
3918
4193
  constructor(ctx: ClientContext);
3919
4194
  private send;
3920
4195
  getTitlePublicConfiguration(request: TitleRequest): Promise<OperationResult<TitlePublicConfigurationModel>>;
3921
- getPublicTitleCustomData(request: TitleRequest): Promise<OperationResult<TitleCustomDataResponse>>;
4196
+ /**
4197
+ * Всё, кроме перечисленного в `request.ExcludeFields`. Нужен `UserService` как фолбэк:
4198
+ * `GetClientState` отдаёт только ссылку на CDN, и когда по ней не скачалось, конфиг
4199
+ * запрашивается телом — но ровно тем же набором полей, иначе он не будет соответствовать
4200
+ * версии, под которой клиент его сохранит.
4201
+ */
4202
+ getTitlePublicConfigurationExcept(request: TitleRequest): Promise<OperationResult<TitlePublicConfigurationModel>>;
3922
4203
  getCurrencyDefinitions(request: TitleRequest): Promise<OperationResult<CurrencyDefinitions>>;
3923
4204
  getItemDefinitions(request: TitleRequest): Promise<OperationResult<ItemDefinitions>>;
3924
4205
  getServerTime(request: TitleRequest): Promise<OperationResult<SuccessResponse>>;
@@ -4061,6 +4342,7 @@ declare class ClientContext {
4061
4342
  social: SocialApi;
4062
4343
  timedBoost: TimedBoostApi;
4063
4344
  userCustomData: UserCustomDataApi;
4345
+ titleCustomData: TitleCustomDataApi;
4064
4346
  title: TitleApi;
4065
4347
  gameLoop: GameLoopApi;
4066
4348
  cloudCode: CloudCodeApi;
@@ -4090,6 +4372,7 @@ declare class ClientContext {
4090
4372
  readonly social: SocialService;
4091
4373
  readonly timedBoost: TimedBoostService;
4092
4374
  readonly userCustomData: UserCustomDataService;
4375
+ readonly titleCustomData: TitleCustomDataService;
4093
4376
  readonly title: TitleService;
4094
4377
  readonly gameLoop: GameLoopService;
4095
4378
  readonly cloudCode: CloudCodeService;
@@ -4133,6 +4416,7 @@ declare class IDosGamesClient {
4133
4416
  get social(): SocialService;
4134
4417
  get timedBoost(): TimedBoostService;
4135
4418
  get userCustomData(): UserCustomDataService;
4419
+ get titleCustomData(): TitleCustomDataService;
4136
4420
  get title(): TitleService;
4137
4421
  get gameLoop(): GameLoopService;
4138
4422
  get cloudCode(): CloudCodeService;
@@ -4225,4 +4509,4 @@ type MailboxMessageDocument = { MessageID?: null | string; TitleID?: null | stri
4225
4509
  type MailboxBroadcastDocument = { BroadcastID?: null | string; TitleID?: null | string; MessageTypeID?: null | string; Subject?: null | string; Body?: null | string; TemplateParams?: null | Record<string, string>; AssetPaths?: null | Record<string, string>; Rewards?: null | ResourceGrant; TargetSegmentID?: null | string; TargetUserIDs?: null | Array<string>; StartsAtUtc?: null | string; ExpiresAtUtc?: null | string; CreatedAtUtc?: null | string; CreatedByAdminID?: null | string; AdminComment?: null | string; Status?: null | 'Active' | 'Completed' | 'Cancelled' | 'Paused'; DeliveredCount?: null | number; ClaimedCount?: null | number; [key: string]: unknown; };
4226
4510
  type UserMailboxState = { UnreadCount?: null | number; UnclaimedRewardCount?: null | number; LastFetchCursor?: null | string; ReceivedBroadcastIDs?: null | Array<string>; ClaimedBroadcastIDs?: null | Array<string>; DailyP2PGiftsSent?: null | number; DailyGiftsResetDate?: null | string; LastOpenedAtUtc?: null | string; TotalMessagesReceived?: null | number; TotalRewardsClaimed?: null | number; [key: string]: unknown; };
4227
4511
 
4228
- export { type AcceptTradeOfferResponse, type ActivateReferralCodeResponse, type ActivateTimedBoostResponse, type ActiveBoostWindowInfo, type ActiveCoopEventInfo, type ActiveDealSlotInfo, type ActiveEventInfo, type ActiveSeasonInfo, type ActiveTimedBoost, type AdConsentSettings, type AdConsentState, type AdCreditsData, type AdDailyData, type AdFraudFlags, type AdFrequencyCappingSettings, type AdPendingRequest, type AdPlacementDefinition, type AdPlacementUserState, type AdProviderDefinition, type AdSessionData, AdType, type AdUnitConfig, type AdVerificationSettings, type AddQuestProgressResponse, type AdvertisingDefinitions, type AppOpenSettings, AttackOutcome, type AttackResponse, type AttributionInput, type AuthContext, AuthType, AuthenticationAction, type AuthenticationRequest, AuthenticationService, BannerPosition, type BannerSettings, type BaseRequest, type BatchDeleteUserCustomDataResponse, type BatchGetPublicUserCustomDataResponse, type BatchItemResult, type BatchResponse, type BatchSetUserCustomDataResponse, type BattleResult, type BattleStepConfig, type BlockchainAccountSafetyPolicy, BlockchainAction, type BlockchainConfigResponse, type BlockchainDefinitions, type BlockchainNetworkDefinition, BlockchainNetworkType, type BlockchainNftCollectionBinding, BlockchainOperationCategory, type BlockchainRequest, BlockchainService, type BlockchainStats, type BlockchainSystemState, BlockchainTransactionStatus, BlockchainTransactionType, type BoardLoopDefinition, type BoardLoopState, type BoardPendingInteraction, type BoardRollResponse, BodyPart, type BoostTriggerCounter, BoostWindowKind, BroadcastStatus, type BuildResponse, type BuildingState, type CancelMatchResponse, type CancelTradeOfferResponse, type ChangeUsernameResponse, CharacterAction, type CharacterClassification, type CharacterDefinition, type CharacterDefinitions, type CharacterEquipment, type CharacterEquipmentSlot, type CharacterIdentity, type CharacterLevelDefinition, type CharacterLevelRef, type CharacterModel, type CharacterRequest, CharacterService, type CharacterStatRef, type CharacterUnequipResult, type CharacterUnlock, type ClaimAllRewardsBatchResponse, type ClaimAllRewardsResult, type ClaimComebackRewardResponse, type ClaimCycleRewardResponse, type ClaimCycleRewardsBatchResponse, type ClaimDailyRewardResponse, type ClaimDealMilestoneResponse, type ClaimDealMilestonesBatchResponse, type ClaimGrandPrizeResponse, type ClaimGroupCompletionRewardResponse, type ClaimInviteRewardResponse, type ClaimLeaderboardMilestoneResponse, type ClaimLeaderboardMilestonesBatchResponse, type ClaimMilestoneRewardResponse, type ClaimMilestoneRewardsBatchResponse, type ClaimMilestonesBatchResponse, type ClaimQuestRewardResponse, type ClaimQuestRewardsBatchResponse, type ClaimRewardResponse, type ClaimSetRewardResponse, type ClaimSetRewardsBatchResponse, type ClaimTierRewardResponse, type ClientState, CloudCodeAction, CloudCodeErrorCode, type CloudCodeLogEntry, CloudCodeLogLevel, type CloudCodeRequest, CloudCodeRevisionSelection, CloudCodeService, type CodeExecutionError, type CollectIdleAccrualResponse, CollectionAction, type CollectionDefinitions, type CollectionRequest, CollectionService, type CollectionSetRef, type CollectionTradeOfferDocument, CommissionSink, type CommunityChestClaimResponse, type CommunityChestGroupDocument, type CommunityChestGroupStateResponse, type CommunityChestHistoryEntry, type CommunityChestLeaveResponse, type CommunityChestMember, CommunityChestMemberStatus, type CommunityChestSharedState, CommunityChestStatus, type CommunityChestUserStateResponse, type ConfirmWithdrawalResponse, type ConversionDailyCounter, ConversionRateMode, type ConversionTarget, type ConvertResponse, type CoopBuildObjectsMemberState, type CoopBuildObjectsState, type CoopClaimRewardResponse, CoopEventAction, type CoopEventDefinitions, type CoopEventRequest, CoopEventService, type CoopGroupDocument, type CoopGroupMember, type CoopGroupStateResponse, CoopGroupStatus, type CoopLeaveGroupResponse, CoopMemberStatus, type CoopPartnerObjectState, type CoopSpinResponse, type CoopUserStateResponse, CraftAction, type CraftDefinitions, type CraftDefinitionsResponse, type CraftRequest, type CraftResponse, CraftService, type CraftSingleResult, CraftType, type CreateMatchResponse, type CryptoConvertResponse, type CryptoCurrencyDefinition, type CryptoCurrencyPermissions, type CryptoLimits, type CryptoNetworkBinding, CurrencyAction, type CurrencyAudit, type CurrencyConversion, type CurrencyDefinitions, type CurrencyRequest, CurrencyService, CurrencyStatus, CurrencyType, CustomDataBucket, CustomDataValueType, CustomDataWriter, type CyclicSchedule, DEFAULT_BASE_URL, type DailyUsageRecord, type DealMilestoneProgressInfo, DealNodeRuntimeStatus, DealOfferAction, DealOfferActivationStatus, type DealOfferDefinitions, type DealOfferRequest, DealOfferService, type DealOffersDefinitionResponse, type DeclineTradeOfferResponse, type DepositNFTResponse, type DepositTokenResponse, type DismissDealResponse, type DonationResponse, EnvelopeType, type EquipItemsResponse, type EquipSlotPair, type EquipmentPreset, type EquipmentSlot, type EquippedItem, type EventMap, type EventMilestoneClaimResponse, type EventTokenAddress, type EventTokenConversion, type EventTokenDefinition, type EventTokenGrantResponse, type EventTokenOperation, type EventTokenSpendResponse, EventTokenType, type ExecuteCloudCodeResponse, type ExecuteNodeResponse, type ExperimentDefinition, type ExperimentDefinitions, type ExperimentVariant, type ExperimentVariantCondition, type FodderConsumedEntry, FodderSelectionMode, FodderValuationMode, type FriendActionResponse, FriendActionStatus, type FriendPublicProfile, type FriendsListResponse, GameLoopAction, type GameLoopDefinitions, type GameLoopRequest, GameLoopService, type GetActiveBoostWindowsResponse, type GetActiveDealsResponse, type GetActiveEventsResponse, type GetActiveTimedBoostsResponse, type GetCharactersResponse, type GetLeaderboardResponse, type GetLeaderboardsBatchResponse, type GetMatchDefinitionsResponse, type GetMilestoneRewardMultiplierResponse, type GetMyProgressResponse, type GetMyUserCustomDataResponse, type GetOverviewBatchResponse, type GetProgressBatchResponse, type GetPublicUserCustomDataResponse, type GetTradeOffersResponse, type GetUserQuestStateResponse, type GrantStatusTokensResponse, type GrantTokensBatchResponse, type GrantedCollectible, type HeistCell, IDosGamesClient, type IDosGamesClientConfig, IDosGamesData, type IDosGamesSettings, type IceServer, type InstantBattleDefinitions, type InstantBattleResponse, type InstantBattleRule, type InterstitialSettings, type InventoryDelta, ItemAction, type ItemCatalog, type ItemDefinition, type ItemDefinitions, type ItemEquipment, type ItemMetadata, type ItemRequest, ItemService, type ItemStats, type ItemTotals, type ItemUpgrade, type ItemUpgradeFodder, type ItemUpgradeRef, type JsonValue, KeyValueStorage, KycStatus, KycTier, LeaderboardAction, type LeaderboardDefinitions, type LeaderboardMilestoneRef, type LeaderboardOverview, type LeaderboardRequest, type LeaderboardScoreRef, LeaderboardService, type LeaderboardUserEntry, type LeaveRoomResponse, type LevelsPreset, type LimitSpec, type LinkedWalletInfo, type Listener, LootboxAction, type LootboxAmountRange, type LootboxDefinitions, type LootboxDefinitionsResponse, type LootboxOpenResponse, type LootboxPityRule, type LootboxPityTriggerResponse, type LootboxRequest, type LootboxRewardRoll, type LootboxRewardSlot, LootboxService, type LootboxSupplyRule, type MailboxBroadcastDocument, type MailboxDefinition, type MailboxMessageDocument, MailboxMessageSource, MailboxMessageStatus, type MailboxMessageTypeDefinition, type MailboxSegmentDefinition, MarketGoodsType, MarketOfferStatus, MarketOfferType, MarketplaceAction, type MarketplaceActionCounter, type MarketplaceAuctionSettings, type MarketplaceAuctionState, type MarketplaceBidRefund, type MarketplaceBrowseResponse, type MarketplaceBuyOrderSettings, type MarketplaceCommissionOverride, type MarketplaceCommissionPolicy, type MarketplaceCreateOfferResponse, type MarketplaceDefinitions, type MarketplaceDirectTradeSettings, type MarketplaceGetDefinitionsResponse, type MarketplaceGroupedOfferView, type MarketplaceGroupedOffersResponse, type MarketplaceHistoryEntryView, type MarketplaceHistoryResponse, type MarketplaceListingSettings, type MarketplaceMatchingSettings, type MarketplaceMyStateResponse, type MarketplaceOfferResponse, type MarketplaceOfferView, type MarketplacePlaceBidResponse, type MarketplacePricePolicy, type MarketplaceRequest, MarketplaceService, type MarketplaceSettlementResponse, type MarketplaceTradabilityPolicy, MatchAction, type MatchDefinitions, type MatchRequest, MatchService, MatchStatus, type MatchesPageResponse, type MilestoneClaimRef, type MilestoneDefinition, MultiplayerAction, MultiplayerChatMode, type MultiplayerDefinitions, type MultiplayerRequest, MultiplayerService, type MultiplayerSystemState, MultiplayerTopology, type NFTModel, type NFTNetworkBinding, type NFTTransactionDocument, type NFTWithdrawalResponse, type NftCollectionStats, type NftStatsContainer, type OpenCollectionChestResponse, type OpenPackResponse, type OperationFailure, type OperationFailureReason, type OperationResult, type OperationSuccess, type PendingWithdrawalRef, PlatformAdapter, type PlatformBlockchainState, type PlatformLoginResponse, type PlayerEconomyTuningState, type PollResponse, PremiumAction, type PremiumAdReduction, type PremiumDefinitions, type PremiumDefinitionsResponse, type PremiumPurchaseResponse, type PremiumRequest, PremiumService, type PremiumStateResponse, type PremiumSubscription, type PublishResponse, type PurchaseBatchResponse, type PvPMatch, QuestAction, type QuestClaimRef, type QuestDefinitions, QuestObjectiveSource, type QuestPointsTrackView, QuestPrerequisiteMode, type QuestProgressUpdate, type QuestRequest, QuestService, QuestStatus, RaidMode, type RaidResponse, type RealtimeEnvelope, type RechargeConfig, type RecordShowResponse, ReferralAction, type ReferralDefinitions, type ReferralDefinitionsResponse, type ReferralInviteRewardState, type ReferralRequest, ReferralService, type RelativeWindow, type ResourceBundle, type ResourceConsume, type ResourceDualPartyResult, type ResourceEntry, ResourceEntryType, type ResourceGrant, type ResourceOperation, type ResourceTransferResult, type RetryWithdrawalResponse, RewardAction, type RewardDefinitions, type RewardDefinitionsResponse, type RewardRequest, RewardService, type RewardedVideoSettings, type RollActionData, type RoomListItem, type RoomMemberView, type RoomSnapshotResponse, RoomVisibility, type RoomsPageResponse, type ScheduleChain, type ScheduleChainPhase, ScheduleMode, type ScheduleSpec, type ScheduledWindow, type SdkEvents, SeasonAction, type SeasonDefinitions, type SeasonRequest, SeasonService, type SeasonTierRewardBundle, type SeasonTierRewardMultiplier, type SeasonTierRewardSet, type SegmentGate, type SendTradeOfferResponse, type SetUserCustomDataResponse, type SettingsInput, SocialAction, type SocialRequest, SocialService, type SocialTimelineEvent, type SolanaWithdrawalSignature, type SpecialApplyMultiplierResponse, SpecialChoiceMode, type SpecialChooseResponse, type SpecialClaimResponse, type SpecialModeOfferData, type SpecialPendingState, type SpendRewardDefinition, type SpendTokensBatchResponse, type StatDefinition, type StatRequirement, type StatsPreset, StoreAction, type StoreDefinitions, type StorePurchaseRef, type StorePurchaseResponse, type StorePurchaseState, type StoreRequest, StoreService, StoreType, 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, type TitleCustomData, type TitleCustomDataResponse, type TitlePublicConfigurationModel, type TitlePublicData, type TitleRequest, TitleService, type TokenCurrencyStats, type TokenStatsContainer, type TokenTransactionDocument, type TokenWithdrawalResponse, TradeOfferStatus, TransactionDirection, type TransactionHistoryResponse, type TriggerContext, type TriggerSource, TypedEmitter, type UnequipAllCharactersResponse, type UnequipItemsResponse, type UnlockCharacterResponse, type UnlockCharactersBatchResponse, type UnstackableItemInstanceState, type Unsubscribe, type UpdateMatchResponse, type UpgradeCharacterLevelResponse, type UpgradeCharacterLevelsBatchResponse, type UpgradeItemLevelResponse, type UpgradeLevelsBatchResponse, type UpgradeLevelsOptions, type UpgradeStatLevelResponse, type UpgradeStatLevelsBatchResponse, type UsageReactivationEvent, type UsageTimeStats, type UseCollectibleJokerResponse, UserAction, type UserAdvertisingState, type UserBlockchainState, type UserBlockchainStateResponse, type UserCharactersState, type UserClaimRewardState, type UserCollectionState, type UserComebackState, type UserCommunityChestState, type UserCoopEventState, type UserCryptoComplianceCounters, type UserCryptoCurrencyState, UserCustomDataAction, type UserCustomDataBatchDeleteItem, type UserCustomDataBatchSetItem, type UserCustomDataDefinitions, type UserCustomDataKeyDefinition, type UserCustomDataRecord, type UserCustomDataRequest, UserCustomDataService, type UserCustomDataState, type UserDailyCalendarState, type UserDailyCounters, UserData, type UserDealNodeLifetimeCounts, type UserDealNodeState, type UserDealOfferActivationState, type UserDealOfferHistory, type UserDealOffersState, type UserDealOffersStateResponse, type UserDealSlotState, type UserDealTrackState, type UserDepositAddress, type UserEventTokenProgress, type UserEventTokensState, type UserGameLoopsState, type UserIdleAccrualState, type UserInventoryState, type UserKycState, type UserLeaderboardProgress, type UserLeaderboardsState, type UserLootboxPityCounter, type UserLootboxState, type UserMailboxState, type UserMarketplaceState, type UserMatchCreationLimitState, type UserMatchState, type UserPremiumState, type UserPublicDataModel, type UserQuestCycleState, type UserQuestObjectiveProgress, type UserQuestProgress, type UserQuestState, type UserReferralState, type UserReferralStateResponse, type UserRequest, type UserRewardState, type UserRewardsStateResponse, type UserSeasonState, type UserSeasonStateResponse, type UserSeasonsState, UserService, type UserSocialState, type UserState, type UserStoreState, type UserTimedBoostsState, type UserTimedEventStateResponse, type UserUsageState, type UserVirtualCurrencyState, type VirtualCurrencyDefinition, type VirtualCurrencyEconomy, type VirtualCurrencyPermissions, type WalletChallengeResponse, WalletLinkType, type WithdrawalSignatureResponse, createIDosGamesClient, isFail, isOk, normalizeBlockchainCategory };
4512
+ export { type AcceptTradeOfferResponse, type ActivateReferralCodeResponse, type ActivateTimedBoostResponse, type ActiveBoostWindowInfo, type ActiveCoopEventInfo, type ActiveDealSlotInfo, type ActiveEventInfo, type ActiveSeasonInfo, type ActiveTimedBoost, type AdConsentSettings, type AdConsentState, type AdCreditsData, type AdDailyData, type AdFraudFlags, type AdFrequencyCappingSettings, type AdPendingRequest, type AdPlacementDefinition, type AdPlacementUserState, type AdProviderDefinition, type AdSessionData, AdType, type AdUnitConfig, type AdVerificationSettings, type AddQuestProgressResponse, type AdvertisingDefinitions, type AppOpenSettings, AttackOutcome, type AttackResponse, type AttributionInput, type AuthContext, AuthType, AuthenticationAction, type AuthenticationRequest, AuthenticationService, BannerPosition, type BannerSettings, type BaseRequest, type BatchDeleteUserCustomDataResponse, type BatchGetPublicUserCustomDataResponse, type BatchItemResult, type BatchResponse, type BatchSetUserCustomDataResponse, type BattleResult, type BattleStepConfig, type BlockchainAccountSafetyPolicy, BlockchainAction, type BlockchainConfigResponse, type BlockchainDefinitions, type BlockchainNetworkDefinition, BlockchainNetworkType, type BlockchainNftCollectionBinding, BlockchainOperationCategory, type BlockchainRequest, BlockchainService, type BlockchainStats, type BlockchainSystemState, BlockchainTransactionStatus, BlockchainTransactionType, type BoardLoopDefinition, type BoardLoopState, type BoardPendingInteraction, type BoardRollResponse, BodyPart, type BoostTriggerCounter, BoostWindowKind, BroadcastStatus, type BuildResponse, type BuildingState, type CancelMatchResponse, type CancelTradeOfferResponse, type ChangeUsernameResponse, CharacterAction, type CharacterClassification, type CharacterDefinition, type CharacterDefinitions, type CharacterEquipment, type CharacterEquipmentSlot, type CharacterIdentity, type CharacterLevelDefinition, type CharacterLevelRef, type CharacterModel, type CharacterRequest, CharacterService, type CharacterStatRef, type CharacterUnequipResult, type CharacterUnlock, type ClaimAllRewardsBatchResponse, type ClaimAllRewardsResult, type ClaimComebackRewardResponse, type ClaimCycleRewardResponse, type ClaimCycleRewardsBatchResponse, type ClaimDailyRewardResponse, type ClaimDealMilestoneResponse, type ClaimDealMilestonesBatchResponse, type ClaimGrandPrizeResponse, type ClaimGroupCompletionRewardResponse, type ClaimInviteRewardResponse, type ClaimLeaderboardMilestoneResponse, type ClaimLeaderboardMilestonesBatchResponse, type ClaimMilestoneRewardResponse, type ClaimMilestoneRewardsBatchResponse, type ClaimMilestonesBatchResponse, type ClaimQuestRewardResponse, type ClaimQuestRewardsBatchResponse, type ClaimRewardResponse, type ClaimSetRewardResponse, type ClaimSetRewardsBatchResponse, type ClaimTierRewardResponse, type ClientState, CloudCodeAction, CloudCodeErrorCode, type CloudCodeLogEntry, CloudCodeLogLevel, type CloudCodeRequest, CloudCodeRevisionSelection, CloudCodeService, type CodeExecutionError, type CollectIdleAccrualResponse, CollectionAction, type CollectionDefinitions, type CollectionRequest, CollectionService, type CollectionSetRef, type CollectionTradeOfferDocument, CommissionSink, type CommunityChestClaimResponse, type CommunityChestGroupDocument, type CommunityChestGroupStateResponse, type CommunityChestHistoryEntry, type CommunityChestLeaveResponse, type CommunityChestMember, CommunityChestMemberStatus, type CommunityChestSharedState, CommunityChestStatus, type CommunityChestUserStateResponse, type ConfirmWithdrawalResponse, type ConversionDailyCounter, ConversionRateMode, type ConversionTarget, type ConvertResponse, type CoopBuildObjectsMemberState, type CoopBuildObjectsState, type CoopClaimRewardResponse, CoopEventAction, type CoopEventDefinitions, type CoopEventRequest, CoopEventService, type CoopGroupDocument, type CoopGroupMember, type CoopGroupStateResponse, CoopGroupStatus, type CoopLeaveGroupResponse, CoopMemberStatus, type CoopPartnerObjectState, type CoopSpinResponse, type CoopUserStateResponse, CraftAction, type CraftDefinitions, type CraftDefinitionsResponse, type CraftRequest, type CraftResponse, CraftService, type CraftSingleResult, CraftType, type CreateMatchResponse, type CryptoConvertResponse, type CryptoCurrencyDefinition, type CryptoCurrencyPermissions, type CryptoLimits, type CryptoNetworkBinding, CurrencyAction, type CurrencyAudit, type CurrencyConversion, type CurrencyDefinitions, type CurrencyRequest, CurrencyService, CurrencyStatus, CurrencyType, CustomDataBucket, CustomDataValueType, CustomDataWriter, type CyclicSchedule, DEFAULT_BASE_URL, type DailyUsageRecord, type DealMilestoneProgressInfo, DealNodeRuntimeStatus, DealOfferAction, DealOfferActivationStatus, type DealOfferDefinitions, type DealOfferRequest, DealOfferService, type DealOffersDefinitionResponse, type DeclineTradeOfferResponse, type DepositNFTResponse, type DepositTokenResponse, type DismissDealResponse, type DonationResponse, EnvelopeType, type EquipItemsResponse, type EquipSlotPair, type EquipmentPreset, type EquipmentSlot, type EquippedItem, type EventMap, type EventMilestoneClaimResponse, type EventTokenAddress, type EventTokenConversion, type EventTokenDefinition, type EventTokenGrantResponse, type EventTokenOperation, type EventTokenSpendResponse, EventTokenType, type ExecuteCloudCodeResponse, type ExecuteNodeResponse, type ExperimentDefinition, type ExperimentDefinitions, type ExperimentVariant, type ExperimentVariantCondition, type FodderConsumedEntry, FodderSelectionMode, FodderValuationMode, type FriendActionResponse, FriendActionStatus, type FriendPublicProfile, type FriendsListResponse, GameLoopAction, type GameLoopDefinitions, type GameLoopRequest, GameLoopService, type GetActiveBoostWindowsResponse, type GetActiveDealsResponse, type GetActiveEventsResponse, type GetActiveTimedBoostsResponse, type GetCharactersResponse, type GetLeaderboardResponse, type GetLeaderboardsBatchResponse, type GetMatchDefinitionsResponse, type GetMilestoneRewardMultiplierResponse, type GetMyProgressResponse, type GetMyUserCustomDataResponse, type GetOverviewBatchResponse, type GetProgressBatchResponse, type GetPublicTitleDataResponse, type GetPublicUserCustomDataResponse, type GetTradeOffersResponse, type GetUserQuestStateResponse, type GrantStatusTokensResponse, type GrantTokensBatchResponse, type GrantedCollectible, type HeistCell, IDosGamesClient, type IDosGamesClientConfig, IDosGamesData, type IDosGamesSettings, type IceServer, type InstantBattleDefinitions, type InstantBattleResponse, type InstantBattleRule, type InterstitialSettings, type InventoryDelta, ItemAction, type ItemCatalog, type ItemDefinition, type ItemDefinitions, type ItemEquipment, type ItemMetadata, type ItemRequest, ItemService, type ItemStats, type ItemTotals, type ItemUpgrade, type ItemUpgradeFodder, type ItemUpgradeRef, type JsonValue, KeyValueStorage, KycStatus, KycTier, LeaderboardAction, type LeaderboardDefinitions, type LeaderboardMilestoneRef, type LeaderboardOverview, type LeaderboardRequest, type LeaderboardScoreRef, LeaderboardService, type LeaderboardUserEntry, type LeaveRoomResponse, type LevelsPreset, type LimitSpec, type LinkedWalletInfo, type Listener, LootboxAction, type LootboxAmountRange, type LootboxDefinitions, type LootboxDefinitionsResponse, type LootboxOpenResponse, type LootboxPityRule, type LootboxPityTriggerResponse, type LootboxRequest, type LootboxRewardRoll, type LootboxRewardSlot, LootboxService, type LootboxSupplyRule, type MailboxBroadcastDocument, type MailboxDefinition, type MailboxMessageDocument, MailboxMessageSource, MailboxMessageStatus, type MailboxMessageTypeDefinition, type MailboxSegmentDefinition, MarketGoodsType, MarketOfferStatus, MarketOfferType, MarketplaceAction, type MarketplaceActionCounter, type MarketplaceAuctionSettings, type MarketplaceAuctionState, type MarketplaceBidRefund, type MarketplaceBrowseResponse, type MarketplaceBuyOrderSettings, type MarketplaceCommissionOverride, type MarketplaceCommissionPolicy, type MarketplaceCreateOfferResponse, type MarketplaceDefinitions, type MarketplaceDirectTradeSettings, type MarketplaceGetDefinitionsResponse, type MarketplaceGroupedOfferView, type MarketplaceGroupedOffersResponse, type MarketplaceHistoryEntryView, type MarketplaceHistoryResponse, type MarketplaceListingSettings, type MarketplaceMatchingSettings, type MarketplaceMyStateResponse, type MarketplaceOfferResponse, type MarketplaceOfferView, type MarketplacePlaceBidResponse, type MarketplacePricePolicy, type MarketplaceRequest, MarketplaceService, type MarketplaceSettlementResponse, type MarketplaceTradabilityPolicy, MatchAction, type MatchDefinitions, type MatchRequest, MatchService, MatchStatus, type MatchesPageResponse, type MilestoneClaimRef, type MilestoneDefinition, MultiplayerAction, MultiplayerChatMode, type MultiplayerDefinitions, type MultiplayerRequest, MultiplayerService, type MultiplayerSystemState, MultiplayerTopology, type NFTModel, type NFTNetworkBinding, type NFTTransactionDocument, type NFTWithdrawalResponse, type NftCollectionStats, type NftStatsContainer, type OpenCollectionChestResponse, type OpenPackResponse, type OperationFailure, type OperationFailureReason, type OperationResult, type OperationSuccess, type PendingWithdrawalRef, PlatformAdapter, type PlatformBlockchainState, type PlatformLoginResponse, type PlayerEconomyTuningState, type PollResponse, PremiumAction, type PremiumAdReduction, type PremiumDefinitions, type PremiumDefinitionsResponse, type PremiumPurchaseResponse, type PremiumRequest, PremiumService, type PremiumStateResponse, type PremiumSubscription, type PublishResponse, type PurchaseBatchResponse, type PvPMatch, QuestAction, type QuestAvailability, type QuestClaimRef, type QuestCycleDefinition, type QuestDefinition, type QuestDefinitions, type QuestGroupCompletionDefinition, type QuestIdentity, type QuestLinking, type QuestObjectiveDefinition, QuestObjectiveSource, type QuestPhaseDefinition, type QuestPointsTrackView, QuestPrerequisiteMode, type QuestPresetBindings, type QuestPresetRegistry, type QuestProgressUpdate, type QuestRequest, type QuestReward, QuestService, QuestStatus, RaidMode, type RaidResponse, type RealtimeEnvelope, type RechargeConfig, type RecordShowResponse, ReferralAction, type ReferralDefinitions, type ReferralDefinitionsResponse, type ReferralInviteRewardState, type ReferralRequest, ReferralService, type RelativeWindow, type ResourceBundle, type ResourceConsume, type ResourceDualPartyResult, type ResourceEntry, ResourceEntryType, type ResourceGrant, type ResourceOperation, type ResourceTransferResult, type RetryWithdrawalResponse, RewardAction, type RewardDefinitions, type RewardDefinitionsResponse, type RewardRequest, RewardService, type RewardedVideoSettings, type RollActionData, type RoomListItem, type RoomMemberView, type RoomSnapshotResponse, RoomVisibility, type RoomsPageResponse, type ScheduleChain, type ScheduleChainPhase, ScheduleMode, type ScheduleSpec, type ScheduledWindow, type SdkEvents, SeasonAction, type SeasonDefinitions, type SeasonRequest, SeasonService, type SeasonTierRewardBundle, type SeasonTierRewardMultiplier, type SeasonTierRewardSet, type SegmentGate, type SendTradeOfferResponse, type SetUserCustomDataResponse, type SettingsInput, SocialAction, type SocialRequest, SocialService, type SocialTimelineEvent, type SolanaWithdrawalSignature, type SpecialApplyMultiplierResponse, SpecialChoiceMode, type SpecialChooseResponse, type SpecialClaimResponse, type SpecialModeOfferData, type SpecialPendingState, type SpendRewardDefinition, type SpendTokensBatchResponse, type StatDefinition, type StatRequirement, type StatsPreset, StoreAction, type StoreDefinitions, type StorePurchaseRef, type StorePurchaseResponse, type StorePurchaseState, type StoreRequest, StoreService, StoreType, 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, TypedEmitter, type UnequipAllCharactersResponse, type UnequipItemsResponse, type UnlockCharacterResponse, type UnlockCharactersBatchResponse, type UnstackableItemInstanceState, type Unsubscribe, type UpdateMatchResponse, type UpgradeCharacterLevelResponse, type UpgradeCharacterLevelsBatchResponse, type UpgradeItemLevelResponse, type UpgradeLevelsBatchResponse, type UpgradeLevelsOptions, type UpgradeStatLevelResponse, type UpgradeStatLevelsBatchResponse, type UsageReactivationEvent, type UsageTimeStats, type UseCollectibleJokerResponse, UserAction, type UserAdvertisingState, type UserBlockchainState, type UserBlockchainStateResponse, type UserCharactersState, type UserClaimRewardState, type UserCollectionState, type UserComebackState, type UserCommunityChestState, type UserCoopEventState, type UserCryptoComplianceCounters, type UserCryptoCurrencyState, UserCustomDataAction, type UserCustomDataBatchDeleteItem, type UserCustomDataBatchSetItem, type UserCustomDataDefinitions, type UserCustomDataKeyDefinition, type UserCustomDataRecord, type UserCustomDataRequest, UserCustomDataService, type UserCustomDataState, type UserDailyCalendarState, type UserDailyCounters, UserData, type UserDealNodeLifetimeCounts, type UserDealNodeState, type UserDealOfferActivationState, type UserDealOfferHistory, type UserDealOffersState, type UserDealOffersStateResponse, type UserDealSlotState, type UserDealTrackState, type UserDepositAddress, type UserEventTokenProgress, type UserEventTokensState, type UserGameLoopsState, type UserIdleAccrualState, type UserInventoryState, type UserKycState, type UserLeaderboardProgress, type UserLeaderboardsState, type UserLootboxPityCounter, type UserLootboxState, type UserMailboxState, type UserMarketplaceState, type UserMatchCreationLimitState, type UserMatchState, type UserPremiumState, type UserPublicDataModel, type UserQuestCycleState, type UserQuestObjectiveProgress, type UserQuestProgress, type UserQuestState, type UserReferralState, type UserReferralStateResponse, type UserRequest, type UserRewardState, type UserRewardsStateResponse, type UserSeasonState, type UserSeasonStateResponse, type UserSeasonsState, UserService, type UserSocialState, type UserState, type UserStateSlice, type UserStateVersions, type UserStoreState, type UserTimedBoostsState, type UserTimedEventStateResponse, type UserUsageState, type UserVirtualCurrencyState, type VirtualCurrencyDefinition, type VirtualCurrencyEconomy, type VirtualCurrencyPermissions, type WalletChallengeResponse, WalletLinkType, type WithdrawalSignatureResponse, type WithdrawalSplit, createIDosGamesClient, isFail, isOk, normalizeBlockchainCategory };