@idosgames/core 0.2.0 → 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.cts CHANGED
@@ -462,11 +462,15 @@ declare const QuestPrerequisiteMode: {
462
462
  };
463
463
  type QuestPrerequisiteMode = (typeof QuestPrerequisiteMode)[keyof typeof QuestPrerequisiteMode];
464
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 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; PhaseIDs?: null | Array<string>; AssetPaths?: null | Record<string, string>; CustomParams?: null | Record<string, string>; Objectives?: null | Record<string, QuestObjectiveDefinition>; Reward?: null | ResourceGrant; [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; };
466
471
  type QuestGroupCompletionDefinition = { CompletionID?: null | string; GroupID?: null | string; RequiredCompletedQuests?: null | number; Gate?: null | SegmentGate; Reward?: null | ResourceGrant; PointsReward?: null | number; [key: string]: unknown; };
467
- type QuestPresetBindings = { Milestones?: null | PresetBinding; [key: string]: unknown; };
468
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; };
469
- type QuestPresetRegistry = { Milestones?: null | Record<string, MilestoneSet>; [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; };
470
474
  /** Cycle definition: schedule + milestone rewards + points-track token. */
471
475
  interface QuestCycleDefinition {
472
476
  CycleID?: string | null;
@@ -487,7 +491,7 @@ interface QuestCycleDefinition {
487
491
  interface QuestDefinitions {
488
492
  Cycles?: Record<string, QuestCycleDefinition> | null;
489
493
  Quests?: Record<string, QuestDefinition> | null;
490
- /** Reusable blocks (Core/Presets) referenced by cycles and phases. */
494
+ /** Reusable blocks referenced by cycles, phases and quests. The only reuse mechanism. */
491
495
  Presets?: QuestPresetRegistry | null;
492
496
  [key: string]: unknown;
493
497
  }
@@ -1840,576 +1844,275 @@ declare const MarketplaceAction: {
1840
1844
  };
1841
1845
  type MarketplaceAction = (typeof MarketplaceAction)[keyof typeof MarketplaceAction];
1842
1846
 
1843
- /** Storage scope: who may write a record and whether it is cached server-side. */
1844
- declare const TitleDataScope: {
1845
- /** Authored configuration. Written by the publisher / AI Coder; cached with the title config. */
1846
- readonly Static: "Static";
1847
- /** Mutable title state. Written only by CloudCode scripts; never cached. */
1848
- readonly Runtime: "Runtime";
1849
- };
1850
- type TitleDataScope = (typeof TitleDataScope)[keyof typeof TitleDataScope];
1851
- /** Visibility bucket. Clients never write title data — the bucket only decides who reads. */
1852
- declare const TitleDataBucket: {
1853
- /** Readable by game clients. */
1854
- readonly Public: "Public";
1855
- /** Server and CloudCode only — never returned to a client. */
1856
- readonly Private: "Private";
1857
- };
1858
- type TitleDataBucket = (typeof TitleDataBucket)[keyof typeof TitleDataBucket];
1859
- type TitleCustomDataRecord = { Value?: null | string; UpdatedAt?: null | string; Version?: null | number; LastWriter?: null | 'Client' | 'Server' | 'System'; ExpiresAt?: null | string; [key: string]: unknown; };
1860
- type GetPublicTitleDataResponse = { StaticVersion?: null | number; RuntimeVersion?: null | number; Static?: null | Record<string, TitleCustomDataRecord>; Runtime?: null | Record<string, TitleCustomDataRecord>; NotModified?: null | boolean; };
1861
- 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; };
1862
- /** Title-data schema as served to clients: public-bucket keys plus the title's limits. */
1863
- interface TitleCustomDataDefinitions {
1864
- Keys?: Record<string, TitleCustomDataKeyDefinition> | null;
1865
- DefaultMaxValueLengthBytes?: number | null;
1866
- DefaultTtlSeconds?: number | null;
1867
- MaxKeysPerBucket?: number | null;
1868
- MaxTotalSizeBytes?: number | null;
1869
- RejectUnregisteredKeys?: boolean | null;
1870
- }
1871
- interface TitleCustomDataRequest extends BaseRequest {
1872
- KeyIDs?: string[];
1873
- KnownRuntimeVersion?: number;
1847
+ interface UserDailyCounters {
1848
+ PeriodStartUtc: string;
1849
+ Earned: number;
1850
+ Spent: number;
1874
1851
  }
1875
- declare const TitleCustomDataAction: {
1876
- readonly GetTitleCustomDataDefinitions: "GetTitleCustomDataDefinitions";
1877
- readonly GetPublicTitleData: "GetPublicTitleData";
1878
- readonly GetPublicTitleDataKeys: "GetPublicTitleDataKeys";
1879
- };
1880
- type TitleCustomDataAction = (typeof TitleCustomDataAction)[keyof typeof TitleCustomDataAction];
1881
- type FodderConsumedEntry = { ItemInstanceID: string; Units: number; Level: number; };
1882
- type UpgradeItemLevelResponse = { ServerTimeUtc: string; ItemInstanceID: string; ItemID: string; Level: number; CatalogID?: null | string; Resources?: null | ResourceOperation; FodderConsumed?: null | Array<FodderConsumedEntry>; };
1883
- type UpgradeLevelsBatchResponse = Array<{ Id: string; Success: boolean; Error?: null | string; Data?: null | UpgradeItemLevelResponse; }>;
1884
- /** One instance's upgrade in a batch (with optional multi-level Levels/TargetLevel). */
1885
- interface ItemUpgradeRef {
1886
- ItemInstanceID?: string;
1887
- Levels?: number;
1888
- TargetLevel?: number;
1889
- FodderInstanceIDs?: string[];
1852
+ interface UserRechargeState {
1853
+ LastRechargeAt?: string;
1854
+ PendingSeconds?: number;
1890
1855
  }
1891
- interface ItemRequest extends BaseRequest {
1892
- ItemInstanceID?: string;
1893
- Levels?: number;
1894
- TargetLevel?: number;
1895
- FodderInstanceIDs?: string[];
1896
- /** UpgradeLevelsBatch: per-instance upgrades (deduped by ItemInstanceID). */
1897
- Upgrades?: ItemUpgradeRef[];
1856
+ interface UserVirtualCurrencyState {
1857
+ Amount: number;
1858
+ Recharge?: UserRechargeState | null;
1859
+ Daily?: UserDailyCounters | null;
1860
+ CreatedAt?: string;
1861
+ UpdatedAt?: string;
1898
1862
  }
1899
- declare const ItemAction: {
1900
- readonly UpgradeLevel: "UpgradeLevel";
1901
- readonly UpgradeLevelsBatch: "UpgradeLevelsBatch";
1902
- };
1903
- type ItemAction = (typeof ItemAction)[keyof typeof ItemAction];
1904
- declare const FodderValuationMode: {
1905
- readonly FlatCount: "FlatCount";
1906
- readonly Merge: "Merge";
1907
- readonly InvestmentRefund: "InvestmentRefund";
1908
- };
1909
- type FodderValuationMode = (typeof FodderValuationMode)[keyof typeof FodderValuationMode];
1910
- declare const FodderSelectionMode: {
1911
- readonly ProtectLeveled: "ProtectLeveled";
1912
- readonly CheapestFirst: "CheapestFirst";
1913
- readonly ClientSelected: "ClientSelected";
1914
- };
1915
- type FodderSelectionMode = (typeof FodderSelectionMode)[keyof typeof FodderSelectionMode];
1916
- type NFTNetworkBinding = { ContractAddress?: null | string; TokenID?: null | string; TokenStandard?: null | string; [key: string]: unknown; };
1917
- type NFTModel = { Networks?: null | Record<string, NFTNetworkBinding>; MetadataUrl?: null | string; [key: string]: unknown; };
1918
- type ItemStats = { FlatBonuses?: null | Record<string, number>; PercentBonuses?: null | Record<string, number>; Power?: null | number; [key: string]: unknown; };
1919
- type ItemEquipment = { MinCharacterLevel?: null | number; UseRequirements?: null | Record<string, number>; AllowedCharacterIDs?: null | Array<string>; AllowedSlotIDs?: null | Array<string>; [key: string]: unknown; };
1920
- type ItemUpgradeFodder = { ValuationMode?: null | 'FlatCount' | 'Merge' | 'InvestmentRefund'; MergeRatio?: null | number; Selection?: null | 'ProtectLeveled' | 'CheapestFirst' | 'ClientSelected'; [key: string]: unknown; };
1921
- 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; };
1922
- type ItemMetadata = { RarityID?: null | string; CollectionID?: null | string; AuthorID?: null | string; [key: string]: unknown; };
1923
- 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; };
1924
- /** Catalog: a set of items of one thematic group. Key of `Items` is ItemID. */
1925
- interface ItemCatalog {
1926
- Items?: Record<string, ItemDefinition> | 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;
1927
1868
  }
1928
- /** Root container for all item catalogs of a title. Key of `Catalogs` is CatalogID. */
1929
- interface ItemDefinitions {
1930
- Catalogs?: Record<string, ItemCatalog> | 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;
1931
1877
  }
1932
- 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; };
1933
- type BonusWindowState = { IsActive?: null | boolean; CurrentPhaseEndUtc?: null | string; NextBonusStartUtc?: null | string; CurrentCycleIndex?: null | number; CurrentPhaseIndex?: null | number; ActiveBonusMultiplier?: null | number; [key: string]: unknown; };
1934
- /**
1935
- * Container of preset wiring for event content — one PresetBinding per block. Inline data
1936
- * (Milestones) lives on EventContent. null = presets unused.
1937
- */
1938
- interface TimedEventPresetBindings {
1939
- Milestones?: PresetBinding | 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;
1940
1887
  }
1941
- /** Event content: display, token, sources, rewards, milestones, bonus window. */
1942
- interface EventContent {
1943
- DisplayName?: string | null;
1944
- Description?: string | null;
1945
- AssetPaths?: Record<string, string> | null;
1946
- Category?: string | null;
1947
- Token?: EventTokenDefinition | null;
1948
- TokenSources?: TriggerSource[] | null;
1949
- ClaimMode?: string | null;
1950
- Milestones?: Record<string, MilestoneDefinition> | null;
1951
- /** Container of content preset wiring (milestones). null = presets unused. */
1952
- Presets?: TimedEventPresetBindings | null;
1953
- BonusWindow?: BonusWindowConfig | null;
1888
+ interface ItemTotals {
1889
+ StackableAmount: number;
1890
+ UnstackableAmount: number;
1891
+ TotalAmount: number;
1954
1892
  }
1955
- /** One event inside a cyclic chain (dates computed from AnchorUtc + DurationSec). */
1956
- interface ChainedEventDefinition {
1957
- ChainedEventID?: string | null;
1958
- Order?: number | null;
1959
- DurationSec?: number | null;
1960
- Content?: EventContent | null;
1961
- ClaimGraceHours?: number | null;
1962
- 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;
1963
1904
  }
1964
- /** Definition of a single event (Scheduled single-window or Chained phase-chain). */
1965
- interface TimedEventDefinition {
1966
- TimedEventID?: string | null;
1967
- DisplayName?: string | null;
1968
- Description?: string | null;
1969
- AssetPaths?: Record<string, string> | null;
1970
- Schedule?: ScheduleSpec | null;
1971
- Content?: EventContent | null;
1972
- Events?: ChainedEventDefinition[] | null;
1973
- Gate?: SegmentGate | null;
1974
- CustomParams?: Record<string, string> | 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;
1975
1910
  }
1976
- type LimitedTimeEventsGlobalSettings = { MaxConcurrentEvents?: null | number; [key: string]: unknown; };
1977
- /** Registry of reusable event presets (milestones). Phases/events reference them via EventContent.Presets. */
1978
- interface TimedEventPresetRegistry {
1979
- Milestones?: Record<string, MilestoneSet> | 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>;
1980
1918
  }
1981
- /** Root config of the limited-time events system, returned by getDefinitions(). */
1982
- interface TimedEventDefinitions {
1983
- Definitions?: Record<string, TimedEventDefinition> | null;
1984
- Settings?: LimitedTimeEventsGlobalSettings | null;
1985
- /** Registry of reusable event presets (milestones). null = unused. */
1986
- Presets?: TimedEventPresetRegistry | 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;
1987
1927
  }
1988
- interface ActiveEventInfo {
1989
- Type?: ScheduleMode;
1990
- TimedEventID?: string;
1991
- CurrentChainedEventID?: string | null;
1992
- Content?: EventContent | null;
1993
- Progress?: UserEventTokenProgress | null;
1994
- ComputedStartUtc?: string | null;
1995
- ComputedEndUtc?: string | null;
1996
- CanEarn?: boolean | null;
1997
- CanClaim?: boolean | null;
1998
- NextMilestone?: MilestoneDefinition | null;
1999
- BonusWindow?: BonusWindowState | null;
2000
- CurrentCycleIndex?: number | null;
2001
- /** Chained-mode only: this event's 1-based position within the chain. */
2002
- CurrentEventOrder?: number | null;
2003
- /** Chained-mode only: total number of events in the chain. */
2004
- TotalEventsInChain?: number | null;
1928
+ /** One recorded reactivation — a return after a silence gap of 7+ days. */
1929
+ interface UsageReactivationEvent {
1930
+ ReactivatedAt: string;
1931
+ DaysSinceLastActive: number;
2005
1932
  }
2006
- interface GetActiveEventsResponse {
2007
- ActiveEvents?: ActiveEventInfo[] | null;
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;
2008
1940
  }
2009
- type UserTimedEventStateResponse = { Tokens?: null | Record<string, UserEventTokenProgress>; };
2010
- type EventTokenSpendResponse = { Type?: null | 'Scheduled' | 'Cyclic' | 'Chained'; LteID?: null | string; Resources?: null | ResourceOperation; };
2011
- type EventMilestoneClaimResponse = { Type?: null | 'Scheduled' | 'Cyclic' | 'Chained'; LteID?: null | string; MilestoneID?: null | string; Rewards?: null | ResourceOperation; };
2012
- type EventTokenGrantResponse = { Type?: null | 'Scheduled' | 'Cyclic' | 'Chained'; LteID?: null | string; Resources?: null | ResourceOperation; };
2013
- type ClaimMilestonesBatchResponse = Array<{ Id: string; Success: boolean; Error?: null | string; Data?: null | EventMilestoneClaimResponse; }>;
2014
- type SpendTokensBatchResponse = Array<{ Id: string; Success: boolean; Error?: null | string; Data?: null | EventTokenSpendResponse; }>;
2015
- type GrantTokensBatchResponse = Array<{ Id: string; Success: boolean; Error?: null | string; Data?: null | EventTokenGrantResponse; }>;
2016
- /** Addresses one event instance in a batch request (Type+LteID, optionally CycleIndex/ChainedEventID). */
2017
- interface TimedEventInstanceRef {
2018
- Type?: ScheduleMode;
2019
- LteID?: string;
2020
- CycleIndex?: number;
2021
- ChainedEventID?: 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>;
2022
1949
  }
2023
- /** One milestone claim in a batch (for ClaimMilestonesBatch). */
2024
- interface TimedEventMilestoneRef extends TimedEventInstanceRef {
2025
- MilestoneID?: string;
2026
- }
2027
- /** One token spend in a batch (for SpendTokensBatch). */
2028
- interface TimedEventSpendRef extends TimedEventInstanceRef {
2029
- SpendAmount?: number;
2030
- 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;
2031
1977
  }
2032
- /** One token grant in a batch (for GrantTokensBatch). */
2033
- interface TimedEventGrantRef extends TimedEventInstanceRef {
2034
- SourceType?: string;
2035
- Outcome?: string;
2036
- SourceParams?: Record<string, string>;
2037
- AmountOverride?: number;
2038
- RollMultiplier?: number;
2039
- 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;
2040
2018
  }
2041
- interface TimedEventRequest extends BaseRequest {
2042
- Type?: ScheduleMode;
2043
- LteID?: string;
2044
- CycleIndex?: number;
2045
- ChainedEventID?: string;
2046
- SourceType?: string;
2047
- AmountOverride?: number;
2048
- SourceParams?: Record<string, string>;
2049
- SpendAmount?: number;
2050
- MilestoneID?: string;
2051
- Outcome?: string;
2052
- RollMultiplier?: number;
2053
- /** ClaimMilestonesBatch: milestones to claim (deduped by Type+LteID+instance+MilestoneID). */
2054
- Milestones?: TimedEventMilestoneRef[];
2055
- /** ClaimAllMilestones: event instances to sweep. Null/empty = all active events. */
2056
- Events?: TimedEventInstanceRef[];
2057
- /** SpendTokensBatch: spends to apply (deduped by Type+LteID+instance). */
2058
- Spends?: TimedEventSpendRef[];
2059
- /** GrantTokensBatch: grants to apply (deduped by event address). */
2060
- 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;
2061
2029
  }
2062
- declare const TimedEventAction: {
2063
- readonly GetActiveEvents: "GetActiveEvents";
2064
- readonly GrantTokens: "GrantTokens";
2065
- readonly SpendTokens: "SpendTokens";
2066
- readonly ClaimMilestone: "ClaimMilestone";
2067
- readonly GetDefinitions: "GetDefinitions";
2068
- readonly GetUserLteState: "GetUserLteState";
2069
- readonly ClaimMilestonesBatch: "ClaimMilestonesBatch";
2070
- readonly ClaimAllMilestones: "ClaimAllMilestones";
2071
- readonly SpendTokensBatch: "SpendTokensBatch";
2072
- readonly GrantTokensBatch: "GrantTokensBatch";
2073
- };
2074
- type TimedEventAction = (typeof TimedEventAction)[keyof typeof TimedEventAction];
2075
-
2076
- declare const CraftType: {
2077
- readonly TradeUpRarity: "TradeUpRarity";
2078
- readonly TradeUpCollection: "TradeUpCollection";
2079
- };
2080
- type CraftType = (typeof CraftType)[keyof typeof CraftType];
2081
- type CraftSingleResult = { Index?: null | number; BurnedItemIDs?: null | Array<string>; RolledCollectionID?: null | string; UsedCollections?: null | Record<string, number>; Output?: null | ResourceEntry; };
2082
- 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>; };
2083
- 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; };
2084
- /** The title's craft catalog (config), returned by getDefinitions(). */
2085
- interface CraftDefinitions {
2086
- Definitions?: Record<string, CraftDefinition> | null;
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;
2087
2042
  }
2088
- type CraftDefinitionsResponse = { ServerTimeUtc?: null | string; CraftDefinitions?: null | CraftDefinitions; };
2089
- interface CraftRequest extends BaseRequest {
2090
- CraftID?: string;
2091
- Count?: number;
2092
- SelectedOptionID?: string;
2093
- InputItemIDs?: string[];
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;
2094
2067
  }
2095
- declare const CraftAction: {
2096
- readonly GetDefinitions: "GetDefinitions";
2097
- readonly Craft: "Craft";
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";
2098
2079
  };
2099
- type CraftAction = (typeof CraftAction)[keyof typeof CraftAction];
2100
- type ExperimentVariant = { VariantID?: null | string; DisplayName?: null | string; Weight?: null | number; IsControl?: null | boolean; Params?: null | Record<string, string>; [key: string]: unknown; };
2101
- 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; };
2102
- type ExperimentDefinitions = { Experiments?: null | Record<string, ExperimentDefinition>; [key: string]: unknown; };
2080
+ type UserAction = (typeof UserAction)[keyof typeof UserAction];
2103
2081
 
2104
- /** enum MultiplayerTopologyp2p connection topology within a room. */
2105
- declare const MultiplayerTopology: {
2106
- readonly Mesh: "Mesh";
2107
- readonly Host: "Host";
2082
+ /** enum BlockchainNetworkTypechain family; controls signature payload shape. */
2083
+ declare const BlockchainNetworkType: {
2084
+ readonly EVM: "EVM";
2085
+ readonly Solana: "Solana";
2108
2086
  };
2109
- type MultiplayerTopology = (typeof MultiplayerTopology)[keyof typeof MultiplayerTopology];
2110
- /** enum MultiplayerChatModewhether chat is server-relayed or p2p-only over the DataChannel. */
2111
- declare const MultiplayerChatMode: {
2112
- readonly ServerRelay: "ServerRelay";
2113
- readonly P2P: "P2P";
2087
+ type BlockchainNetworkType = (typeof BlockchainNetworkType)[keyof typeof BlockchainNetworkType];
2088
+ /** enum WalletLinkTypehow a wallet address became linked to the account. */
2089
+ declare const WalletLinkType: {
2090
+ readonly AutoLinkedFromTransaction: "AutoLinkedFromTransaction";
2091
+ readonly SignatureVerified: "SignatureVerified";
2092
+ readonly ManuallyLinked: "ManuallyLinked";
2114
2093
  };
2115
- type MultiplayerChatMode = (typeof MultiplayerChatMode)[keyof typeof MultiplayerChatMode];
2116
- /** enum RoomVisibilitywhether a room appears in the public ListRooms listing. */
2117
- declare const RoomVisibility: {
2118
- readonly Public: "Public";
2119
- readonly Private: "Private";
2094
+ type WalletLinkType = (typeof WalletLinkType)[keyof typeof WalletLinkType];
2095
+ /** enum BlockchainTransactionTypeasset kind of a pending/retryable withdrawal. */
2096
+ declare const BlockchainTransactionType: {
2097
+ readonly Token: "Token";
2098
+ readonly Nft: "Nft";
2120
2099
  };
2121
- type RoomVisibility = (typeof RoomVisibility)[keyof typeof RoomVisibility];
2122
- /** enum EnvelopeTypekind of realtime envelope delivered via Poll. */
2123
- declare const EnvelopeType: {
2124
- readonly Signal: "Signal";
2125
- readonly Chat: "Chat";
2126
- readonly PlayerJoined: "PlayerJoined";
2127
- readonly PlayerLeft: "PlayerLeft";
2128
- readonly HostChanged: "HostChanged";
2129
- readonly RoomClosed: "RoomClosed";
2130
- readonly MemberState: "MemberState";
2100
+ type BlockchainTransactionType = (typeof BlockchainTransactionType)[keyof typeof BlockchainTransactionType];
2101
+ /** enum KycStatusplayer'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";
2131
2108
  };
2132
- type EnvelopeType = (typeof EnvelopeType)[keyof typeof EnvelopeType];
2133
- type IceServer = { Urls?: null | string; Username?: null | string; Credential?: null | string; [key: string]: unknown; };
2134
- type MultiplayerSystemState = { Enabled?: null | boolean; [key: string]: unknown; };
2135
- type MultiplayerDefinitions = { SystemState?: null | MultiplayerSystemState; DefaultTopology?: null | 'Mesh' | 'Host'; AllowCreatorTopologyOverride?: null | boolean; DefaultChatMode?: null | 'ServerRelay' | 'P2P'; AllowCreatorChatOverride?: null | boolean; MaxPlayersPerRoom?: null | number; RoomTtlSeconds?: null | number; HeartbeatIntervalMs?: null | number; MemberTimeoutMs?: null | number; MaxSignalPayloadBytes?: null | number; MaxChatTextLength?: null | number; RoomLogCap?: null | number; IceServers?: null | Array<IceServer>; [key: string]: unknown; };
2136
- type RoomMemberView = { UserID?: null | string; Username?: null | string; AvatarUrl?: null | string; Level?: null | number; Power?: null | number; Ready?: null | boolean; State?: null | Record<string, string>; JoinedAt?: null | number; IsHost?: null | boolean; LastSeenMs?: null | number; [key: string]: unknown; };
2137
- type RoomListItem = { RoomID?: null | string; Name?: null | string; HostUserID?: null | string; Topology?: null | 'Mesh' | 'Host'; ChatMode?: null | 'ServerRelay' | 'P2P'; MaxPlayers?: null | number; MemberCount?: null | number; CreatedAt?: null | number; [key: string]: unknown; };
2138
- type RealtimeEnvelope = { Seq?: null | number; Type?: null | 'Signal' | 'Chat' | 'PlayerJoined' | 'PlayerLeft' | 'HostChanged' | 'RoomClosed' | 'MemberState'; FromUserID?: null | string; ToUserID?: null | string; Kind?: null | string; Payload?: null | string; Ts?: null | number; [key: string]: unknown; };
2139
- type RoomSnapshotResponse = { RoomID?: null | string; Name?: null | string; HostUserID?: null | string; OwnerUserID?: null | string; Topology?: null | 'Mesh' | 'Host'; ChatMode?: null | 'ServerRelay' | 'P2P'; Visibility?: null | 'Private' | 'Public'; Status?: null | string; MaxPlayers?: null | number; Members?: null | Array<RoomMemberView>; IceServers?: null | Array<IceServer>; Seq?: null | number; [key: string]: unknown; };
2140
- type LeaveRoomResponse = { Closed?: null | boolean; NewHostUserID?: null | string; [key: string]: unknown; };
2141
- type RoomsPageResponse = { Rooms?: null | Array<RoomListItem>; Page?: null | number; PageSize?: null | number; HasMore?: null | boolean; [key: string]: unknown; };
2142
- type PollResponse = { Envelopes?: null | Array<RealtimeEnvelope>; MaxSeq?: null | number; [key: string]: unknown; };
2143
- type PublishResponse = { Seq?: null | number; [key: string]: unknown; };
2144
- interface MultiplayerRequest extends BaseRequest {
2145
- RoomID?: string;
2146
- RoomName?: string;
2147
- Topology?: MultiplayerTopology;
2148
- ChatMode?: MultiplayerChatMode;
2149
- MaxPlayers?: number;
2150
- Visibility?: RoomVisibility;
2151
- JoinCode?: string;
2152
- TargetUserID?: string;
2153
- /** "offer" / "answer" / "candidate". */
2154
- SignalKind?: string;
2155
- Payload?: string;
2156
- /** Only meaningful when the room's ChatMode is ServerRelay. */
2157
- ChatText?: string;
2158
- Ready?: boolean;
2159
- MemberState?: Record<string, string>;
2160
- /** Poll cursor: server returns everything with seq > LastSeq. */
2161
- LastSeq?: number;
2162
- Page?: number;
2163
- PageSize?: number;
2164
- }
2165
- declare const MultiplayerAction: {
2166
- readonly CreateRoom: "CreateRoom";
2167
- readonly JoinRoom: "JoinRoom";
2168
- readonly LeaveRoom: "LeaveRoom";
2169
- readonly ListRooms: "ListRooms";
2170
- readonly GetRoom: "GetRoom";
2171
- readonly CloseRoom: "CloseRoom";
2172
- readonly Poll: "Poll";
2173
- readonly SendSignal: "SendSignal";
2174
- readonly SendChat: "SendChat";
2175
- readonly SetMemberState: "SetMemberState";
2176
- };
2177
- type MultiplayerAction = (typeof MultiplayerAction)[keyof typeof MultiplayerAction];
2178
-
2179
- interface TitlePublicConfigurationModel {
2180
- /** Schema of the title-wide key-value store; the values live in client.titleCustomData. */
2181
- TitleCustomData?: TitleCustomDataDefinitions | null;
2182
- Character?: CharacterDefinitions | null;
2183
- Item?: ItemDefinitions | null;
2184
- Currency?: CurrencyDefinitions | null;
2185
- Store?: StoreDefinitions | null;
2186
- Lootbox?: LootboxDefinitions | null;
2187
- Quest?: QuestDefinitions | null;
2188
- TimedEvent?: TimedEventDefinitions | null;
2189
- Leaderboard?: LeaderboardDefinitions | null;
2190
- Season?: SeasonDefinitions | null;
2191
- Reward?: RewardDefinitions | null;
2192
- Collection?: CollectionDefinitions | null;
2193
- Craft?: CraftDefinitions | null;
2194
- DealOffer?: DealOfferDefinitions | null;
2195
- Premium?: PremiumDefinitions | null;
2196
- TimedBoost?: TimedBoostDefinitions | null;
2197
- CoopEvent?: CoopEventDefinitions | null;
2198
- GameLoop?: GameLoopDefinitions | null;
2199
- Match?: MatchDefinitions | null;
2200
- Experiment?: ExperimentDefinitions | null;
2201
- Blockchain?: BlockchainDefinitions | null;
2202
- Marketplace?: MarketplaceDefinitions | null;
2203
- Multiplayer?: MultiplayerDefinitions | null;
2204
- UserCustomData?: UserCustomDataDefinitions | null;
2205
- Referral?: ReferralDefinitions | null;
2206
- [key: string]: unknown;
2207
- }
2208
- interface TitleRequest extends BaseRequest {
2209
- Fields?: string[];
2210
- ExcludeFields?: string[];
2211
- }
2212
- declare const TitleAction: {
2213
- readonly GetTitlePublicConfiguration: "GetTitlePublicConfiguration";
2214
- readonly GetTitlePublicConfigurationExcept: "GetTitlePublicConfigurationExcept";
2215
- readonly GetCurrencyDefinitions: "GetCurrencyDefinitions";
2216
- readonly GetItemDefinitions: "GetItemDefinitions";
2217
- readonly GetServerTime: "GetServerTime";
2218
- };
2219
- type TitleAction = (typeof TitleAction)[keyof typeof TitleAction];
2220
-
2221
- interface UserDailyCounters {
2222
- PeriodStartUtc: string;
2223
- Earned: number;
2224
- Spent: number;
2225
- }
2226
- interface UserRechargeState {
2227
- LastRechargeAt?: string;
2228
- PendingSeconds?: number;
2229
- }
2230
- interface UserVirtualCurrencyState {
2231
- Amount: number;
2232
- Recharge?: UserRechargeState | null;
2233
- Daily?: UserDailyCounters | null;
2234
- CreatedAt?: string;
2235
- UpdatedAt?: string;
2236
- }
2237
- /** Personal deposit address assigned to the player in one network (lazily generated). */
2238
- interface UserDepositAddress {
2239
- Address: string;
2240
- Memo?: string | null;
2241
- AssignedAt: string;
2242
- }
2243
- /** Spent-compliance (AML) window counters, checked against CryptoCurrencyDefinition.Limits. */
2244
- interface UserCryptoComplianceCounters {
2245
- DailyPeriodStartUtc: string;
2246
- /** decimal string — use Decimal for arithmetic. */
2247
- DailyWithdrawnUsd: string;
2248
- MonthlyPeriodStartUtc: string;
2249
- /** decimal string — use Decimal for arithmetic. */
2250
- MonthlyWithdrawnUsd: string;
2251
- }
2252
- interface UserCryptoCurrencyState {
2253
- /** decimal string — use Decimal for arithmetic. */
2254
- Amount: string;
2255
- Frozen: string;
2256
- DepositAddresses?: Record<string, UserDepositAddress>;
2257
- Compliance?: UserCryptoComplianceCounters;
2258
- CreatedAt?: string;
2259
- UpdatedAt?: string;
2260
- [k: string]: unknown;
2261
- }
2262
- interface ItemTotals {
2263
- StackableAmount: number;
2264
- UnstackableAmount: number;
2265
- TotalAmount: number;
2266
- }
2267
- interface UnstackableItemInstanceState {
2268
- ItemInstanceID: string;
2269
- ItemID: string;
2270
- CatalogID?: string | null;
2271
- Quantity?: number;
2272
- RemainingUses?: number;
2273
- Level?: number;
2274
- AcquiredAt: string;
2275
- ExpiresAt?: string | null;
2276
- EquippedSlot?: EquipmentSlot | null;
2277
- CustomData?: string | null;
2278
- }
2279
- /** Daily-window counter for one conversion pair ("{srcType}:{srcID}->{tgtType}:{tgtID}"). */
2280
- interface ConversionDailyCounter {
2281
- PeriodStartUtc: string;
2282
- /** decimal string — use Decimal for arithmetic. */
2283
- AmountToday: string;
2284
- }
2285
- interface UserInventoryState {
2286
- Version?: number;
2287
- VirtualCurrencies?: Record<string, UserVirtualCurrencyState>;
2288
- CryptoCurrencies?: Record<string, UserCryptoCurrencyState>;
2289
- Items?: Record<string, ItemTotals>;
2290
- UnstackableItems?: Record<string, UnstackableItemInstanceState>;
2291
- ConversionDaily?: Record<string, ConversionDailyCounter>;
2292
- }
2293
- /** Personal "balance tuning" multiplier, server-only in intent but present on ClientState.User. */
2294
- interface PlayerEconomyTuningState {
2295
- Segment: string;
2296
- RewardMultiplier: number;
2297
- CostMultiplier: number;
2298
- MaxRollMultiplierOverride: number;
2299
- ExpiresAtUtc: string;
2300
- Version: number;
2301
- }
2302
- /** One recorded reactivation — a return after a silence gap of 7+ days. */
2303
- interface UsageReactivationEvent {
2304
- ReactivatedAt: string;
2305
- DaysSinceLastActive: number;
2306
- }
2307
- /** One calendar day's usage stats (UTC). Key in UserUsageState.Daily is "ddMMyyyy". */
2308
- interface DailyUsageRecord {
2309
- Seconds: number;
2310
- Sessions: number;
2311
- LongestSessionSeconds: number;
2312
- ActiveHoursMask: number;
2313
- LastActiveAt: string;
2314
- }
2315
- /** Aggregated app-usage stats (UserDataDocument.Usage), foreground-activity seconds only. */
2316
- interface UserUsageState {
2317
- TotalSeconds: number;
2318
- TotalSessions: number;
2319
- FirstActiveAt?: string | null;
2320
- LastActiveAt: string;
2321
- Reactivations?: UsageReactivationEvent[];
2322
- Daily?: Record<string, DailyUsageRecord>;
2323
- }
2324
- interface UserState {
2325
- UserID?: string;
2326
- InventoryV2?: UserInventoryState;
2327
- EventToken?: UserEventTokensState;
2328
- Store?: UserStoreState | null;
2329
- Lootbox?: UserLootboxState | null;
2330
- Reward?: UserRewardState | null;
2331
- Quest?: UserQuestState | null;
2332
- Leaderboard?: UserLeaderboardsState | null;
2333
- Season?: UserSeasonsState | null;
2334
- Premium?: UserPremiumState | null;
2335
- Character?: UserCharactersState | null;
2336
- Match?: UserMatchState | null;
2337
- Collection?: UserCollectionState | null;
2338
- CoopEvent?: UserCoopEventState | null;
2339
- DealOffer?: UserDealOffersState | null;
2340
- Referral?: UserReferralState | null;
2341
- Social?: UserSocialState | null;
2342
- TimedBoost?: UserTimedBoostsState | null;
2343
- CustomData?: UserCustomDataState | null;
2344
- GameLoop?: UserGameLoopsState | null;
2345
- Blockchain?: UserBlockchainState | null;
2346
- Marketplace?: UserMarketplaceState | null;
2347
- PublicData?: UserPublicDataModel | null;
2348
- EconomyTuning?: PlayerEconomyTuningState | null;
2349
- Usage?: UserUsageState | null;
2350
- [k: string]: unknown;
2351
- }
2352
- interface ClientState {
2353
- Title?: TitlePublicConfigurationModel | null;
2354
- User?: UserState | null;
2355
- [k: string]: unknown;
2356
- }
2357
- 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; };
2358
- type ChangeUsernameResponse = { Username: string; };
2359
- interface UserRequest extends BaseRequest {
2360
- IsNewSession?: boolean;
2361
- SessionDurationSeconds?: number;
2362
- Fields?: string[];
2363
- TitleFields?: string[];
2364
- ExcludeFields?: string[];
2365
- ExcludeTitleFields?: string[];
2366
- }
2367
- declare const UserAction: {
2368
- readonly GetClientState: "GetClientState";
2369
- readonly GetClientStateExcept: "GetClientStateExcept";
2370
- readonly GetInventory: "GetInventory";
2371
- readonly GetEventTokens: "GetEventTokens";
2372
- readonly GetUsageTime: "GetUsageTime";
2373
- readonly AddUsageTime: "AddUsageTime";
2374
- readonly DeleteUserAccount: "DeleteUserAccount";
2375
- readonly ChangeUsername: "ChangeUsername";
2376
- };
2377
- type UserAction = (typeof UserAction)[keyof typeof UserAction];
2378
-
2379
- /** enum BlockchainNetworkType — chain family; controls signature payload shape. */
2380
- declare const BlockchainNetworkType: {
2381
- readonly EVM: "EVM";
2382
- readonly Solana: "Solana";
2383
- };
2384
- type BlockchainNetworkType = (typeof BlockchainNetworkType)[keyof typeof BlockchainNetworkType];
2385
- /** enum WalletLinkType — how a wallet address became linked to the account. */
2386
- declare const WalletLinkType: {
2387
- readonly AutoLinkedFromTransaction: "AutoLinkedFromTransaction";
2388
- readonly SignatureVerified: "SignatureVerified";
2389
- readonly ManuallyLinked: "ManuallyLinked";
2390
- };
2391
- type WalletLinkType = (typeof WalletLinkType)[keyof typeof WalletLinkType];
2392
- /** enum BlockchainTransactionType — asset kind of a pending/retryable withdrawal. */
2393
- declare const BlockchainTransactionType: {
2394
- readonly Token: "Token";
2395
- readonly Nft: "Nft";
2396
- };
2397
- type BlockchainTransactionType = (typeof BlockchainTransactionType)[keyof typeof BlockchainTransactionType];
2398
- /** enum KycStatus — player's KYC verification status. */
2399
- declare const KycStatus: {
2400
- readonly NotRequested: "NotRequested";
2401
- readonly Pending: "Pending";
2402
- readonly Verified: "Verified";
2403
- readonly Rejected: "Rejected";
2404
- readonly Expired: "Expired";
2405
- };
2406
- type KycStatus = (typeof KycStatus)[keyof typeof KycStatus];
2407
- /** enum KycTier — verification depth reached. */
2408
- declare const KycTier: {
2409
- readonly None: "None";
2410
- readonly Tier1: "Tier1";
2411
- readonly Tier2: "Tier2";
2412
- readonly Tier3: "Tier3";
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";
2413
2116
  };
2414
2117
  type KycTier = (typeof KycTier)[keyof typeof KycTier];
2415
2118
  /** enum BlockchainTransactionStatus — lifecycle status of one deposit/withdrawal transaction. */
@@ -2435,129 +2138,508 @@ declare const BlockchainOperationCategory: {
2435
2138
  /** Community reward (social promotion etc.) — a grant payout. */
2436
2139
  readonly CommunityReward: "community_reward";
2437
2140
  };
2438
- type BlockchainOperationCategory = (typeof BlockchainOperationCategory)[keyof typeof BlockchainOperationCategory];
2439
- /** Empty/absent category is treated as {@link BlockchainOperationCategory.GameTopUp}. */
2440
- declare function normalizeBlockchainCategory(category?: string | null): string;
2441
- /** enum TransactionDirection — which side of the platform pool the asset is moving to/from. */
2442
- declare const TransactionDirection: {
2443
- readonly UsersCryptoWallet: "UsersCryptoWallet";
2444
- readonly Game: "Game";
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;
2208
+ }
2209
+ declare const BlockchainAction: {
2210
+ readonly GetDefinitions: "GetDefinitions";
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";
2221
+ };
2222
+ type BlockchainAction = (typeof BlockchainAction)[keyof typeof BlockchainAction];
2223
+
2224
+ /** enum MultiplayerTopology — p2p connection topology within a room. */
2225
+ declare const MultiplayerTopology: {
2226
+ readonly Mesh: "Mesh";
2227
+ readonly Host: "Host";
2228
+ };
2229
+ type MultiplayerTopology = (typeof MultiplayerTopology)[keyof typeof MultiplayerTopology];
2230
+ /** enum MultiplayerChatMode — whether chat is server-relayed or p2p-only over the DataChannel. */
2231
+ declare const MultiplayerChatMode: {
2232
+ readonly ServerRelay: "ServerRelay";
2233
+ readonly P2P: "P2P";
2234
+ };
2235
+ type MultiplayerChatMode = (typeof MultiplayerChatMode)[keyof typeof MultiplayerChatMode];
2236
+ /** enum RoomVisibility — whether a room appears in the public ListRooms listing. */
2237
+ declare const RoomVisibility: {
2238
+ readonly Public: "Public";
2239
+ readonly Private: "Private";
2240
+ };
2241
+ type RoomVisibility = (typeof RoomVisibility)[keyof typeof RoomVisibility];
2242
+ /** enum EnvelopeType — kind of realtime envelope delivered via Poll. */
2243
+ declare const EnvelopeType: {
2244
+ readonly Signal: "Signal";
2245
+ readonly Chat: "Chat";
2246
+ readonly PlayerJoined: "PlayerJoined";
2247
+ readonly PlayerLeft: "PlayerLeft";
2248
+ readonly HostChanged: "HostChanged";
2249
+ readonly RoomClosed: "RoomClosed";
2250
+ readonly MemberState: "MemberState";
2251
+ };
2252
+ type EnvelopeType = (typeof EnvelopeType)[keyof typeof EnvelopeType];
2253
+ type IceServer = { Urls?: null | string; Username?: null | string; Credential?: null | string; [key: string]: unknown; };
2254
+ type MultiplayerSystemState = { Enabled?: null | boolean; [key: string]: unknown; };
2255
+ type MultiplayerDefinitions = { SystemState?: null | MultiplayerSystemState; DefaultTopology?: null | 'Mesh' | 'Host'; AllowCreatorTopologyOverride?: null | boolean; DefaultChatMode?: null | 'ServerRelay' | 'P2P'; AllowCreatorChatOverride?: null | boolean; MaxPlayersPerRoom?: null | number; RoomTtlSeconds?: null | number; HeartbeatIntervalMs?: null | number; MemberTimeoutMs?: null | number; MaxSignalPayloadBytes?: null | number; MaxChatTextLength?: null | number; RoomLogCap?: null | number; IceServers?: null | Array<IceServer>; [key: string]: unknown; };
2256
+ type RoomMemberView = { UserID?: null | string; Username?: null | string; AvatarUrl?: null | string; Level?: null | number; Power?: null | number; Ready?: null | boolean; State?: null | Record<string, string>; JoinedAt?: null | number; IsHost?: null | boolean; LastSeenMs?: null | number; [key: string]: unknown; };
2257
+ type RoomListItem = { RoomID?: null | string; Name?: null | string; HostUserID?: null | string; Topology?: null | 'Mesh' | 'Host'; ChatMode?: null | 'ServerRelay' | 'P2P'; MaxPlayers?: null | number; MemberCount?: null | number; CreatedAt?: null | number; [key: string]: unknown; };
2258
+ type RealtimeEnvelope = { Seq?: null | number; Type?: null | 'Signal' | 'Chat' | 'PlayerJoined' | 'PlayerLeft' | 'HostChanged' | 'RoomClosed' | 'MemberState'; FromUserID?: null | string; ToUserID?: null | string; Kind?: null | string; Payload?: null | string; Ts?: null | number; [key: string]: unknown; };
2259
+ type RoomSnapshotResponse = { RoomID?: null | string; Name?: null | string; HostUserID?: null | string; OwnerUserID?: null | string; Topology?: null | 'Mesh' | 'Host'; ChatMode?: null | 'ServerRelay' | 'P2P'; Visibility?: null | 'Private' | 'Public'; Status?: null | string; MaxPlayers?: null | number; Members?: null | Array<RoomMemberView>; IceServers?: null | Array<IceServer>; Seq?: null | number; [key: string]: unknown; };
2260
+ type LeaveRoomResponse = { Closed?: null | boolean; NewHostUserID?: null | string; [key: string]: unknown; };
2261
+ type RoomsPageResponse = { Rooms?: null | Array<RoomListItem>; Page?: null | number; PageSize?: null | number; HasMore?: null | boolean; [key: string]: unknown; };
2262
+ type PollResponse = { Envelopes?: null | Array<RealtimeEnvelope>; MaxSeq?: null | number; [key: string]: unknown; };
2263
+ type PublishResponse = { Seq?: null | number; [key: string]: unknown; };
2264
+ interface MultiplayerRequest extends BaseRequest {
2265
+ RoomID?: string;
2266
+ RoomName?: string;
2267
+ Topology?: MultiplayerTopology;
2268
+ ChatMode?: MultiplayerChatMode;
2269
+ MaxPlayers?: number;
2270
+ Visibility?: RoomVisibility;
2271
+ JoinCode?: string;
2272
+ TargetUserID?: string;
2273
+ /** "offer" / "answer" / "candidate". */
2274
+ SignalKind?: string;
2275
+ Payload?: string;
2276
+ /** Only meaningful when the room's ChatMode is ServerRelay. */
2277
+ ChatText?: string;
2278
+ Ready?: boolean;
2279
+ MemberState?: Record<string, string>;
2280
+ /** Poll cursor: server returns everything with seq > LastSeq. */
2281
+ LastSeq?: number;
2282
+ Page?: number;
2283
+ PageSize?: number;
2284
+ }
2285
+ declare const MultiplayerAction: {
2286
+ readonly CreateRoom: "CreateRoom";
2287
+ readonly JoinRoom: "JoinRoom";
2288
+ readonly LeaveRoom: "LeaveRoom";
2289
+ readonly ListRooms: "ListRooms";
2290
+ readonly GetRoom: "GetRoom";
2291
+ readonly CloseRoom: "CloseRoom";
2292
+ readonly Poll: "Poll";
2293
+ readonly SendSignal: "SendSignal";
2294
+ readonly SendChat: "SendChat";
2295
+ readonly SetMemberState: "SetMemberState";
2296
+ };
2297
+ type MultiplayerAction = (typeof MultiplayerAction)[keyof typeof MultiplayerAction];
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;
2313
+ }
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;
2325
+ }
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";
2338
+ };
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[];
2349
+ }
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[];
2357
+ }
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;
2386
+ }
2387
+ /** Root container for all item catalogs of a title. Key of `Catalogs` is CatalogID. */
2388
+ interface ItemDefinitions {
2389
+ Catalogs?: Record<string, ItemCatalog> | null;
2390
+ }
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;
2399
+ }
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;
2413
+ }
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;
2422
+ }
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;
2434
+ }
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;
2439
+ }
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;
2446
+ }
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;
2464
+ }
2465
+ interface GetActiveEventsResponse {
2466
+ ActiveEvents?: ActiveEventInfo[] | null;
2467
+ }
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;
2481
+ }
2482
+ /** One milestone claim in a batch (for ClaimMilestonesBatch). */
2483
+ interface TimedEventMilestoneRef extends TimedEventInstanceRef {
2484
+ MilestoneID?: string;
2485
+ }
2486
+ /** One token spend in a batch (for SpendTokensBatch). */
2487
+ interface TimedEventSpendRef extends TimedEventInstanceRef {
2488
+ SpendAmount?: number;
2489
+ RelatedEntityID?: string;
2490
+ }
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;
2499
+ }
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[];
2520
+ }
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";
2532
+ };
2533
+ type TimedEventAction = (typeof TimedEventAction)[keyof typeof TimedEventAction];
2534
+
2535
+ declare const CraftType: {
2536
+ readonly TradeUpRarity: "TradeUpRarity";
2537
+ readonly TradeUpCollection: "TradeUpCollection";
2445
2538
  };
2446
- type TransactionDirection = (typeof TransactionDirection)[keyof typeof TransactionDirection];
2447
- type BlockchainNftCollectionBinding = { ContractAddress?: null | string; ItemCatalogID?: null | string; DisplayName?: null | string; DepositsEnabled?: null | boolean; WithdrawalsEnabled?: null | boolean; [key: string]: unknown; };
2448
- type PlatformBlockchainState = { Ios?: null | boolean; Android?: null | boolean; Web?: null | boolean; [key: string]: unknown; };
2449
- 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; };
2450
- type BlockchainSystemState = { DepositsEnabled?: null | boolean; WithdrawalsEnabled?: null | boolean; NftDepositsEnabled?: null | boolean; NftWithdrawalsEnabled?: null | boolean; PlatformOverrides?: null | PlatformBlockchainState; [key: string]: unknown; };
2451
- type BlockchainAccountSafetyPolicy = { MinAccountAgeDays?: null | number; MultiAccountCheckEnabled?: null | boolean; BanOnSharedWithdrawalAddress?: null | boolean; PendingWithdrawalTtlHours?: null | number; [key: string]: unknown; };
2452
- 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; };
2453
- 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; };
2454
- 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; };
2455
- 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; };
2456
- 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; };
2457
- 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; };
2458
- 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; };
2459
- type NftStatsContainer = { TotalDeposits?: null | number; TotalWithdrawals?: null | number; FailedWithdrawals?: null | number; RejectedDeposits?: null | number; PerCollection?: null | Record<string, NftCollectionStats>; [key: string]: unknown; };
2460
- type BlockchainStats = { Tokens?: null | TokenStatsContainer; Nfts?: null | NftStatsContainer; [key: string]: unknown; };
2461
- 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; };
2462
- 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; };
2463
- 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; };
2464
- 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; };
2465
- 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; };
2466
- type BlockchainConfigResponse = { Blockchain?: null | BlockchainDefinitions; CryptoCurrencies?: null | Record<string, CryptoCurrencyDefinition>; [key: string]: unknown; };
2467
- type UserBlockchainStateResponse = { State?: null | UserBlockchainState; CryptoBalances?: null | Record<string, UserCryptoCurrencyState>; [key: string]: unknown; };
2468
- 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; };
2469
- 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; };
2470
- 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; };
2471
- 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; };
2472
- type TransactionHistoryResponse = { TokenTransactions?: null | Array<TokenTransactionDocument>; NFTTransactions?: null | Array<NFTTransactionDocument>; [key: string]: unknown; };
2473
- 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; };
2474
- type RetryWithdrawalResponse = { TitleTransactionID?: null | string; Kind?: null | 'Token' | 'Nft'; EvmSignature?: null | WithdrawalSignatureResponse; SolanaSignature?: null | SolanaWithdrawalSignature; [key: string]: unknown; };
2475
- 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; };
2476
- interface BlockchainRequest extends BaseRequest {
2477
- TitleTransactionID?: string;
2478
- NetworkID?: string;
2479
- CurrencyID?: string;
2480
- TransactionHash?: string;
2481
- WalletAddress?: string;
2482
- /** Decimal string for token withdrawals, integer string for NFT withdrawals/tx-history limit. */
2483
- Amount?: string;
2484
- ItemID?: string;
2485
- /**
2486
- * Operation kind for withdrawals (e.g. "game_topup", "community_reward"). The server signs this
2487
- * into the withdrawal hash and the client must submit the same value on-chain. Empty → "game_topup".
2488
- * Ignored by deposits (there the category is read back from the on-chain transaction).
2489
- */
2490
- Category?: string;
2491
- /**
2492
- * Item level for RequestNFTWithdrawal. Determines the tokenId (tokenId = base + Level - 1) and
2493
- * which instances are debited. 0/1 → base level (stackable/level-1, prior behavior). >1 → debits
2494
- * unstackable instances of that level. Defaults to 1 server-side.
2495
- */
2496
- Level?: number;
2497
- /**
2498
- * Specific instance ID to withdraw as an ERC-721 unique token. Required when the item's NFT
2499
- * binding has TokenStandard == "ERC-721" — the server debits and tokenizes exactly this
2500
- * instance, preserving its state (Level/RemainingUses/CustomData) in the registry. Ignored for
2501
- * ERC-1155.
2502
- */
2503
- ItemInstanceID?: string;
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;
2504
2546
  }
2505
- declare const BlockchainAction: {
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: {
2506
2555
  readonly GetDefinitions: "GetDefinitions";
2507
- readonly GetUserState: "GetUserState";
2508
- readonly DepositToken: "DepositToken";
2509
- readonly DepositNFT: "DepositNFT";
2510
- readonly RequestTokenWithdrawal: "RequestTokenWithdrawal";
2511
- readonly RequestNFTWithdrawal: "RequestNFTWithdrawal";
2512
- readonly GetTransactionHistory: "GetTransactionHistory";
2513
- readonly RetryWithdrawal: "RetryWithdrawal";
2514
- readonly ConfirmWithdrawal: "ConfirmWithdrawal";
2515
- readonly DonateToDeveloper: "DonateToDeveloper";
2516
- readonly DonateToUsersPool: "DonateToUsersPool";
2556
+ readonly Craft: "Craft";
2517
2557
  };
2518
- type BlockchainAction = (typeof BlockchainAction)[keyof typeof BlockchainAction];
2519
- type PlatformLoginResponse = { TitleUserID: string; TitleClientSessionTicket: string; TitleClientSessionTicketExpiration: string; PlatformUserID?: null | string; PlatformAuthToken?: null | string; PlatformAuthTokenExpiration?: null | string; };
2520
- type SuccessResponse = { IsCompleted?: null | boolean; ServerTime?: null | string; };
2521
- type WalletChallengeResponse = { Message: string; ExpiresAt: string; };
2522
- /** Client-supplied UTM/click-ID attribution signal, sent with login/register (port of AttributionInput). */
2523
- interface AttributionInput {
2524
- UtmSource?: string;
2525
- UtmMedium?: string;
2526
- UtmCampaign?: string;
2527
- UtmTerm?: string;
2528
- UtmContent?: string;
2529
- /** gclid / fbclid / ttclid / msclkid / yclid. */
2530
- ClickID?: string;
2531
- Referrer?: string;
2532
- Country?: string;
2533
- AppVersion?: string;
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";
2566
+ };
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";
2574
+ };
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;
2534
2587
  }
2535
- interface AuthenticationRequest extends BaseRequest {
2536
- PlatformAuthToken?: string;
2537
- PlatformRefreshToken?: string;
2538
- GoogleIDToken?: string;
2539
- Attribution?: AttributionInput;
2540
- /** Wallet login: NetworkID (key of cfg.Blockchain.Networks) the wallet is proving on. */
2541
- NetworkID?: string;
2542
- /** Wallet login: the crypto wallet address (EVM 0x… / Solana base58). */
2543
- WalletAddress?: string;
2544
- /** Wallet login: signature of the challenge message (EVM personal_sign hex / Solana ed25519, 0x-hex). */
2545
- WalletSignature?: string;
2588
+ interface TitleCustomDataRequest extends BaseRequest {
2589
+ KeyIDs?: string[];
2590
+ KnownRuntimeVersion?: number;
2546
2591
  }
2547
- declare const AuthenticationAction: {
2548
- readonly LoginWithDeviceID: "LoginWithDeviceID";
2549
- readonly LoginWithTelegram: "LoginWithTelegram";
2550
- readonly LoginWithEmail: "LoginWithEmail";
2551
- readonly LoginWithGoogle: "LoginWithGoogle";
2552
- readonly LoginWithPlatformToken: "LoginWithPlatformToken";
2553
- readonly RegisterWithEmail: "RegisterWithEmail";
2554
- readonly RefreshPlatformToken: "RefreshPlatformToken";
2555
- readonly RequestWalletChallenge: "RequestWalletChallenge";
2556
- readonly LoginWithWallet: "LoginWithWallet";
2557
- readonly ForgotPassword: "ForgotPassword";
2558
- readonly ResetPassword: "ResetPassword";
2592
+ declare const TitleCustomDataAction: {
2593
+ readonly GetTitleCustomDataDefinitions: "GetTitleCustomDataDefinitions";
2594
+ readonly GetPublicTitleData: "GetPublicTitleData";
2595
+ readonly GetPublicTitleDataKeys: "GetPublicTitleDataKeys";
2559
2596
  };
2560
- type AuthenticationAction = (typeof AuthenticationAction)[keyof typeof AuthenticationAction];
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;
2630
+ }
2631
+ interface TitleRequest extends BaseRequest {
2632
+ Fields?: string[];
2633
+ ExcludeFields?: string[];
2634
+ }
2635
+ declare const TitleAction: {
2636
+ readonly GetTitlePublicConfiguration: "GetTitlePublicConfiguration";
2637
+ readonly GetTitlePublicConfigurationExcept: "GetTitlePublicConfigurationExcept";
2638
+ readonly GetCurrencyDefinitions: "GetCurrencyDefinitions";
2639
+ readonly GetItemDefinitions: "GetItemDefinitions";
2640
+ readonly GetServerTime: "GetServerTime";
2641
+ };
2642
+ type TitleAction = (typeof TitleAction)[keyof typeof TitleAction];
2561
2643
 
2562
2644
  interface SdkEvents {
2563
2645
  "transport:busy": boolean;
@@ -2817,6 +2899,20 @@ interface SdkEvents {
2817
2899
  "multiplayer:memberStateSet": PublishResponse;
2818
2900
  }
2819
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
+
2820
2916
  declare const DEFAULT_BASE_URL = "https://api.idosgames.com";
2821
2917
  interface IDosGamesSettings {
2822
2918
  readonly titleID: string;
@@ -2825,6 +2921,12 @@ interface IDosGamesSettings {
2825
2921
  readonly baseUrl: string;
2826
2922
  readonly devBuild: boolean;
2827
2923
  readonly debugLogging: boolean;
2924
+ /**
2925
+ * Куда складывать конфиг тайтла между сессиями. По умолчанию — `localStorage` с откатом
2926
+ * в память. Своя реализация нужна там, где `localStorage` нет или он не переживает
2927
+ * перезапуск (React Native, встраивание в нативную оболочку).
2928
+ */
2929
+ readonly configStorage: ConfigStorage;
2828
2930
  }
2829
2931
  interface SettingsInput {
2830
2932
  titleID: string;
@@ -2833,6 +2935,7 @@ interface SettingsInput {
2833
2935
  baseUrl?: string;
2834
2936
  devBuild?: boolean;
2835
2937
  debugLogging?: boolean;
2938
+ configStorage?: ConfigStorage;
2836
2939
  }
2837
2940
 
2838
2941
  /**
@@ -2848,6 +2951,15 @@ declare class UserData {
2848
2951
  getCachedActiveEvents(): GetActiveEventsResponse | null;
2849
2952
  clear(): void;
2850
2953
  applyUserState(state: UserState): void;
2954
+ /**
2955
+ * Точечная замена перечисленных контейнеров — для адресной выборки (`getUserState`), которая
2956
+ * приносит только часть состояния.
2957
+ *
2958
+ * Обычный `applyUserState` заменяет состояние ЦЕЛИКОМ и обнулил бы всё, чего в выборке нет.
2959
+ * Список контейнеров передаётся отдельно от самих данных намеренно: контейнер, ставший у
2960
+ * игрока пустым, приходит отсутствующим — и его нужно именно стереть, а не «не трогать».
2961
+ */
2962
+ applyUserStateContainers(state: UserState, containers: string[]): void;
2851
2963
  applyInventory(inventory: UserInventoryState): void;
2852
2964
  applyVirtualCurrency(data: Record<string, UserVirtualCurrencyState>): void;
2853
2965
  applyResourceOperation(op: ResourceOperation | null | undefined, itemDefs?: ItemDefinitions, now?: Date): void;
@@ -3101,13 +3213,70 @@ declare class UserService {
3101
3213
  private readonly ctx;
3102
3214
  constructor(ctx: ClientContext);
3103
3215
  private baseRequest;
3216
+ private get configCache();
3217
+ private cache?;
3218
+ private get stateCache();
3219
+ private userStateCache?;
3104
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;
3105
3257
  /**
3106
3258
  * Loads ClientState excluding the given fields. At login GameLoop is excluded (loaded
3107
3259
  * per-stage separately) and carried across the wholesale state replace so a mid-session
3108
3260
  * refresh doesn't wipe the active board.
3109
3261
  */
3110
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>>;
3111
3280
  getUserInventory(): Promise<OperationResult<UserInventoryState>>;
3112
3281
  getEventTokens(): Promise<OperationResult<UserEventTokensState>>;
3113
3282
  getUsageTime(): Promise<OperationResult<UsageTimeStats>>;
@@ -3720,6 +3889,8 @@ declare class UserApi {
3720
3889
  private endpoint;
3721
3890
  getClientState(request: UserRequest): Promise<OperationResult<ClientState>>;
3722
3891
  getClientStateExcept(request: UserRequest): Promise<OperationResult<ClientState>>;
3892
+ getStateVersions(request: UserRequest): Promise<OperationResult<UserStateVersions>>;
3893
+ getUserState(request: UserRequest): Promise<OperationResult<UserStateSlice>>;
3723
3894
  getInventory(request: UserRequest): Promise<OperationResult<UserInventoryState>>;
3724
3895
  getEventTokens(request: UserRequest): Promise<OperationResult<UserEventTokensState>>;
3725
3896
  getUsageTime(request: UserRequest): Promise<OperationResult<UsageTimeStats>>;
@@ -4022,6 +4193,13 @@ declare class TitleApi {
4022
4193
  constructor(ctx: ClientContext);
4023
4194
  private send;
4024
4195
  getTitlePublicConfiguration(request: TitleRequest): Promise<OperationResult<TitlePublicConfigurationModel>>;
4196
+ /**
4197
+ * Всё, кроме перечисленного в `request.ExcludeFields`. Нужен `UserService` как фолбэк:
4198
+ * `GetClientState` отдаёт только ссылку на CDN, и когда по ней не скачалось, конфиг
4199
+ * запрашивается телом — но ровно тем же набором полей, иначе он не будет соответствовать
4200
+ * версии, под которой клиент его сохранит.
4201
+ */
4202
+ getTitlePublicConfigurationExcept(request: TitleRequest): Promise<OperationResult<TitlePublicConfigurationModel>>;
4025
4203
  getCurrencyDefinitions(request: TitleRequest): Promise<OperationResult<CurrencyDefinitions>>;
4026
4204
  getItemDefinitions(request: TitleRequest): Promise<OperationResult<ItemDefinitions>>;
4027
4205
  getServerTime(request: TitleRequest): Promise<OperationResult<SuccessResponse>>;
@@ -4331,4 +4509,4 @@ type MailboxMessageDocument = { MessageID?: null | string; TitleID?: null | stri
4331
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; };
4332
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; };
4333
4511
 
4334
- 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 QuestClaimRef, type QuestCycleDefinition, type QuestDefinition, type QuestDefinitions, type QuestGroupCompletionDefinition, type QuestObjectiveDefinition, QuestObjectiveSource, type QuestPhaseDefinition, type QuestPointsTrackView, QuestPrerequisiteMode, type QuestPresetBindings, type QuestPresetRegistry, 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, 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 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 };