@idosgames/core 0.5.1 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +148 -0
- package/dist/index.cjs +2 -2
- package/dist/index.d.cts +1047 -42
- package/dist/index.d.ts +1047 -42
- package/dist/index.js +2 -2
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -45,9 +45,39 @@ declare const ResourceEntryType: {
|
|
|
45
45
|
readonly Item: "Item";
|
|
46
46
|
readonly VirtualCurrency: "VirtualCurrency";
|
|
47
47
|
readonly CryptoCurrency: "CryptoCurrency";
|
|
48
|
-
|
|
48
|
+
/** Rewarded-video credit: one verified ad view, spendable in ad-gated actions. */
|
|
49
|
+
readonly RewardedVideoCredit: "RewardedVideoCredit";
|
|
50
|
+
/**
|
|
51
|
+
* Real-money payment in a store. Only `ProductID` is populated — the amount and currency come
|
|
52
|
+
* from the SKU price tier, not from us. Never a stored resource: the money is paid outside,
|
|
53
|
+
* and the server settles the receipt before the resource operation runs.
|
|
54
|
+
*/
|
|
55
|
+
readonly Purchase: "Purchase";
|
|
49
56
|
};
|
|
50
57
|
type ResourceEntryType = (typeof ResourceEntryType)[keyof typeof ResourceEntryType];
|
|
58
|
+
/**
|
|
59
|
+
* Platform the client runs on. Sent with every request (header `X-IG-Platform`) because the set
|
|
60
|
+
* of available payment options depends on it: an App Store build must not offer payment outside
|
|
61
|
+
* IAP. `Unknown` is a value of its own, not a synonym for `Web` — a client that does not report
|
|
62
|
+
* its platform only gets options that are safe everywhere.
|
|
63
|
+
*/
|
|
64
|
+
declare const ClientPlatform: {
|
|
65
|
+
readonly Unknown: "Unknown";
|
|
66
|
+
readonly Web: "Web";
|
|
67
|
+
readonly Android: "Android";
|
|
68
|
+
readonly Ios: "Ios";
|
|
69
|
+
};
|
|
70
|
+
type ClientPlatform = (typeof ClientPlatform)[keyof typeof ClientPlatform];
|
|
71
|
+
/** Store that issued a receipt. Must match a key in the title's `Purchase.Stores`. */
|
|
72
|
+
declare const IapStore$1: {
|
|
73
|
+
readonly GooglePlay: "GooglePlay";
|
|
74
|
+
readonly AppleAppStore: "AppleAppStore";
|
|
75
|
+
};
|
|
76
|
+
type IapStore$1 = (typeof IapStore$1)[keyof typeof IapStore$1];
|
|
77
|
+
declare const zIapStore: z.ZodEnum<{
|
|
78
|
+
GooglePlay: "GooglePlay";
|
|
79
|
+
AppleAppStore: "AppleAppStore";
|
|
80
|
+
}>;
|
|
51
81
|
declare const EventTokenType: {
|
|
52
82
|
readonly TimedEvent: "TimedEvent";
|
|
53
83
|
readonly Quest: "Quest";
|
|
@@ -208,6 +238,9 @@ interface UserEventTokensState {
|
|
|
208
238
|
CoopEvent?: Record<string, UserEventTokenProgress>;
|
|
209
239
|
Season?: Record<string, UserEventTokenProgress>;
|
|
210
240
|
}
|
|
241
|
+
type PriceOption = { OptionID?: null | string; Name?: null | string; Cost?: null | ResourceConsume; AllowedPlatforms?: null | Array<'Unknown' | 'Web' | 'Android' | 'Ios'>; AssetPaths?: null | Record<string, string>; [key: string]: unknown; };
|
|
242
|
+
type PriceOptions = Record<string, PriceOption>;
|
|
243
|
+
type PaymentProof = { Store: 'GooglePlay' | 'AppleAppStore'; Receipt: string; Signature?: null | string; [key: string]: unknown; };
|
|
211
244
|
|
|
212
245
|
interface StorePurchaseState {
|
|
213
246
|
OfferID: string;
|
|
@@ -222,7 +255,7 @@ interface UserStoreState {
|
|
|
222
255
|
type StorePurchaseResponse = { ServerTimeUtc: string; OfferID: string; Count: number; Resources?: null | ResourceOperation; };
|
|
223
256
|
type PurchaseBatchResponse = Array<{ Id: string; Success: boolean; Error?: null | string; Data?: null | StorePurchaseResponse; }>;
|
|
224
257
|
type StoreDefinition = { StoreID: string; Type?: null | string; Name?: null | string; Description?: null | string; Rules?: null | { StartUtc?: null | string; EndUtc?: null | string; RequiredFlags?: null | Array<string>; [key: string]: unknown; }; AssetPaths?: null | Record<string, string>; [key: string]: unknown; };
|
|
225
|
-
type StoreOfferDefinition = { OfferID: string; StoreIDs?: null | Array<string>; Name?: null | string;
|
|
258
|
+
type StoreOfferDefinition = { OfferID: string; StoreIDs?: null | Array<string>; Name?: null | string; PriceOptions?: null | PriceOptions; Rewards?: null | ResourceGrant; Rules?: null | { StartUtc?: null | string; EndUtc?: null | string; Gate?: null | SegmentGate; Limits?: null | LimitSpec; [key: string]: unknown; }; AssetPaths?: null | Record<string, string>; [key: string]: unknown; };
|
|
226
259
|
/** The title's shop system (config), returned by getStoreDefinitions(). */
|
|
227
260
|
interface StoreDefinitions {
|
|
228
261
|
Stores?: Record<string, StoreDefinition> | null;
|
|
@@ -232,10 +265,19 @@ interface StoreDefinitions {
|
|
|
232
265
|
interface StorePurchaseRef {
|
|
233
266
|
OfferID?: string;
|
|
234
267
|
Count?: number;
|
|
268
|
+
/** Chosen payment option. Empty = first one available on this platform. */
|
|
269
|
+
SelectedOptionID?: string;
|
|
235
270
|
}
|
|
236
271
|
interface StoreRequest extends BaseRequest {
|
|
237
272
|
OfferID?: string;
|
|
238
273
|
Count?: number;
|
|
274
|
+
/** Chosen payment option (`PriceOption.OptionID`). Empty = first one available here. */
|
|
275
|
+
SelectedOptionID?: string;
|
|
276
|
+
/**
|
|
277
|
+
* Store receipt. Required exactly when the chosen option is paid with real money
|
|
278
|
+
* (a `Purchase` entry in its cost); ignored for resource prices.
|
|
279
|
+
*/
|
|
280
|
+
Payment?: PaymentProof;
|
|
239
281
|
/** PurchaseBatch: per-offer purchase counts (deduped by OfferID). */
|
|
240
282
|
Purchases?: StorePurchaseRef[];
|
|
241
283
|
}
|
|
@@ -292,7 +334,8 @@ interface UserLootboxState {
|
|
|
292
334
|
Pity?: Record<string, UserLootboxPityCounter>;
|
|
293
335
|
}
|
|
294
336
|
type LootboxPityTriggerResponse = { RuleID: string; BoxIndex?: null | number; };
|
|
295
|
-
type LootboxOpenResponse = { ServerTimeUtc: string; LootboxID: string; OpenedCount?: null | number; SelectedOptionID?: null |
|
|
337
|
+
type LootboxOpenResponse = { ServerTimeUtc: string; LootboxID: string; OpenedCount?: null | number; SelectedOptionID?: null | string; Resources?: null | ResourceOperation; Inventory?: null | InventoryDelta; Results?: null | Array<ResourceOperation>; TriggeredPity?: null | Array<LootboxPityTriggerResponse>; };
|
|
338
|
+
/** One opening price option: an idempotent option ID and its consume-only cost. */
|
|
296
339
|
/**
|
|
297
340
|
* Container of preset wiring for a lootbox — one PresetBinding per block. Inline data
|
|
298
341
|
* (RewardSlots/PityRules) lives on LootboxDefinition. null = presets unused.
|
|
@@ -302,17 +345,30 @@ interface LootboxPresetBindings {
|
|
|
302
345
|
PityRules?: PresetBinding | null;
|
|
303
346
|
}
|
|
304
347
|
type LootboxSupplyRule = { CatalogID?: null | string; ItemID?: null | string; MaxDrops?: null | number; [key: string]: unknown; };
|
|
305
|
-
type LootboxDefinition = { LootboxID: string; AssetPaths?: null | Record<string, string>; PriceOptions?: null |
|
|
348
|
+
type LootboxDefinition = { LootboxID: string; AssetPaths?: null | Record<string, string>; PriceOptions?: null | PriceOptions; RewardSlots?: null | Array<LootboxRewardSlot>; PityRules?: null | Array<LootboxPityRule>; Presets?: null | LootboxPresetBindings; RewardMultiplier?: null | RewardProgressionMultiplierSpec; SupplyLimits?: null | Array<LootboxSupplyRule>; MaxOpenCount?: null | number; [key: string]: unknown; };
|
|
306
349
|
/** The title's lootbox catalog (config), returned by getDefinitions(). */
|
|
350
|
+
/** Module-wide Lootbox settings shared by every lootbox of the title. */
|
|
351
|
+
interface LootboxGlobalSettings {
|
|
352
|
+
/**
|
|
353
|
+
* Max boxes per single open() call for every lootbox of the title. Overridden per lootbox via
|
|
354
|
+
* LootboxDefinition.MaxOpenCount. null = platform default (100). <= 0 = opening disabled.
|
|
355
|
+
*/
|
|
356
|
+
MaxOpenCount?: number | null;
|
|
357
|
+
}
|
|
307
358
|
interface LootboxDefinitions {
|
|
308
359
|
Definitions?: Record<string, LootboxDefinition> | null;
|
|
360
|
+
/** Module-wide settings (e.g. the max-open ceiling). null = platform defaults apply. */
|
|
361
|
+
Settings?: LootboxGlobalSettings | null;
|
|
309
362
|
RewardPools?: RewardPoolLibrary | null;
|
|
310
363
|
}
|
|
311
364
|
type LootboxDefinitionsResponse = { LootboxDefinitions?: null | LootboxDefinitions; };
|
|
312
365
|
interface LootboxRequest extends BaseRequest {
|
|
313
366
|
LootboxID?: string;
|
|
314
367
|
Count?: number;
|
|
315
|
-
|
|
368
|
+
/** Chosen payment option. Empty = first one available on this platform. */
|
|
369
|
+
SelectedOptionID?: string;
|
|
370
|
+
/** Store receipt — required when the chosen option is paid with real money. */
|
|
371
|
+
Payment?: PaymentProof;
|
|
316
372
|
}
|
|
317
373
|
declare const LootboxAction: {
|
|
318
374
|
readonly GetDefinitions: "GetDefinitions";
|
|
@@ -394,7 +450,15 @@ declare const RewardAction: {
|
|
|
394
450
|
};
|
|
395
451
|
type RewardAction = (typeof RewardAction)[keyof typeof RewardAction];
|
|
396
452
|
type ExperimentVariantCondition = { ExperimentID?: null | string; Variants?: null | Array<string>; [key: string]: unknown; };
|
|
397
|
-
|
|
453
|
+
/** What a TutorialGateCondition checks about the player's onboarding progress. */
|
|
454
|
+
declare const TutorialGateMode: {
|
|
455
|
+
readonly Completed: "Completed";
|
|
456
|
+
readonly Started: "Started";
|
|
457
|
+
readonly StepReached: "StepReached";
|
|
458
|
+
};
|
|
459
|
+
type TutorialGateMode = (typeof TutorialGateMode)[keyof typeof TutorialGateMode];
|
|
460
|
+
type TutorialGateCondition = { FlowIDs?: null | Array<string>; Mode?: null | 'Completed' | 'Started' | 'StepReached'; StepID?: null | string; Negate?: null | boolean; SkippedCountsAsCompleted?: null | boolean; [key: string]: unknown; };
|
|
461
|
+
type SegmentGate = { Segments?: null | Array<string>; MinPremiumTier?: null | number; RequiredPremiumIDs?: null | Array<string>; MinLevel?: null | number; MaxLevel?: null | number; Countries?: null | Array<string>; RegisteredWithinDays?: null | number; ActiveWithinDays?: null | number; Experiment?: null | ExperimentVariantCondition; Tutorial?: null | TutorialGateCondition; Platforms?: null | Array<'Unknown' | 'Web' | 'Android' | 'Ios'>; [key: string]: unknown; };
|
|
398
462
|
type RelativeWindow = { OffsetSecondsFromParentStart?: null | number; DurationSeconds?: null | number; AllowEarningAfterEnd?: null | boolean; ClaimGraceHours?: null | number; [key: string]: unknown; };
|
|
399
463
|
type ScheduledWindow = { StartUtc?: null | string; EndUtc?: null | string; AllowEarningAfterEnd?: null | boolean; ClaimGraceHours?: null | number; [key: string]: unknown; };
|
|
400
464
|
type ScheduleChain = { AnchorUtc?: null | string; MaxCycles?: null | number; PauseBetweenPhasesSec?: null | number; PauseBetweenCyclesSec?: null | number; [key: string]: unknown; };
|
|
@@ -530,7 +594,117 @@ declare const QuestAction: {
|
|
|
530
594
|
readonly ClaimGroupCompletionReward: "ClaimGroupCompletionReward";
|
|
531
595
|
};
|
|
532
596
|
type QuestAction = (typeof QuestAction)[keyof typeof QuestAction];
|
|
533
|
-
|
|
597
|
+
|
|
598
|
+
declare const TutorialStepCompletionMode: {
|
|
599
|
+
/** The client calls completeStep itself ("the player tapped Next"). Default. */
|
|
600
|
+
readonly ClientAck: "ClientAck";
|
|
601
|
+
/** An engine game event closes it — the client only reports it was shown. */
|
|
602
|
+
readonly SystemEvent: "SystemEvent";
|
|
603
|
+
/** Closes on being shown (reportStepShown) — an informational aside. */
|
|
604
|
+
readonly Auto: "Auto";
|
|
605
|
+
/** Several triggers with an explicit all/any rule. */
|
|
606
|
+
readonly Composite: "Composite";
|
|
607
|
+
};
|
|
608
|
+
type TutorialStepCompletionMode = (typeof TutorialStepCompletionMode)[keyof typeof TutorialStepCompletionMode];
|
|
609
|
+
declare const TutorialRestartPolicy: {
|
|
610
|
+
readonly Never: "Never";
|
|
611
|
+
readonly OnRequest: "OnRequest";
|
|
612
|
+
readonly Always: "Always";
|
|
613
|
+
};
|
|
614
|
+
type TutorialRestartPolicy = (typeof TutorialRestartPolicy)[keyof typeof TutorialRestartPolicy];
|
|
615
|
+
declare const TutorialFlowStatus: {
|
|
616
|
+
readonly NotStarted: "NotStarted";
|
|
617
|
+
readonly InProgress: "InProgress";
|
|
618
|
+
readonly Completed: "Completed";
|
|
619
|
+
readonly Skipped: "Skipped";
|
|
620
|
+
/** Expired per Policy.ExpireAfterSeconds without being completed. */
|
|
621
|
+
readonly Expired: "Expired";
|
|
622
|
+
};
|
|
623
|
+
type TutorialFlowStatus = (typeof TutorialFlowStatus)[keyof typeof TutorialFlowStatus];
|
|
624
|
+
declare const TutorialScriptModule: {
|
|
625
|
+
readonly GameLoop: "GameLoop";
|
|
626
|
+
};
|
|
627
|
+
type TutorialScriptModule = (typeof TutorialScriptModule)[keyof typeof TutorialScriptModule];
|
|
628
|
+
declare const TutorialBoardAction: {
|
|
629
|
+
readonly Raid: "Raid";
|
|
630
|
+
readonly Attack: "Attack";
|
|
631
|
+
};
|
|
632
|
+
type TutorialBoardAction = (typeof TutorialBoardAction)[keyof typeof TutorialBoardAction];
|
|
633
|
+
type TutorialStepIdentity = { Title?: null | string; TitleKey?: null | string; Body?: null | string; BodyKey?: null | string; AnchorID?: null | string; HighlightTarget?: null | string; AssetPaths?: null | Record<string, string>; UiHint?: null | Record<string, string>; [key: string]: unknown; };
|
|
634
|
+
type TutorialStepCompletion = { Mode?: null | 'SystemEvent' | 'ClientAck' | 'Auto' | 'Composite'; Triggers?: null | Array<TriggerSource>; TargetValue?: null | number; RequireAllTriggers?: null | boolean; [key: string]: unknown; };
|
|
635
|
+
type TutorialStepEffects = { Grant?: null | ResourceGrant; UnlockFeatures?: null | Array<string>; [key: string]: unknown; };
|
|
636
|
+
type TutorialBoardScript = { TileType?: null | string; TileIndex?: null | number; ChanceOutcomeID?: null | string; RandomActionType?: null | 'Raid' | 'Attack'; [key: string]: unknown; };
|
|
637
|
+
type TutorialScriptedOutcome = { Module?: null | 'GameLoop'; Board?: null | TutorialBoardScript; MaxUses?: null | number; [key: string]: unknown; };
|
|
638
|
+
type TutorialStepPolicy = { Skippable?: null | boolean; TimeoutSeconds?: null | number; [key: string]: unknown; };
|
|
639
|
+
type TutorialStepDefinition = { StepID?: null | string; Order?: null | number; Identity?: null | TutorialStepIdentity; Completion?: null | TutorialStepCompletion; Effects?: null | TutorialStepEffects; Script?: null | TutorialScriptedOutcome; Policy?: null | TutorialStepPolicy; [key: string]: unknown; };
|
|
640
|
+
type TutorialIdentity = { DisplayName?: null | string; DisplayNameKey?: null | string; Description?: null | string; DescriptionKey?: null | string; SortOrder?: null | number; AssetPaths?: null | Record<string, string>; CustomParams?: null | Record<string, string>; [key: string]: unknown; };
|
|
641
|
+
type TutorialAvailability = { Schedule?: null | ScheduleSpec; Gate?: null | SegmentGate; RequiredFlowIDs?: null | Array<string>; AutoStart?: null | boolean; StartTrigger?: null | TriggerSource; [key: string]: unknown; };
|
|
642
|
+
type TutorialFlowPolicy = { Skippable?: null | boolean; SkippableFromOrder?: null | number; RestartPolicy?: null | 'Never' | 'OnRequest' | 'Always'; ExpireAfterSeconds?: null | number; IsBlocking?: null | boolean; UnlockFeatures?: null | Array<string>; [key: string]: unknown; };
|
|
643
|
+
type TutorialReward = { Grant?: null | ResourceGrant; AutoClaim?: null | boolean; [key: string]: unknown; };
|
|
644
|
+
type TutorialPresetBindings = { Availability?: null | PresetBinding; Policy?: null | PresetBinding; Reward?: null | PresetBinding; Steps?: null | PresetBinding; [key: string]: unknown; };
|
|
645
|
+
type TutorialFlowDefinition = { FlowID?: null | string; Identity?: null | TutorialIdentity; Availability?: null | TutorialAvailability; Policy?: null | TutorialFlowPolicy; Steps?: null | Record<string, TutorialStepDefinition>; Reward?: null | TutorialReward; Presets?: null | TutorialPresetBindings; [key: string]: unknown; };
|
|
646
|
+
type TutorialBlockingPolicy = { BlockingFlowIDs?: null | Array<string>; BlockedModules?: null | Array<string>; BlockedActions?: null | Record<string, Array<string>>; BlockBeforeStart?: null | boolean; SkipLiftsBlock?: null | boolean; [key: string]: unknown; };
|
|
647
|
+
type TutorialGlobalSettings = { IsEnabled?: null | boolean; MaxActiveFlows?: null | number; Blocking?: null | TutorialBlockingPolicy; [key: string]: unknown; };
|
|
648
|
+
type TutorialPresetRegistry = { Availability?: null | Record<string, TutorialAvailability>; Policy?: null | Record<string, TutorialFlowPolicy>; Reward?: null | Record<string, TutorialReward>; Steps?: null | Record<string, Record<string, TutorialStepDefinition>>; [key: string]: unknown; };
|
|
649
|
+
type TutorialDefinitions = { Flows?: null | Record<string, TutorialFlowDefinition>; Settings?: null | TutorialGlobalSettings; Presets?: null | TutorialPresetRegistry; [key: string]: unknown; };
|
|
650
|
+
interface UserTutorialStepState {
|
|
651
|
+
StepID?: string;
|
|
652
|
+
Progress?: number;
|
|
653
|
+
FiredTriggers?: number[];
|
|
654
|
+
ShownAtUtc?: string;
|
|
655
|
+
CompletedAtUtc?: string;
|
|
656
|
+
Skipped?: boolean;
|
|
657
|
+
ScriptUses?: number;
|
|
658
|
+
}
|
|
659
|
+
interface UserTutorialFlowState {
|
|
660
|
+
FlowID?: string;
|
|
661
|
+
Status?: TutorialFlowStatus;
|
|
662
|
+
CurrentStepID?: string | null;
|
|
663
|
+
StartedAtUtc?: string;
|
|
664
|
+
FinishedAtUtc?: string;
|
|
665
|
+
Steps?: Record<string, UserTutorialStepState>;
|
|
666
|
+
RestartCount?: number;
|
|
667
|
+
RewardClaimed?: boolean;
|
|
668
|
+
/**
|
|
669
|
+
* Experiment and variant captured when the flow STARTED. Not a duplicate of the live
|
|
670
|
+
* assignment: changing the experiment salt reassigns the player, and without the snapshot the
|
|
671
|
+
* funnel would attribute the run to a variant they never saw.
|
|
672
|
+
*/
|
|
673
|
+
ExperimentID?: string | null;
|
|
674
|
+
VariantID?: string | null;
|
|
675
|
+
}
|
|
676
|
+
interface UserTutorialState {
|
|
677
|
+
Flows?: Record<string, UserTutorialFlowState>;
|
|
678
|
+
LastUpdatedUtc?: string;
|
|
679
|
+
}
|
|
680
|
+
type TutorialFlowView = { FlowID: string; Status: 'Completed' | 'Expired' | 'NotStarted' | 'InProgress' | 'Skipped'; TotalSteps: number; CompletedSteps: number; CanSkip: boolean; RewardClaimed: boolean; RewardPending: boolean; CurrentStepID?: null | string; CurrentStep?: null | TutorialStepDefinition; VariantID?: null | string; [key: string]: unknown; };
|
|
681
|
+
type GetUserTutorialStateResponse = { State?: null | UserTutorialState; Flows?: null | Array<TutorialFlowView>; UnlockedFeatures?: null | Array<string>; [key: string]: unknown; };
|
|
682
|
+
type TutorialFlowResponse = { Flow?: null | TutorialFlowView; [key: string]: unknown; };
|
|
683
|
+
type TutorialClaimResponse = { FlowID?: null | string; Granted?: null | ResourceOperation; [key: string]: unknown; };
|
|
684
|
+
type TutorialFlowBatchResponse = Array<{ Id: string; Success: boolean; Error?: null | string; Data?: null | TutorialFlowResponse; }>;
|
|
685
|
+
type TutorialStepProgress = { FlowID: string; StepID: string; Progress: number; Target: number; Completed: boolean; [key: string]: unknown; };
|
|
686
|
+
interface TutorialRequest extends BaseRequest {
|
|
687
|
+
FlowID?: string;
|
|
688
|
+
StepID?: string;
|
|
689
|
+
/** CompleteStepsBatch: steps to close, in order. Deduped by StepID. */
|
|
690
|
+
StepIDs?: string[];
|
|
691
|
+
/** Allow auto-start while reading state. Default true. */
|
|
692
|
+
AutoStart?: boolean;
|
|
693
|
+
}
|
|
694
|
+
declare const TutorialAction: {
|
|
695
|
+
readonly GetTutorialDefinitions: "GetTutorialDefinitions";
|
|
696
|
+
readonly GetUserTutorialState: "GetUserTutorialState";
|
|
697
|
+
readonly StartFlow: "StartFlow";
|
|
698
|
+
readonly ReportStepShown: "ReportStepShown";
|
|
699
|
+
readonly CompleteStep: "CompleteStep";
|
|
700
|
+
readonly CompleteStepsBatch: "CompleteStepsBatch";
|
|
701
|
+
readonly SkipStep: "SkipStep";
|
|
702
|
+
readonly SkipFlow: "SkipFlow";
|
|
703
|
+
readonly ClaimFlowReward: "ClaimFlowReward";
|
|
704
|
+
readonly ResetFlow: "ResetFlow";
|
|
705
|
+
};
|
|
706
|
+
type TutorialAction = (typeof TutorialAction)[keyof typeof TutorialAction];
|
|
707
|
+
type ResourceEntry = { Type?: null | 'Item' | 'VirtualCurrency' | 'CryptoCurrency' | 'RewardedVideoCredit' | 'Purchase'; CurrencyID?: null | string; Amount?: null | number; CatalogID?: null | string; ItemID?: null | string; ProductID?: null | string; };
|
|
534
708
|
type EventTokenAddress = { EntityID: string; Type?: null | 'TimedEvent' | 'Quest' | 'Leaderboard' | 'CoopEvent' | 'Season'; };
|
|
535
709
|
type EventTokenOperation = { Address?: null | EventTokenAddress; Amount?: null | number; Source?: null | string; };
|
|
536
710
|
type ResourceBundle = { Entries?: null | Array<ResourceEntry>; EventTokens?: null | Array<EventTokenOperation>; };
|
|
@@ -704,6 +878,7 @@ type UserSeasonStateResponse = UserSeasonState;
|
|
|
704
878
|
type ActiveSeasonInfo = { SeasonChainID: string; CycleIndex?: null | number; Season?: null | { SeasonID?: null | string; Order?: null | number; DurationSec?: null | number; DisplayName?: null | string; Description?: null | string; AssetPaths?: null | Record<string, string>; Tiers?: null | Array<{ Tier?: null | number; DisplayName?: null | string; AssetPaths?: null | Record<string, string>; RequiredTokens?: null | number; TierReachedReward?: null | ResourceGrant; [key: string]: unknown; }>; LinkedCollectionID?: null | string; CustomParams?: null | Record<string, string>; [key: string]: unknown; }; ComputedStartUtc?: null | string; ComputedEndUtc?: null | string; SecondsRemaining?: null | number; UserState?: null | UserSeasonState; NextTier?: null | { Tier?: null | number; DisplayName?: null | string; AssetPaths?: null | Record<string, string>; RequiredTokens?: null | number; TierReachedReward?: null | ResourceGrant; [key: string]: unknown; }; [key: string]: unknown; };
|
|
705
879
|
type GrantStatusTokensResponse = { SeasonChainID: string; NewTier: number; CurrentSeasonID?: null | string; AmountGranted?: null | number; NewStatusTokens?: null | number; OldTier?: null | number; TierUp?: null | boolean; };
|
|
706
880
|
type ClaimTierRewardResponse = { SeasonChainID: string; TierNumber: number; CurrentSeasonID?: null | string; Resources?: null | ResourceOperation; };
|
|
881
|
+
type ClaimTierRewardsBatchResponse = { ServerTimeUtc: string; Items: Array<{ Id: string; Success: boolean; Error?: null | string; Data?: null | ClaimTierRewardResponse; }>; Resources?: null | ResourceOperation; };
|
|
707
882
|
type SeasonChainDefinition = { SeasonChainID?: null | string; DisplayName?: null | string; Schedule?: null | ScheduleSpec; Seasons?: null | Array<{ SeasonID?: null | string; Order?: null | number; DurationSec?: null | number; DisplayName?: null | string; Description?: null | string; AssetPaths?: null | Record<string, string>; Tiers?: null | Array<{ Tier?: null | number; DisplayName?: null | string; AssetPaths?: null | Record<string, string>; RequiredTokens?: null | number; TierReachedReward?: null | ResourceGrant; [key: string]: unknown; }>; LinkedCollectionID?: null | string; CustomParams?: null | Record<string, string>; [key: string]: unknown; }>; GrantTokensAccessMode?: null | string; Gate?: null | SegmentGate; [key: string]: unknown; };
|
|
708
883
|
/** Root configuration of the title's season system, returned by getDefinitions(). */
|
|
709
884
|
interface SeasonDefinitions {
|
|
@@ -713,6 +888,12 @@ interface SeasonRequest extends BaseRequest {
|
|
|
713
888
|
SeasonChainID?: string;
|
|
714
889
|
Amount?: number;
|
|
715
890
|
TierNumber?: number;
|
|
891
|
+
/**
|
|
892
|
+
* ClaimTierRewardsBatch: tier numbers to claim. Non-positive entries are dropped, the rest is
|
|
893
|
+
* deduped keeping order and clamped to the platform batch size. Needed because tiers are
|
|
894
|
+
* reached in batches — one token grant can raise the player through several at once.
|
|
895
|
+
*/
|
|
896
|
+
TierNumbers?: number[];
|
|
716
897
|
}
|
|
717
898
|
declare const SeasonAction: {
|
|
718
899
|
readonly GetDefinitions: "GetDefinitions";
|
|
@@ -720,6 +901,7 @@ declare const SeasonAction: {
|
|
|
720
901
|
readonly GetUserState: "GetUserState";
|
|
721
902
|
readonly GrantStatusTokens: "GrantStatusTokens";
|
|
722
903
|
readonly ClaimTierReward: "ClaimTierReward";
|
|
904
|
+
readonly ClaimTierRewardsBatch: "ClaimTierRewardsBatch";
|
|
723
905
|
};
|
|
724
906
|
type SeasonAction = (typeof SeasonAction)[keyof typeof SeasonAction];
|
|
725
907
|
|
|
@@ -740,7 +922,7 @@ interface UserPremiumState {
|
|
|
740
922
|
ActivatedTrialIDs?: string[];
|
|
741
923
|
MaxActiveTier?: number;
|
|
742
924
|
}
|
|
743
|
-
type PremiumDefinition = { PremiumID?: null | string; DisplayName?: null | string; Tier?: null | number; DurationDays?: null | number; TrialDurationDays?: null | number; PriceOptions?: null |
|
|
925
|
+
type PremiumDefinition = { PremiumID?: null | string; DisplayName?: null | string; Tier?: null | number; DurationDays?: null | number; TrialDurationDays?: null | number; PriceOptions?: null | PriceOptions; AppleProductID?: null | string; GoogleProductID?: null | string; Benefits?: null | Record<string, string>; [key: string]: unknown; };
|
|
744
926
|
interface PremiumDefinitions {
|
|
745
927
|
Definitions?: Record<string, PremiumDefinition> | null;
|
|
746
928
|
}
|
|
@@ -790,13 +972,13 @@ type UnlockCharactersBatchResponse = { ServerTimeUtc: string; Items: Array<{ Id:
|
|
|
790
972
|
type UpgradeCharacterLevelsBatchResponse = { ServerTimeUtc: string; Items: Array<{ Id: string; Success: boolean; Error?: null | string; Data?: null | UpgradeCharacterLevelResponse; }>; Resources?: null | ResourceOperation; };
|
|
791
973
|
type UpgradeStatLevelsBatchResponse = { ServerTimeUtc: string; Items: Array<{ Id: string; Success: boolean; Error?: null | string; Data?: null | UpgradeStatLevelResponse; }>; Resources?: null | ResourceOperation; };
|
|
792
974
|
type StatRequirement = { RequiredStatID: string; RequiredLevel: number; [key: string]: unknown; };
|
|
793
|
-
type StatDefinition = { StatID: string; TypeID?: null | string; DisplayName?: null | string; Description?: null | string; MaxLevel?: null | number; Weight?: null | number;
|
|
794
|
-
type CharacterLevelDefinition = { Level?: null | number;
|
|
975
|
+
type StatDefinition = { StatID: string; TypeID?: null | string; DisplayName?: null | string; Description?: null | string; MaxLevel?: null | number; Weight?: null | number; PriceOptions?: null | PriceOptions; CostScalingFactor?: null | number; BaseStatValue?: null | number; StatScalingFactor?: null | number; CharacterLevelScalingFactor?: null | number; Requirements?: null | Array<StatRequirement>; AssetPaths?: null | Record<string, string>; [key: string]: unknown; };
|
|
976
|
+
type CharacterLevelDefinition = { Level?: null | number; PriceOptions?: null | PriceOptions; GlobalStatMultiplier?: null | number; StatMaxLevelMultiplier?: null | number; AssetPaths?: null | Record<string, string>; [key: string]: unknown; };
|
|
795
977
|
type CharacterEquipmentSlot = { SlotID: string; MinCharacterLevel?: null | number; StatRequirements?: null | Array<StatRequirement>; AllowedRarityIDs?: null | Array<string>; AllowedItemTags?: null | Array<string>; MinItemLevel?: null | number; MaxItemLevel?: null | number; [key: string]: unknown; };
|
|
796
978
|
type CharacterEquipment = { Slots?: null | Record<string, CharacterEquipmentSlot>; [key: string]: unknown; };
|
|
797
979
|
type CharacterIdentity = { DisplayName?: null | string; Description?: null | string; Lore?: null | string; SortOrder?: null | number; AssetPaths?: null | Record<string, string>; [key: string]: unknown; };
|
|
798
980
|
type CharacterClassification = { ClassID?: null | string; RarityID?: null | string; Tags?: null | Array<string>; [key: string]: unknown; };
|
|
799
|
-
type CharacterUnlock = { UnlockedByDefault?: null | boolean;
|
|
981
|
+
type CharacterUnlock = { UnlockedByDefault?: null | boolean; PriceOptions?: null | PriceOptions; [key: string]: unknown; };
|
|
800
982
|
type CharacterDefinition = { CharacterID: string; Identity?: null | CharacterIdentity; Classification?: null | CharacterClassification; Unlock?: null | CharacterUnlock; Presets?: null | { Stats?: null | PresetBinding; Levels?: null | PresetBinding; Equipment?: null | PresetBinding; [key: string]: unknown; }; Equipment?: null | CharacterEquipment; Stats?: null | Record<string, StatDefinition>; Levels?: null | Record<string, CharacterLevelDefinition>; [key: string]: unknown; };
|
|
801
983
|
type StatsPreset = { Stats?: null | Record<string, StatDefinition>; [key: string]: unknown; };
|
|
802
984
|
type LevelsPreset = { Levels?: null | Record<string, CharacterLevelDefinition>; [key: string]: unknown; };
|
|
@@ -839,6 +1021,13 @@ interface CharacterStatRef {
|
|
|
839
1021
|
}
|
|
840
1022
|
interface CharacterRequest extends BaseRequest {
|
|
841
1023
|
CharacterID?: string;
|
|
1024
|
+
/**
|
|
1025
|
+
* Chosen way to pay (`PriceOption.OptionID`). Empty = the first option available on this
|
|
1026
|
+
* player's platform, which is what keeps single-price entities working unchanged.
|
|
1027
|
+
*/
|
|
1028
|
+
SelectedOptionID?: string;
|
|
1029
|
+
/** Store receipt. Required exactly when the chosen option is paid in a store. */
|
|
1030
|
+
Payment?: PaymentProof;
|
|
842
1031
|
StatID?: string;
|
|
843
1032
|
ItemsToEquip?: EquipSlotPair[];
|
|
844
1033
|
UnequipSlotIDs?: string[];
|
|
@@ -891,14 +1080,19 @@ interface UserMatchState {
|
|
|
891
1080
|
CreationLimits?: UserMatchCreationLimitState | null;
|
|
892
1081
|
}
|
|
893
1082
|
type BattleResult = { WinnerUserID?: null | string; LoserUserID?: null | string; Entry?: null | ResourceBundle; NetReward?: null | ResourceBundle; BattleLog?: null | Array<{ RoundIndex?: null | number; AttackerID?: null | string; DefenderID?: null | string; AttackZone?: null | 'Head' | 'Torso' | 'Legs'; DefenseZone?: null | 'Head' | 'Torso' | 'Legs'; HitType?: null | 'Hit' | 'Critical' | 'Block' | 'Dodge'; DamageDealt?: null | number; DefenderHpRemaining?: null | number; [key: string]: unknown; }>; IsDraw?: null | boolean; P1BattleProfile?: null | { UserID?: null | string; SelectedCharacterID?: null | string; SelectedCharacter?: null | CharacterModel; BattleStrategy?: null | Array<BattleStepConfig>; UnstackableItems?: null | Record<string, UnstackableItemInstanceState>; Stats?: null | { MaxHp?: null | number; CurrentHp?: null | number; Damage?: null | number; AttackSpeed?: null | number; CritChance?: null | number; CritMultiplier?: null | number; Armor?: null | number; DodgeChance?: null | number; [key: string]: unknown; }; [key: string]: unknown; }; P2BattleProfile?: null | { UserID?: null | string; SelectedCharacterID?: null | string; SelectedCharacter?: null | CharacterModel; BattleStrategy?: null | Array<BattleStepConfig>; UnstackableItems?: null | Record<string, UnstackableItemInstanceState>; Stats?: null | { MaxHp?: null | number; CurrentHp?: null | number; Damage?: null | number; AttackSpeed?: null | number; CritChance?: null | number; CritMultiplier?: null | number; Armor?: null | number; DodgeChance?: null | number; [key: string]: unknown; }; [key: string]: unknown; }; [key: string]: unknown; };
|
|
894
|
-
type PvPMatch = { MatchID: string; TitleID?: null | string; RuleID?: null | string; CreatedAt?: null | string; CreatorID?: null | string; CreatorCharacterID?: null | string; CreatorStrategy?: null | Array<BattleStepConfig>; TargetUserID?: null | string; Entry?: null | ResourceBundle; CreationCostPaid?: null | ResourceBundle; RefundCreationCostOnCancel?: null | boolean; JoinedByUserID?: null | string; JoinedByCharacterID?: null | string; JoinedAt?: null | string; Status?: null | 'Completed' | '
|
|
895
|
-
type CreateMatchResponse = { Status: 'Completed' | '
|
|
1083
|
+
type PvPMatch = { MatchID: string; TitleID?: null | string; RuleID?: null | string; CreatedAt?: null | string; CreatorID?: null | string; CreatorCharacterID?: null | string; CreatorStrategy?: null | Array<BattleStepConfig>; TargetUserID?: null | string; Entry?: null | ResourceBundle; CreationCostPaid?: null | ResourceBundle; RefundCreationCostOnCancel?: null | boolean; JoinedByUserID?: null | string; JoinedByCharacterID?: null | string; JoinedAt?: null | string; Status?: null | 'Completed' | 'InProgress' | 'Open' | 'Cancelled'; WinnerUserID?: null | string; CompletedAt?: null | string; IsRewardDistributed?: null | boolean; RewardDistributedAt?: null | string; [key: string]: unknown; };
|
|
1084
|
+
type CreateMatchResponse = { Status: 'Completed' | 'InProgress' | 'Open' | 'Cancelled'; MatchID: string; Entry?: null | ResourceBundle; Resources?: null | ResourceOperation; };
|
|
896
1085
|
type UpdateMatchResponse = { Match?: null | PvPMatch; };
|
|
897
|
-
type CancelMatchResponse = { MatchID: string; Status: 'Completed' | '
|
|
1086
|
+
type CancelMatchResponse = { MatchID: string; Status: 'Completed' | 'InProgress' | 'Open' | 'Cancelled'; Resources?: null | ResourceOperation; };
|
|
898
1087
|
type InstantBattleResponse = { Battle?: null | BattleResult; Resources?: null | ResourceOperation; ResourcesDual?: null | ResourceDualPartyResult; };
|
|
899
1088
|
type MatchesPageResponse = { Matches?: null | Array<PvPMatch>; Page?: null | number; PageSize?: null | number; HasMore?: null | boolean; };
|
|
900
1089
|
interface MatchRequest extends BaseRequest {
|
|
901
1090
|
MatchID?: string;
|
|
1091
|
+
/**
|
|
1092
|
+
* Chosen way to pay (`PriceOption.OptionID`). Empty = the first option available on this
|
|
1093
|
+
* player's platform, which keeps single-price entities working unchanged.
|
|
1094
|
+
*/
|
|
1095
|
+
SelectedOptionID?: string;
|
|
902
1096
|
TargetUserID?: string;
|
|
903
1097
|
/** Entry stake for one side (currencies / stackable items / event tokens). */
|
|
904
1098
|
Entry?: ResourceBundle;
|
|
@@ -926,7 +1120,7 @@ type MatchAction = (typeof MatchAction)[keyof typeof MatchAction];
|
|
|
926
1120
|
type InstantBattleSettings = { StatMapping?: null | { HealthStatID?: null | string; DamageStatID?: null | string; ArmorStatID?: null | string; AttackSpeedStatID?: null | string; CritChanceStatID?: null | string; CritDamageStatID?: null | string; DodgeStatID?: null | string; AllMightStatID?: null | string; [key: string]: unknown; }; Combat?: null | { MaxRounds?: null | number; BlockDamageMultiplier?: null | number; MinHitDamage?: null | number; DefaultCritMultiplier?: null | number; MaxCritChance?: null | number; MaxDodgeChance?: null | number; [key: string]: unknown; }; Formula?: null | { Health?: null | { Terms?: null | Array<{ Coefficient?: null | number; Factors?: null | Array<{ Source?: null | 'Constant' | 'Stat' | 'RankMultiplier' | 'AllMight' | 'GearFlat' | 'GearPercent'; StatID?: null | string; Value?: null | number; OnePlus?: null | boolean; [key: string]: unknown; }>; [key: string]: unknown; }>; [key: string]: unknown; }; Damage?: null | { Terms?: null | Array<{ Coefficient?: null | number; Factors?: null | Array<{ Source?: null | 'Constant' | 'Stat' | 'RankMultiplier' | 'AllMight' | 'GearFlat' | 'GearPercent'; StatID?: null | string; Value?: null | number; OnePlus?: null | boolean; [key: string]: unknown; }>; [key: string]: unknown; }>; [key: string]: unknown; }; Armor?: null | { Terms?: null | Array<{ Coefficient?: null | number; Factors?: null | Array<{ Source?: null | 'Constant' | 'Stat' | 'RankMultiplier' | 'AllMight' | 'GearFlat' | 'GearPercent'; StatID?: null | string; Value?: null | number; OnePlus?: null | boolean; [key: string]: unknown; }>; [key: string]: unknown; }>; [key: string]: unknown; }; AttackSpeed?: null | { Terms?: null | Array<{ Coefficient?: null | number; Factors?: null | Array<{ Source?: null | 'Constant' | 'Stat' | 'RankMultiplier' | 'AllMight' | 'GearFlat' | 'GearPercent'; StatID?: null | string; Value?: null | number; OnePlus?: null | boolean; [key: string]: unknown; }>; [key: string]: unknown; }>; [key: string]: unknown; }; CritChance?: null | { Terms?: null | Array<{ Coefficient?: null | number; Factors?: null | Array<{ Source?: null | 'Constant' | 'Stat' | 'RankMultiplier' | 'AllMight' | 'GearFlat' | 'GearPercent'; StatID?: null | string; Value?: null | number; OnePlus?: null | boolean; [key: string]: unknown; }>; [key: string]: unknown; }>; [key: string]: unknown; }; CritDamage?: null | { Terms?: null | Array<{ Coefficient?: null | number; Factors?: null | Array<{ Source?: null | 'Constant' | 'Stat' | 'RankMultiplier' | 'AllMight' | 'GearFlat' | 'GearPercent'; StatID?: null | string; Value?: null | number; OnePlus?: null | boolean; [key: string]: unknown; }>; [key: string]: unknown; }>; [key: string]: unknown; }; Dodge?: null | { Terms?: null | Array<{ Coefficient?: null | number; Factors?: null | Array<{ Source?: null | 'Constant' | 'Stat' | 'RankMultiplier' | 'AllMight' | 'GearFlat' | 'GearPercent'; StatID?: null | string; Value?: null | number; OnePlus?: null | boolean; [key: string]: unknown; }>; [key: string]: unknown; }>; [key: string]: unknown; }; [key: string]: unknown; }; [key: string]: unknown; };
|
|
927
1121
|
type MatchEconomySettings = { BurnRate?: null | number; [key: string]: unknown; };
|
|
928
1122
|
type MatchEntrySettings = { AllowVirtualCurrency?: null | boolean; AllowItems?: null | boolean; AllowEventTokens?: null | boolean; Allowed?: null | Array<{ Kind?: null | 'Item' | 'VirtualCurrency' | 'EventToken'; CurrencyID?: null | string; CatalogID?: null | string; ItemID?: null | string; TokenType?: null | 'TimedEvent' | 'Quest' | 'Leaderboard' | 'CoopEvent' | 'Season'; EntityID?: null | string; MinAmount?: null | number; MaxAmount?: null | number; [key: string]: unknown; }>; MaxPositions?: null | number; [key: string]: unknown; };
|
|
929
|
-
type MatchCreationSettings = {
|
|
1123
|
+
type MatchCreationSettings = { PriceOptions?: null | PriceOptions; RefundCostOnCancel?: null | boolean; MaxOpenMatches?: null | number; Limits?: null | LimitSpec; AllowPrivateMatches?: null | boolean; MaxMatchesPerOpponentPerDay?: null | number; [key: string]: unknown; };
|
|
930
1124
|
/** One instant-battle rule, keyed by RuleID in InstantBattleDefinitions.Rules. */
|
|
931
1125
|
interface InstantBattleRule {
|
|
932
1126
|
RuleID?: string | null;
|
|
@@ -981,8 +1175,9 @@ interface UserCollectionState {
|
|
|
981
1175
|
[key: string]: unknown;
|
|
982
1176
|
}
|
|
983
1177
|
type GrantedCollectible = { CollectibleID: string; Rarity?: null | number; IsSpecial?: null | boolean; IsDuplicate?: null | boolean; CollectionCurrencyConverted?: null | number; };
|
|
984
|
-
type
|
|
985
|
-
type
|
|
1178
|
+
type PackOpenResult = { GrantedCollectibles?: null | Array<GrantedCollectible>; DuplicateCollectibles?: null | Array<GrantedCollectible>; CollectionCurrencyEarned?: null | number; };
|
|
1179
|
+
type OpenPackResponse = { OpenedCount?: null | number; Packs?: null | Array<PackOpenResult>; GrantedCollectibles?: null | Array<GrantedCollectible>; DuplicateCollectibles?: null | Array<GrantedCollectible>; CollectionCurrencyEarned?: null | number; NewCollectionCurrencyBalance?: null | number; NewlyCompletedSetIDs?: null | Array<string>; CollectionJustCompleted?: null | boolean; Resources?: null | ResourceOperation; TriggeredPity?: null | Array<unknown>; };
|
|
1180
|
+
type OpenCollectionChestResponse = { OpenedCount?: null | number; Chests?: null | Array<PackOpenResult>; GrantedCollectibles?: null | Array<GrantedCollectible>; DuplicateCollectibles?: null | Array<GrantedCollectible>; CollectionCurrencyEarned?: null | number; NewCollectionCurrencyBalance?: null | number; Resources?: null | ResourceOperation; TriggeredPity?: null | Array<unknown>; };
|
|
986
1181
|
type UseCollectibleJokerResponse = { GrantedCollectibleID?: null | string; NewlyCompletedSetID?: null | string; CollectionJustCompleted?: null | boolean; Resources?: null | ResourceOperation; };
|
|
987
1182
|
type ClaimSetRewardResponse = { SetID: string; Resources?: null | ResourceOperation; };
|
|
988
1183
|
type ClaimSetRewardsBatchResponse = Array<{ Id: string; Success: boolean; Error?: null | string; Data?: null | ClaimSetRewardResponse; }>;
|
|
@@ -994,13 +1189,22 @@ type AcceptTradeOfferResponse = { OfferID: string; ReceivedCollectibleID?: null
|
|
|
994
1189
|
type DeclineTradeOfferResponse = { OfferID: string; Resources?: null | ResourceOperation; };
|
|
995
1190
|
type GetTradeOffersResponse = { Offers?: null | Array<CollectionTradeOfferDocument>; };
|
|
996
1191
|
type CollectionDefinition = { CollectionID?: null | string; DisplayName?: null | string; Description?: null | string; AssetPaths?: null | Record<string, string>; SeasonChainID?: null | string; Sets?: null | Array<{ SetID?: null | string; DisplayName?: null | string; AssetPaths?: null | Record<string, string>; SortOrder?: null | number; Collectibles?: null | Array<{ CollectibleID?: null | string; DisplayName?: null | string; AssetPaths?: null | Record<string, string>; Rarity?: null | number; HasSpecialVersion?: null | boolean; SortOrder?: null | number; [key: string]: unknown; }>; SetCompletionReward?: null | ResourceGrant; [key: string]: unknown; }>; GrandPrize?: null | ResourceGrant; [key: string]: unknown; };
|
|
997
|
-
type CollectionPackTypeDefinition = { PackTypeID?: null | string;
|
|
1192
|
+
type CollectionPackTypeDefinition = { PackTypeID?: null | string; PriceOptions?: null | PriceOptions; BonusRewardSlots?: null | Array<LootboxRewardSlot>; PityRules?: null | Array<LootboxPityRule>; Presets?: null | { BonusRewardSlots?: null | PresetBinding; PityRules?: null | PresetBinding; [key: string]: unknown; }; DisplayName?: null | string; AssetPaths?: null | Record<string, string>; CollectibleCount?: null | number; MaxOpenCount?: null | number; GuaranteedMinRarity?: null | number; GuaranteeMaxRarity?: null | boolean; RarityWeights?: null | Record<string, number>; ColorTier?: null | number; [key: string]: unknown; };
|
|
998
1193
|
type DuplicateCollectionCurrencyConversion = { Rarity?: null | number; CollectionCurrencyGranted?: null | number; [key: string]: unknown; };
|
|
999
|
-
type CollectionChestDefinition = { CollectionChestID?: null | string; DisplayName?: null | string; AssetPaths?: null | Record<string, string>; CollectionCurrencyCost?: null | number; MinCollectibleCount?: null | number; MaxCollectibleCount?: null | number; GuaranteedMinRarity?: null | number; BonusRewardSlots?: null | Array<LootboxRewardSlot>; PityRules?: null | Array<LootboxPityRule>; Presets?: null | { BonusRewardSlots?: null | PresetBinding; PityRules?: null | PresetBinding; [key: string]: unknown; }; Tier?: null | number; [key: string]: unknown; };
|
|
1194
|
+
type CollectionChestDefinition = { CollectionChestID?: null | string; DisplayName?: null | string; AssetPaths?: null | Record<string, string>; CollectionCurrencyCost?: null | number; MaxOpenCount?: null | number; MinCollectibleCount?: null | number; MaxCollectibleCount?: null | number; GuaranteedMinRarity?: null | number; BonusRewardSlots?: null | Array<LootboxRewardSlot>; PityRules?: null | Array<LootboxPityRule>; Presets?: null | { BonusRewardSlots?: null | PresetBinding; PityRules?: null | PresetBinding; [key: string]: unknown; }; Tier?: null | number; [key: string]: unknown; };
|
|
1000
1195
|
type SpecialTradeEventDefinition = { SpecialTradeEventID?: null | string; StartUtc?: null | string; EndUtc?: null | string; AllowedSpecialCollectibleIDs?: null | Array<string>; SpecialTradeEventDailyTradeLimit?: null | number; [key: string]: unknown; };
|
|
1001
1196
|
/** The title's collection-system config (config), returned by getCollectionDefinitions(). */
|
|
1197
|
+
/** Module-wide Collection settings shared by every collection and pack type of the title. */
|
|
1198
|
+
interface CollectionGlobalSettings {
|
|
1199
|
+
/** Max packs per single OpenPack call. null = platform default (100). <= 0 = disabled. */
|
|
1200
|
+
MaxPackOpenCount?: number | null;
|
|
1201
|
+
/** Same for collection chests (OpenCollectionChest) — a separate knob. */
|
|
1202
|
+
MaxChestOpenCount?: number | null;
|
|
1203
|
+
}
|
|
1002
1204
|
interface CollectionDefinitions {
|
|
1003
1205
|
Collections?: Record<string, CollectionDefinition> | null;
|
|
1206
|
+
/** Module-wide settings (multi-open ceilings). null = platform defaults apply. */
|
|
1207
|
+
Settings?: CollectionGlobalSettings | null;
|
|
1004
1208
|
PackTypes?: Record<string, CollectionPackTypeDefinition> | null;
|
|
1005
1209
|
CollectionChests?: CollectionChestDefinition[] | null;
|
|
1006
1210
|
DuplicateConversions?: DuplicateCollectionCurrencyConversion[] | null;
|
|
@@ -1017,6 +1221,13 @@ interface CollectionSetRef {
|
|
|
1017
1221
|
}
|
|
1018
1222
|
interface CollectionRequest extends BaseRequest {
|
|
1019
1223
|
CollectionID?: string;
|
|
1224
|
+
/**
|
|
1225
|
+
* Chosen way to pay (`PriceOption.OptionID`). Empty = the first option available on this
|
|
1226
|
+
* player's platform, which is what keeps single-price entities working unchanged.
|
|
1227
|
+
*/
|
|
1228
|
+
SelectedOptionID?: string;
|
|
1229
|
+
/** Store receipt. Required exactly when the chosen option is paid in a store. */
|
|
1230
|
+
Payment?: PaymentProof;
|
|
1020
1231
|
CollectibleID?: string;
|
|
1021
1232
|
PackTypeID?: string;
|
|
1022
1233
|
CollectionChestID?: string;
|
|
@@ -1028,6 +1239,11 @@ interface CollectionRequest extends BaseRequest {
|
|
|
1028
1239
|
RequestedCollectibleID?: string;
|
|
1029
1240
|
RequestedCollectibleIsSpecial?: boolean;
|
|
1030
1241
|
OfferID?: string;
|
|
1242
|
+
/**
|
|
1243
|
+
* How many packs/chests to open in a single OpenPack / OpenCollectionChest call. Default 1.
|
|
1244
|
+
* Clamped to [1, MaxOpenCount].
|
|
1245
|
+
*/
|
|
1246
|
+
Count?: number;
|
|
1031
1247
|
}
|
|
1032
1248
|
declare const CollectionAction: {
|
|
1033
1249
|
readonly GetDefinitions: "GetDefinitions";
|
|
@@ -1084,7 +1300,7 @@ type CoopPartnerObjectState = { Index?: null | number; OwnerUserID?: null | stri
|
|
|
1084
1300
|
type CoopBuildObjectsState = { Objects?: null | Array<CoopPartnerObjectState>; [key: string]: unknown; };
|
|
1085
1301
|
type CoopGroupDocument = { GroupID?: null | string; TitleID?: null | string; CoopChainID?: null | string; CoopEventID?: null | string; CycleIndex?: null | number; Members?: null | Array<CoopGroupMember>; BuildObjectsState?: null | CoopBuildObjectsState; Status?: null | string; CreatedAtUtc?: null | string; ExpiresAtUtc?: null | string; Version?: null | number; [key: string]: unknown; };
|
|
1086
1302
|
type ActiveCoopEventInfo = { CoopChainID: string; [key: string]: unknown; };
|
|
1087
|
-
type CoopEventDefinition = { CoopEventID?: null | string; Order?: null | number; DurationSec?: null | number; DisplayName?: null | string; Description?: null | string; AssetPaths?: null | Record<string, string>; EventType?: null | string; PartnerCount?: null | number; MatchmakingTimeoutMinutes?: null | number; MemberGracePeriodMinutes?: null | number; BuildObjects?: null | { Objects?: null | Array<{ Index?: null | number; DisplayName?: null | string; AssetPaths?: null | Record<string, string>; MaxProgress?: null | number; CompletionReward?: null | ResourceGrant; [key: string]: unknown; }>;
|
|
1303
|
+
type CoopEventDefinition = { CoopEventID?: null | string; Order?: null | number; DurationSec?: null | number; DisplayName?: null | string; Description?: null | string; AssetPaths?: null | Record<string, string>; EventType?: null | string; PartnerCount?: null | number; MatchmakingTimeoutMinutes?: null | number; MemberGracePeriodMinutes?: null | number; BuildObjects?: null | { Objects?: null | Array<{ Index?: null | number; DisplayName?: null | string; AssetPaths?: null | Record<string, string>; MaxProgress?: null | number; CompletionReward?: null | ResourceGrant; [key: string]: unknown; }>; PriceOptions?: null | PriceOptions; SpinnerTable?: null | Array<{ DisplayName?: null | string; AssetPaths?: null | Record<string, string>; Weight?: null | number; MinProgress?: null | number; MaxProgress?: null | number; [key: string]: unknown; }>; MaxSpinsPerCall?: null | number; [key: string]: unknown; }; GrandPrize?: null | ResourceGrant; [key: string]: unknown; };
|
|
1088
1304
|
/** A coop event chain: cyclic schedule + ordered events + audience gate. */
|
|
1089
1305
|
interface CoopEventChainDefinition {
|
|
1090
1306
|
CoopChainID?: string | null;
|
|
@@ -1096,7 +1312,7 @@ interface CoopEventChainDefinition {
|
|
|
1096
1312
|
}
|
|
1097
1313
|
type CoopUserStateResponse = { ServerTimeUtc?: null | string; UserState?: null | UserCoopEventState; ActiveGroup?: null | CoopGroupDocument; };
|
|
1098
1314
|
type CoopGroupStateResponse = { ServerTimeUtc?: null | string; Group?: null | CoopGroupDocument; SecondsRemaining?: null | number; };
|
|
1099
|
-
type CoopSpinResponse = { ServerTimeUtc?: null | string; GroupID?: null | string; Resources?: null | ResourceOperation; ObjectIndex?: null | number; Sector?: null | { DisplayName?: null | string; AssetPaths?: null | Record<string, string>; Weight?: null | number; MinProgress?: null | number; MaxProgress?: null | number; [key: string]: unknown; }; ProgressDelta?: null | number; NewProgress?: null | number; MaxProgress?: null | number; ObjectCompleted?: null | boolean; AllObjectsCompleted?: null | boolean; };
|
|
1315
|
+
type CoopSpinResponse = { ServerTimeUtc?: null | string; GroupID?: null | string; Resources?: null | ResourceOperation; ObjectIndex?: null | number; Sector?: null | { DisplayName?: null | string; AssetPaths?: null | Record<string, string>; Weight?: null | number; MinProgress?: null | number; MaxProgress?: null | number; [key: string]: unknown; }; RequestedSpins?: null | number; SpinsUsed?: null | number; Sectors?: null | Array<{ DisplayName?: null | string; AssetPaths?: null | Record<string, string>; Weight?: null | number; MinProgress?: null | number; MaxProgress?: null | number; [key: string]: unknown; }>; ProgressDelta?: null | number; NewProgress?: null | number; MaxProgress?: null | number; ObjectCompleted?: null | boolean; AllObjectsCompleted?: null | boolean; };
|
|
1100
1316
|
type CoopClaimRewardResponse = { ServerTimeUtc?: null | string; GroupID?: null | string; RewardType?: null | string; Resources?: null | ResourceOperation; };
|
|
1101
1317
|
type CoopLeaveGroupResponse = { ServerTimeUtc?: null | string; GroupID?: null | string; Success?: null | boolean; };
|
|
1102
1318
|
/** Root config of the title's cooperative events system. Plugs into TitlePublicConfig as CoopEvent. */
|
|
@@ -1107,7 +1323,17 @@ interface CoopEventDefinitions {
|
|
|
1107
1323
|
}
|
|
1108
1324
|
interface CoopEventRequest extends BaseRequest {
|
|
1109
1325
|
CoopChainID?: string;
|
|
1326
|
+
/**
|
|
1327
|
+
* Chosen way to pay (`PriceOption.OptionID`). Empty = the first option available on this
|
|
1328
|
+
* player's platform, which keeps single-price entities working unchanged.
|
|
1329
|
+
*/
|
|
1330
|
+
SelectedOptionID?: string;
|
|
1110
1331
|
GroupID?: string;
|
|
1332
|
+
/**
|
|
1333
|
+
* How many spins to perform in a single Spin call. Default 1. Clamped to
|
|
1334
|
+
* [1, MaxSpinsPerCall]. Only spins that actually happen are charged — see SpinsUsed.
|
|
1335
|
+
*/
|
|
1336
|
+
Count?: number;
|
|
1111
1337
|
}
|
|
1112
1338
|
declare const CoopEventAction: {
|
|
1113
1339
|
readonly GetDefinitions: "GetDefinitions";
|
|
@@ -1153,7 +1379,7 @@ interface UserDealOffersState {
|
|
|
1153
1379
|
LastUpdatedUtc?: string | null;
|
|
1154
1380
|
}
|
|
1155
1381
|
type DealSlotDefinition = { SlotID?: null | string; Enabled?: null | boolean; SortOrder?: null | number; Queue?: null | Array<{ Order?: null | number; OfferID?: null | string; DurationSec?: null | number; DelayBeforeActivationSec?: null | number; [key: string]: unknown; }>; Schedule?: null | ScheduleSpec; Gate?: null | SegmentGate; AllowDismissSkip?: null | boolean; DismissSkipDelaySec?: null | number; [key: string]: unknown; };
|
|
1156
|
-
type DealNodeActionDefinition = { Purchase?: null | { StoreOfferID?: null | string; BillingProductID?: null | string;
|
|
1382
|
+
type DealNodeActionDefinition = { Purchase?: null | { StoreOfferID?: null | string; BillingProductID?: null | string; PriceOptions?: null | PriceOptions; UseExternalRewards?: null | boolean; [key: string]: unknown; }; RewardedVideo?: null | { AdPlacementID?: null | string; ViewsRequiredToComplete?: null | number; MaxViewsPerActivation?: null | number; CooldownSecondsBetweenViews?: null | number; RequireServerVerification?: null | boolean; GrantRewardsPerView?: null | boolean; [key: string]: unknown; }; [key: string]: unknown; };
|
|
1157
1383
|
/**
|
|
1158
1384
|
* Container of preset wiring for an offer — one PresetBinding per block. Inline data (Milestones)
|
|
1159
1385
|
* lives on DealOfferDefinition. null = presets unused.
|
|
@@ -1251,6 +1477,13 @@ type ClaimDealMilestoneResponse = { ServerTimeUtc?: null | string; SlotID?: null
|
|
|
1251
1477
|
type ClaimDealMilestonesBatchResponse = { ServerTimeUtc?: null | string; SlotID?: null | string; ClaimedIDs?: null | Array<string>; Rejected?: null | Record<string, string>; Resources?: null | ResourceOperation; };
|
|
1252
1478
|
interface DealOfferRequest extends BaseRequest {
|
|
1253
1479
|
SlotID?: string;
|
|
1480
|
+
/**
|
|
1481
|
+
* Chosen way to pay (`PriceOption.OptionID`). Empty = the first option available on this
|
|
1482
|
+
* player's platform, which keeps single-price entities working unchanged.
|
|
1483
|
+
*/
|
|
1484
|
+
SelectedOptionID?: string;
|
|
1485
|
+
/** Store receipt. Required exactly when the chosen option is paid in a store. */
|
|
1486
|
+
Payment?: PaymentProof;
|
|
1254
1487
|
NodeID?: string;
|
|
1255
1488
|
MilestoneID?: string;
|
|
1256
1489
|
MilestoneIDs?: string[];
|
|
@@ -1296,15 +1529,23 @@ interface ReferralDefinitionsResponse {
|
|
|
1296
1529
|
type UserReferralStateResponse = { Referral?: null | UserReferralState; };
|
|
1297
1530
|
type ActivateReferralCodeResponse = { ReferralCode?: null | string; IsFirstActivation?: null | boolean; Resources?: null | ResourceOperation; };
|
|
1298
1531
|
type ClaimInviteRewardResponse = { RewardID?: null | string; Resources?: null | ResourceOperation; };
|
|
1532
|
+
type ClaimInviteRewardsBatchResponse = { ServerTimeUtc: string; Items: Array<{ Id: string; Success: boolean; Error?: null | string; Data?: null | ClaimInviteRewardResponse; }>; Resources?: null | ResourceOperation; };
|
|
1299
1533
|
interface ReferralRequest extends BaseRequest {
|
|
1300
1534
|
ReferralCode?: string;
|
|
1301
1535
|
InviteRewardID?: string;
|
|
1536
|
+
/**
|
|
1537
|
+
* ClaimInviteRewardsBatch: invite-milestone IDs to claim. Deduped keeping order, clamped to
|
|
1538
|
+
* the platform batch size. Invalid entries (unknown / not reached / already claimed) fail as
|
|
1539
|
+
* their own item without dropping the batch.
|
|
1540
|
+
*/
|
|
1541
|
+
InviteRewardIDs?: string[];
|
|
1302
1542
|
}
|
|
1303
1543
|
declare const ReferralAction: {
|
|
1304
1544
|
readonly GetDefinitions: "GetDefinitions";
|
|
1305
1545
|
readonly GetUserState: "GetUserState";
|
|
1306
1546
|
readonly ActivateReferralCode: "ActivateReferralCode";
|
|
1307
1547
|
readonly ClaimInviteReward: "ClaimInviteReward";
|
|
1548
|
+
readonly ClaimInviteRewardsBatch: "ClaimInviteRewardsBatch";
|
|
1308
1549
|
};
|
|
1309
1550
|
type ReferralAction = (typeof ReferralAction)[keyof typeof ReferralAction];
|
|
1310
1551
|
|
|
@@ -1330,7 +1571,8 @@ interface UserSocialState {
|
|
|
1330
1571
|
Timeline?: SocialTimelineEvent[];
|
|
1331
1572
|
}
|
|
1332
1573
|
type FriendsListResponse = { Friends?: null | Array<FriendPublicProfile>; };
|
|
1333
|
-
type
|
|
1574
|
+
type SocialCounters = { FriendsCount?: null | number; IncomingRequestsCount?: null | number; OutgoingRequestsCount?: null | number; };
|
|
1575
|
+
type FriendActionResponse = { TargetUserID?: null | string; Status?: null | string; Target?: null | FriendPublicProfile; Counters?: null | SocialCounters; };
|
|
1334
1576
|
type TimelineResponse = { Events?: null | Array<SocialTimelineEvent>; };
|
|
1335
1577
|
interface SocialRequest extends BaseRequest {
|
|
1336
1578
|
TargetUserID?: string;
|
|
@@ -1355,7 +1597,7 @@ declare const TimedBoostStackingPolicy: {
|
|
|
1355
1597
|
readonly Stack: "Stack";
|
|
1356
1598
|
};
|
|
1357
1599
|
type TimedBoostStackingPolicy = (typeof TimedBoostStackingPolicy)[keyof typeof TimedBoostStackingPolicy];
|
|
1358
|
-
type TimedBoostDefinition = { BoostID?: null | string; DisplayName?: null | string; Description?: null | string; AssetPaths?: null | Record<string, string>;
|
|
1600
|
+
type TimedBoostDefinition = { BoostID?: null | string; DisplayName?: null | string; Description?: null | string; AssetPaths?: null | Record<string, string>; PriceOptions?: null | PriceOptions; Effect?: null | { Target?: null | string; Operation?: null | string; Value?: null | number; [key: string]: unknown; }; DurationSeconds?: null | number; Charges?: null | number; StackingPolicy?: null | string; MaxActiveInstances?: null | number; Tags?: null | Array<string>; [key: string]: unknown; };
|
|
1359
1601
|
type ScheduledBoostDefinition = { ScheduledBoostID?: null | string; DisplayName?: null | string; Description?: null | string; AssetPaths?: null | Record<string, string>; Tags?: null | Array<string>; Schedule?: null | ScheduleSpec; Effects?: null | Array<{ Target?: null | string; Operation?: null | string; Value?: null | number; [key: string]: unknown; }>; Gate?: null | SegmentGate; CustomParams?: null | Record<string, string>; [key: string]: unknown; };
|
|
1360
1602
|
type BoostChainDefinition = { ChainID?: null | string; DisplayName?: null | string; Description?: null | string; AssetPaths?: null | Record<string, string>; Schedule?: null | ScheduleSpec; Phases?: null | Array<{ ChainedBoostID?: null | string; Order?: null | number; DurationSec?: null | number; Effects?: null | Array<{ Target?: null | string; Operation?: null | string; Value?: null | number; [key: string]: unknown; }>; CustomParams?: null | Record<string, string>; [key: string]: unknown; }>; Gate?: null | SegmentGate; CustomParams?: null | Record<string, string>; [key: string]: unknown; };
|
|
1361
1603
|
type TriggeredBoostDefinition = { TriggeredBoostID?: null | string; DisplayName?: null | string; AssetPaths?: null | Record<string, string>; Tags?: null | Array<string>; Sources?: null | Array<TriggerSource>; Effects?: null | Array<{ Target?: null | string; Operation?: null | string; Value?: null | number; [key: string]: unknown; }>; DurationSeconds?: null | number; Charges?: null | number; StackingPolicy?: null | string; MaxActiveInstances?: null | number; Gate?: null | SegmentGate; [key: string]: unknown; };
|
|
@@ -1386,6 +1628,13 @@ type ActiveBoostWindowInfo = { Kind?: null | string; SourceID?: null | string; P
|
|
|
1386
1628
|
type GetActiveBoostWindowsResponse = { ServerTimeUtc?: null | string; Windows?: null | Array<ActiveBoostWindowInfo>; };
|
|
1387
1629
|
interface TimedBoostRequest extends BaseRequest {
|
|
1388
1630
|
BoostID?: string;
|
|
1631
|
+
/**
|
|
1632
|
+
* Chosen way to pay (`PriceOption.OptionID`). Empty = the first option available on this
|
|
1633
|
+
* player's platform, which keeps single-price entities working unchanged.
|
|
1634
|
+
*/
|
|
1635
|
+
SelectedOptionID?: string;
|
|
1636
|
+
/** Store receipt. Required exactly when the chosen option is paid in a store. */
|
|
1637
|
+
Payment?: PaymentProof;
|
|
1389
1638
|
}
|
|
1390
1639
|
declare const TimedBoostAction: {
|
|
1391
1640
|
readonly GetDefinitions: "GetDefinitions";
|
|
@@ -1652,7 +1901,7 @@ interface GameLoopDefinitions {
|
|
|
1652
1901
|
[key: string]: unknown;
|
|
1653
1902
|
}
|
|
1654
1903
|
type RollActionData = { TargetUserID?: null | string; IsBot?: null | boolean; PublicData?: null | UserPublicDataModel; TargetBuildingStates?: null | Array<BuildingState>; TargetHasShield?: null | boolean; [key: string]: unknown; };
|
|
1655
|
-
type SpecialModeOfferData = { ModeID?: null | string; Choices?: null | Array<{ ChoiceID?: null | string; Mode?: null | string; Reward?: null | ScaledResourceOperation; DurationSeconds?: null | number;
|
|
1904
|
+
type SpecialModeOfferData = { ModeID?: null | string; Choices?: null | Array<{ ChoiceID?: null | string; Mode?: null | string; Reward?: null | ScaledResourceOperation; DurationSeconds?: null | number; PriceOptions?: null | PriceOptions; Multipliers?: null | SpecialClaimMultipliers; [key: string]: unknown; }>; [key: string]: unknown; };
|
|
1656
1905
|
type CommunityChestContributionResult = { GroupID?: null | string; Delta?: null | number; NewProgress?: null | number; MaxProgress?: null | number; UnlockedMilestoneIDs?: null | Array<string>; Completed?: null | boolean; [key: string]: unknown; };
|
|
1657
1906
|
interface BoardRollResponse {
|
|
1658
1907
|
UsedMultiplier?: number | null;
|
|
@@ -1700,6 +1949,11 @@ type CommunityChestClaimResponse = { ServerTimeUtc?: null | string; GroupID?: nu
|
|
|
1700
1949
|
type CommunityChestLeaveResponse = { ServerTimeUtc?: null | string; GroupID?: null | string; Success?: null | boolean; };
|
|
1701
1950
|
interface GameLoopRequest extends BaseRequest {
|
|
1702
1951
|
RollMultiplier?: number;
|
|
1952
|
+
/**
|
|
1953
|
+
* Chosen way to pay (`PriceOption.OptionID`). Empty = the first option available on this
|
|
1954
|
+
* player's platform, which keeps single-price entities working unchanged.
|
|
1955
|
+
*/
|
|
1956
|
+
SelectedOptionID?: string;
|
|
1703
1957
|
BuildingIndex?: number;
|
|
1704
1958
|
DigIndex?: number;
|
|
1705
1959
|
StageLevel?: number;
|
|
@@ -1762,14 +2016,14 @@ type MarketplaceCommissionOverride = { Percent?: null | number; MinPerPosition?:
|
|
|
1762
2016
|
type MarketplacePricePolicy = { AllowVirtualCurrency?: null | boolean; AllowItems?: null | boolean; AllowEventTokens?: null | boolean; Allowed?: null | Array<{ Kind?: null | 'Item' | 'VirtualCurrency' | 'EventToken'; CurrencyID?: null | string; CatalogID?: null | string; ItemID?: null | string; TokenType?: null | 'TimedEvent' | 'Quest' | 'Leaderboard' | 'CoopEvent' | 'Season'; EntityID?: null | string; MinAmount?: null | number; MaxAmount?: null | number; [key: string]: unknown; }>; MaxPositions?: null | number; [key: string]: unknown; };
|
|
1763
2017
|
type MarketplaceCommissionPolicy = { Percent?: null | number; MinPerPosition?: null | number; Sink?: null | 'Burn' | 'Ledger'; LedgerAccountID?: null | string; PerCatalogOverrides?: null | Record<string, MarketplaceCommissionOverride>; ApplyToDirectTrades?: null | boolean; [key: string]: unknown; };
|
|
1764
2018
|
type MarketplaceTradabilityPolicy = { AllowedCatalogIDs?: null | Array<string>; DeniedCatalogIDs?: null | Array<string>; DeniedItemIDs?: null | Array<string>; AllowUnstackableWithState?: null | boolean; [key: string]: unknown; };
|
|
1765
|
-
type MarketplaceListingSettings = { Enabled?: null | boolean; AllowedDurationsHours?: null | Array<number>; MaxActiveListings?: null | number; CreateLimits?: null | LimitSpec; BuyLimits?: null | LimitSpec;
|
|
2019
|
+
type MarketplaceListingSettings = { Enabled?: null | boolean; AllowedDurationsHours?: null | Array<number>; MaxActiveListings?: null | number; CreateLimits?: null | LimitSpec; BuyLimits?: null | LimitSpec; ListingFeeOptions?: null | PriceOptions; RefundListingFeeOnCancel?: null | boolean; [key: string]: unknown; };
|
|
1766
2020
|
type MarketplaceAuctionSettings = { Enabled?: null | boolean; MinDurationHours?: null | number; MaxDurationHours?: null | number; AntiSnipeWindowSeconds?: null | number; AntiSnipeExtensionSeconds?: null | number; MaxAntiSnipeExtensions?: null | number; MinBidStepPercent?: null | number; MinBidStepAbsolute?: null | number; BidLimits?: null | LimitSpec; [key: string]: unknown; };
|
|
1767
2021
|
type MarketplaceBuyOrderSettings = { Enabled?: null | boolean; MaxActiveOrders?: null | number; AllowedDurationsHours?: null | Array<number>; CreateLimits?: null | LimitSpec; FillLimits?: null | LimitSpec; [key: string]: unknown; };
|
|
1768
2022
|
type MarketplaceDirectTradeSettings = { Enabled?: null | boolean; OfferExpirationHours?: null | number; MaxPendingOutgoing?: null | number; AllowGifts?: null | boolean; CreateLimits?: null | LimitSpec; [key: string]: unknown; };
|
|
1769
2023
|
type MarketplaceMatchingSettings = { Enabled?: null | boolean; [key: string]: unknown; };
|
|
1770
2024
|
type MarketplaceDefinitions = { Enabled?: null | boolean; Gate?: null | SegmentGate; Schedule?: null | ScheduleSpec; PricePolicy?: null | MarketplacePricePolicy; Commission?: null | MarketplaceCommissionPolicy; Tradability?: null | MarketplaceTradabilityPolicy; Listings?: null | MarketplaceListingSettings; Auctions?: null | MarketplaceAuctionSettings; BuyOrders?: null | MarketplaceBuyOrderSettings; DirectTrades?: null | MarketplaceDirectTradeSettings; Matching?: null | MarketplaceMatchingSettings; [key: string]: unknown; };
|
|
1771
2025
|
type MarketplaceBidRefund = { BidIndex?: null | number; UserID?: null | string; Amount?: null | number; Settled?: null | boolean; SettledAt?: null | string; [key: string]: unknown; };
|
|
1772
|
-
type MarketplaceAuctionState = { BidAxisType?: null | 'Item' | 'VirtualCurrency' | 'CryptoCurrency' | '
|
|
2026
|
+
type MarketplaceAuctionState = { BidAxisType?: null | 'Item' | 'VirtualCurrency' | 'CryptoCurrency' | 'RewardedVideoCredit' | 'Purchase'; BidCurrencyID?: null | string; BidCatalogID?: null | string; BidItemID?: null | string; StartingBid?: null | number; CurrentBid?: null | number; CurrentBidderID?: null | string; BidCount?: null | number; ExtensionCount?: null | number; PendingRefunds?: null | Array<MarketplaceBidRefund>; [key: string]: unknown; };
|
|
1773
2027
|
type MarketplaceActionCounter = { LastAt?: null | string; DailyCount?: null | number; DailyResetUtc?: null | string; [key: string]: unknown; };
|
|
1774
2028
|
type UserMarketplaceState = { Create?: null | MarketplaceActionCounter; Buy?: null | MarketplaceActionCounter; Sell?: null | MarketplaceActionCounter; Bid?: null | MarketplaceActionCounter; [key: string]: unknown; };
|
|
1775
2029
|
type MarketplaceOfferView = { OfferID?: null | string; OfferType?: null | 'Listing' | 'Auction' | 'BuyOrder' | 'DirectTrade'; Status?: null | 'Active' | 'Completed' | 'Expired' | 'Cancelled' | 'Declined'; CreatorUserID?: null | string; CreatorPublicData?: null | UserPublicDataModel; TargetUserID?: null | string; GoodsType?: null | 'Item' | 'VirtualCurrency'; GoodsCatalogID?: null | string; GoodsItemID?: null | string; GoodsCurrencyID?: null | string; GoodsAmount?: null | number; GoodsInstances?: null | Array<UnstackableItemInstanceState>; Price?: null | ResourceBundle; Auction?: null | MarketplaceAuctionState; CreatedAt?: null | string; ExpiresAt?: null | string; [key: string]: unknown; };
|
|
@@ -1790,6 +2044,11 @@ type MarketplaceHistoryEntryView = { OfferID?: null | string; OfferType?: null |
|
|
|
1790
2044
|
type MarketplaceHistoryResponse = { Entries?: null | Array<MarketplaceHistoryEntryView>; ContinuationToken?: null | string; [key: string]: unknown; };
|
|
1791
2045
|
interface MarketplaceRequest extends BaseRequest {
|
|
1792
2046
|
OfferID?: string;
|
|
2047
|
+
/**
|
|
2048
|
+
* Chosen way to pay (`PriceOption.OptionID`). Empty = the first option available on this
|
|
2049
|
+
* player's platform, which keeps single-price entities working unchanged.
|
|
2050
|
+
*/
|
|
2051
|
+
SelectedOptionID?: string;
|
|
1793
2052
|
/**
|
|
1794
2053
|
* Item (default) or VirtualCurrency. For Create actions / MarketBuy / MarketSell: what's
|
|
1795
2054
|
* traded. For browsing (GetOffersByItem/GetBuyOrders): a storefront filter.
|
|
@@ -1844,6 +2103,111 @@ declare const MarketplaceAction: {
|
|
|
1844
2103
|
};
|
|
1845
2104
|
type MarketplaceAction = (typeof MarketplaceAction)[keyof typeof MarketplaceAction];
|
|
1846
2105
|
|
|
2106
|
+
declare const LocalizationMissingKeyMode: {
|
|
2107
|
+
/** Render the key itself. Default — this is what keeps literal-name titles working. */
|
|
2108
|
+
readonly ReturnKey: "ReturnKey";
|
|
2109
|
+
/** Render the key wrapped in markers (⟦quest.daily.title⟧) — proofreading mode. */
|
|
2110
|
+
readonly ReturnMarkedKey: "ReturnMarkedKey";
|
|
2111
|
+
/** Render an empty string. */
|
|
2112
|
+
readonly ReturnEmpty: "ReturnEmpty";
|
|
2113
|
+
};
|
|
2114
|
+
type LocalizationMissingKeyMode = (typeof LocalizationMissingKeyMode)[keyof typeof LocalizationMissingKeyMode];
|
|
2115
|
+
/** One language offered to the player. */
|
|
2116
|
+
interface LocalizationLocaleDefinition {
|
|
2117
|
+
/** Readability mirror of the dictionary key; the KEY is the identifier. */
|
|
2118
|
+
Locale?: string | null;
|
|
2119
|
+
/**
|
|
2120
|
+
* Language name written IN THAT LANGUAGE ("Русский", "Deutsch") — an endonym, not a
|
|
2121
|
+
* translation: the picker is read by someone who may not know the current language.
|
|
2122
|
+
*/
|
|
2123
|
+
DisplayName?: string | null;
|
|
2124
|
+
IsEnabled?: boolean | null;
|
|
2125
|
+
Order?: number | null;
|
|
2126
|
+
[k: string]: unknown;
|
|
2127
|
+
}
|
|
2128
|
+
/**
|
|
2129
|
+
* `TitlePublicConfigurationModel.Localization` — settings only. No translations here.
|
|
2130
|
+
*/
|
|
2131
|
+
interface LocalizationDefinitions {
|
|
2132
|
+
IsEnabled?: boolean | null;
|
|
2133
|
+
/** Default locale, which is also the FALLBACK. Canonical form (lower-case, "-"). */
|
|
2134
|
+
DefaultLocale?: string | null;
|
|
2135
|
+
/** Keyed by canonical locale code ("en", "pt-br"). */
|
|
2136
|
+
Locales?: Record<string, LocalizationLocaleDefinition> | null;
|
|
2137
|
+
MissingKeyMode?: LocalizationMissingKeyMode | null;
|
|
2138
|
+
MaxEntriesPerLocale?: number | null;
|
|
2139
|
+
MaxValueLengthBytes?: number | null;
|
|
2140
|
+
[k: string]: unknown;
|
|
2141
|
+
}
|
|
2142
|
+
/** One table: which locale, which version, and where the artifact is. */
|
|
2143
|
+
interface LocalizationTableRef {
|
|
2144
|
+
Locale?: string | null;
|
|
2145
|
+
Version?: number | null;
|
|
2146
|
+
/** `null` — nothing to download, or the artifact could not be published. */
|
|
2147
|
+
Url?: string | null;
|
|
2148
|
+
[k: string]: unknown;
|
|
2149
|
+
}
|
|
2150
|
+
/**
|
|
2151
|
+
* `ClientState.Localization` — what to download and from where.
|
|
2152
|
+
*
|
|
2153
|
+
* `Fallback` is present only when the player's own locale is NOT fully translated. A fully
|
|
2154
|
+
* translated language carries ONE file, and edits to the default language then cost that player
|
|
2155
|
+
* nothing — this is the whole reason coverage is computed server-side.
|
|
2156
|
+
*/
|
|
2157
|
+
interface LocalizationState {
|
|
2158
|
+
/** The locale the request was resolved to. Cache the table UNDER THIS, not under what you sent. */
|
|
2159
|
+
Locale?: string | null;
|
|
2160
|
+
/** `0` — no table exists for this locale (declared but untranslated). */
|
|
2161
|
+
Version?: number | null;
|
|
2162
|
+
Url?: string | null;
|
|
2163
|
+
Fallback?: LocalizationTableRef | null;
|
|
2164
|
+
[k: string]: unknown;
|
|
2165
|
+
}
|
|
2166
|
+
interface LocalizationRequest extends BaseRequest {
|
|
2167
|
+
/** Any form: "ru", "pt-BR", "pt_br". The server canonicalizes and resolves it. */
|
|
2168
|
+
Locale?: string;
|
|
2169
|
+
/** Version already held by the client. `0`/absent — nothing cached. */
|
|
2170
|
+
KnownVersion?: number;
|
|
2171
|
+
}
|
|
2172
|
+
declare const LocalizationAction: {
|
|
2173
|
+
readonly GetLocalizationManifest: "GetLocalizationManifest";
|
|
2174
|
+
readonly GetLocalizationTable: "GetLocalizationTable";
|
|
2175
|
+
};
|
|
2176
|
+
type LocalizationAction = (typeof LocalizationAction)[keyof typeof LocalizationAction];
|
|
2177
|
+
interface LocalizationLocaleInfo {
|
|
2178
|
+
Locale?: string | null;
|
|
2179
|
+
DisplayName?: string | null;
|
|
2180
|
+
Order?: number | null;
|
|
2181
|
+
/** `0` — the language is declared but has no table yet. */
|
|
2182
|
+
Version?: number | null;
|
|
2183
|
+
[k: string]: unknown;
|
|
2184
|
+
}
|
|
2185
|
+
/** Discovery: what exists, without downloading any table. */
|
|
2186
|
+
interface LocalizationManifestResponse {
|
|
2187
|
+
IsEnabled?: boolean | null;
|
|
2188
|
+
DefaultLocale?: string | null;
|
|
2189
|
+
MissingKeyMode?: LocalizationMissingKeyMode | null;
|
|
2190
|
+
ResolvedLocale?: string | null;
|
|
2191
|
+
Locales?: LocalizationLocaleInfo[] | null;
|
|
2192
|
+
[k: string]: unknown;
|
|
2193
|
+
}
|
|
2194
|
+
/**
|
|
2195
|
+
* A translation table delivered in the response BODY — the fallback for when the CDN artifact
|
|
2196
|
+
* is unavailable. `Entries` is exactly what the artifact file contains: a flat `{key: value}`
|
|
2197
|
+
* object.
|
|
2198
|
+
*/
|
|
2199
|
+
interface LocalizationTableResponse {
|
|
2200
|
+
RequestedLocale?: string | null;
|
|
2201
|
+
Locale?: string | null;
|
|
2202
|
+
Version?: number | null;
|
|
2203
|
+
/** `true` — the client's version matched; `Entries` is absent. */
|
|
2204
|
+
NotModified?: boolean | null;
|
|
2205
|
+
Entries?: Record<string, string> | null;
|
|
2206
|
+
FallbackLocale?: string | null;
|
|
2207
|
+
FallbackVersion?: number | null;
|
|
2208
|
+
[k: string]: unknown;
|
|
2209
|
+
}
|
|
2210
|
+
|
|
1847
2211
|
interface UserDailyCounters {
|
|
1848
2212
|
PeriodStartUtc: string;
|
|
1849
2213
|
Earned: number;
|
|
@@ -1955,6 +2319,7 @@ interface UserState {
|
|
|
1955
2319
|
Lootbox?: UserLootboxState | null;
|
|
1956
2320
|
Reward?: UserRewardState | null;
|
|
1957
2321
|
Quest?: UserQuestState | null;
|
|
2322
|
+
Tutorial?: UserTutorialState | null;
|
|
1958
2323
|
Leaderboard?: UserLeaderboardsState | null;
|
|
1959
2324
|
Season?: UserSeasonsState | null;
|
|
1960
2325
|
Premium?: UserPremiumState | null;
|
|
@@ -2014,6 +2379,15 @@ interface ClientState {
|
|
|
2014
2379
|
* недействительна, состояние приходит целиком.
|
|
2015
2380
|
*/
|
|
2016
2381
|
StateEpoch?: string | null;
|
|
2382
|
+
/**
|
|
2383
|
+
* Локализация: какую таблицу переводов качать и откуда. Устроено как конфиг тайтла — уезжает
|
|
2384
|
+
* ССЫЛКОЙ на immutable-артефакт, — но таблиц может понадобиться ДВЕ: своя и запасная, если
|
|
2385
|
+
* своя переведена не полностью.
|
|
2386
|
+
*
|
|
2387
|
+
* `null` — локализация у тайтла выключена. `UserService` разбирается с этим сам: качает,
|
|
2388
|
+
* кладёт в локальное хранилище и отдаёт `client.localization`.
|
|
2389
|
+
*/
|
|
2390
|
+
Localization?: LocalizationState | null;
|
|
2017
2391
|
[k: string]: unknown;
|
|
2018
2392
|
}
|
|
2019
2393
|
/**
|
|
@@ -2064,6 +2438,21 @@ interface UserRequest extends BaseRequest {
|
|
|
2064
2438
|
* запроса, когда скачать артефакт не удалось; вручную задавать не нужно.
|
|
2065
2439
|
*/
|
|
2066
2440
|
ForceInlineConfig?: boolean;
|
|
2441
|
+
/**
|
|
2442
|
+
* Локаль игрока в любой форме («ru», «pt-BR», «pt_br»). Сервер сводит её к объявленной
|
|
2443
|
+
* тайтлом и отвечает про результат в `ClientState.Localization.Locale`.
|
|
2444
|
+
*
|
|
2445
|
+
* Ставится SDK автоматически из `settings.locale` (по умолчанию — язык устройства);
|
|
2446
|
+
* задавать вручную нужно только при явной смене языка игроком.
|
|
2447
|
+
*/
|
|
2448
|
+
Locale?: string;
|
|
2449
|
+
/**
|
|
2450
|
+
* Версии таблиц переводов, которые уже есть у клиента: «локаль → версия». Ставится SDK.
|
|
2451
|
+
*
|
|
2452
|
+
* Карта, а не одно число, потому что таблиц у клиента бывает две — своя и запасная, — и
|
|
2453
|
+
* устареть они могут независимо: правка английского не трогает версию русского.
|
|
2454
|
+
*/
|
|
2455
|
+
KnownLocalizationVersions?: Record<string, number>;
|
|
2067
2456
|
}
|
|
2068
2457
|
declare const UserAction: {
|
|
2069
2458
|
readonly GetClientState: "GetClientState";
|
|
@@ -2357,6 +2746,11 @@ interface ItemUpgradeRef {
|
|
|
2357
2746
|
}
|
|
2358
2747
|
interface ItemRequest extends BaseRequest {
|
|
2359
2748
|
ItemInstanceID?: string;
|
|
2749
|
+
/**
|
|
2750
|
+
* Chosen way to pay (`PriceOption.OptionID`). Empty = the first option available on this
|
|
2751
|
+
* player's platform, which keeps single-price entities working unchanged.
|
|
2752
|
+
*/
|
|
2753
|
+
SelectedOptionID?: string;
|
|
2360
2754
|
Levels?: number;
|
|
2361
2755
|
TargetLevel?: number;
|
|
2362
2756
|
FodderInstanceIDs?: string[];
|
|
@@ -2385,7 +2779,7 @@ type NFTModel = { Networks?: null | Record<string, NFTNetworkBinding>; MetadataU
|
|
|
2385
2779
|
type ItemStats = { FlatBonuses?: null | Record<string, number>; PercentBonuses?: null | Record<string, number>; Power?: null | number; [key: string]: unknown; };
|
|
2386
2780
|
type ItemEquipment = { MinCharacterLevel?: null | number; UseRequirements?: null | Record<string, number>; AllowedCharacterIDs?: null | Array<string>; AllowedSlotIDs?: null | Array<string>; [key: string]: unknown; };
|
|
2387
2781
|
type ItemUpgradeFodder = { ValuationMode?: null | 'FlatCount' | 'Merge' | 'InvestmentRefund'; MergeRatio?: null | number; Selection?: null | 'ProtectLeveled' | 'CheapestFirst' | 'ClientSelected'; [key: string]: unknown; };
|
|
2388
|
-
type ItemUpgrade = { MaxLevel?: null | number;
|
|
2782
|
+
type ItemUpgrade = { MaxLevel?: null | number; PriceOptions?: null | PriceOptions; CostScalingFactor?: null | number; FlatScalingFactor?: null | number; PercentScalingFactor?: null | number; PowerScalingFactor?: null | number; Fodder?: null | ItemUpgradeFodder; [key: string]: unknown; };
|
|
2389
2783
|
type ItemMetadata = { RarityID?: null | string; CollectionID?: null | string; AuthorID?: null | string; [key: string]: unknown; };
|
|
2390
2784
|
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; };
|
|
2391
2785
|
/** Catalog: a set of items of one thematic group. Key of `Items` is ItemID. */
|
|
@@ -2547,7 +2941,7 @@ declare const CraftType: {
|
|
|
2547
2941
|
type CraftType = (typeof CraftType)[keyof typeof CraftType];
|
|
2548
2942
|
type CraftSingleResult = { Index?: null | number; BurnedItemIDs?: null | Array<string>; RolledCollectionID?: null | string; UsedCollections?: null | Record<string, number>; Output?: null | ResourceEntry; };
|
|
2549
2943
|
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>; };
|
|
2550
|
-
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 |
|
|
2944
|
+
type CraftDefinition = { CraftID?: null | string; Type?: null | 'TradeUpRarity' | 'TradeUpCollection'; CatalogID?: null | string; CollectionID?: null | string; InputRarityID?: null | string; OutputRarityID?: null | string; RequiredItemCount?: null | number; PriceOptions?: null | PriceOptions; [key: string]: unknown; };
|
|
2551
2945
|
/** The title's craft catalog (config), returned by getDefinitions(). */
|
|
2552
2946
|
interface CraftDefinitions {
|
|
2553
2947
|
Definitions?: Record<string, CraftDefinition> | null;
|
|
@@ -2634,6 +3028,12 @@ interface TitlePublicConfigurationModel {
|
|
|
2634
3028
|
Multiplayer?: MultiplayerDefinitions | null;
|
|
2635
3029
|
UserCustomData?: UserCustomDataDefinitions | null;
|
|
2636
3030
|
Referral?: ReferralDefinitions | null;
|
|
3031
|
+
/**
|
|
3032
|
+
* Localization SETTINGS only — which locales exist, which is the fallback, the limits. The
|
|
3033
|
+
* translation TABLES are delivered separately, one file per locale; use `client.localization`
|
|
3034
|
+
* rather than reading anything out of here.
|
|
3035
|
+
*/
|
|
3036
|
+
Localization?: LocalizationDefinitions | null;
|
|
2637
3037
|
[key: string]: unknown;
|
|
2638
3038
|
}
|
|
2639
3039
|
interface TitleRequest extends BaseRequest {
|
|
@@ -2666,6 +3066,7 @@ interface SdkEvents {
|
|
|
2666
3066
|
"user:lootboxUpdated": void;
|
|
2667
3067
|
"user:rewardUpdated": void;
|
|
2668
3068
|
"user:questUpdated": void;
|
|
3069
|
+
"user:tutorialUpdated": void;
|
|
2669
3070
|
"user:timedEventUpdated": void;
|
|
2670
3071
|
"user:leaderboardUpdated": void;
|
|
2671
3072
|
"user:seasonUpdated": void;
|
|
@@ -2722,6 +3123,32 @@ interface SdkEvents {
|
|
|
2722
3123
|
* quest UI. Nothing to call to trigger it.
|
|
2723
3124
|
*/
|
|
2724
3125
|
"quest:systemProgress": QuestProgressUpdate[];
|
|
3126
|
+
"tutorial:definitionsLoaded": TutorialDefinitions;
|
|
3127
|
+
"tutorial:userStateLoaded": GetUserTutorialStateResponse;
|
|
3128
|
+
"tutorial:flowStarted": TutorialFlowResponse;
|
|
3129
|
+
"tutorial:flowSkipped": TutorialFlowResponse;
|
|
3130
|
+
"tutorial:flowReset": TutorialFlowResponse;
|
|
3131
|
+
"tutorial:stepChanged": TutorialFlowResponse;
|
|
3132
|
+
"tutorial:stepsCompletedBatch": TutorialFlowBatchResponse;
|
|
3133
|
+
"tutorial:rewardClaimed": TutorialClaimResponse;
|
|
3134
|
+
/**
|
|
3135
|
+
* Steps the BACKEND advanced while handling some other call (Mode = SystemEvent). Arrives on
|
|
3136
|
+
* the response of the action that caused it — subscribe instead of polling the state.
|
|
3137
|
+
*/
|
|
3138
|
+
"tutorial:systemProgress": TutorialStepProgress[];
|
|
3139
|
+
/**
|
|
3140
|
+
* Таблица переводов сменилась: игрок вошёл, переключил язык или издатель поправил тексты.
|
|
3141
|
+
* Подписка — штатный способ перерисовать уже нарисованные подписи: `t()` синхронна, поэтому
|
|
3142
|
+
* без сигнала интерфейс останется со старыми строками до следующей перерисовки.
|
|
3143
|
+
*
|
|
3144
|
+
* `fallbackLocale` не `null` — своя локаль переведена не полностью, часть надписей приедет
|
|
3145
|
+
* на языке по умолчанию.
|
|
3146
|
+
*/
|
|
3147
|
+
"localization:changed": {
|
|
3148
|
+
locale: string | null;
|
|
3149
|
+
fallbackLocale: string | null;
|
|
3150
|
+
entryCount: number;
|
|
3151
|
+
};
|
|
2725
3152
|
/**
|
|
2726
3153
|
* New revisions of the state containers the backend changed while handling some other call
|
|
2727
3154
|
* (a purchase, a claim, a roll). Rides on that call's response so the client can keep its
|
|
@@ -2761,6 +3188,8 @@ interface SdkEvents {
|
|
|
2761
3188
|
"season:userStateLoaded": UserSeasonStateResponse;
|
|
2762
3189
|
"season:statusTokensGranted": GrantStatusTokensResponse;
|
|
2763
3190
|
"season:tierRewardClaimed": ClaimTierRewardResponse;
|
|
3191
|
+
/** Batch claim of several tier rewards applied in one atomic operation. */
|
|
3192
|
+
"season:tierRewardsBatchClaimed": ClaimTierRewardsBatchResponse;
|
|
2764
3193
|
"premium:definitionsLoaded": PremiumDefinitionsResponse;
|
|
2765
3194
|
"premium:stateLoaded": PremiumStateResponse;
|
|
2766
3195
|
"premium:trialActivated": PremiumPurchaseResponse;
|
|
@@ -2826,6 +3255,8 @@ interface SdkEvents {
|
|
|
2826
3255
|
"referral:userStateLoaded": UserReferralStateResponse;
|
|
2827
3256
|
"referral:codeActivated": ActivateReferralCodeResponse;
|
|
2828
3257
|
"referral:inviteRewardClaimed": ClaimInviteRewardResponse;
|
|
3258
|
+
/** Batch claim of several invite milestones applied in one atomic operation. */
|
|
3259
|
+
"referral:inviteRewardsBatchClaimed": ClaimInviteRewardsBatchResponse;
|
|
2829
3260
|
"social:friendsListLoaded": FriendsListResponse;
|
|
2830
3261
|
"social:incomingRequestsLoaded": FriendsListResponse;
|
|
2831
3262
|
"social:recommendedFriendsLoaded": FriendsListResponse;
|
|
@@ -2945,6 +3376,15 @@ interface IDosGamesSettings {
|
|
|
2945
3376
|
* перезапуск (React Native, встраивание в нативную оболочку).
|
|
2946
3377
|
*/
|
|
2947
3378
|
readonly configStorage: ConfigStorage;
|
|
3379
|
+
/**
|
|
3380
|
+
* Локаль игрока, с которой стартует игра. По умолчанию — язык устройства; не определился —
|
|
3381
|
+
* пусто, и тогда сервер отдаст язык тайтла по умолчанию.
|
|
3382
|
+
*
|
|
3383
|
+
* Это ПОЖЕЛАНИЕ, а не факт: сервер сводит код к тому, на что тайтл реально переведён
|
|
3384
|
+
* («pt-BR» → «pt-br» → «en»), и отвечает результатом. Смотреть надо
|
|
3385
|
+
* `client.localization.locale`, а не это поле.
|
|
3386
|
+
*/
|
|
3387
|
+
readonly locale: string;
|
|
2948
3388
|
}
|
|
2949
3389
|
interface SettingsInput {
|
|
2950
3390
|
titleID: string;
|
|
@@ -2954,6 +3394,7 @@ interface SettingsInput {
|
|
|
2954
3394
|
devBuild?: boolean;
|
|
2955
3395
|
debugLogging?: boolean;
|
|
2956
3396
|
configStorage?: ConfigStorage;
|
|
3397
|
+
locale?: string;
|
|
2957
3398
|
}
|
|
2958
3399
|
|
|
2959
3400
|
/**
|
|
@@ -2998,6 +3439,21 @@ declare class UserData {
|
|
|
2998
3439
|
/** Stores the authoritative points-track snapshot in the Quest event-token bucket. */
|
|
2999
3440
|
patchQuestPointsTracks(tracks: Record<string, QuestPointsTrackView> | null | undefined): void;
|
|
3000
3441
|
patchGroupCompletionClaimed(cycleID: string, groupCompletionID: string): void;
|
|
3442
|
+
applyTutorial(data: UserTutorialState | null): void;
|
|
3443
|
+
/**
|
|
3444
|
+
* Fold a flow view returned by a mutating call into the cached state, so the game can read
|
|
3445
|
+
* `state.Tutorial` right after the call without waiting for a refresh.
|
|
3446
|
+
*
|
|
3447
|
+
* Only the fields the view actually carries are written. `CurrentStep` is deliberately NOT
|
|
3448
|
+
* stored: it is a copy of the CONFIG, and duplicating it into player state would give two
|
|
3449
|
+
* sources of truth for the same step the moment the config changes.
|
|
3450
|
+
*/
|
|
3451
|
+
patchTutorialFlow(view: TutorialFlowView | null | undefined): void;
|
|
3452
|
+
/**
|
|
3453
|
+
* Apply step progress the backend advanced by itself (Mode = SystemEvent), delivered on the
|
|
3454
|
+
* response of whatever action caused it.
|
|
3455
|
+
*/
|
|
3456
|
+
patchTutorialProgress(updates: readonly TutorialStepProgress[] | null | undefined): void;
|
|
3001
3457
|
patchQuestProgressUpdates(updates: readonly QuestProgressUpdate[] | null | undefined): void;
|
|
3002
3458
|
getQuestPointsProgress(cycleID: string): UserEventTokenProgress | null;
|
|
3003
3459
|
applyActiveEvents(data: GetActiveEventsResponse | null): void;
|
|
@@ -3243,6 +3699,8 @@ declare class UserService {
|
|
|
3243
3699
|
private baseRequest;
|
|
3244
3700
|
private get configCache();
|
|
3245
3701
|
private cache?;
|
|
3702
|
+
private get localizationCache();
|
|
3703
|
+
private locCache?;
|
|
3246
3704
|
private get stateStore();
|
|
3247
3705
|
private versionStore?;
|
|
3248
3706
|
/**
|
|
@@ -3298,6 +3756,26 @@ declare class UserService {
|
|
|
3298
3756
|
* refresh doesn't wipe the active board.
|
|
3299
3757
|
*/
|
|
3300
3758
|
getClientStateExcept(excludeFields?: string[], excludeTitleFields?: string[]): Promise<OperationResult<ClientState>>;
|
|
3759
|
+
/**
|
|
3760
|
+
* Прикладывает к запросу локаль и версии уже сохранённых таблиц. Сервер по ним не станет
|
|
3761
|
+
* присылать ссылки на то, что у клиента и так свежее.
|
|
3762
|
+
*
|
|
3763
|
+
* Локаль берётся из уже применённой (игрок мог переключить язык руками), иначе из настроек
|
|
3764
|
+
* (по умолчанию — язык устройства). Пусто — сервер отдаст язык тайтла по умолчанию.
|
|
3765
|
+
*/
|
|
3766
|
+
private prepareLocalization;
|
|
3767
|
+
/**
|
|
3768
|
+
* Достраивает таблицы переводов и отдаёт их `client.localization`.
|
|
3769
|
+
*
|
|
3770
|
+
* Порядок источников ТОТ ЖЕ, что у конфига тайтла, и по той же причине: хранилище (версия
|
|
3771
|
+
* совпала) → CDN → эндпоинт телом → устаревшая локальная копия. Отличие одно, и оно
|
|
3772
|
+
* принципиальное: **провал здесь игру НЕ роняет.** Конфига нет — играть не во что; переводов
|
|
3773
|
+
* нет — интерфейс покажет ключи. Поэтому `applyState` зовётся при любом исходе.
|
|
3774
|
+
*/
|
|
3775
|
+
private applyLocalization;
|
|
3776
|
+
private resolveLocalizationTable;
|
|
3777
|
+
private fetchLocalizationFromCdn;
|
|
3778
|
+
private fetchLocalizationFromApi;
|
|
3301
3779
|
/**
|
|
3302
3780
|
* Только версии контейнеров — без единого байта данных.
|
|
3303
3781
|
*
|
|
@@ -3350,7 +3828,7 @@ declare class ItemService {
|
|
|
3350
3828
|
* Upgrade an item instance's level, optionally consuming fodder instances. On success the
|
|
3351
3829
|
* server-authoritative inventory is re-fetched (mirrors the C# GetUserInventory call).
|
|
3352
3830
|
*/
|
|
3353
|
-
upgradeLevel(itemInstanceID: string, fodderInstanceIDs?: readonly string[]): Promise<OperationResult<UpgradeItemLevelResponse>>;
|
|
3831
|
+
upgradeLevel(itemInstanceID: string, fodderInstanceIDs?: readonly string[], selectedOptionID?: string): Promise<OperationResult<UpgradeItemLevelResponse>>;
|
|
3354
3832
|
/**
|
|
3355
3833
|
* Upgrade several item instances (+1 level each, or a multi-level/target-level upgrade per
|
|
3356
3834
|
* ref) in one atomic operation. On success the server-authoritative inventory is re-fetched.
|
|
@@ -3362,7 +3840,17 @@ declare class ItemService {
|
|
|
3362
3840
|
declare class StoreService {
|
|
3363
3841
|
private readonly ctx;
|
|
3364
3842
|
constructor(ctx: ClientContext);
|
|
3365
|
-
|
|
3843
|
+
/**
|
|
3844
|
+
* Buys an offer.
|
|
3845
|
+
*
|
|
3846
|
+
* `selectedOptionID` picks the way to pay; omitting it takes the first option available on this
|
|
3847
|
+
* platform, which is what keeps single-price offers working without any client change.
|
|
3848
|
+
* `payment` is required exactly when the chosen option is paid in a store — see CheckoutService.
|
|
3849
|
+
*/
|
|
3850
|
+
purchase(offerID: string, count?: number, options?: {
|
|
3851
|
+
selectedOptionID?: string;
|
|
3852
|
+
payment?: PaymentProof;
|
|
3853
|
+
}): Promise<OperationResult<StorePurchaseResponse>>;
|
|
3366
3854
|
/** Buy several offers in one atomic operation. Each ref is `{ OfferID, Count }`. */
|
|
3367
3855
|
purchaseBatch(purchases: StorePurchaseRef[]): Promise<OperationResult<PurchaseBatchResponse>>;
|
|
3368
3856
|
getDefinitions(): Promise<OperationResult<StoreDefinitions>>;
|
|
@@ -3370,12 +3858,165 @@ declare class StoreService {
|
|
|
3370
3858
|
private baseRequest;
|
|
3371
3859
|
}
|
|
3372
3860
|
|
|
3861
|
+
/** What happens after a receipt is verified. */
|
|
3862
|
+
declare const IapProductType: {
|
|
3863
|
+
readonly Consumable: "Consumable";
|
|
3864
|
+
readonly NonConsumable: "NonConsumable";
|
|
3865
|
+
readonly Subscription: "Subscription";
|
|
3866
|
+
};
|
|
3867
|
+
type IapProductType = (typeof IapProductType)[keyof typeof IapProductType];
|
|
3868
|
+
type IapProductRules = { StartUtc?: null | string; EndUtc?: null | string; Gate?: null | SegmentGate; Limits?: null | LimitSpec; [key: string]: unknown; };
|
|
3869
|
+
type IapProductDefinition = { ProductID?: null | string; Name?: null | string; Type?: null | 'Subscription' | 'Consumable' | 'NonConsumable'; Enabled?: null | boolean; StoreProductIDs?: null | Record<string, string>; Rewards?: null | ResourceGrant; PriceUsdCents?: null | number; Rules?: null | IapProductRules; AssetPaths?: null | Record<string, string>; CustomParams?: null | Record<string, string>; [key: string]: unknown; };
|
|
3870
|
+
type PurchaseDefinitions = { Enabled?: null | boolean; Products?: null | Record<string, IapProductDefinition>; [key: string]: unknown; };
|
|
3871
|
+
type IapProductPurchaseState = { ProductID?: null | string; TotalPurchases?: null | number; DailyPurchases?: null | number; DailyResetUtc?: null | string; LastPurchasedAt?: null | string; Owned?: null | boolean; [key: string]: unknown; };
|
|
3872
|
+
type UserPurchaseState = { Products?: null | Record<string, IapProductPurchaseState>; LifetimeSpendUsdCents?: null | number; [key: string]: unknown; };
|
|
3873
|
+
/** How the server treated the receipt. */
|
|
3874
|
+
declare const IapPurchaseStatus: {
|
|
3875
|
+
readonly Granted: "Granted";
|
|
3876
|
+
readonly Restored: "Restored";
|
|
3877
|
+
readonly AlreadyProcessed: "AlreadyProcessed";
|
|
3878
|
+
};
|
|
3879
|
+
type IapPurchaseStatus = (typeof IapPurchaseStatus)[keyof typeof IapPurchaseStatus];
|
|
3880
|
+
type PurchaseValidationResponse = { ServerTimeUtc: string; Store?: null | 'GooglePlay' | 'AppleAppStore'; ProductID?: null | string; TransactionID?: null | string; Status?: null | 'Granted' | 'Restored' | 'AlreadyProcessed'; Granted?: null | boolean; Quantity?: null | number; Resources?: null | ResourceOperation; ProductState?: null | IapProductPurchaseState; [key: string]: unknown; };
|
|
3881
|
+
type PurchaseValidationBatchResponse = { ServerTimeUtc: string; Items: Array<{ Id: string; Success: boolean; Error?: null | string; Data?: null | PurchaseValidationResponse; }>; Resources?: null | ResourceOperation; };
|
|
3882
|
+
interface PurchaseReceiptRef {
|
|
3883
|
+
Store?: IapStore;
|
|
3884
|
+
Receipt?: string;
|
|
3885
|
+
Signature?: string;
|
|
3886
|
+
/** Only used when the receipt itself is opaque (legacy Apple app receipt). */
|
|
3887
|
+
ProductID?: string;
|
|
3888
|
+
}
|
|
3889
|
+
interface PurchaseRequest extends BaseRequest {
|
|
3890
|
+
Store?: IapStore;
|
|
3891
|
+
Receipt?: string;
|
|
3892
|
+
Signature?: string;
|
|
3893
|
+
ProductID?: string;
|
|
3894
|
+
/** ValidatePurchasesBatch: receipts to restore after a reinstall. */
|
|
3895
|
+
Receipts?: PurchaseReceiptRef[];
|
|
3896
|
+
}
|
|
3897
|
+
type IapStore = 'GooglePlay' | 'AppleAppStore';
|
|
3898
|
+
declare const PurchaseAction: {
|
|
3899
|
+
readonly GetDefinitions: "GetDefinitions";
|
|
3900
|
+
readonly GetUserState: "GetUserState";
|
|
3901
|
+
readonly ValidatePurchase: "ValidatePurchase";
|
|
3902
|
+
readonly ValidatePurchasesBatch: "ValidatePurchasesBatch";
|
|
3903
|
+
};
|
|
3904
|
+
type PurchaseAction = (typeof PurchaseAction)[keyof typeof PurchaseAction];
|
|
3905
|
+
|
|
3906
|
+
/**
|
|
3907
|
+
* Real-money purchases (IAP) — the catalog of store products and receipt validation.
|
|
3908
|
+
*
|
|
3909
|
+
* The money is paid in the store BEFORE the server hears about it, so a refusal here is an
|
|
3910
|
+
* incident, not "not enough funds": every refusal is recorded in the title's transaction ledger.
|
|
3911
|
+
* That is also why the client must hand every receipt it receives to `validatePurchase`, including
|
|
3912
|
+
* the ones the store re-delivers on startup — an order confirmed to the store but never delivered
|
|
3913
|
+
* to us is a purchase the player paid for and will never get.
|
|
3914
|
+
*
|
|
3915
|
+
* This service covers products that ARE the goods. When a store product is used as the *price* of
|
|
3916
|
+
* something else (an offer, a lootbox, a deal), the purchase goes through that module instead —
|
|
3917
|
+
* see `CheckoutService`.
|
|
3918
|
+
*/
|
|
3919
|
+
declare class PurchaseService {
|
|
3920
|
+
private readonly ctx;
|
|
3921
|
+
constructor(ctx: ClientContext);
|
|
3922
|
+
/** Product catalog with per-player availability. */
|
|
3923
|
+
getDefinitions(): Promise<OperationResult<PurchaseDefinitions>>;
|
|
3924
|
+
/** Player's IAP state: per-product counters, ownership, lifetime spend. */
|
|
3925
|
+
getUserState(): Promise<OperationResult<UserPurchaseState>>;
|
|
3926
|
+
/**
|
|
3927
|
+
* Verifies a receipt and grants the product.
|
|
3928
|
+
*
|
|
3929
|
+
* `productID` is only a hint for stores whose receipt is opaque (legacy Apple app receipt): in
|
|
3930
|
+
* every other case the SKU is read from the receipt itself, because the client's claim about
|
|
3931
|
+
* what was bought cannot be trusted.
|
|
3932
|
+
*/
|
|
3933
|
+
validatePurchase(store: IapStore, receipt: string, options?: {
|
|
3934
|
+
signature?: string;
|
|
3935
|
+
productID?: string;
|
|
3936
|
+
}): Promise<OperationResult<PurchaseValidationResponse>>;
|
|
3937
|
+
/**
|
|
3938
|
+
* Restores purchases after a reinstall: several receipts in one call.
|
|
3939
|
+
*
|
|
3940
|
+
* Non-consumables come back as `Restored` (ownership confirmed, nothing granted twice), while a
|
|
3941
|
+
* consumable that never reached us is granted now.
|
|
3942
|
+
*/
|
|
3943
|
+
validatePurchasesBatch(receipts: PurchaseReceiptRef[]): Promise<OperationResult<PurchaseValidationBatchResponse>>;
|
|
3944
|
+
}
|
|
3945
|
+
|
|
3946
|
+
/** What a price option needs before it can be paid. */
|
|
3947
|
+
interface PaymentRequirement {
|
|
3948
|
+
/** The option itself — pass its `OptionID` to the module that sells the entity. */
|
|
3949
|
+
option: PriceOption;
|
|
3950
|
+
/** `store` = a receipt is required; `resources` = the server charges the player's balances. */
|
|
3951
|
+
kind: "store" | "resources";
|
|
3952
|
+
/** IAP product to buy in the store. Set only when `kind` is `"store"`. */
|
|
3953
|
+
productID?: string;
|
|
3954
|
+
/** Crypto shortfall, if this option is paid with an on-chain currency the player is short on. */
|
|
3955
|
+
shortfall?: CryptoShortfall;
|
|
3956
|
+
}
|
|
3957
|
+
/** How much of a crypto currency is missing to pay for an option. */
|
|
3958
|
+
interface CryptoShortfall {
|
|
3959
|
+
currencyID: string;
|
|
3960
|
+
/** Price of the option in that currency. */
|
|
3961
|
+
required: number;
|
|
3962
|
+
/** What the player currently holds in-game. */
|
|
3963
|
+
available: number;
|
|
3964
|
+
/** `required - available` — what a deposit has to cover. */
|
|
3965
|
+
missing: number;
|
|
3966
|
+
}
|
|
3967
|
+
/**
|
|
3968
|
+
* Helper layer over prices: which options this client may show, what each of them needs, and how
|
|
3969
|
+
* much crypto is missing to pay one.
|
|
3970
|
+
*
|
|
3971
|
+
* It deliberately does NOT buy anything. Buying belongs to the module that owns the entity
|
|
3972
|
+
* (`client.store.purchase`, `client.lootbox.open`, …), because only that module knows the rest of
|
|
3973
|
+
* the request — count, target ids, idempotency key. This service answers the question that comes
|
|
3974
|
+
* *before* the call: which option, and what does it need.
|
|
3975
|
+
*
|
|
3976
|
+
* Depositing crypto lives in `@idosgames/wallet`: `core` never imports a wallet stack, so a game
|
|
3977
|
+
* that pays only with in-game currencies does not ship one.
|
|
3978
|
+
*/
|
|
3979
|
+
declare class CheckoutService {
|
|
3980
|
+
private readonly ctx;
|
|
3981
|
+
constructor(ctx: ClientContext);
|
|
3982
|
+
/** Platform this client reports to the server. */
|
|
3983
|
+
get platform(): ClientPlatform;
|
|
3984
|
+
/**
|
|
3985
|
+
* Options this client may show, in the order the server would pick them (by `OptionID`).
|
|
3986
|
+
*
|
|
3987
|
+
* ⚠ Filtering here is what the player SEES. The server re-checks the platform when charging, so
|
|
3988
|
+
* a hidden option cannot be paid anyway — but showing one that a store forbids is itself a
|
|
3989
|
+
* policy violation, which is why the filter exists on the client at all.
|
|
3990
|
+
*/
|
|
3991
|
+
availableOptions(options: PriceOptions | null | undefined): PriceOption[];
|
|
3992
|
+
/** Is this option offered on the current platform? Empty `AllowedPlatforms` = everywhere. */
|
|
3993
|
+
isAvailable(option: PriceOption | null | undefined): boolean;
|
|
3994
|
+
/**
|
|
3995
|
+
* What the option needs before it can be paid: a store receipt, or just the player's balances.
|
|
3996
|
+
*
|
|
3997
|
+
* For a crypto price it also reports the shortfall — the number a deposit has to cover. The
|
|
3998
|
+
* balance comes from the cached player state, so it is as fresh as the last server response.
|
|
3999
|
+
*/
|
|
4000
|
+
requirementOf(option: PriceOption): PaymentRequirement;
|
|
4001
|
+
/** IAP product this option is paid with, or `null` when it is a resource price. */
|
|
4002
|
+
storeProductOf(cost: ResourceConsume | null | undefined): string | null;
|
|
4003
|
+
/**
|
|
4004
|
+
* Crypto shortfall of a price, or `null` when the player can already afford it.
|
|
4005
|
+
*
|
|
4006
|
+
* Only the first crypto entry is reported: a price mixing two on-chain currencies would need two
|
|
4007
|
+
* deposits, and no wallet flow does that in one go — such a price is a config mistake, not a
|
|
4008
|
+
* case to paper over here.
|
|
4009
|
+
*/
|
|
4010
|
+
cryptoShortfallOf(cost: ResourceConsume | null | undefined): CryptoShortfall | null;
|
|
4011
|
+
private cryptoBalance;
|
|
4012
|
+
}
|
|
4013
|
+
|
|
3373
4014
|
/** Port of LootboxService.cs. */
|
|
3374
4015
|
declare class LootboxService {
|
|
3375
4016
|
private readonly ctx;
|
|
3376
4017
|
constructor(ctx: ClientContext);
|
|
3377
4018
|
getDefinitions(): Promise<OperationResult<LootboxDefinitionsResponse>>;
|
|
3378
|
-
open(lootboxID: string, count: number, selectedOptionID
|
|
4019
|
+
open(lootboxID: string, count: number, selectedOptionID?: string, payment?: PaymentProof): Promise<OperationResult<LootboxOpenResponse>>;
|
|
3379
4020
|
private baseRequest;
|
|
3380
4021
|
}
|
|
3381
4022
|
|
|
@@ -3397,6 +4038,194 @@ declare class RewardService {
|
|
|
3397
4038
|
private baseRequest;
|
|
3398
4039
|
}
|
|
3399
4040
|
|
|
4041
|
+
/**
|
|
4042
|
+
* Onboarding: flows of ordered steps that the server hands out, gates and closes.
|
|
4043
|
+
*
|
|
4044
|
+
* Two things the game must know before using this:
|
|
4045
|
+
*
|
|
4046
|
+
* 1. **Not every step is yours to close.** `completeStep` works only for steps whose
|
|
4047
|
+
* `Completion.Mode` is `ClientAck` (or `Auto`, which closes on being shown). A `SystemEvent`
|
|
4048
|
+
* step is closed by the backend off a real game event — a board roll, a purchase, a chest
|
|
4049
|
+
* open — and calling `completeStep` on it is refused. Read `CurrentStep.Completion.Mode` from
|
|
4050
|
+
* the flow view and only offer a "Next" button when it is `ClientAck`.
|
|
4051
|
+
* 2. **Progress can arrive on OTHER calls.** When a system-event step advances, the backend
|
|
4052
|
+
* attaches it to the response of the action that caused it, and the SDK applies it to the
|
|
4053
|
+
* cached state and emits `tutorial:systemProgress`. Subscribe to that instead of polling.
|
|
4054
|
+
*/
|
|
4055
|
+
declare class TutorialService {
|
|
4056
|
+
private readonly ctx;
|
|
4057
|
+
constructor(ctx: ClientContext);
|
|
4058
|
+
/** Flow and step definitions of the title (presets already resolved server-side). */
|
|
4059
|
+
getTutorialDefinitions(): Promise<OperationResult<TutorialDefinitions>>;
|
|
4060
|
+
/**
|
|
4061
|
+
* Player state plus everything needed to draw the current step without a second call.
|
|
4062
|
+
*
|
|
4063
|
+
* @param autoStart Let the server start flows marked for auto-start. Pass `false` from a
|
|
4064
|
+
* settings screen that merely lists tutorials — otherwise opening it would begin one.
|
|
4065
|
+
*/
|
|
4066
|
+
getUserTutorialState(autoStart?: boolean): Promise<OperationResult<GetUserTutorialStateResponse>>;
|
|
4067
|
+
/** Start a flow explicitly. Returns the flow with its first step. */
|
|
4068
|
+
startFlow(flowID: string): Promise<OperationResult<TutorialFlowResponse>>;
|
|
4069
|
+
/**
|
|
4070
|
+
* Report that the step was shown to the player. Worth calling for every step: it is what the
|
|
4071
|
+
* funnel measures time-on-step from, and a step with `Mode = Auto` closes on it.
|
|
4072
|
+
*/
|
|
4073
|
+
reportStepShown(flowID: string, stepID: string): Promise<OperationResult<TutorialFlowResponse>>;
|
|
4074
|
+
/**
|
|
4075
|
+
* Close the current step by the player's acknowledgement.
|
|
4076
|
+
* Refused for `SystemEvent`/`Composite` steps — those are closed by the game event itself.
|
|
4077
|
+
*/
|
|
4078
|
+
completeStep(flowID: string, stepID: string): Promise<OperationResult<TutorialFlowResponse>>;
|
|
4079
|
+
/**
|
|
4080
|
+
* Close several steps of one flow, in order — for a client catching up after being offline.
|
|
4081
|
+
* Steps are closed one by one: closing the third without the second stays impossible.
|
|
4082
|
+
*/
|
|
4083
|
+
completeStepsBatch(flowID: string, stepIDs: string[]): Promise<OperationResult<TutorialFlowBatchResponse>>;
|
|
4084
|
+
/** Skip one step (only if the step declares itself skippable). */
|
|
4085
|
+
skipStep(flowID: string, stepID: string): Promise<OperationResult<TutorialFlowResponse>>;
|
|
4086
|
+
/**
|
|
4087
|
+
* Skip the whole flow. Allowed only when the flow is skippable AND the current step is at or
|
|
4088
|
+
* past `Policy.SkippableFromOrder` — the flow view's `CanSkip` tells you whether to show the
|
|
4089
|
+
* button at all.
|
|
4090
|
+
*/
|
|
4091
|
+
skipFlow(flowID: string): Promise<OperationResult<TutorialFlowResponse>>;
|
|
4092
|
+
/**
|
|
4093
|
+
* Take the completion reward. Show this when the flow view reports `RewardPending`.
|
|
4094
|
+
* A flow with `Reward.AutoClaim` pays out on its last step and never reports it pending.
|
|
4095
|
+
*/
|
|
4096
|
+
claimFlowReward(flowID: string): Promise<OperationResult<TutorialClaimResponse>>;
|
|
4097
|
+
/**
|
|
4098
|
+
* Replay a flow. Only for flows whose `RestartPolicy` allows it; the reward is NOT granted
|
|
4099
|
+
* again — the server keeps the claimed flag through the reset.
|
|
4100
|
+
*/
|
|
4101
|
+
resetFlow(flowID: string): Promise<OperationResult<TutorialFlowResponse>>;
|
|
4102
|
+
private flowCall;
|
|
4103
|
+
private stepCall;
|
|
4104
|
+
/**
|
|
4105
|
+
* Fold the returned flow view into the cached player state. The view is authoritative for the
|
|
4106
|
+
* fields it carries, so the game can read `client.data.user.state.Tutorial` right after the
|
|
4107
|
+
* call without waiting for a state refresh.
|
|
4108
|
+
*/
|
|
4109
|
+
private applyFlowView;
|
|
4110
|
+
/**
|
|
4111
|
+
* Batch and claim responses do not carry a flow view, so the cached state is re-read once.
|
|
4112
|
+
* Silent: a failed refresh must not turn a successful claim into an error for the player.
|
|
4113
|
+
*/
|
|
4114
|
+
private refreshAfterMutation;
|
|
4115
|
+
private baseRequest;
|
|
4116
|
+
}
|
|
4117
|
+
|
|
4118
|
+
/** Значения для подстановки в перевод: `{count}`, `{name}` и т.п. */
|
|
4119
|
+
type LocalizationParams = Record<string, string | number>;
|
|
4120
|
+
/**
|
|
4121
|
+
* Локализация: перевод по ключу и загрузка таблиц.
|
|
4122
|
+
*
|
|
4123
|
+
* **Контракт резолва — `t(x) = своя таблица → запасная таблица → сам x`.** Последнее звено не
|
|
4124
|
+
* запасной вариант на случай ошибки, а часть замысла: у существующих тайтлов в конфиге лежат
|
|
4125
|
+
* готовые названия («Iron Sword» в `DisplayName`), и такой литерал — это просто ключ, для
|
|
4126
|
+
* которого перевода не нашлось. Поэтому оборачивать в `t()` можно ВСЁ, включая строки из
|
|
4127
|
+
* конфига, и ни один тайтл от этого не ломается.
|
|
4128
|
+
*
|
|
4129
|
+
* **Таблиц бывает две.** Свою локаль клиент качает всегда, запасную — только если своя
|
|
4130
|
+
* переведена не полностью; решает это сервер и сообщает в `ClientState.Localization.Fallback`.
|
|
4131
|
+
* У полностью переведённого языка файл один, и правки языка по умолчанию такому игроку ничего
|
|
4132
|
+
* не стоят.
|
|
4133
|
+
*
|
|
4134
|
+
* Загрузкой занимается `UserService` на входе в игру — здесь только применение и чтение.
|
|
4135
|
+
* Отдельно грузить ничего не надо; `setLocale` нужен, только когда язык меняет сам игрок.
|
|
4136
|
+
*/
|
|
4137
|
+
declare class LocalizationService {
|
|
4138
|
+
private readonly ctx;
|
|
4139
|
+
constructor(ctx: ClientContext);
|
|
4140
|
+
private table;
|
|
4141
|
+
private fallbackTable;
|
|
4142
|
+
private currentLocale;
|
|
4143
|
+
private currentFallbackLocale;
|
|
4144
|
+
private pluralRules;
|
|
4145
|
+
private get cache();
|
|
4146
|
+
private tableCache?;
|
|
4147
|
+
/**
|
|
4148
|
+
* Локаль, на которой игра идёт СЕЙЧАС, — та, к которой сервер свёл запрошенную. `null`,
|
|
4149
|
+
* пока состояние не загружено или если локализация у тайтла выключена.
|
|
4150
|
+
*
|
|
4151
|
+
* Смотреть надо сюда, а не в `settings.locale`: там пожелание, здесь факт.
|
|
4152
|
+
*/
|
|
4153
|
+
get locale(): string | null;
|
|
4154
|
+
/** Запасная локаль, если своя переведена не полностью. `null` — вторая таблица не нужна. */
|
|
4155
|
+
get fallbackLocale(): string | null;
|
|
4156
|
+
/**
|
|
4157
|
+
* Языки, объявленные тайтлом, — для меню выбора. Берутся из конфига (там же лежат эндонимы),
|
|
4158
|
+
* поэтому обращение к сети не нужно.
|
|
4159
|
+
*/
|
|
4160
|
+
get locales(): LocalizationLocaleInfo[];
|
|
4161
|
+
/** Есть ли перевод для ключа (в своей таблице или в запасной). */
|
|
4162
|
+
has(key: string): boolean;
|
|
4163
|
+
/**
|
|
4164
|
+
* Перевод по ключу.
|
|
4165
|
+
*
|
|
4166
|
+
* Порядок: своя таблица → запасная → сам ключ (или то, что задано
|
|
4167
|
+
* `MissingKeyMode` в конфиге тайтла).
|
|
4168
|
+
*
|
|
4169
|
+
* Множественное число: передайте `{ count }` — сервер хранит формы суффиксами
|
|
4170
|
+
* (`items.count.one`, `.few`, `.many`, `.other`), а категорию выбирает `Intl.PluralRules`
|
|
4171
|
+
* ПО ТЕКУЩЕЙ ЛОКАЛИ. Своей таблицы правил здесь нет намеренно: у русского их три, у
|
|
4172
|
+
* польского четыре, у арабского шесть, и переписывать CLDR руками — верный способ разойтись
|
|
4173
|
+
* с ним на редкой локали.
|
|
4174
|
+
*
|
|
4175
|
+
* Подстановка: `{name}` в переводе заменяется на `params.name`. Отсутствующий параметр
|
|
4176
|
+
* оставляется как есть — видимый `{name}` на экране находится сразу, а молча пропавший
|
|
4177
|
+
* кусок текста не находится никогда.
|
|
4178
|
+
*/
|
|
4179
|
+
t(key: string, params?: LocalizationParams): string;
|
|
4180
|
+
/**
|
|
4181
|
+
* Применяет блок, приехавший в `GetClientState`. Зовётся `UserService`; вызывать вручную не
|
|
4182
|
+
* нужно.
|
|
4183
|
+
*
|
|
4184
|
+
* Таблицы уже разрешены вызывающим (хранилище → CDN → эндпоинт), потому что порядок
|
|
4185
|
+
* источников общий с конфигом тайтла и живёт там же.
|
|
4186
|
+
*/
|
|
4187
|
+
applyState(state: LocalizationState | null | undefined, tables: {
|
|
4188
|
+
table: Record<string, string> | null;
|
|
4189
|
+
fallbackTable: Record<string, string> | null;
|
|
4190
|
+
}): void;
|
|
4191
|
+
/**
|
|
4192
|
+
* Смена языка игроком.
|
|
4193
|
+
*
|
|
4194
|
+
* Идёт ЧЕРЕЗ ЭНДПОИНТ, а не через CDN, и это осознанно: ссылку на артефакт выдаёт только
|
|
4195
|
+
* `GetClientState`, а тянуть ради смены языка полное состояние игрока дороже, чем один раз
|
|
4196
|
+
* взять таблицу телом. Дальше она лежит в локальном хранилище и повторных загрузок не
|
|
4197
|
+
* стоит.
|
|
4198
|
+
*
|
|
4199
|
+
* Запасная таблица догружается тем же способом, если сервер сообщил, что она нужна.
|
|
4200
|
+
*/
|
|
4201
|
+
setLocale(locale: string): Promise<OperationResult<string>>;
|
|
4202
|
+
/** Какие языки доступны и какие у их таблиц версии. Таблицы не качает. */
|
|
4203
|
+
getManifest(): Promise<OperationResult<LocalizationManifestResponse>>;
|
|
4204
|
+
private reset;
|
|
4205
|
+
private setLocaleInternal;
|
|
4206
|
+
private baseRequest;
|
|
4207
|
+
/**
|
|
4208
|
+
* Таблица телом + запись в локальное хранилище. Кэш проверяется ПЕРЕД запросом и
|
|
4209
|
+
* приезжает в `KnownVersion`: совпала версия — сервер записи не шлёт, и таблица берётся с
|
|
4210
|
+
* диска.
|
|
4211
|
+
*/
|
|
4212
|
+
private loadTableFromApi;
|
|
4213
|
+
/** Значение из своей таблицы, иначе из запасной. */
|
|
4214
|
+
private lookup;
|
|
4215
|
+
/**
|
|
4216
|
+
* Ключ с учётом множественного числа. Без `count` — сам ключ; с ним — сначала форма для
|
|
4217
|
+
* категории CLDR, потом `other`.
|
|
4218
|
+
*/
|
|
4219
|
+
private resolveKey;
|
|
4220
|
+
/**
|
|
4221
|
+
* Категория множественного числа по текущей локали. `Intl.PluralRules` может бросить на
|
|
4222
|
+
* некорректном языковом теге — тогда откатываемся к `other`: показать не ту форму хуже, чем
|
|
4223
|
+
* не показать ничего, но уронить кадр из-за перевода нельзя.
|
|
4224
|
+
*/
|
|
4225
|
+
private pluralCategory;
|
|
4226
|
+
private onMissing;
|
|
4227
|
+
}
|
|
4228
|
+
|
|
3400
4229
|
/** Port of QuestService.cs. */
|
|
3401
4230
|
declare class QuestService {
|
|
3402
4231
|
private readonly ctx;
|
|
@@ -3478,6 +4307,14 @@ declare class SeasonService {
|
|
|
3478
4307
|
getUserState(seasonChainID: string): Promise<OperationResult<UserSeasonStateResponse>>;
|
|
3479
4308
|
grantStatusTokens(seasonChainID: string, amount: number): Promise<OperationResult<GrantStatusTokensResponse>>;
|
|
3480
4309
|
claimTierReward(seasonChainID: string, tierNumber: number): Promise<OperationResult<ClaimTierRewardResponse>>;
|
|
4310
|
+
/**
|
|
4311
|
+
* Claims the rewards of several tiers in ONE atomic backend operation.
|
|
4312
|
+
*
|
|
4313
|
+
* Exists because tiers are reached in BATCHES — a single token grant can raise the player
|
|
4314
|
+
* through several at once, leaving more than one reward unclaimed. The merged `Resources` is
|
|
4315
|
+
* applied ONCE from the top level; per-item `Data.Resources` is null by contract.
|
|
4316
|
+
*/
|
|
4317
|
+
claimTierRewardsBatch(seasonChainID: string, tierNumbers: number[]): Promise<OperationResult<ClaimTierRewardsBatchResponse>>;
|
|
3481
4318
|
private baseRequest;
|
|
3482
4319
|
}
|
|
3483
4320
|
|
|
@@ -3510,7 +4347,16 @@ declare class CharacterService {
|
|
|
3510
4347
|
constructor(ctx: ClientContext);
|
|
3511
4348
|
getCharacterDefinitions(): Promise<OperationResult<CharacterDefinitions>>;
|
|
3512
4349
|
getUserCharacters(): Promise<OperationResult<GetCharactersResponse>>;
|
|
3513
|
-
|
|
4350
|
+
/**
|
|
4351
|
+
* Unlocks a character.
|
|
4352
|
+
*
|
|
4353
|
+
* `options.selectedOptionID` picks the way to pay; omitting it takes the first option available
|
|
4354
|
+
* on this platform. `options.payment` is required exactly when that option is paid in a store.
|
|
4355
|
+
*/
|
|
4356
|
+
unlockCharacter(characterID: string, options?: {
|
|
4357
|
+
selectedOptionID?: string;
|
|
4358
|
+
payment?: PaymentProof;
|
|
4359
|
+
}): Promise<OperationResult<UnlockCharacterResponse>>;
|
|
3514
4360
|
upgradeStatLevel(characterID: string, statID: string, opts?: UpgradeLevelsOptions): Promise<OperationResult<UpgradeStatLevelResponse>>;
|
|
3515
4361
|
upgradeCharacterLevel(characterID: string, opts?: UpgradeLevelsOptions): Promise<OperationResult<UpgradeCharacterLevelResponse>>;
|
|
3516
4362
|
equipItems(characterID: string, itemsToEquip: EquipSlotPair[]): Promise<OperationResult<EquipItemsResponse>>;
|
|
@@ -3552,7 +4398,7 @@ declare class CharacterService {
|
|
|
3552
4398
|
declare class MatchService {
|
|
3553
4399
|
private readonly ctx;
|
|
3554
4400
|
constructor(ctx: ClientContext);
|
|
3555
|
-
createMatch(entry: ResourceBundle, ruleID: string, characterID?: string, battleStrategy?: BattleStepConfig[], targetUserID?: string): Promise<OperationResult<CreateMatchResponse>>;
|
|
4401
|
+
createMatch(entry: ResourceBundle, ruleID: string, characterID?: string, battleStrategy?: BattleStepConfig[], targetUserID?: string, selectedOptionID?: string): Promise<OperationResult<CreateMatchResponse>>;
|
|
3556
4402
|
/** Edit an open match's own fields (e.g. privacy) before anyone joins. */
|
|
3557
4403
|
updateMatch(matchID: string, fields?: {
|
|
3558
4404
|
targetUserID?: string;
|
|
@@ -3587,8 +4433,19 @@ declare class CollectionService {
|
|
|
3587
4433
|
constructor(ctx: ClientContext);
|
|
3588
4434
|
getDefinitions(): Promise<OperationResult<CollectionDefinitions>>;
|
|
3589
4435
|
getUserState(): Promise<OperationResult<UserCollectionState>>;
|
|
3590
|
-
|
|
3591
|
-
|
|
4436
|
+
/**
|
|
4437
|
+
* Opens `count` packs in ONE atomic operation. The cost scales with the count and each pack
|
|
4438
|
+
* is rolled against the state left by the previous one, so a collectible dropping twice in a
|
|
4439
|
+
* row is correctly counted as a duplicate. `count` is clamped server-side to the configured
|
|
4440
|
+
* ceiling (pack type → module setting → platform default); the response reports what actually
|
|
4441
|
+
* happened in `OpenedCount` and breaks it down per pack in `Packs`.
|
|
4442
|
+
*/
|
|
4443
|
+
openPack(collectionID: string, packTypeID: string, count?: number, options?: {
|
|
4444
|
+
selectedOptionID?: string;
|
|
4445
|
+
payment?: PaymentProof;
|
|
4446
|
+
}): Promise<OperationResult<OpenPackResponse>>;
|
|
4447
|
+
/** Opens `count` chests in ONE atomic operation. See openPack() for the multi-open contract. */
|
|
4448
|
+
openCollectionChest(collectionID: string, collectionChestID: string, count?: number): Promise<OperationResult<OpenCollectionChestResponse>>;
|
|
3592
4449
|
useCollectibleJoker(collectionID: string, collectibleID: string): Promise<OperationResult<UseCollectibleJokerResponse>>;
|
|
3593
4450
|
claimSetReward(collectionID: string, setID: string): Promise<OperationResult<ClaimSetRewardResponse>>;
|
|
3594
4451
|
/** Claim rewards for several completed sets in one atomic operation (deduped by SetID). */
|
|
@@ -3612,7 +4469,14 @@ declare class CoopEventService {
|
|
|
3612
4469
|
getUserState(): Promise<OperationResult<CoopUserStateResponse>>;
|
|
3613
4470
|
getGroupState(groupID: string): Promise<OperationResult<CoopGroupStateResponse>>;
|
|
3614
4471
|
joinOrCreateGroup(coopChainID: string): Promise<OperationResult<CoopGroupStateResponse>>;
|
|
3615
|
-
|
|
4472
|
+
/**
|
|
4473
|
+
* Spins the wheel `count` times in ONE atomic operation.
|
|
4474
|
+
*
|
|
4475
|
+
* Only spins that actually happen are charged: the run stops at the spin that completes the
|
|
4476
|
+
* object, and the remainder is neither rolled nor billed — check `SpinsUsed` against
|
|
4477
|
+
* `RequestedSpins`. `count` is clamped server-side to `MaxSpinsPerCall`.
|
|
4478
|
+
*/
|
|
4479
|
+
spin(coopChainID: string, groupID: string, count?: number, selectedOptionID?: string): Promise<OperationResult<CoopSpinResponse>>;
|
|
3616
4480
|
claimObjectReward(groupID: string): Promise<OperationResult<CoopClaimRewardResponse>>;
|
|
3617
4481
|
claimGrandPrize(groupID: string): Promise<OperationResult<CoopClaimRewardResponse>>;
|
|
3618
4482
|
leaveGroup(groupID?: string): Promise<OperationResult<CoopLeaveGroupResponse>>;
|
|
@@ -3627,7 +4491,17 @@ declare class DealOfferService {
|
|
|
3627
4491
|
getUserState(): Promise<OperationResult<UserDealOffersStateResponse>>;
|
|
3628
4492
|
getActiveDeals(): Promise<OperationResult<GetActiveDealsResponse>>;
|
|
3629
4493
|
dismissDeal(slotID: string): Promise<OperationResult<DismissDealResponse>>;
|
|
3630
|
-
|
|
4494
|
+
/**
|
|
4495
|
+
* Executes a node of an active deal.
|
|
4496
|
+
*
|
|
4497
|
+
* `options.selectedOptionID` picks the way to pay the node; `options.payment` carries the store
|
|
4498
|
+
* receipt and is required exactly when that option is paid in a store — the main monetization
|
|
4499
|
+
* path of deal offers.
|
|
4500
|
+
*/
|
|
4501
|
+
executeNode(slotID: string, nodeID: string, externalRefID?: string, options?: {
|
|
4502
|
+
selectedOptionID?: string;
|
|
4503
|
+
payment?: PaymentProof;
|
|
4504
|
+
}): Promise<OperationResult<ExecuteNodeResponse>>;
|
|
3631
4505
|
recordShow(slotID: string): Promise<OperationResult<RecordShowResponse>>;
|
|
3632
4506
|
claimMilestone(slotID: string, milestoneID: string): Promise<OperationResult<ClaimDealMilestoneResponse>>;
|
|
3633
4507
|
claimMilestonesBatch(slotID: string, milestoneIDs: string[]): Promise<OperationResult<ClaimDealMilestonesBatchResponse>>;
|
|
@@ -3642,6 +4516,15 @@ declare class ReferralService {
|
|
|
3642
4516
|
getUserState(): Promise<OperationResult<UserReferralStateResponse>>;
|
|
3643
4517
|
activateReferralCode(referralCode: string): Promise<OperationResult<ActivateReferralCodeResponse>>;
|
|
3644
4518
|
claimInviteReward(inviteRewardID: string): Promise<OperationResult<ClaimInviteRewardResponse>>;
|
|
4519
|
+
/**
|
|
4520
|
+
* Claims several invite milestones in ONE atomic backend operation.
|
|
4521
|
+
*
|
|
4522
|
+
* The merged `Resources` of the batch is applied ONCE from the top level — per-item
|
|
4523
|
+
* `Data.Resources` is null by contract, so applying both would double count the grant.
|
|
4524
|
+
* Invalid items (unknown / not reached / already claimed) come back as failed elements
|
|
4525
|
+
* without dropping the rest of the batch.
|
|
4526
|
+
*/
|
|
4527
|
+
claimInviteRewardsBatch(inviteRewardIDs: string[]): Promise<OperationResult<ClaimInviteRewardsBatchResponse>>;
|
|
3645
4528
|
private baseRequest;
|
|
3646
4529
|
}
|
|
3647
4530
|
|
|
@@ -3667,7 +4550,10 @@ declare class TimedBoostService {
|
|
|
3667
4550
|
getDefinitions(): Promise<OperationResult<TimedBoostDefinitions>>;
|
|
3668
4551
|
getActive(): Promise<OperationResult<GetActiveTimedBoostsResponse>>;
|
|
3669
4552
|
getActiveWindows(): Promise<OperationResult<GetActiveBoostWindowsResponse>>;
|
|
3670
|
-
activate(boostID: string
|
|
4553
|
+
activate(boostID: string, options?: {
|
|
4554
|
+
selectedOptionID?: string;
|
|
4555
|
+
payment?: PaymentProof;
|
|
4556
|
+
}): Promise<OperationResult<ActivateTimedBoostResponse>>;
|
|
3671
4557
|
cleanupExpired(): Promise<OperationResult<SuccessResponse>>;
|
|
3672
4558
|
private baseRequest;
|
|
3673
4559
|
}
|
|
@@ -3758,7 +4644,7 @@ declare class GameLoopService {
|
|
|
3758
4644
|
boardLoopRaid(digIndex: number, existingRelatedEntityID?: string): Promise<OperationResult<RaidResponse>>;
|
|
3759
4645
|
boardLoopRaidFast(digIndices: number[]): Promise<OperationResult<RaidResponse>>;
|
|
3760
4646
|
boardLoopBuild(buildingIndex: number): Promise<OperationResult<BuildResponse>>;
|
|
3761
|
-
boardSpecialChoose(choiceID: string): Promise<OperationResult<SpecialChooseResponse>>;
|
|
4647
|
+
boardSpecialChoose(choiceID: string, selectedOptionID?: string): Promise<OperationResult<SpecialChooseResponse>>;
|
|
3762
4648
|
boardSpecialApplyMultiplier(existingRelatedEntityID?: string): Promise<OperationResult<SpecialApplyMultiplierResponse>>;
|
|
3763
4649
|
boardSpecialClaim(): Promise<OperationResult<SpecialClaimResponse>>;
|
|
3764
4650
|
/** Fetch this player's Community Chest state (active group, if any) + seconds remaining. */
|
|
@@ -3818,7 +4704,7 @@ declare class MarketplaceService {
|
|
|
3818
4704
|
getBuyOrders(itemID?: string, continuationToken?: string, pageSize?: number): Promise<OperationResult<MarketplaceBrowseResponse>>;
|
|
3819
4705
|
getMyState(): Promise<OperationResult<MarketplaceMyStateResponse>>;
|
|
3820
4706
|
getHistory(continuationToken?: string, pageSize?: number): Promise<OperationResult<MarketplaceHistoryResponse>>;
|
|
3821
|
-
createListing(itemID: string, catalogID: string, goodsAmount: number, priceBundle: ResourceBundle, durationHours: number, itemInstanceIDs?: string[]): Promise<OperationResult<MarketplaceCreateOfferResponse>>;
|
|
4707
|
+
createListing(itemID: string, catalogID: string, goodsAmount: number, priceBundle: ResourceBundle, durationHours: number, itemInstanceIDs?: string[], selectedOptionID?: string): Promise<OperationResult<MarketplaceCreateOfferResponse>>;
|
|
3822
4708
|
cancelListing(offerID: string): Promise<OperationResult<MarketplaceSettlementResponse>>;
|
|
3823
4709
|
buy(offerID: string): Promise<OperationResult<MarketplaceSettlementResponse>>;
|
|
3824
4710
|
/** Immediate-or-cancel market buy against the best matching active Listing (no resting order left behind on miss). */
|
|
@@ -3840,6 +4726,8 @@ declare class MarketplaceService {
|
|
|
3840
4726
|
bidCatalogID?: string;
|
|
3841
4727
|
bidItemID?: string;
|
|
3842
4728
|
itemInstanceIDs?: string[];
|
|
4729
|
+
/** Way to pay the listing fee (`PriceOption.OptionID`). */
|
|
4730
|
+
selectedOptionID?: string;
|
|
3843
4731
|
}): Promise<OperationResult<MarketplaceCreateOfferResponse>>;
|
|
3844
4732
|
placeBid(offerID: string, bidAmount: number): Promise<OperationResult<MarketplacePlaceBidResponse>>;
|
|
3845
4733
|
/** Role-dependent lazy finalization: winner claims goods, seller claims proceeds (net). */
|
|
@@ -3971,6 +4859,17 @@ declare class StoreApi {
|
|
|
3971
4859
|
getUserState(request: StoreRequest): Promise<OperationResult<UserStoreState>>;
|
|
3972
4860
|
}
|
|
3973
4861
|
|
|
4862
|
+
/** Thin transport wrapper for the Purchase feature (port of PurchaseAPI.cs). */
|
|
4863
|
+
declare class PurchaseApi {
|
|
4864
|
+
private readonly ctx;
|
|
4865
|
+
constructor(ctx: ClientContext);
|
|
4866
|
+
private send;
|
|
4867
|
+
getDefinitions(request: PurchaseRequest): Promise<OperationResult<PurchaseDefinitions>>;
|
|
4868
|
+
getUserState(request: PurchaseRequest): Promise<OperationResult<UserPurchaseState>>;
|
|
4869
|
+
validatePurchase(request: PurchaseRequest): Promise<OperationResult<PurchaseValidationResponse>>;
|
|
4870
|
+
validatePurchasesBatch(request: PurchaseRequest): Promise<OperationResult<PurchaseValidationBatchResponse>>;
|
|
4871
|
+
}
|
|
4872
|
+
|
|
3974
4873
|
/** Thin transport wrapper for the Lootbox feature (port of LootboxAPI.cs). */
|
|
3975
4874
|
declare class LootboxApi {
|
|
3976
4875
|
private readonly ctx;
|
|
@@ -3994,6 +4893,40 @@ declare class RewardApi {
|
|
|
3994
4893
|
claimReward(request: RewardRequest): Promise<OperationResult<ClaimRewardResponse>>;
|
|
3995
4894
|
}
|
|
3996
4895
|
|
|
4896
|
+
/** Thin transport wrapper for the Tutorial feature (port of TutorialV2). */
|
|
4897
|
+
declare class TutorialApi {
|
|
4898
|
+
private readonly ctx;
|
|
4899
|
+
constructor(ctx: ClientContext);
|
|
4900
|
+
private send;
|
|
4901
|
+
getTutorialDefinitions(request: TutorialRequest): Promise<OperationResult<TutorialDefinitions>>;
|
|
4902
|
+
getUserTutorialState(request: TutorialRequest): Promise<OperationResult<GetUserTutorialStateResponse>>;
|
|
4903
|
+
startFlow(request: TutorialRequest): Promise<OperationResult<TutorialFlowResponse>>;
|
|
4904
|
+
reportStepShown(request: TutorialRequest): Promise<OperationResult<TutorialFlowResponse>>;
|
|
4905
|
+
completeStep(request: TutorialRequest): Promise<OperationResult<TutorialFlowResponse>>;
|
|
4906
|
+
completeStepsBatch(request: TutorialRequest): Promise<OperationResult<TutorialFlowBatchResponse>>;
|
|
4907
|
+
skipStep(request: TutorialRequest): Promise<OperationResult<TutorialFlowResponse>>;
|
|
4908
|
+
skipFlow(request: TutorialRequest): Promise<OperationResult<TutorialFlowResponse>>;
|
|
4909
|
+
claimFlowReward(request: TutorialRequest): Promise<OperationResult<TutorialClaimResponse>>;
|
|
4910
|
+
resetFlow(request: TutorialRequest): Promise<OperationResult<TutorialFlowResponse>>;
|
|
4911
|
+
}
|
|
4912
|
+
|
|
4913
|
+
/** Thin transport wrapper for the Localization feature (port of LocalizationV2). */
|
|
4914
|
+
declare class LocalizationApi {
|
|
4915
|
+
private readonly ctx;
|
|
4916
|
+
constructor(ctx: ClientContext);
|
|
4917
|
+
private send;
|
|
4918
|
+
/** Which languages exist and what their table versions are. Downloads no table. */
|
|
4919
|
+
getLocalizationManifest(request: LocalizationRequest): Promise<OperationResult<LocalizationManifestResponse>>;
|
|
4920
|
+
/**
|
|
4921
|
+
* A translation table in the response body.
|
|
4922
|
+
*
|
|
4923
|
+
* This is the FALLBACK path: the main one is the immutable CDN artifact referenced by
|
|
4924
|
+
* `ClientState.Localization.Url`. Coming here is normal (first player after a translation
|
|
4925
|
+
* edit, blocked CDN, a manual language switch) — it just costs one more round trip.
|
|
4926
|
+
*/
|
|
4927
|
+
getLocalizationTable(request: LocalizationRequest): Promise<OperationResult<LocalizationTableResponse>>;
|
|
4928
|
+
}
|
|
4929
|
+
|
|
3997
4930
|
/** Thin transport wrapper for the Quest feature (port of QuestAPI.cs). */
|
|
3998
4931
|
declare class QuestApi {
|
|
3999
4932
|
private readonly ctx;
|
|
@@ -4059,6 +4992,7 @@ declare class SeasonApi {
|
|
|
4059
4992
|
getUserState(request: SeasonRequest): Promise<OperationResult<UserSeasonStateResponse>>;
|
|
4060
4993
|
grantStatusTokens(request: SeasonRequest): Promise<OperationResult<GrantStatusTokensResponse>>;
|
|
4061
4994
|
claimTierReward(request: SeasonRequest): Promise<OperationResult<ClaimTierRewardResponse>>;
|
|
4995
|
+
claimTierRewardsBatch(request: SeasonRequest): Promise<OperationResult<ClaimTierRewardsBatchResponse>>;
|
|
4062
4996
|
}
|
|
4063
4997
|
|
|
4064
4998
|
/** Thin transport wrapper for the Premium feature (port of PremiumAPI.cs). */
|
|
@@ -4176,6 +5110,7 @@ declare class ReferralApi {
|
|
|
4176
5110
|
getUserState(request: ReferralRequest): Promise<OperationResult<UserReferralStateResponse>>;
|
|
4177
5111
|
activateReferralCode(request: ReferralRequest): Promise<OperationResult<ActivateReferralCodeResponse>>;
|
|
4178
5112
|
claimInviteReward(request: ReferralRequest): Promise<OperationResult<ClaimInviteRewardResponse>>;
|
|
5113
|
+
claimInviteRewardsBatch(request: ReferralRequest): Promise<OperationResult<ClaimInviteRewardsBatchResponse>>;
|
|
4179
5114
|
}
|
|
4180
5115
|
|
|
4181
5116
|
/** Thin transport wrapper for the Social feature (port of SocialAPI.cs). */
|
|
@@ -4347,6 +5282,11 @@ declare class MultiplayerApi {
|
|
|
4347
5282
|
interface IDosGamesClientConfig extends SettingsInput {
|
|
4348
5283
|
/** Platform adapter (defaults to BrowserPlatformAdapter). Inject NoopPlatformAdapter in tests. */
|
|
4349
5284
|
platform?: PlatformAdapter;
|
|
5285
|
+
/**
|
|
5286
|
+
* Platform reported to the server (`X-IG-Platform`). Auto-detected when omitted; set it
|
|
5287
|
+
* explicitly in a native wrapper — the wrapper knows for certain, sniffing does not.
|
|
5288
|
+
*/
|
|
5289
|
+
clientPlatform?: ClientPlatform;
|
|
4350
5290
|
/** Custom fetch (defaults to global fetch). Inject a mock in tests. */
|
|
4351
5291
|
fetch?: typeof fetch;
|
|
4352
5292
|
/** Override the per-endpoint throttle window (ms). Default 600. */
|
|
@@ -4361,6 +5301,8 @@ declare class ClientContext {
|
|
|
4361
5301
|
readonly settings: IDosGamesSettings;
|
|
4362
5302
|
readonly emitter: TypedEmitter<SdkEvents>;
|
|
4363
5303
|
readonly platform: PlatformAdapter;
|
|
5304
|
+
/** Platform reported to the server; services read it to filter payment options. */
|
|
5305
|
+
readonly clientPlatform: ClientPlatform;
|
|
4364
5306
|
readonly data: IDosGamesData;
|
|
4365
5307
|
readonly authStore: AuthStore;
|
|
4366
5308
|
readonly api: {
|
|
@@ -4369,9 +5311,12 @@ declare class ClientContext {
|
|
|
4369
5311
|
currency: CurrencyApi;
|
|
4370
5312
|
item: ItemApi;
|
|
4371
5313
|
store: StoreApi;
|
|
5314
|
+
purchase: PurchaseApi;
|
|
4372
5315
|
lootbox: LootboxApi;
|
|
4373
5316
|
reward: RewardApi;
|
|
4374
5317
|
quest: QuestApi;
|
|
5318
|
+
tutorial: TutorialApi;
|
|
5319
|
+
localization: LocalizationApi;
|
|
4375
5320
|
timedEvent: TimedEventApi;
|
|
4376
5321
|
leaderboard: LeaderboardApi;
|
|
4377
5322
|
season: SeasonApi;
|
|
@@ -4399,9 +5344,13 @@ declare class ClientContext {
|
|
|
4399
5344
|
readonly currency: CurrencyService;
|
|
4400
5345
|
readonly item: ItemService;
|
|
4401
5346
|
readonly store: StoreService;
|
|
5347
|
+
readonly purchase: PurchaseService;
|
|
5348
|
+
readonly checkout: CheckoutService;
|
|
4402
5349
|
readonly lootbox: LootboxService;
|
|
4403
5350
|
readonly reward: RewardService;
|
|
4404
5351
|
readonly quest: QuestService;
|
|
5352
|
+
readonly tutorial: TutorialService;
|
|
5353
|
+
readonly localization: LocalizationService;
|
|
4405
5354
|
readonly timedEvent: TimedEventService;
|
|
4406
5355
|
readonly leaderboard: LeaderboardService;
|
|
4407
5356
|
readonly season: SeasonService;
|
|
@@ -4443,9 +5392,23 @@ declare class IDosGamesClient {
|
|
|
4443
5392
|
get currency(): CurrencyService;
|
|
4444
5393
|
get item(): ItemService;
|
|
4445
5394
|
get store(): StoreService;
|
|
5395
|
+
/** Real-money purchases: the store product catalog and receipt validation. */
|
|
5396
|
+
get purchase(): PurchaseService;
|
|
5397
|
+
/**
|
|
5398
|
+
* Price options: what this client may show, what each option needs, how much crypto is missing.
|
|
5399
|
+
* Buying itself stays in the module that owns the entity — see the service docs.
|
|
5400
|
+
*/
|
|
5401
|
+
get checkout(): CheckoutService;
|
|
4446
5402
|
get lootbox(): LootboxService;
|
|
4447
5403
|
get reward(): RewardService;
|
|
4448
5404
|
get quest(): QuestService;
|
|
5405
|
+
/** Onboarding flows: start, advance, skip and claim tutorial steps. */
|
|
5406
|
+
get tutorial(): TutorialService;
|
|
5407
|
+
/**
|
|
5408
|
+
* Переводы: `t(key)` и смена языка. Загружать ничего не нужно — таблицы приезжают вместе с
|
|
5409
|
+
* состоянием на входе в игру.
|
|
5410
|
+
*/
|
|
5411
|
+
get localization(): LocalizationService;
|
|
4449
5412
|
get timedEvent(): TimedEventService;
|
|
4450
5413
|
get leaderboard(): LeaderboardService;
|
|
4451
5414
|
get season(): SeasonService;
|
|
@@ -4583,4 +5546,46 @@ type MailboxMessageDocument = { MessageID?: null | string; TitleID?: null | stri
|
|
|
4583
5546
|
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; };
|
|
4584
5547
|
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; };
|
|
4585
5548
|
|
|
4586
|
-
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 SsoCodeFromUrl, 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, beginSsoRedirect, createIDosGamesClient, isFail, isOk, normalizeBlockchainCategory, readSsoCodeFromUrl };
|
|
5549
|
+
/** Что лежит в хранилище: версия таблицы и сама плоская таблица. */
|
|
5550
|
+
interface StoredLocalizationTable {
|
|
5551
|
+
v: number;
|
|
5552
|
+
t: Record<string, string>;
|
|
5553
|
+
}
|
|
5554
|
+
/**
|
|
5555
|
+
* Таблицы переводов, переживающие перезапуск игры.
|
|
5556
|
+
*
|
|
5557
|
+
* Механика та же, что у `TitleConfigCache`, с одним отличием: запись на ЛОКАЛЬ, а не на набор
|
|
5558
|
+
* полей. Иначе смена языка стирала бы предыдущий, и игрок, переключающийся туда-обратно,
|
|
5559
|
+
* перекачивал бы таблицы каждый раз.
|
|
5560
|
+
*
|
|
5561
|
+
* Переводы — публичные данные тайтла, одни и те же для всех игроков, поэтому при логауте они
|
|
5562
|
+
* намеренно НЕ удаляются: чистка только заставила бы качать заново.
|
|
5563
|
+
*
|
|
5564
|
+
* Любая ошибка хранилища трактуется как «кэша нет»: механизм обязан деградировать до полной
|
|
5565
|
+
* загрузки таблицы, а не ломать запуск игры.
|
|
5566
|
+
*/
|
|
5567
|
+
declare class LocalizationCache {
|
|
5568
|
+
private readonly storage;
|
|
5569
|
+
private readonly titleId;
|
|
5570
|
+
constructor(storage: ConfigStorage, titleId: string);
|
|
5571
|
+
read(locale: string): Promise<StoredLocalizationTable | null>;
|
|
5572
|
+
write(locale: string, version: number, table: Record<string, string>): Promise<void>;
|
|
5573
|
+
/**
|
|
5574
|
+
* Версии ВСЕХ сохранённых таблиц одной картой — то, что уезжает в
|
|
5575
|
+
* `KnownLocalizationVersions`.
|
|
5576
|
+
*
|
|
5577
|
+
* Отдельная запись, а не обход ключей: интерфейс `ConfigStorage` намеренно узкий (get/set/
|
|
5578
|
+
* remove) и перечислять ключи не умеет — иначе его нельзя было бы реализовать поверх
|
|
5579
|
+
* PlayerPrefs или нативной обёртки.
|
|
5580
|
+
*
|
|
5581
|
+
* Карта нужна ДО того, как сервер ответит, какая локаль игроку досталась: прислать версию
|
|
5582
|
+
* только своего языка мало — на смене языка и у неполного перевода в дело идёт вторая
|
|
5583
|
+
* таблица, и её версию сервер тоже обязан сверить.
|
|
5584
|
+
*/
|
|
5585
|
+
readVersions(): Promise<Record<string, number>>;
|
|
5586
|
+
private noteVersion;
|
|
5587
|
+
private keyOf;
|
|
5588
|
+
private versionsKey;
|
|
5589
|
+
}
|
|
5590
|
+
|
|
5591
|
+
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, CheckoutService, type ClaimAllRewardsBatchResponse, type ClaimAllRewardsResult, type ClaimComebackRewardResponse, type ClaimCycleRewardResponse, type ClaimCycleRewardsBatchResponse, type ClaimDailyRewardResponse, type ClaimDealMilestoneResponse, type ClaimDealMilestonesBatchResponse, type ClaimGrandPrizeResponse, type ClaimGroupCompletionRewardResponse, type ClaimInviteRewardResponse, type ClaimInviteRewardsBatchResponse, type ClaimLeaderboardMilestoneResponse, type ClaimLeaderboardMilestonesBatchResponse, type ClaimMilestoneRewardResponse, type ClaimMilestoneRewardsBatchResponse, type ClaimMilestonesBatchResponse, type ClaimQuestRewardResponse, type ClaimQuestRewardsBatchResponse, type ClaimRewardResponse, type ClaimSetRewardResponse, type ClaimSetRewardsBatchResponse, type ClaimTierRewardResponse, type ClaimTierRewardsBatchResponse, ClientPlatform, type ClientState, CloudCodeAction, CloudCodeErrorCode, type CloudCodeLogEntry, CloudCodeLogLevel, type CloudCodeRequest, CloudCodeRevisionSelection, CloudCodeService, type CodeExecutionError, type CollectIdleAccrualResponse, CollectionAction, type CollectionDefinitions, type CollectionGlobalSettings, type CollectionRequest, CollectionService, type CollectionSetRef, type CollectionTradeOfferDocument, CommissionSink, type CommunityChestClaimResponse, type CommunityChestGroupDocument, type CommunityChestGroupStateResponse, type CommunityChestHistoryEntry, type CommunityChestLeaveResponse, type CommunityChestMember, CommunityChestMemberStatus, type CommunityChestSharedState, CommunityChestStatus, type CommunityChestUserStateResponse, type ConfirmWithdrawalResponse, type ConversionDailyCounter, ConversionRateMode, type ConversionTarget, type ConvertResponse, type CoopBuildObjectsMemberState, type CoopBuildObjectsState, type CoopClaimRewardResponse, CoopEventAction, type CoopEventDefinitions, type CoopEventRequest, CoopEventService, type CoopGroupDocument, type CoopGroupMember, type CoopGroupStateResponse, CoopGroupStatus, type CoopLeaveGroupResponse, CoopMemberStatus, type CoopPartnerObjectState, type CoopSpinResponse, type CoopUserStateResponse, CraftAction, type CraftDefinitions, type CraftDefinitionsResponse, type CraftRequest, type CraftResponse, CraftService, type CraftSingleResult, CraftType, type CreateMatchResponse, type CryptoConvertResponse, type CryptoCurrencyDefinition, type CryptoCurrencyPermissions, type CryptoLimits, type CryptoNetworkBinding, type CryptoShortfall, CurrencyAction, type CurrencyAudit, type CurrencyConversion, type CurrencyDefinitions, type CurrencyRequest, CurrencyService, CurrencyStatus, CurrencyType, CustomDataBucket, CustomDataValueType, CustomDataWriter, type CyclicSchedule, DEFAULT_BASE_URL, type DailyUsageRecord, type DealMilestoneProgressInfo, DealNodeRuntimeStatus, DealOfferAction, DealOfferActivationStatus, type DealOfferDefinitions, type DealOfferRequest, DealOfferService, type DealOffersDefinitionResponse, type DeclineTradeOfferResponse, type DepositNFTResponse, type DepositTokenResponse, type DismissDealResponse, type DonationResponse, EnvelopeType, type EquipItemsResponse, type EquipSlotPair, type EquipmentPreset, type EquipmentSlot, type EquippedItem, type EventMap, type EventMilestoneClaimResponse, type EventTokenAddress, type EventTokenConversion, type EventTokenDefinition, type EventTokenGrantResponse, type EventTokenOperation, type EventTokenSpendResponse, EventTokenType, type ExecuteCloudCodeResponse, type ExecuteNodeResponse, type ExperimentDefinition, type ExperimentDefinitions, type ExperimentVariant, type ExperimentVariantCondition, type FodderConsumedEntry, FodderSelectionMode, FodderValuationMode, type FriendActionResponse, FriendActionStatus, type FriendPublicProfile, type FriendsListResponse, GameLoopAction, type GameLoopDefinitions, type GameLoopRequest, GameLoopService, type GetActiveBoostWindowsResponse, type GetActiveDealsResponse, type GetActiveEventsResponse, type GetActiveTimedBoostsResponse, type GetCharactersResponse, type GetLeaderboardResponse, type GetLeaderboardsBatchResponse, type GetMatchDefinitionsResponse, type GetMilestoneRewardMultiplierResponse, type GetMyProgressResponse, type GetMyUserCustomDataResponse, type GetOverviewBatchResponse, type GetProgressBatchResponse, type GetPublicTitleDataResponse, type GetPublicUserCustomDataResponse, type GetTradeOffersResponse, type GetUserQuestStateResponse, type GetUserTutorialStateResponse, type GrantStatusTokensResponse, type GrantTokensBatchResponse, type GrantedCollectible, type HeistCell, IDosGamesClient, type IDosGamesClientConfig, IDosGamesData, type IDosGamesSettings, type IapProductDefinition, type IapProductPurchaseState, type IapProductRules, IapProductType, IapPurchaseStatus, type IapStore, IapStore$1 as IapStoreValues, type IceServer, type InstantBattleDefinitions, type InstantBattleResponse, type InstantBattleRule, type InterstitialSettings, type InventoryDelta, ItemAction, type ItemCatalog, type ItemDefinition, type ItemDefinitions, type ItemEquipment, type ItemMetadata, type ItemRequest, ItemService, type ItemStats, type ItemTotals, type ItemUpgrade, type ItemUpgradeFodder, type ItemUpgradeRef, type JsonValue, KeyValueStorage, KycStatus, KycTier, LeaderboardAction, type LeaderboardDefinitions, type LeaderboardMilestoneRef, type LeaderboardOverview, type LeaderboardRequest, type LeaderboardScoreRef, LeaderboardService, type LeaderboardUserEntry, type LeaveRoomResponse, type LevelsPreset, type LimitSpec, type LinkedWalletInfo, type Listener, LocalizationAction, LocalizationCache, type LocalizationDefinitions, type LocalizationLocaleDefinition, type LocalizationLocaleInfo, type LocalizationManifestResponse, LocalizationMissingKeyMode, type LocalizationParams, type LocalizationRequest, LocalizationService, type LocalizationState, type LocalizationTableRef, type LocalizationTableResponse, LootboxAction, type LootboxAmountRange, type LootboxDefinitions, type LootboxDefinitionsResponse, type LootboxGlobalSettings, type LootboxOpenResponse, type LootboxPityRule, type LootboxPityTriggerResponse, type LootboxRequest, type LootboxRewardRoll, type LootboxRewardSlot, LootboxService, type LootboxSupplyRule, type MailboxBroadcastDocument, type MailboxDefinition, type MailboxMessageDocument, MailboxMessageSource, MailboxMessageStatus, type MailboxMessageTypeDefinition, type MailboxSegmentDefinition, MarketGoodsType, MarketOfferStatus, MarketOfferType, MarketplaceAction, type MarketplaceActionCounter, type MarketplaceAuctionSettings, type MarketplaceAuctionState, type MarketplaceBidRefund, type MarketplaceBrowseResponse, type MarketplaceBuyOrderSettings, type MarketplaceCommissionOverride, type MarketplaceCommissionPolicy, type MarketplaceCreateOfferResponse, type MarketplaceDefinitions, type MarketplaceDirectTradeSettings, type MarketplaceGetDefinitionsResponse, type MarketplaceGroupedOfferView, type MarketplaceGroupedOffersResponse, type MarketplaceHistoryEntryView, type MarketplaceHistoryResponse, type MarketplaceListingSettings, type MarketplaceMatchingSettings, type MarketplaceMyStateResponse, type MarketplaceOfferResponse, type MarketplaceOfferView, type MarketplacePlaceBidResponse, type MarketplacePricePolicy, type MarketplaceRequest, MarketplaceService, type MarketplaceSettlementResponse, type MarketplaceTradabilityPolicy, MatchAction, type MatchDefinitions, type MatchRequest, MatchService, MatchStatus, type MatchesPageResponse, type MilestoneClaimRef, type MilestoneDefinition, MultiplayerAction, MultiplayerChatMode, type MultiplayerDefinitions, type MultiplayerRequest, MultiplayerService, type MultiplayerSystemState, MultiplayerTopology, type NFTModel, type NFTNetworkBinding, type NFTTransactionDocument, type NFTWithdrawalResponse, type NftCollectionStats, type NftStatsContainer, type OpenCollectionChestResponse, type OpenPackResponse, type OperationFailure, type OperationFailureReason, type OperationResult, type OperationSuccess, type PackOpenResult, type PaymentProof, type PaymentRequirement, type PendingWithdrawalRef, PlatformAdapter, type PlatformBlockchainState, type PlatformLoginResponse, type PlayerEconomyTuningState, type PollResponse, PremiumAction, type PremiumAdReduction, type PremiumDefinitions, type PremiumDefinitionsResponse, type PremiumPurchaseResponse, type PremiumRequest, PremiumService, type PremiumStateResponse, type PremiumSubscription, type PriceOption, type PriceOptions, type PublishResponse, PurchaseAction, type PurchaseBatchResponse, type PurchaseDefinitions, type PurchaseReceiptRef, type PurchaseRequest, PurchaseService, type PurchaseValidationBatchResponse, type PurchaseValidationResponse, type PvPMatch, QuestAction, type QuestAvailability, type QuestClaimRef, type QuestCycleDefinition, type QuestDefinition, type QuestDefinitions, type QuestGroupCompletionDefinition, type QuestIdentity, type QuestLinking, type QuestObjectiveDefinition, QuestObjectiveSource, type QuestPhaseDefinition, type QuestPointsTrackView, QuestPrerequisiteMode, type QuestPresetBindings, type QuestPresetRegistry, type QuestProgressUpdate, type QuestRequest, type QuestReward, QuestService, QuestStatus, RaidMode, type RaidResponse, type RealtimeEnvelope, type RechargeConfig, type RecordShowResponse, ReferralAction, type ReferralDefinitions, type ReferralDefinitionsResponse, type ReferralInviteRewardState, type ReferralRequest, ReferralService, type RelativeWindow, type ResourceBundle, type ResourceConsume, type ResourceDualPartyResult, type ResourceEntry, ResourceEntryType, type ResourceGrant, type ResourceOperation, type ResourceTransferResult, type RetryWithdrawalResponse, RewardAction, type RewardDefinitions, type RewardDefinitionsResponse, type RewardRequest, RewardService, type RewardedVideoSettings, type RollActionData, type RoomListItem, type RoomMemberView, type RoomSnapshotResponse, RoomVisibility, type RoomsPageResponse, type ScheduleChain, type ScheduleChainPhase, ScheduleMode, type ScheduleSpec, type ScheduledWindow, type SdkEvents, SeasonAction, type SeasonDefinitions, type SeasonRequest, SeasonService, type SeasonTierRewardBundle, type SeasonTierRewardMultiplier, type SeasonTierRewardSet, type SegmentGate, type SendTradeOfferResponse, type SetUserCustomDataResponse, type SettingsInput, SocialAction, type SocialCounters, type SocialRequest, SocialService, type SocialTimelineEvent, type SolanaWithdrawalSignature, type SpecialApplyMultiplierResponse, SpecialChoiceMode, type SpecialChooseResponse, type SpecialClaimResponse, type SpecialModeOfferData, type SpecialPendingState, type SpendRewardDefinition, type SpendTokensBatchResponse, type SsoCodeFromUrl, type StatDefinition, type StatRequirement, type StatsPreset, StoreAction, type StoreDefinitions, type StorePurchaseRef, type StorePurchaseResponse, type StorePurchaseState, type StoreRequest, StoreService, StoreType, type StoredLocalizationTable, type SubmitScoreResponse, type SubmitScoresBatchResponse, type SuccessResponse, TimedBoostAction, type TimedBoostDefinitions, type TimedBoostRequest, TimedBoostService, TimedBoostStackingPolicy, TimedEventAction, type TimedEventDefinitions, type TimedEventGrantRef, type TimedEventInstanceRef, type TimedEventMilestoneRef, type TimedEventRequest, TimedEventService, type TimedEventSpendRef, TimelineEventType, type TimelineResponse, TitleAction, TitleConfig, TitleCustomDataAction, type TitleCustomDataDefinitions, type TitleCustomDataKeyDefinition, type TitleCustomDataRecord, type TitleCustomDataRequest, TitleCustomDataService, TitleDataBucket, TitleDataScope, type TitlePublicConfigurationModel, type TitleRequest, TitleService, type TokenCurrencyStats, type TokenStatsContainer, type TokenTransactionDocument, type TokenWithdrawalResponse, TradeOfferStatus, TransactionDirection, type TransactionHistoryResponse, type TriggerContext, type TriggerSource, TutorialAction, type TutorialAvailability, type TutorialBlockingPolicy, TutorialBoardAction, type TutorialBoardScript, type TutorialClaimResponse, type TutorialDefinitions, type TutorialFlowBatchResponse, type TutorialFlowDefinition, type TutorialFlowPolicy, type TutorialFlowResponse, TutorialFlowStatus, type TutorialFlowView, type TutorialGateCondition, TutorialGateMode, type TutorialGlobalSettings, type TutorialIdentity, type TutorialPresetBindings, type TutorialPresetRegistry, type TutorialRequest, TutorialRestartPolicy, type TutorialReward, TutorialScriptModule, type TutorialScriptedOutcome, type TutorialStepCompletion, TutorialStepCompletionMode, type TutorialStepDefinition, type TutorialStepEffects, type TutorialStepIdentity, type TutorialStepPolicy, type TutorialStepProgress, TypedEmitter, type UnequipAllCharactersResponse, type UnequipItemsResponse, type UnlockCharacterResponse, type UnlockCharactersBatchResponse, type UnstackableItemInstanceState, type Unsubscribe, type UpdateMatchResponse, type UpgradeCharacterLevelResponse, type UpgradeCharacterLevelsBatchResponse, type UpgradeItemLevelResponse, type UpgradeLevelsBatchResponse, type UpgradeLevelsOptions, type UpgradeStatLevelResponse, type UpgradeStatLevelsBatchResponse, type UsageReactivationEvent, type UsageTimeStats, type UseCollectibleJokerResponse, UserAction, type UserAdvertisingState, type UserBlockchainState, type UserBlockchainStateResponse, type UserCharactersState, type UserClaimRewardState, type UserCollectionState, type UserComebackState, type UserCommunityChestState, type UserCoopEventState, type UserCryptoComplianceCounters, type UserCryptoCurrencyState, UserCustomDataAction, type UserCustomDataBatchDeleteItem, type UserCustomDataBatchSetItem, type UserCustomDataDefinitions, type UserCustomDataKeyDefinition, type UserCustomDataRecord, type UserCustomDataRequest, UserCustomDataService, type UserCustomDataState, type UserDailyCalendarState, type UserDailyCounters, UserData, type UserDealNodeLifetimeCounts, type UserDealNodeState, type UserDealOfferActivationState, type UserDealOfferHistory, type UserDealOffersState, type UserDealOffersStateResponse, type UserDealSlotState, type UserDealTrackState, type UserDepositAddress, type UserEventTokenProgress, type UserEventTokensState, type UserGameLoopsState, type UserIdleAccrualState, type UserInventoryState, type UserKycState, type UserLeaderboardProgress, type UserLeaderboardsState, type UserLootboxPityCounter, type UserLootboxState, type UserMailboxState, type UserMarketplaceState, type UserMatchCreationLimitState, type UserMatchState, type UserPremiumState, type UserPublicDataModel, type UserPurchaseState, type UserQuestCycleState, type UserQuestObjectiveProgress, type UserQuestProgress, type UserQuestState, type UserReferralState, type UserReferralStateResponse, type UserRequest, type UserRewardState, type UserRewardsStateResponse, type UserSeasonState, type UserSeasonStateResponse, type UserSeasonsState, UserService, type UserSocialState, type UserState, type UserStateSlice, type UserStateVersions, type UserStoreState, type UserTimedBoostsState, type UserTimedEventStateResponse, type UserTutorialFlowState, type UserTutorialState, type UserTutorialStepState, type UserUsageState, type UserVirtualCurrencyState, type VirtualCurrencyDefinition, type VirtualCurrencyEconomy, type VirtualCurrencyPermissions, type WalletChallengeResponse, WalletLinkType, type WithdrawalSignatureResponse, type WithdrawalSplit, beginSsoRedirect, createIDosGamesClient, isFail, isOk, normalizeBlockchainCategory, readSsoCodeFromUrl, zPaymentProof, zPriceOption, zPriceOptions };
|