@aephia/atlas-kit 0.0.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/LICENSE +202 -0
- package/README.md +124 -0
- package/dist/bindings.d.ts +11 -0
- package/dist/bindings.d.ts.map +1 -0
- package/dist/bindings.js +11 -0
- package/dist/bindings.js.map +1 -0
- package/dist/cargo/actions/index.d.ts +122 -0
- package/dist/cargo/actions/index.d.ts.map +1 -0
- package/dist/cargo/actions/index.js +526 -0
- package/dist/cargo/actions/index.js.map +1 -0
- package/dist/cargo/index.d.ts +77 -0
- package/dist/cargo/index.d.ts.map +1 -0
- package/dist/cargo/index.js +102 -0
- package/dist/cargo/index.js.map +1 -0
- package/dist/claim-stakes/index.d.ts +64 -0
- package/dist/claim-stakes/index.d.ts.map +1 -0
- package/dist/claim-stakes/index.js +97 -0
- package/dist/claim-stakes/index.js.map +1 -0
- package/dist/client/context.d.ts +21 -0
- package/dist/client/context.d.ts.map +1 -0
- package/dist/client/context.js +1374 -0
- package/dist/client/context.js.map +1 -0
- package/dist/client/contracts.d.ts +671 -0
- package/dist/client/contracts.d.ts.map +1 -0
- package/dist/client/contracts.js +2 -0
- package/dist/client/contracts.js.map +1 -0
- package/dist/client/deployments.d.ts +3 -0
- package/dist/client/deployments.d.ts.map +1 -0
- package/dist/client/deployments.js +2 -0
- package/dist/client/deployments.js.map +1 -0
- package/dist/client/errors.d.ts +227 -0
- package/dist/client/errors.d.ts.map +1 -0
- package/dist/client/errors.js +288 -0
- package/dist/client/errors.js.map +1 -0
- package/dist/client/index.d.ts +7 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +5 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/lifecycle.d.ts +4 -0
- package/dist/client/lifecycle.d.ts.map +1 -0
- package/dist/client/lifecycle.js +10 -0
- package/dist/client/lifecycle.js.map +1 -0
- package/dist/client/provider-errors.d.ts +9 -0
- package/dist/client/provider-errors.d.ts.map +1 -0
- package/dist/client/provider-errors.js +12 -0
- package/dist/client/provider-errors.js.map +1 -0
- package/dist/client/reconciliation.d.ts +10 -0
- package/dist/client/reconciliation.d.ts.map +1 -0
- package/dist/client/reconciliation.js +9 -0
- package/dist/client/reconciliation.js.map +1 -0
- package/dist/client/refs.d.ts +23 -0
- package/dist/client/refs.d.ts.map +1 -0
- package/dist/client/refs.js +12 -0
- package/dist/client/refs.js.map +1 -0
- package/dist/combat/index.d.ts +256 -0
- package/dist/combat/index.d.ts.map +1 -0
- package/dist/combat/index.js +222 -0
- package/dist/combat/index.js.map +1 -0
- package/dist/crafting/index.d.ts +308 -0
- package/dist/crafting/index.d.ts.map +1 -0
- package/dist/crafting/index.js +400 -0
- package/dist/crafting/index.js.map +1 -0
- package/dist/factions/index.d.ts +292 -0
- package/dist/factions/index.d.ts.map +1 -0
- package/dist/factions/index.js +334 -0
- package/dist/factions/index.js.map +1 -0
- package/dist/fleets/actions/index.d.ts +200 -0
- package/dist/fleets/actions/index.d.ts.map +1 -0
- package/dist/fleets/actions/index.js +854 -0
- package/dist/fleets/actions/index.js.map +1 -0
- package/dist/fleets/index.d.ts +100 -0
- package/dist/fleets/index.d.ts.map +1 -0
- package/dist/fleets/index.js +124 -0
- package/dist/fleets/index.js.map +1 -0
- package/dist/identity/index.d.ts +225 -0
- package/dist/identity/index.d.ts.map +1 -0
- package/dist/identity/index.js +341 -0
- package/dist/identity/index.js.map +1 -0
- package/dist/index.d.ts +401 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +519 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/c4/adapter.d.ts +6 -0
- package/dist/internal/c4/adapter.d.ts.map +1 -0
- package/dist/internal/c4/adapter.js +2 -0
- package/dist/internal/c4/adapter.js.map +1 -0
- package/dist/internal/c4/bindings.d.ts +4 -0
- package/dist/internal/c4/bindings.d.ts.map +1 -0
- package/dist/internal/c4/bindings.js +4 -0
- package/dist/internal/c4/bindings.js.map +1 -0
- package/dist/internal/c4/character-modifier.d.ts +5 -0
- package/dist/internal/c4/character-modifier.d.ts.map +1 -0
- package/dist/internal/c4/character-modifier.js +100 -0
- package/dist/internal/c4/character-modifier.js.map +1 -0
- package/dist/internal/c4/claim-stake.d.ts +140 -0
- package/dist/internal/c4/claim-stake.d.ts.map +1 -0
- package/dist/internal/c4/claim-stake.js +205 -0
- package/dist/internal/c4/claim-stake.js.map +1 -0
- package/dist/internal/c4/combat.d.ts +98 -0
- package/dist/internal/c4/combat.d.ts.map +1 -0
- package/dist/internal/c4/combat.js +232 -0
- package/dist/internal/c4/combat.js.map +1 -0
- package/dist/internal/c4/crafting.d.ts +170 -0
- package/dist/internal/c4/crafting.d.ts.map +1 -0
- package/dist/internal/c4/crafting.js +387 -0
- package/dist/internal/c4/crafting.js.map +1 -0
- package/dist/internal/c4/factions.d.ts +248 -0
- package/dist/internal/c4/factions.d.ts.map +1 -0
- package/dist/internal/c4/factions.js +589 -0
- package/dist/internal/c4/factions.js.map +1 -0
- package/dist/internal/c4/fleet-crew-binding.d.ts +12 -0
- package/dist/internal/c4/fleet-crew-binding.d.ts.map +1 -0
- package/dist/internal/c4/fleet-crew-binding.js +51 -0
- package/dist/internal/c4/fleet-crew-binding.js.map +1 -0
- package/dist/internal/c4/fleet.d.ts +310 -0
- package/dist/internal/c4/fleet.d.ts.map +1 -0
- package/dist/internal/c4/fleet.js +393 -0
- package/dist/internal/c4/fleet.js.map +1 -0
- package/dist/internal/c4/game.d.ts +192 -0
- package/dist/internal/c4/game.d.ts.map +1 -0
- package/dist/internal/c4/game.js +396 -0
- package/dist/internal/c4/game.js.map +1 -0
- package/dist/internal/c4/identity.d.ts +193 -0
- package/dist/internal/c4/identity.d.ts.map +1 -0
- package/dist/internal/c4/identity.js +180 -0
- package/dist/internal/c4/identity.js.map +1 -0
- package/dist/internal/c4/loot-layout.d.ts +20 -0
- package/dist/internal/c4/loot-layout.d.ts.map +1 -0
- package/dist/internal/c4/loot-layout.js +29 -0
- package/dist/internal/c4/loot-layout.js.map +1 -0
- package/dist/internal/c4/loyalty.d.ts +102 -0
- package/dist/internal/c4/loyalty.d.ts.map +1 -0
- package/dist/internal/c4/loyalty.js +318 -0
- package/dist/internal/c4/loyalty.js.map +1 -0
- package/dist/internal/c4/market.d.ts +112 -0
- package/dist/internal/c4/market.d.ts.map +1 -0
- package/dist/internal/c4/market.js +247 -0
- package/dist/internal/c4/market.js.map +1 -0
- package/dist/internal/c4/pda.d.ts +6 -0
- package/dist/internal/c4/pda.d.ts.map +1 -0
- package/dist/internal/c4/pda.js +45 -0
- package/dist/internal/c4/pda.js.map +1 -0
- package/dist/internal/c4/profile-faction.d.ts +14 -0
- package/dist/internal/c4/profile-faction.d.ts.map +1 -0
- package/dist/internal/c4/profile-faction.js +69 -0
- package/dist/internal/c4/profile-faction.js.map +1 -0
- package/dist/internal/c4/rewards.d.ts +135 -0
- package/dist/internal/c4/rewards.d.ts.map +1 -0
- package/dist/internal/c4/rewards.js +305 -0
- package/dist/internal/c4/rewards.js.map +1 -0
- package/dist/internal/c4/scanning.d.ts +85 -0
- package/dist/internal/c4/scanning.d.ts.map +1 -0
- package/dist/internal/c4/scanning.js +180 -0
- package/dist/internal/c4/scanning.js.map +1 -0
- package/dist/internal/c4/starbase.d.ts +186 -0
- package/dist/internal/c4/starbase.d.ts.map +1 -0
- package/dist/internal/c4/starbase.js +259 -0
- package/dist/internal/c4/starbase.js.map +1 -0
- package/dist/internal/c4/world.d.ts +294 -0
- package/dist/internal/c4/world.d.ts.map +1 -0
- package/dist/internal/c4/world.js +417 -0
- package/dist/internal/c4/world.js.map +1 -0
- package/dist/internal/cargo.d.ts +65 -0
- package/dist/internal/cargo.d.ts.map +1 -0
- package/dist/internal/cargo.js +46 -0
- package/dist/internal/cargo.js.map +1 -0
- package/dist/internal/claim-stake.d.ts +31 -0
- package/dist/internal/claim-stake.d.ts.map +1 -0
- package/dist/internal/claim-stake.js +20 -0
- package/dist/internal/claim-stake.js.map +1 -0
- package/dist/internal/fleet.d.ts +165 -0
- package/dist/internal/fleet.d.ts.map +1 -0
- package/dist/internal/fleet.js +179 -0
- package/dist/internal/fleet.js.map +1 -0
- package/dist/internal/game-context.d.ts +4 -0
- package/dist/internal/game-context.d.ts.map +1 -0
- package/dist/internal/game-context.js +9 -0
- package/dist/internal/game-context.js.map +1 -0
- package/dist/internal/immutable-tree.d.ts +5 -0
- package/dist/internal/immutable-tree.d.ts.map +1 -0
- package/dist/internal/immutable-tree.js +47 -0
- package/dist/internal/immutable-tree.js.map +1 -0
- package/dist/internal/json.d.ts +7 -0
- package/dist/internal/json.d.ts.map +1 -0
- package/dist/internal/json.js +33 -0
- package/dist/internal/json.js.map +1 -0
- package/dist/internal/planning/authorization-adapter.d.ts +63 -0
- package/dist/internal/planning/authorization-adapter.d.ts.map +1 -0
- package/dist/internal/planning/authorization-adapter.js +222 -0
- package/dist/internal/planning/authorization-adapter.js.map +1 -0
- package/dist/internal/read-meta.d.ts +84 -0
- package/dist/internal/read-meta.d.ts.map +1 -0
- package/dist/internal/read-meta.js +28 -0
- package/dist/internal/read-meta.js.map +1 -0
- package/dist/internal/resolved-snapshot.d.ts +3 -0
- package/dist/internal/resolved-snapshot.d.ts.map +1 -0
- package/dist/internal/resolved-snapshot.js +11 -0
- package/dist/internal/resolved-snapshot.js.map +1 -0
- package/dist/internal/zink/provider.d.ts +9 -0
- package/dist/internal/zink/provider.d.ts.map +1 -0
- package/dist/internal/zink/provider.js +213 -0
- package/dist/internal/zink/provider.js.map +1 -0
- package/dist/loyalty/index.d.ts +195 -0
- package/dist/loyalty/index.d.ts.map +1 -0
- package/dist/loyalty/index.js +289 -0
- package/dist/loyalty/index.js.map +1 -0
- package/dist/markets/index.d.ts +195 -0
- package/dist/markets/index.d.ts.map +1 -0
- package/dist/markets/index.js +232 -0
- package/dist/markets/index.js.map +1 -0
- package/dist/mining/index.d.ts +156 -0
- package/dist/mining/index.d.ts.map +1 -0
- package/dist/mining/index.js +236 -0
- package/dist/mining/index.js.map +1 -0
- package/dist/planning/assembly.d.ts +42 -0
- package/dist/planning/assembly.d.ts.map +1 -0
- package/dist/planning/assembly.js +141 -0
- package/dist/planning/assembly.js.map +1 -0
- package/dist/planning/composition.d.ts +4 -0
- package/dist/planning/composition.d.ts.map +1 -0
- package/dist/planning/composition.js +76 -0
- package/dist/planning/composition.js.map +1 -0
- package/dist/planning/execution.d.ts +93 -0
- package/dist/planning/execution.d.ts.map +1 -0
- package/dist/planning/execution.js +549 -0
- package/dist/planning/execution.js.map +1 -0
- package/dist/planning/index.d.ts +219 -0
- package/dist/planning/index.d.ts.map +1 -0
- package/dist/planning/index.js +375 -0
- package/dist/planning/index.js.map +1 -0
- package/dist/planning/plan-instances.d.ts +3 -0
- package/dist/planning/plan-instances.d.ts.map +1 -0
- package/dist/planning/plan-instances.js +8 -0
- package/dist/planning/plan-instances.js.map +1 -0
- package/dist/planning/plan-sequence-checkpoint.d.ts +154 -0
- package/dist/planning/plan-sequence-checkpoint.d.ts.map +1 -0
- package/dist/planning/plan-sequence-checkpoint.js +449 -0
- package/dist/planning/plan-sequence-checkpoint.js.map +1 -0
- package/dist/planning/plan-sequence-execution.d.ts +72 -0
- package/dist/planning/plan-sequence-execution.d.ts.map +1 -0
- package/dist/planning/plan-sequence-execution.js +410 -0
- package/dist/planning/plan-sequence-execution.js.map +1 -0
- package/dist/planning/plan-sequence.d.ts +244 -0
- package/dist/planning/plan-sequence.d.ts.map +1 -0
- package/dist/planning/plan-sequence.js +264 -0
- package/dist/planning/plan-sequence.js.map +1 -0
- package/dist/planning/simulation.d.ts +50 -0
- package/dist/planning/simulation.d.ts.map +1 -0
- package/dist/planning/simulation.js +69 -0
- package/dist/planning/simulation.js.map +1 -0
- package/dist/registry/combat.d.ts +5 -0
- package/dist/registry/combat.d.ts.map +1 -0
- package/dist/registry/combat.js +7 -0
- package/dist/registry/combat.js.map +1 -0
- package/dist/registry/index.d.ts +138 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +397 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/rewards/index.d.ts +202 -0
- package/dist/rewards/index.d.ts.map +1 -0
- package/dist/rewards/index.js +290 -0
- package/dist/rewards/index.js.map +1 -0
- package/dist/scanning/index.d.ts +185 -0
- package/dist/scanning/index.d.ts.map +1 -0
- package/dist/scanning/index.js +207 -0
- package/dist/scanning/index.js.map +1 -0
- package/dist/starbases/actions/index.d.ts +60 -0
- package/dist/starbases/actions/index.d.ts.map +1 -0
- package/dist/starbases/actions/index.js +245 -0
- package/dist/starbases/actions/index.js.map +1 -0
- package/dist/starbases/index.d.ts +165 -0
- package/dist/starbases/index.d.ts.map +1 -0
- package/dist/starbases/index.js +213 -0
- package/dist/starbases/index.js.map +1 -0
- package/dist/world/index.d.ts +180 -0
- package/dist/world/index.d.ts.map +1 -0
- package/dist/world/index.js +265 -0
- package/dist/world/index.js.map +1 -0
- package/package.json +140 -0
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import { type Address, type DiscoveryRequest, type EntityRef, type ReadOptions, type SageContext } from '../client/index.js';
|
|
2
|
+
import { type CargoDefinitionSummary } from '../registry/index.js';
|
|
3
|
+
/** Options supported by reward-bearing Loot discovery.
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* const options: RewardCommitmentDiscoveryOptions = { commitment: 'confirmed' };
|
|
7
|
+
* ```
|
|
8
|
+
*/
|
|
9
|
+
export type RewardCommitmentDiscoveryOptions = Omit<DiscoveryRequest, 'filters' | 'strategy'>;
|
|
10
|
+
/** Immutable per-Game ATLAS reward registry and epoch selector.
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* declare const registry: AtlasRewardRegistrySnapshot;
|
|
14
|
+
* console.log(registry.currentEpoch, registry.activeConfigVersion);
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export interface AtlasRewardRegistrySnapshot {
|
|
18
|
+
readonly kind: 'atlasRewardRegistry';
|
|
19
|
+
readonly address: Address;
|
|
20
|
+
readonly version: number;
|
|
21
|
+
readonly bump: number;
|
|
22
|
+
readonly game: EntityRef<'game'>;
|
|
23
|
+
readonly currentEpoch: bigint;
|
|
24
|
+
readonly currentEpochStartedAtUnixSeconds: bigint;
|
|
25
|
+
readonly currentEpochEndsAtUnixSeconds: bigint;
|
|
26
|
+
readonly initialEpochOffsetSeconds: bigint;
|
|
27
|
+
readonly activeConfigVersion: number;
|
|
28
|
+
readonly pendingConfig: {
|
|
29
|
+
readonly configVersion: number;
|
|
30
|
+
readonly effectiveEpoch: bigint;
|
|
31
|
+
} | undefined;
|
|
32
|
+
readonly latestConfigVersion: number;
|
|
33
|
+
toJSON(): unknown;
|
|
34
|
+
}
|
|
35
|
+
/** Cargo-resolved immutable ATLAS reward configuration version.
|
|
36
|
+
* @example
|
|
37
|
+
* ```ts
|
|
38
|
+
* declare const config: AtlasRewardConfigSnapshot;
|
|
39
|
+
* console.log(config.configVersion, config.status);
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export interface AtlasRewardConfigSnapshot {
|
|
43
|
+
readonly kind: 'atlasRewardConfig';
|
|
44
|
+
readonly address: Address;
|
|
45
|
+
readonly version: number;
|
|
46
|
+
readonly bump: number;
|
|
47
|
+
readonly status: 'enabled' | 'disabled';
|
|
48
|
+
readonly game: EntityRef<'game'>;
|
|
49
|
+
readonly configVersion: number;
|
|
50
|
+
readonly effectiveEpoch: bigint;
|
|
51
|
+
readonly createdAtUnixSeconds: bigint;
|
|
52
|
+
readonly sourceFlags: number;
|
|
53
|
+
readonly epochLengthSeconds: number;
|
|
54
|
+
readonly claimSettlementWindowSeconds: number;
|
|
55
|
+
readonly atlasBankInactivityExpirySeconds: bigint;
|
|
56
|
+
readonly rewardLootReclaimSeconds: bigint;
|
|
57
|
+
readonly factionPoolLeverRaw: bigint;
|
|
58
|
+
readonly kingSystemCurveRaw: readonly (readonly bigint[])[];
|
|
59
|
+
readonly pveLpRateBps: number;
|
|
60
|
+
readonly pvpMedallionRateBps: number;
|
|
61
|
+
readonly salvageEvRateBps: number;
|
|
62
|
+
readonly repairKitLpRateRaw: bigint;
|
|
63
|
+
readonly lossModelTargetBps: readonly number[];
|
|
64
|
+
readonly starbaseDestructionMedallionsRaw: readonly bigint[];
|
|
65
|
+
readonly activeMedallion: {
|
|
66
|
+
readonly cargo: CargoDefinitionSummary;
|
|
67
|
+
readonly generation: number;
|
|
68
|
+
readonly buyerPriceAtlasRaw: bigint;
|
|
69
|
+
} | undefined;
|
|
70
|
+
readonly medallionBuybackCapPerEpochRaw: bigint;
|
|
71
|
+
readonly rewardReserveLowBalanceThresholdRaw: bigint;
|
|
72
|
+
readonly upgradeLpRates: readonly {
|
|
73
|
+
readonly cargo: CargoDefinitionSummary;
|
|
74
|
+
readonly lpPerRawUnit: bigint;
|
|
75
|
+
}[];
|
|
76
|
+
readonly salvageEntries: readonly {
|
|
77
|
+
readonly cargo: CargoDefinitionSummary;
|
|
78
|
+
readonly weight: number;
|
|
79
|
+
readonly referenceValueAtlasRaw: bigint;
|
|
80
|
+
}[];
|
|
81
|
+
toJSON(): unknown;
|
|
82
|
+
}
|
|
83
|
+
/** Cargo-resolved finite ATLAS reward reserve.
|
|
84
|
+
* @example
|
|
85
|
+
* ```ts
|
|
86
|
+
* declare const treasury: AtlasRewardTreasurySnapshot;
|
|
87
|
+
* console.log(treasury.reserves.length);
|
|
88
|
+
* ```
|
|
89
|
+
*/
|
|
90
|
+
export interface AtlasRewardTreasurySnapshot {
|
|
91
|
+
readonly kind: 'atlasRewardTreasury';
|
|
92
|
+
readonly address: Address;
|
|
93
|
+
readonly version: number;
|
|
94
|
+
readonly bump: number;
|
|
95
|
+
readonly game: EntityRef<'game'>;
|
|
96
|
+
readonly reserves: readonly {
|
|
97
|
+
readonly cargo: CargoDefinitionSummary;
|
|
98
|
+
readonly quantityRaw: bigint;
|
|
99
|
+
}[];
|
|
100
|
+
toJSON(): unknown;
|
|
101
|
+
}
|
|
102
|
+
/** Combined active/pending reward configuration and treasury state.
|
|
103
|
+
*
|
|
104
|
+
* Member snapshots retain their independent read metadata. The composite's
|
|
105
|
+
* metadata reports the earliest member slot so callers can inspect slot skew.
|
|
106
|
+
* @example
|
|
107
|
+
* ```ts
|
|
108
|
+
* declare const state: AtlasRewardStateSnapshot;
|
|
109
|
+
* console.log(state.registry.currentEpoch, state.activeConfig.status);
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
export interface AtlasRewardStateSnapshot {
|
|
113
|
+
readonly kind: 'atlasRewardState';
|
|
114
|
+
readonly registry: AtlasRewardRegistrySnapshot;
|
|
115
|
+
readonly activeConfig: AtlasRewardConfigSnapshot;
|
|
116
|
+
readonly pendingConfig: AtlasRewardConfigSnapshot | undefined;
|
|
117
|
+
readonly treasury: AtlasRewardTreasurySnapshot;
|
|
118
|
+
toJSON(): unknown;
|
|
119
|
+
}
|
|
120
|
+
/** Reward commitment carried by Loot, linked to combat through a typed reference.
|
|
121
|
+
* @example
|
|
122
|
+
* ```ts
|
|
123
|
+
* declare const commitment: RewardCommitmentSnapshot;
|
|
124
|
+
* console.log(commitment.loot.address, commitment.configVersion);
|
|
125
|
+
* ```
|
|
126
|
+
*/
|
|
127
|
+
export interface RewardCommitmentSnapshot {
|
|
128
|
+
readonly kind: 'rewardCommitment';
|
|
129
|
+
readonly loot: EntityRef<'loot'>;
|
|
130
|
+
readonly game: EntityRef<'game'>;
|
|
131
|
+
readonly profile: EntityRef<'profile'>;
|
|
132
|
+
readonly status: 'committed' | 'resolved' | 'unknown';
|
|
133
|
+
readonly rawStatus?: number;
|
|
134
|
+
readonly configVersion: number;
|
|
135
|
+
readonly slot: bigint;
|
|
136
|
+
readonly committedAtUnixSeconds: bigint;
|
|
137
|
+
readonly legs: readonly {
|
|
138
|
+
readonly recipient: EntityRef<'profile'>;
|
|
139
|
+
readonly medallionsRaw: bigint;
|
|
140
|
+
readonly salvageTargetValueAtlasRaw: bigint;
|
|
141
|
+
}[];
|
|
142
|
+
toJSON(): unknown;
|
|
143
|
+
}
|
|
144
|
+
/** Derives and reads the configured Game's ATLAS reward registry.
|
|
145
|
+
* @example
|
|
146
|
+
* ```ts
|
|
147
|
+
* declare const ctx: SageContext;
|
|
148
|
+
* const registry = await getAtlasRewardRegistry(ctx);
|
|
149
|
+
* ```
|
|
150
|
+
*/
|
|
151
|
+
export declare function getAtlasRewardRegistry(context: SageContext, options?: ReadOptions): Promise<AtlasRewardRegistrySnapshot>;
|
|
152
|
+
/** Derives and reads one immutable ATLAS reward config version.
|
|
153
|
+
* @example
|
|
154
|
+
* ```ts
|
|
155
|
+
* declare const ctx: SageContext;
|
|
156
|
+
* const config = await getAtlasRewardConfig(ctx, 9);
|
|
157
|
+
* ```
|
|
158
|
+
*/
|
|
159
|
+
export declare function getAtlasRewardConfig(context: SageContext, configVersion: number, options?: ReadOptions): Promise<AtlasRewardConfigSnapshot>;
|
|
160
|
+
/** Derives and reads the configured Game's finite reward treasury.
|
|
161
|
+
* @example
|
|
162
|
+
* ```ts
|
|
163
|
+
* declare const ctx: SageContext;
|
|
164
|
+
* const treasury = await getAtlasRewardTreasury(ctx);
|
|
165
|
+
* ```
|
|
166
|
+
*/
|
|
167
|
+
export declare function getAtlasRewardTreasury(context: SageContext, options?: ReadOptions): Promise<AtlasRewardTreasurySnapshot>;
|
|
168
|
+
/** Selects the config version effective for an epoch, including the pending boundary.
|
|
169
|
+
* @example
|
|
170
|
+
* ```ts
|
|
171
|
+
* declare const registry: AtlasRewardRegistrySnapshot;
|
|
172
|
+
* const version = selectAtlasRewardConfigVersion(registry, 20_670n);
|
|
173
|
+
* ```
|
|
174
|
+
*/
|
|
175
|
+
export declare function selectAtlasRewardConfigVersion(registry: AtlasRewardRegistrySnapshot, epoch: bigint): number;
|
|
176
|
+
/** Reads combined active/pending config, epoch registry, and treasury state.
|
|
177
|
+
* @example
|
|
178
|
+
* ```ts
|
|
179
|
+
* declare const ctx: SageContext;
|
|
180
|
+
* const state = await getAtlasRewardState(ctx);
|
|
181
|
+
* ```
|
|
182
|
+
*/
|
|
183
|
+
export declare function getAtlasRewardState(context: SageContext, options?: ReadOptions): Promise<AtlasRewardStateSnapshot>;
|
|
184
|
+
/** Reads an optional reward commitment from one Loot account.
|
|
185
|
+
* @example
|
|
186
|
+
* ```ts
|
|
187
|
+
* declare const ctx: SageContext;
|
|
188
|
+
* declare const loot: Address;
|
|
189
|
+
* const commitment = await maybeGetRewardCommitment(ctx, loot);
|
|
190
|
+
* ```
|
|
191
|
+
*/
|
|
192
|
+
export declare function maybeGetRewardCommitment(context: SageContext, loot: Address, options?: ReadOptions): Promise<RewardCommitmentSnapshot | undefined>;
|
|
193
|
+
/** Discovers reward-bearing Loot for one Profile and returns combat-boundary refs.
|
|
194
|
+
* @example
|
|
195
|
+
* ```ts
|
|
196
|
+
* declare const ctx: SageContext;
|
|
197
|
+
* declare const profile: Address;
|
|
198
|
+
* const commitments = await getRewardCommitmentsByProfile(ctx, profile);
|
|
199
|
+
* ```
|
|
200
|
+
*/
|
|
201
|
+
export declare function getRewardCommitmentsByProfile(context: SageContext, profile: Address, options?: RewardCommitmentDiscoveryOptions): Promise<readonly RewardCommitmentSnapshot[]>;
|
|
202
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rewards/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
import { AccountDecodeError, entityRef, } from '../client/index.js';
|
|
2
|
+
import { atlasRewardConfigAccountDefinition, atlasRewardRegistryAccountDefinition, atlasRewardTreasuryAccountDefinition, deriveAtlasRewardConfigAddress, deriveAtlasRewardRegistryAddress, deriveAtlasRewardTreasuryAddress, discoverRewardLootAccounts, rewardLootAccountDefinition, } from '../internal/c4/rewards.js';
|
|
3
|
+
import { requireGameAddress } from '../internal/game-context.js';
|
|
4
|
+
import { attachJsonSerialization } from '../internal/json.js';
|
|
5
|
+
import { attachReadMeta, readMeta } from '../internal/read-meta.js';
|
|
6
|
+
import { freezeResolvedSnapshot } from '../internal/resolved-snapshot.js';
|
|
7
|
+
import { resolveCargo, } from '../registry/index.js';
|
|
8
|
+
const REGISTRY_SNAPSHOTS = new WeakMap();
|
|
9
|
+
const CONFIG_SNAPSHOTS = new WeakMap();
|
|
10
|
+
const TREASURY_SNAPSHOTS = new WeakMap();
|
|
11
|
+
const COMMITMENT_SNAPSHOTS = new WeakMap();
|
|
12
|
+
function metadata(envelope, strategy = 'derived') {
|
|
13
|
+
return {
|
|
14
|
+
commitment: envelope.commitment,
|
|
15
|
+
slot: envelope.slot,
|
|
16
|
+
source: envelope.source,
|
|
17
|
+
strategy,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function assertGame(context, type, envelope) {
|
|
21
|
+
const game = requireGameAddress(context);
|
|
22
|
+
if (envelope.data.game !== game) {
|
|
23
|
+
throw new AccountDecodeError(type, envelope.address, new RangeError(`The ${type} account belongs to a different Game.`), `${type} ${envelope.address} belongs to Game ${envelope.data.game}, not configured Game ${game}. Verify the address and cluster before retrying.`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function registrySnapshot(context, envelope) {
|
|
27
|
+
assertGame(context, 'atlasRewardRegistry', envelope);
|
|
28
|
+
const existing = REGISTRY_SNAPSHOTS.get(envelope);
|
|
29
|
+
if (existing !== undefined)
|
|
30
|
+
return existing;
|
|
31
|
+
const data = envelope.data;
|
|
32
|
+
const snapshot = freezeResolvedSnapshot(attachReadMeta(attachJsonSerialization({
|
|
33
|
+
activeConfigVersion: data.activeConfigVersion,
|
|
34
|
+
address: envelope.address,
|
|
35
|
+
bump: data.bump,
|
|
36
|
+
currentEpoch: data.currentEpoch,
|
|
37
|
+
currentEpochEndsAtUnixSeconds: data.currentEpochEndsAtUnixSeconds,
|
|
38
|
+
currentEpochStartedAtUnixSeconds: data.currentEpochStartedAtUnixSeconds,
|
|
39
|
+
game: entityRef('game', data.game),
|
|
40
|
+
initialEpochOffsetSeconds: data.initialEpochOffsetSeconds,
|
|
41
|
+
kind: 'atlasRewardRegistry',
|
|
42
|
+
latestConfigVersion: data.latestConfigVersion,
|
|
43
|
+
pendingConfig: data.pendingConfig.kind === 'none'
|
|
44
|
+
? undefined
|
|
45
|
+
: {
|
|
46
|
+
configVersion: data.pendingConfig.configVersion,
|
|
47
|
+
effectiveEpoch: data.pendingConfig.effectiveEpoch,
|
|
48
|
+
},
|
|
49
|
+
version: data.version,
|
|
50
|
+
}), metadata(envelope)));
|
|
51
|
+
REGISTRY_SNAPSHOTS.set(envelope, snapshot);
|
|
52
|
+
return snapshot;
|
|
53
|
+
}
|
|
54
|
+
/** Derives and reads the configured Game's ATLAS reward registry.
|
|
55
|
+
* @example
|
|
56
|
+
* ```ts
|
|
57
|
+
* declare const ctx: SageContext;
|
|
58
|
+
* const registry = await getAtlasRewardRegistry(ctx);
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export async function getAtlasRewardRegistry(context, options) {
|
|
62
|
+
const game = requireGameAddress(context);
|
|
63
|
+
const address = await deriveAtlasRewardRegistryAddress(game);
|
|
64
|
+
return registrySnapshot(context, await context.data.read(atlasRewardRegistryAccountDefinition, address, options));
|
|
65
|
+
}
|
|
66
|
+
async function createConfigSnapshot(context, envelope) {
|
|
67
|
+
assertGame(context, 'atlasRewardConfig', envelope);
|
|
68
|
+
const data = envelope.data;
|
|
69
|
+
const activeMedallion = data.activeMedallion.cargoId === 0 &&
|
|
70
|
+
data.activeMedallion.generation === 0 &&
|
|
71
|
+
data.activeMedallion.buyerPriceAtlasRaw === 0n
|
|
72
|
+
? undefined
|
|
73
|
+
: {
|
|
74
|
+
buyerPriceAtlasRaw: data.activeMedallion.buyerPriceAtlasRaw,
|
|
75
|
+
cargo: await resolveCargo(context, data.activeMedallion.cargoId),
|
|
76
|
+
generation: data.activeMedallion.generation,
|
|
77
|
+
};
|
|
78
|
+
return freezeResolvedSnapshot(attachReadMeta(attachJsonSerialization({
|
|
79
|
+
activeMedallion,
|
|
80
|
+
address: envelope.address,
|
|
81
|
+
atlasBankInactivityExpirySeconds: data.atlasBankInactivityExpirySeconds,
|
|
82
|
+
bump: data.bump,
|
|
83
|
+
claimSettlementWindowSeconds: data.claimSettlementWindowSeconds,
|
|
84
|
+
configVersion: data.configVersion,
|
|
85
|
+
createdAtUnixSeconds: data.createdAtUnixSeconds,
|
|
86
|
+
effectiveEpoch: data.effectiveEpoch,
|
|
87
|
+
epochLengthSeconds: data.epochLengthSeconds,
|
|
88
|
+
factionPoolLeverRaw: data.factionPoolLeverRaw,
|
|
89
|
+
game: entityRef('game', data.game),
|
|
90
|
+
kingSystemCurveRaw: data.kingSystemCurveRaw,
|
|
91
|
+
kind: 'atlasRewardConfig',
|
|
92
|
+
lossModelTargetBps: data.lossModelTargetBps,
|
|
93
|
+
medallionBuybackCapPerEpochRaw: data.medallionBuybackCapPerEpochRaw,
|
|
94
|
+
pveLpRateBps: data.pveLpRateBps,
|
|
95
|
+
pvpMedallionRateBps: data.pvpMedallionRateBps,
|
|
96
|
+
repairKitLpRateRaw: data.repairKitLpRateRaw,
|
|
97
|
+
rewardLootReclaimSeconds: data.rewardLootReclaimSeconds,
|
|
98
|
+
rewardReserveLowBalanceThresholdRaw: data.rewardReserveLowBalanceThresholdRaw,
|
|
99
|
+
salvageEntries: await Promise.all(data.salvageEntries.map(async (entry) => ({
|
|
100
|
+
cargo: await resolveCargo(context, entry.cargoId),
|
|
101
|
+
referenceValueAtlasRaw: entry.referenceValueAtlasRaw,
|
|
102
|
+
weight: entry.weight,
|
|
103
|
+
}))),
|
|
104
|
+
salvageEvRateBps: data.salvageEvRateBps,
|
|
105
|
+
sourceFlags: data.sourceFlags,
|
|
106
|
+
starbaseDestructionMedallionsRaw: data.starbaseDestructionMedallionsRaw,
|
|
107
|
+
status: data.enabled ? 'enabled' : 'disabled',
|
|
108
|
+
upgradeLpRates: await Promise.all(data.upgradeLpRates.map(async (entry) => ({
|
|
109
|
+
cargo: await resolveCargo(context, entry.cargoId),
|
|
110
|
+
lpPerRawUnit: entry.lpPerRawUnit,
|
|
111
|
+
}))),
|
|
112
|
+
version: data.version,
|
|
113
|
+
}), metadata(envelope)));
|
|
114
|
+
}
|
|
115
|
+
/** Derives and reads one immutable ATLAS reward config version.
|
|
116
|
+
* @example
|
|
117
|
+
* ```ts
|
|
118
|
+
* declare const ctx: SageContext;
|
|
119
|
+
* const config = await getAtlasRewardConfig(ctx, 9);
|
|
120
|
+
* ```
|
|
121
|
+
*/
|
|
122
|
+
export async function getAtlasRewardConfig(context, configVersion, options) {
|
|
123
|
+
const game = requireGameAddress(context);
|
|
124
|
+
const address = await deriveAtlasRewardConfigAddress(game, configVersion);
|
|
125
|
+
const envelope = await context.data.read(atlasRewardConfigAccountDefinition, address, options);
|
|
126
|
+
if (envelope.data.configVersion !== configVersion) {
|
|
127
|
+
throw new AccountDecodeError('atlasRewardConfig', address, new RangeError('AtlasRewardConfig version contradicted its PDA seeds.'), `AtlasRewardConfig ${address} reports version ${String(envelope.data.configVersion)} but its address was derived for version ${String(configVersion)}. Read the version selected by the reward registry and refresh the account before retrying.`);
|
|
128
|
+
}
|
|
129
|
+
const existing = CONFIG_SNAPSHOTS.get(envelope);
|
|
130
|
+
if (existing !== undefined)
|
|
131
|
+
return existing;
|
|
132
|
+
const pending = createConfigSnapshot(context, envelope);
|
|
133
|
+
CONFIG_SNAPSHOTS.set(envelope, pending);
|
|
134
|
+
void pending.catch(() => CONFIG_SNAPSHOTS.delete(envelope));
|
|
135
|
+
return pending;
|
|
136
|
+
}
|
|
137
|
+
async function createTreasurySnapshot(context, envelope) {
|
|
138
|
+
assertGame(context, 'atlasRewardTreasury', envelope);
|
|
139
|
+
return freezeResolvedSnapshot(attachReadMeta(attachJsonSerialization({
|
|
140
|
+
address: envelope.address,
|
|
141
|
+
bump: envelope.data.bump,
|
|
142
|
+
game: entityRef('game', envelope.data.game),
|
|
143
|
+
kind: 'atlasRewardTreasury',
|
|
144
|
+
reserves: await Promise.all(envelope.data.reserves.map(async (reserve) => ({
|
|
145
|
+
cargo: await resolveCargo(context, reserve.cargoId),
|
|
146
|
+
quantityRaw: reserve.quantityRaw,
|
|
147
|
+
}))),
|
|
148
|
+
version: envelope.data.version,
|
|
149
|
+
}), metadata(envelope)));
|
|
150
|
+
}
|
|
151
|
+
/** Derives and reads the configured Game's finite reward treasury.
|
|
152
|
+
* @example
|
|
153
|
+
* ```ts
|
|
154
|
+
* declare const ctx: SageContext;
|
|
155
|
+
* const treasury = await getAtlasRewardTreasury(ctx);
|
|
156
|
+
* ```
|
|
157
|
+
*/
|
|
158
|
+
export async function getAtlasRewardTreasury(context, options) {
|
|
159
|
+
const game = requireGameAddress(context);
|
|
160
|
+
const address = await deriveAtlasRewardTreasuryAddress(game);
|
|
161
|
+
const envelope = await context.data.read(atlasRewardTreasuryAccountDefinition, address, options);
|
|
162
|
+
const existing = TREASURY_SNAPSHOTS.get(envelope);
|
|
163
|
+
if (existing !== undefined)
|
|
164
|
+
return existing;
|
|
165
|
+
const pending = createTreasurySnapshot(context, envelope);
|
|
166
|
+
TREASURY_SNAPSHOTS.set(envelope, pending);
|
|
167
|
+
void pending.catch(() => TREASURY_SNAPSHOTS.delete(envelope));
|
|
168
|
+
return pending;
|
|
169
|
+
}
|
|
170
|
+
/** Selects the config version effective for an epoch, including the pending boundary.
|
|
171
|
+
* @example
|
|
172
|
+
* ```ts
|
|
173
|
+
* declare const registry: AtlasRewardRegistrySnapshot;
|
|
174
|
+
* const version = selectAtlasRewardConfigVersion(registry, 20_670n);
|
|
175
|
+
* ```
|
|
176
|
+
*/
|
|
177
|
+
export function selectAtlasRewardConfigVersion(registry, epoch) {
|
|
178
|
+
const pending = registry.pendingConfig;
|
|
179
|
+
return pending !== undefined && epoch >= pending.effectiveEpoch
|
|
180
|
+
? pending.configVersion
|
|
181
|
+
: registry.activeConfigVersion;
|
|
182
|
+
}
|
|
183
|
+
/** Reads combined active/pending config, epoch registry, and treasury state.
|
|
184
|
+
* @example
|
|
185
|
+
* ```ts
|
|
186
|
+
* declare const ctx: SageContext;
|
|
187
|
+
* const state = await getAtlasRewardState(ctx);
|
|
188
|
+
* ```
|
|
189
|
+
*/
|
|
190
|
+
export async function getAtlasRewardState(context, options) {
|
|
191
|
+
const registry = await getAtlasRewardRegistry(context, options);
|
|
192
|
+
const [activeConfig, pendingConfig, treasury] = await Promise.all([
|
|
193
|
+
getAtlasRewardConfig(context, registry.activeConfigVersion, options),
|
|
194
|
+
registry.pendingConfig === undefined
|
|
195
|
+
? undefined
|
|
196
|
+
: getAtlasRewardConfig(context, registry.pendingConfig.configVersion, options),
|
|
197
|
+
getAtlasRewardTreasury(context, options),
|
|
198
|
+
]);
|
|
199
|
+
if (activeConfig.effectiveEpoch > registry.currentEpoch) {
|
|
200
|
+
throw new AccountDecodeError('atlasRewardRegistry', registry.address, new RangeError('Active reward config is not effective for the current epoch.'), `AtlasRewardRegistry ${registry.address} selects config ${String(activeConfig.configVersion)}, which becomes effective at epoch ${String(activeConfig.effectiveEpoch)} after current epoch ${String(registry.currentEpoch)}. Wait for the registry epoch to advance or refresh the registry and config before retrying.`);
|
|
201
|
+
}
|
|
202
|
+
if (registry.pendingConfig !== undefined &&
|
|
203
|
+
(pendingConfig.effectiveEpoch !== registry.pendingConfig.effectiveEpoch ||
|
|
204
|
+
registry.pendingConfig.effectiveEpoch <= registry.currentEpoch)) {
|
|
205
|
+
throw new AccountDecodeError('atlasRewardRegistry', registry.address, new RangeError('Pending reward config does not match the registry epoch selector.'), `AtlasRewardRegistry ${registry.address} and pending config ${pendingConfig.address} disagree about the next effective epoch. Refresh both accounts and retry after the on-chain reward transition is consistent.`);
|
|
206
|
+
}
|
|
207
|
+
const memberMetadata = [
|
|
208
|
+
readMeta(registry),
|
|
209
|
+
readMeta(activeConfig),
|
|
210
|
+
...(pendingConfig === undefined ? [] : [readMeta(pendingConfig)]),
|
|
211
|
+
readMeta(treasury),
|
|
212
|
+
];
|
|
213
|
+
const compositeMetadata = {
|
|
214
|
+
commitment: memberMetadata[0].commitment,
|
|
215
|
+
slot: memberMetadata.reduce((earliest, current) => current.slot < earliest ? current.slot : earliest, memberMetadata[0].slot),
|
|
216
|
+
source: memberMetadata[0].source,
|
|
217
|
+
strategy: 'derived',
|
|
218
|
+
};
|
|
219
|
+
return freezeResolvedSnapshot(attachReadMeta(attachJsonSerialization({
|
|
220
|
+
activeConfig,
|
|
221
|
+
kind: 'atlasRewardState',
|
|
222
|
+
pendingConfig,
|
|
223
|
+
registry,
|
|
224
|
+
treasury,
|
|
225
|
+
}), compositeMetadata));
|
|
226
|
+
}
|
|
227
|
+
function commitmentSnapshot(context, envelope, strategy = 'direct') {
|
|
228
|
+
assertGame(context, 'loot', envelope);
|
|
229
|
+
if (envelope.data.reward.kind === 'none')
|
|
230
|
+
return undefined;
|
|
231
|
+
const snapshotsByStrategy = COMMITMENT_SNAPSHOTS.get(envelope);
|
|
232
|
+
const existing = snapshotsByStrategy?.get(strategy);
|
|
233
|
+
if (existing !== undefined)
|
|
234
|
+
return existing;
|
|
235
|
+
const reward = envelope.data.reward;
|
|
236
|
+
const snapshot = freezeResolvedSnapshot(attachReadMeta(attachJsonSerialization({
|
|
237
|
+
committedAtUnixSeconds: reward.committedAtUnixSeconds,
|
|
238
|
+
configVersion: reward.configVersion,
|
|
239
|
+
game: entityRef('game', envelope.data.game),
|
|
240
|
+
kind: 'rewardCommitment',
|
|
241
|
+
legs: reward.legs.map((leg) => ({
|
|
242
|
+
medallionsRaw: leg.medallionsRaw,
|
|
243
|
+
recipient: entityRef('profile', leg.recipient),
|
|
244
|
+
salvageTargetValueAtlasRaw: leg.salvageTargetValueAtlasRaw,
|
|
245
|
+
})),
|
|
246
|
+
loot: entityRef('loot', envelope.address),
|
|
247
|
+
profile: entityRef('profile', envelope.data.profile),
|
|
248
|
+
...(reward.kind === 'unknown' ? { rawStatus: reward.rawStatus } : {}),
|
|
249
|
+
slot: reward.slot,
|
|
250
|
+
status: reward.kind,
|
|
251
|
+
}), metadata(envelope, strategy)));
|
|
252
|
+
if (snapshotsByStrategy === undefined) {
|
|
253
|
+
COMMITMENT_SNAPSHOTS.set(envelope, new Map([[strategy, snapshot]]));
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
snapshotsByStrategy.set(strategy, snapshot);
|
|
257
|
+
}
|
|
258
|
+
return snapshot;
|
|
259
|
+
}
|
|
260
|
+
/** Reads an optional reward commitment from one Loot account.
|
|
261
|
+
* @example
|
|
262
|
+
* ```ts
|
|
263
|
+
* declare const ctx: SageContext;
|
|
264
|
+
* declare const loot: Address;
|
|
265
|
+
* const commitment = await maybeGetRewardCommitment(ctx, loot);
|
|
266
|
+
* ```
|
|
267
|
+
*/
|
|
268
|
+
export async function maybeGetRewardCommitment(context, loot, options) {
|
|
269
|
+
requireGameAddress(context);
|
|
270
|
+
const [envelope] = await context.data.readMany(rewardLootAccountDefinition, [loot], options);
|
|
271
|
+
return envelope === undefined
|
|
272
|
+
? undefined
|
|
273
|
+
: commitmentSnapshot(context, envelope);
|
|
274
|
+
}
|
|
275
|
+
/** Discovers reward-bearing Loot for one Profile and returns combat-boundary refs.
|
|
276
|
+
* @example
|
|
277
|
+
* ```ts
|
|
278
|
+
* declare const ctx: SageContext;
|
|
279
|
+
* declare const profile: Address;
|
|
280
|
+
* const commitments = await getRewardCommitmentsByProfile(ctx, profile);
|
|
281
|
+
* ```
|
|
282
|
+
*/
|
|
283
|
+
export async function getRewardCommitmentsByProfile(context, profile, options) {
|
|
284
|
+
const envelopes = await discoverRewardLootAccounts(context, profile, options);
|
|
285
|
+
const snapshots = envelopes
|
|
286
|
+
.map((envelope) => commitmentSnapshot(context, envelope, 'targeted-program-accounts'))
|
|
287
|
+
.filter((value) => value !== undefined);
|
|
288
|
+
return Object.freeze(attachReadMeta(snapshots, readMeta(envelopes)));
|
|
289
|
+
}
|
|
290
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rewards/index.ts"],"names":[],"mappings":"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"}
|