@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,195 @@
|
|
|
1
|
+
import { type Address, type DiscoveryRequest, type EntityRef, type ReadOptions, type SageContext } from '../client/index.js';
|
|
2
|
+
import { type LoyaltyAtlasBankAccountData, type LoyaltyContributionAccountData, type LoyaltyEpochAccountData } from '../internal/c4/loyalty.js';
|
|
3
|
+
/** Options accepted by targeted loyalty reverse discovery.
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* const options: LoyaltyDiscoveryOptions = { commitment: 'confirmed' };
|
|
7
|
+
* ```
|
|
8
|
+
*/
|
|
9
|
+
export type LoyaltyDiscoveryOptions = Omit<DiscoveryRequest, 'filters' | 'strategy'>;
|
|
10
|
+
/** Immutable faction loyalty epoch with exact LP/ATLAS values.
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* declare const epoch: LoyaltyEpochSnapshot;
|
|
14
|
+
* console.log(epoch.faction.address, epoch.totalLpRaw);
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export interface LoyaltyEpochSnapshot extends Omit<LoyaltyEpochAccountData, 'game' | 'factionId'> {
|
|
18
|
+
readonly kind: 'loyaltyEpoch';
|
|
19
|
+
readonly address: Address;
|
|
20
|
+
readonly game: EntityRef<'game'>;
|
|
21
|
+
readonly factionId: number;
|
|
22
|
+
readonly faction: EntityRef<'faction'>;
|
|
23
|
+
readonly rewardConfig: EntityRef<'atlasRewardConfig'>;
|
|
24
|
+
toJSON(): unknown;
|
|
25
|
+
}
|
|
26
|
+
/** Immutable Profile contribution for one faction epoch.
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* declare const contribution: LoyaltyContributionSnapshot;
|
|
30
|
+
* console.log(contribution.profile.address, contribution.lpRaw);
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export interface LoyaltyContributionSnapshot extends Omit<LoyaltyContributionAccountData, 'game' | 'profile' | 'factionId' | 'settledAtUnixSeconds'> {
|
|
34
|
+
readonly kind: 'loyaltyContribution';
|
|
35
|
+
readonly address: Address;
|
|
36
|
+
readonly game: EntityRef<'game'>;
|
|
37
|
+
readonly profile: EntityRef<'profile'>;
|
|
38
|
+
readonly factionId: number;
|
|
39
|
+
readonly faction: EntityRef<'faction'>;
|
|
40
|
+
readonly epoch: EntityRef<'loyaltyEpoch'>;
|
|
41
|
+
readonly settledAtUnixSeconds: bigint | undefined;
|
|
42
|
+
toJSON(): unknown;
|
|
43
|
+
}
|
|
44
|
+
/** Immutable accumulated ATLAS bank for one Profile and faction.
|
|
45
|
+
* @example
|
|
46
|
+
* ```ts
|
|
47
|
+
* declare const bank: LoyaltyAtlasBankSnapshot;
|
|
48
|
+
* console.log(bank.claimableAtlasRaw, bank.expiresAtUnixSeconds);
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export interface LoyaltyAtlasBankSnapshot extends Omit<LoyaltyAtlasBankAccountData, 'game' | 'profile' | 'factionId'> {
|
|
52
|
+
readonly kind: 'loyaltyAtlasBank';
|
|
53
|
+
readonly address: Address;
|
|
54
|
+
readonly game: EntityRef<'game'>;
|
|
55
|
+
readonly profile: EntityRef<'profile'>;
|
|
56
|
+
readonly factionId: number;
|
|
57
|
+
readonly faction: EntityRef<'faction'>;
|
|
58
|
+
toJSON(): unknown;
|
|
59
|
+
}
|
|
60
|
+
/** Time-projected lifecycle of one loyalty epoch.
|
|
61
|
+
* @example
|
|
62
|
+
* ```ts
|
|
63
|
+
* const state: LoyaltyEpochState = { kind: 'scheduled' };
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
export type LoyaltyEpochState = {
|
|
67
|
+
readonly kind: 'scheduled';
|
|
68
|
+
} | {
|
|
69
|
+
readonly kind: 'open';
|
|
70
|
+
readonly remainingSeconds: bigint;
|
|
71
|
+
} | {
|
|
72
|
+
readonly kind: 'settling';
|
|
73
|
+
readonly remainingSeconds: bigint;
|
|
74
|
+
} | {
|
|
75
|
+
readonly kind: 'expired';
|
|
76
|
+
} | {
|
|
77
|
+
readonly kind: 'swept';
|
|
78
|
+
};
|
|
79
|
+
/** Settlement state of one loyalty contribution.
|
|
80
|
+
* @example
|
|
81
|
+
* ```ts
|
|
82
|
+
* const state: LoyaltyContributionState = { kind: 'unsettled' };
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
export type LoyaltyContributionState = {
|
|
86
|
+
readonly kind: 'unsettled';
|
|
87
|
+
} | {
|
|
88
|
+
readonly kind: 'settled';
|
|
89
|
+
readonly settledAtUnixSeconds: bigint;
|
|
90
|
+
} | {
|
|
91
|
+
readonly kind: 'expired';
|
|
92
|
+
};
|
|
93
|
+
/** Claimability state of one loyalty ATLAS bank.
|
|
94
|
+
* @example
|
|
95
|
+
* ```ts
|
|
96
|
+
* const state: LoyaltyAtlasBankState = { kind: 'empty' };
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
export type LoyaltyAtlasBankState = {
|
|
100
|
+
readonly kind: 'empty';
|
|
101
|
+
} | {
|
|
102
|
+
readonly kind: 'claimable';
|
|
103
|
+
readonly claimableAtlasRaw: bigint;
|
|
104
|
+
} | {
|
|
105
|
+
readonly kind: 'expired';
|
|
106
|
+
readonly claimableAtlasRaw: bigint;
|
|
107
|
+
};
|
|
108
|
+
/** Derives and reads one required faction loyalty epoch.
|
|
109
|
+
* @example
|
|
110
|
+
* ```ts
|
|
111
|
+
* declare const ctx: SageContext;
|
|
112
|
+
* const epoch = await getLoyaltyEpoch(ctx, 1, 20_665n);
|
|
113
|
+
* ```
|
|
114
|
+
*/
|
|
115
|
+
export declare function getLoyaltyEpoch(context: SageContext, factionId: number, epochIndex: bigint, options?: ReadOptions): Promise<LoyaltyEpochSnapshot>;
|
|
116
|
+
/** Derives and reads one required Profile contribution.
|
|
117
|
+
* @example
|
|
118
|
+
* ```ts
|
|
119
|
+
* declare const ctx: SageContext;
|
|
120
|
+
* declare const profile: Address;
|
|
121
|
+
* const contribution = await getLoyaltyContribution(ctx, profile, 1, 20_668n);
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
124
|
+
export declare function getLoyaltyContribution(context: SageContext, profile: Address, factionId: number, epochIndex: bigint, options?: ReadOptions): Promise<LoyaltyContributionSnapshot>;
|
|
125
|
+
/** Derives and reads an optional Profile loyalty ATLAS bank.
|
|
126
|
+
* @example
|
|
127
|
+
* ```ts
|
|
128
|
+
* declare const ctx: SageContext;
|
|
129
|
+
* declare const profile: Address;
|
|
130
|
+
* const bank = await maybeGetLoyaltyAtlasBank(ctx, profile, 3);
|
|
131
|
+
* ```
|
|
132
|
+
*/
|
|
133
|
+
export declare function maybeGetLoyaltyAtlasBank(context: SageContext, profile: Address, factionId: number, options?: ReadOptions): Promise<LoyaltyAtlasBankSnapshot | undefined>;
|
|
134
|
+
/** Derives and reads a required Profile loyalty ATLAS bank.
|
|
135
|
+
* @example
|
|
136
|
+
* ```ts
|
|
137
|
+
* declare const ctx: SageContext;
|
|
138
|
+
* declare const profile: Address;
|
|
139
|
+
* const bank = await getLoyaltyAtlasBank(ctx, profile, 3);
|
|
140
|
+
* ```
|
|
141
|
+
*/
|
|
142
|
+
export declare function getLoyaltyAtlasBank(context: SageContext, profile: Address, factionId: number, options?: ReadOptions): Promise<LoyaltyAtlasBankSnapshot>;
|
|
143
|
+
/** Discovers validated loyalty epochs for one faction.
|
|
144
|
+
* @example
|
|
145
|
+
* ```ts
|
|
146
|
+
* declare const ctx: SageContext;
|
|
147
|
+
* const epochs = await getLoyaltyEpochsByFaction(ctx, 1);
|
|
148
|
+
* ```
|
|
149
|
+
*/
|
|
150
|
+
export declare function getLoyaltyEpochsByFaction(context: SageContext, factionId: number, options?: LoyaltyDiscoveryOptions): Promise<readonly LoyaltyEpochSnapshot[]>;
|
|
151
|
+
/** Discovers validated loyalty contributions for one Profile.
|
|
152
|
+
* @example
|
|
153
|
+
* ```ts
|
|
154
|
+
* declare const ctx: SageContext;
|
|
155
|
+
* declare const profile: Address;
|
|
156
|
+
* const contributions = await getLoyaltyContributionsByProfile(ctx, profile);
|
|
157
|
+
* ```
|
|
158
|
+
*/
|
|
159
|
+
export declare function getLoyaltyContributionsByProfile(context: SageContext, profile: Address, options?: LoyaltyDiscoveryOptions): Promise<readonly LoyaltyContributionSnapshot[]>;
|
|
160
|
+
/** Discovers validated loyalty ATLAS banks for one Profile.
|
|
161
|
+
* @example
|
|
162
|
+
* ```ts
|
|
163
|
+
* declare const ctx: SageContext;
|
|
164
|
+
* declare const profile: Address;
|
|
165
|
+
* const banks = await getLoyaltyAtlasBanksByProfile(ctx, profile);
|
|
166
|
+
* ```
|
|
167
|
+
*/
|
|
168
|
+
export declare function getLoyaltyAtlasBanksByProfile(context: SageContext, profile: Address, options?: LoyaltyDiscoveryOptions): Promise<readonly LoyaltyAtlasBankSnapshot[]>;
|
|
169
|
+
/** Projects a loyalty epoch at an explicit Unix timestamp.
|
|
170
|
+
* @example
|
|
171
|
+
* ```ts
|
|
172
|
+
* declare const epoch: LoyaltyEpochSnapshot;
|
|
173
|
+
* const state = deriveLoyaltyEpochState(epoch, epoch.startsAtUnixSeconds);
|
|
174
|
+
* ```
|
|
175
|
+
*/
|
|
176
|
+
export declare function deriveLoyaltyEpochState(epoch: Pick<LoyaltyEpochSnapshot, 'status' | 'startsAtUnixSeconds' | 'endsAtUnixSeconds' | 'settlementDeadlineUnixSeconds'>, atUnixSeconds: bigint): LoyaltyEpochState;
|
|
177
|
+
/** Projects settlement or expiry for one contribution and matching epoch.
|
|
178
|
+
* Unsettled contributions are expired as soon as their epoch is swept.
|
|
179
|
+
* @example
|
|
180
|
+
* ```ts
|
|
181
|
+
* declare const contribution: LoyaltyContributionSnapshot;
|
|
182
|
+
* declare const epoch: LoyaltyEpochSnapshot;
|
|
183
|
+
* const state = deriveLoyaltyContributionState(contribution, epoch, 1_700_000_000n);
|
|
184
|
+
* ```
|
|
185
|
+
*/
|
|
186
|
+
export declare function deriveLoyaltyContributionState(contribution: Pick<LoyaltyContributionSnapshot, 'settled' | 'settledAtUnixSeconds' | 'epoch' | 'factionId' | 'game'>, epoch: Pick<LoyaltyEpochSnapshot, 'address' | 'factionId' | 'game' | 'status' | 'endsAtUnixSeconds' | 'settlementDeadlineUnixSeconds'>, atUnixSeconds: bigint): LoyaltyContributionState;
|
|
187
|
+
/** Projects whether an accumulated ATLAS bank is empty, claimable, or expired.
|
|
188
|
+
* @example
|
|
189
|
+
* ```ts
|
|
190
|
+
* declare const bank: LoyaltyAtlasBankSnapshot;
|
|
191
|
+
* const state = deriveLoyaltyAtlasBankState(bank, 1_700_000_000n);
|
|
192
|
+
* ```
|
|
193
|
+
*/
|
|
194
|
+
export declare function deriveLoyaltyAtlasBankState(bank: Pick<LoyaltyAtlasBankSnapshot, 'claimableAtlasRaw' | 'expiresAtUnixSeconds'>, atUnixSeconds: bigint): LoyaltyAtlasBankState;
|
|
195
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/loyalty/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
import { AccountDecodeError, entityRef, } from '../client/index.js';
|
|
2
|
+
import { deriveLoyaltyAtlasBankAddress, deriveLoyaltyContributionAddress, deriveLoyaltyEpochAddress, deriveLoyaltyFactionAddress, deriveLoyaltyRewardConfigAddress, discoverLoyaltyAtlasBanksByProfile, discoverLoyaltyContributionsByProfile, discoverLoyaltyEpochsByFaction, loyaltyAtlasBankAccountDefinition, loyaltyContributionAccountDefinition, loyaltyEpochAccountDefinition, } from '../internal/c4/loyalty.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
|
+
const EPOCH_SNAPSHOTS = new WeakMap();
|
|
8
|
+
const CONTRIBUTION_SNAPSHOTS = new WeakMap();
|
|
9
|
+
const BANK_SNAPSHOTS = new WeakMap();
|
|
10
|
+
function metadata(envelope, strategy) {
|
|
11
|
+
return {
|
|
12
|
+
commitment: envelope.commitment,
|
|
13
|
+
slot: envelope.slot,
|
|
14
|
+
source: envelope.source,
|
|
15
|
+
strategy,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function assertGame(context, type, envelope) {
|
|
19
|
+
const game = requireGameAddress(context);
|
|
20
|
+
if (envelope.data.game !== game) {
|
|
21
|
+
throw new AccountDecodeError(type, envelope.address, new RangeError('The loyalty account belongs to a different Game.'), `Loyalty account ${envelope.address} belongs to Game ${envelope.data.game}, not configured Game ${game}. Verify the loyalty keys and cluster before retrying.`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function memoized(cache, envelope, strategy, create) {
|
|
25
|
+
let byStrategy = cache.get(envelope);
|
|
26
|
+
if (byStrategy === undefined) {
|
|
27
|
+
byStrategy = new Map();
|
|
28
|
+
cache.set(envelope, byStrategy);
|
|
29
|
+
}
|
|
30
|
+
const existing = byStrategy.get(strategy);
|
|
31
|
+
if (existing !== undefined)
|
|
32
|
+
return existing;
|
|
33
|
+
const pending = create();
|
|
34
|
+
byStrategy.set(strategy, pending);
|
|
35
|
+
void pending.catch(() => cache.get(envelope)?.delete(strategy));
|
|
36
|
+
return pending;
|
|
37
|
+
}
|
|
38
|
+
function epochSnapshot(context, envelope, strategy) {
|
|
39
|
+
assertGame(context, 'loyaltyEpoch', envelope);
|
|
40
|
+
return memoized(EPOCH_SNAPSHOTS, envelope, strategy, async () => {
|
|
41
|
+
const data = envelope.data;
|
|
42
|
+
const [factionAddress, rewardConfigAddress] = await Promise.all([
|
|
43
|
+
deriveLoyaltyFactionAddress(data.game, data.factionId),
|
|
44
|
+
deriveLoyaltyRewardConfigAddress(data.game, data.configVersion),
|
|
45
|
+
]);
|
|
46
|
+
return freezeResolvedSnapshot(attachReadMeta(attachJsonSerialization({
|
|
47
|
+
...data,
|
|
48
|
+
address: envelope.address,
|
|
49
|
+
faction: entityRef('faction', factionAddress),
|
|
50
|
+
game: entityRef('game', data.game),
|
|
51
|
+
kind: 'loyaltyEpoch',
|
|
52
|
+
rewardConfig: entityRef('atlasRewardConfig', rewardConfigAddress),
|
|
53
|
+
}), metadata(envelope, strategy)));
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
function contributionSnapshot(context, envelope, strategy) {
|
|
57
|
+
assertGame(context, 'loyaltyContribution', envelope);
|
|
58
|
+
return memoized(CONTRIBUTION_SNAPSHOTS, envelope, strategy, async () => {
|
|
59
|
+
const data = envelope.data;
|
|
60
|
+
const [factionAddress, epochAddress] = await Promise.all([
|
|
61
|
+
deriveLoyaltyFactionAddress(data.game, data.factionId),
|
|
62
|
+
deriveLoyaltyEpochAddress(data.game, data.factionId, data.epochIndex),
|
|
63
|
+
]);
|
|
64
|
+
return freezeResolvedSnapshot(attachReadMeta(attachJsonSerialization({
|
|
65
|
+
...data,
|
|
66
|
+
address: envelope.address,
|
|
67
|
+
epoch: entityRef('loyaltyEpoch', epochAddress),
|
|
68
|
+
faction: entityRef('faction', factionAddress),
|
|
69
|
+
game: entityRef('game', data.game),
|
|
70
|
+
kind: 'loyaltyContribution',
|
|
71
|
+
profile: entityRef('profile', data.profile),
|
|
72
|
+
settledAtUnixSeconds: data.settledAtUnixSeconds === 0n
|
|
73
|
+
? undefined
|
|
74
|
+
: data.settledAtUnixSeconds,
|
|
75
|
+
}), metadata(envelope, strategy)));
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
function bankSnapshot(context, envelope, strategy) {
|
|
79
|
+
assertGame(context, 'loyaltyAtlasBank', envelope);
|
|
80
|
+
return memoized(BANK_SNAPSHOTS, envelope, strategy, async () => {
|
|
81
|
+
const data = envelope.data;
|
|
82
|
+
const factionAddress = await deriveLoyaltyFactionAddress(data.game, data.factionId);
|
|
83
|
+
return freezeResolvedSnapshot(attachReadMeta(attachJsonSerialization({
|
|
84
|
+
...data,
|
|
85
|
+
address: envelope.address,
|
|
86
|
+
faction: entityRef('faction', factionAddress),
|
|
87
|
+
game: entityRef('game', data.game),
|
|
88
|
+
kind: 'loyaltyAtlasBank',
|
|
89
|
+
profile: entityRef('profile', data.profile),
|
|
90
|
+
}), metadata(envelope, strategy)));
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
function assertEpochKeys(envelope, factionId, epochIndex) {
|
|
94
|
+
if (envelope.data.factionId !== factionId ||
|
|
95
|
+
envelope.data.epochIndex !== epochIndex) {
|
|
96
|
+
throw new AccountDecodeError('loyaltyEpoch', envelope.address, new RangeError('LoyaltyEpoch fields contradicted its PDA seeds.'), `LoyaltyEpoch ${envelope.address} does not match faction ${String(factionId)} and epoch ${String(epochIndex)}. Verify the keys and refresh the account before retrying.`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/** Derives and reads one required faction loyalty epoch.
|
|
100
|
+
* @example
|
|
101
|
+
* ```ts
|
|
102
|
+
* declare const ctx: SageContext;
|
|
103
|
+
* const epoch = await getLoyaltyEpoch(ctx, 1, 20_665n);
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
export async function getLoyaltyEpoch(context, factionId, epochIndex, options) {
|
|
107
|
+
const game = requireGameAddress(context);
|
|
108
|
+
const address = await deriveLoyaltyEpochAddress(game, factionId, epochIndex);
|
|
109
|
+
const envelope = await context.data.read(loyaltyEpochAccountDefinition, address, options);
|
|
110
|
+
assertEpochKeys(envelope, factionId, epochIndex);
|
|
111
|
+
return epochSnapshot(context, envelope, 'derived');
|
|
112
|
+
}
|
|
113
|
+
/** Derives and reads one required Profile contribution.
|
|
114
|
+
* @example
|
|
115
|
+
* ```ts
|
|
116
|
+
* declare const ctx: SageContext;
|
|
117
|
+
* declare const profile: Address;
|
|
118
|
+
* const contribution = await getLoyaltyContribution(ctx, profile, 1, 20_668n);
|
|
119
|
+
* ```
|
|
120
|
+
*/
|
|
121
|
+
export async function getLoyaltyContribution(context, profile, factionId, epochIndex, options) {
|
|
122
|
+
const game = requireGameAddress(context);
|
|
123
|
+
const address = await deriveLoyaltyContributionAddress(game, profile, factionId, epochIndex);
|
|
124
|
+
const envelope = await context.data.read(loyaltyContributionAccountDefinition, address, options);
|
|
125
|
+
if (envelope.data.profile !== profile ||
|
|
126
|
+
envelope.data.factionId !== factionId ||
|
|
127
|
+
envelope.data.epochIndex !== epochIndex) {
|
|
128
|
+
throw new AccountDecodeError('loyaltyContribution', address, new RangeError('LoyaltyContribution fields contradicted its PDA seeds.'), `LoyaltyContribution ${address} does not match the requested Profile, faction, and epoch. Verify all loyalty keys and refresh before retrying.`);
|
|
129
|
+
}
|
|
130
|
+
return contributionSnapshot(context, envelope, 'derived');
|
|
131
|
+
}
|
|
132
|
+
async function maybeBankEnvelope(context, profile, factionId, options) {
|
|
133
|
+
const game = requireGameAddress(context);
|
|
134
|
+
const address = await deriveLoyaltyAtlasBankAddress(game, profile, factionId);
|
|
135
|
+
const [envelope] = await context.data.readMany(loyaltyAtlasBankAccountDefinition, [address], options);
|
|
136
|
+
if (envelope !== undefined &&
|
|
137
|
+
(envelope.data.profile !== profile || envelope.data.factionId !== factionId)) {
|
|
138
|
+
throw new AccountDecodeError('loyaltyAtlasBank', address, new RangeError('LoyaltyAtlasBank fields contradicted its PDA seeds.'), `LoyaltyAtlasBank ${address} does not match the requested Profile and faction. Verify both loyalty keys and refresh before retrying.`);
|
|
139
|
+
}
|
|
140
|
+
return { address, envelope };
|
|
141
|
+
}
|
|
142
|
+
/** Derives and reads an optional Profile loyalty ATLAS bank.
|
|
143
|
+
* @example
|
|
144
|
+
* ```ts
|
|
145
|
+
* declare const ctx: SageContext;
|
|
146
|
+
* declare const profile: Address;
|
|
147
|
+
* const bank = await maybeGetLoyaltyAtlasBank(ctx, profile, 3);
|
|
148
|
+
* ```
|
|
149
|
+
*/
|
|
150
|
+
export async function maybeGetLoyaltyAtlasBank(context, profile, factionId, options) {
|
|
151
|
+
const { envelope } = await maybeBankEnvelope(context, profile, factionId, options);
|
|
152
|
+
return envelope === undefined
|
|
153
|
+
? undefined
|
|
154
|
+
: bankSnapshot(context, envelope, 'derived');
|
|
155
|
+
}
|
|
156
|
+
/** Derives and reads a required Profile loyalty ATLAS bank.
|
|
157
|
+
* @example
|
|
158
|
+
* ```ts
|
|
159
|
+
* declare const ctx: SageContext;
|
|
160
|
+
* declare const profile: Address;
|
|
161
|
+
* const bank = await getLoyaltyAtlasBank(ctx, profile, 3);
|
|
162
|
+
* ```
|
|
163
|
+
*/
|
|
164
|
+
export async function getLoyaltyAtlasBank(context, profile, factionId, options) {
|
|
165
|
+
const game = requireGameAddress(context);
|
|
166
|
+
const address = await deriveLoyaltyAtlasBankAddress(game, profile, factionId);
|
|
167
|
+
const envelope = await context.data.read(loyaltyAtlasBankAccountDefinition, address, options);
|
|
168
|
+
if (envelope.data.profile !== profile ||
|
|
169
|
+
envelope.data.factionId !== factionId) {
|
|
170
|
+
throw new AccountDecodeError('loyaltyAtlasBank', address, new RangeError('LoyaltyAtlasBank fields contradicted its PDA seeds.'), `LoyaltyAtlasBank ${address} does not match the requested Profile and faction. Verify both loyalty keys and refresh before retrying.`);
|
|
171
|
+
}
|
|
172
|
+
return bankSnapshot(context, envelope, 'derived');
|
|
173
|
+
}
|
|
174
|
+
/** Discovers validated loyalty epochs for one faction.
|
|
175
|
+
* @example
|
|
176
|
+
* ```ts
|
|
177
|
+
* declare const ctx: SageContext;
|
|
178
|
+
* const epochs = await getLoyaltyEpochsByFaction(ctx, 1);
|
|
179
|
+
* ```
|
|
180
|
+
*/
|
|
181
|
+
export async function getLoyaltyEpochsByFaction(context, factionId, options) {
|
|
182
|
+
const envelopes = await discoverLoyaltyEpochsByFaction(context, factionId, options);
|
|
183
|
+
const snapshots = await Promise.all(envelopes.map((envelope) => epochSnapshot(context, envelope, 'targeted-program-accounts')));
|
|
184
|
+
return Object.freeze(attachReadMeta(snapshots, readMeta(envelopes)));
|
|
185
|
+
}
|
|
186
|
+
/** Discovers validated loyalty contributions for one Profile.
|
|
187
|
+
* @example
|
|
188
|
+
* ```ts
|
|
189
|
+
* declare const ctx: SageContext;
|
|
190
|
+
* declare const profile: Address;
|
|
191
|
+
* const contributions = await getLoyaltyContributionsByProfile(ctx, profile);
|
|
192
|
+
* ```
|
|
193
|
+
*/
|
|
194
|
+
export async function getLoyaltyContributionsByProfile(context, profile, options) {
|
|
195
|
+
const envelopes = await discoverLoyaltyContributionsByProfile(context, profile, options);
|
|
196
|
+
const snapshots = await Promise.all(envelopes.map((envelope) => contributionSnapshot(context, envelope, 'targeted-program-accounts')));
|
|
197
|
+
return Object.freeze(attachReadMeta(snapshots, readMeta(envelopes)));
|
|
198
|
+
}
|
|
199
|
+
/** Discovers validated loyalty ATLAS banks for one Profile.
|
|
200
|
+
* @example
|
|
201
|
+
* ```ts
|
|
202
|
+
* declare const ctx: SageContext;
|
|
203
|
+
* declare const profile: Address;
|
|
204
|
+
* const banks = await getLoyaltyAtlasBanksByProfile(ctx, profile);
|
|
205
|
+
* ```
|
|
206
|
+
*/
|
|
207
|
+
export async function getLoyaltyAtlasBanksByProfile(context, profile, options) {
|
|
208
|
+
const envelopes = await discoverLoyaltyAtlasBanksByProfile(context, profile, options);
|
|
209
|
+
const snapshots = await Promise.all(envelopes.map((envelope) => bankSnapshot(context, envelope, 'targeted-program-accounts')));
|
|
210
|
+
return Object.freeze(attachReadMeta(snapshots, readMeta(envelopes)));
|
|
211
|
+
}
|
|
212
|
+
/** Projects a loyalty epoch at an explicit Unix timestamp.
|
|
213
|
+
* @example
|
|
214
|
+
* ```ts
|
|
215
|
+
* declare const epoch: LoyaltyEpochSnapshot;
|
|
216
|
+
* const state = deriveLoyaltyEpochState(epoch, epoch.startsAtUnixSeconds);
|
|
217
|
+
* ```
|
|
218
|
+
*/
|
|
219
|
+
export function deriveLoyaltyEpochState(epoch, atUnixSeconds) {
|
|
220
|
+
if (epoch.status === 'swept')
|
|
221
|
+
return { kind: 'swept' };
|
|
222
|
+
if (atUnixSeconds < epoch.startsAtUnixSeconds)
|
|
223
|
+
return { kind: 'scheduled' };
|
|
224
|
+
if (epoch.status === 'open' && atUnixSeconds < epoch.endsAtUnixSeconds) {
|
|
225
|
+
return {
|
|
226
|
+
kind: 'open',
|
|
227
|
+
remainingSeconds: epoch.endsAtUnixSeconds - atUnixSeconds,
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
const deadline = epoch.settlementDeadlineUnixSeconds === 0n
|
|
231
|
+
? epoch.endsAtUnixSeconds
|
|
232
|
+
: epoch.settlementDeadlineUnixSeconds;
|
|
233
|
+
if (atUnixSeconds < deadline) {
|
|
234
|
+
return {
|
|
235
|
+
kind: 'settling',
|
|
236
|
+
remainingSeconds: deadline - atUnixSeconds,
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
return { kind: 'expired' };
|
|
240
|
+
}
|
|
241
|
+
/** Projects settlement or expiry for one contribution and matching epoch.
|
|
242
|
+
* Unsettled contributions are expired as soon as their epoch is swept.
|
|
243
|
+
* @example
|
|
244
|
+
* ```ts
|
|
245
|
+
* declare const contribution: LoyaltyContributionSnapshot;
|
|
246
|
+
* declare const epoch: LoyaltyEpochSnapshot;
|
|
247
|
+
* const state = deriveLoyaltyContributionState(contribution, epoch, 1_700_000_000n);
|
|
248
|
+
* ```
|
|
249
|
+
*/
|
|
250
|
+
export function deriveLoyaltyContributionState(contribution, epoch, atUnixSeconds) {
|
|
251
|
+
if (contribution.epoch.address !== epoch.address ||
|
|
252
|
+
contribution.factionId !== epoch.factionId ||
|
|
253
|
+
contribution.game.address !== epoch.game.address) {
|
|
254
|
+
throw new RangeError('LoyaltyContribution and LoyaltyEpoch identities do not match.');
|
|
255
|
+
}
|
|
256
|
+
if (contribution.settled) {
|
|
257
|
+
if (contribution.settledAtUnixSeconds === undefined) {
|
|
258
|
+
throw new RangeError('A settled contribution is missing its settlement timestamp.');
|
|
259
|
+
}
|
|
260
|
+
return {
|
|
261
|
+
kind: 'settled',
|
|
262
|
+
settledAtUnixSeconds: contribution.settledAtUnixSeconds,
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
if (epoch.status === 'swept')
|
|
266
|
+
return { kind: 'expired' };
|
|
267
|
+
const deadline = epoch.settlementDeadlineUnixSeconds === 0n
|
|
268
|
+
? epoch.endsAtUnixSeconds
|
|
269
|
+
: epoch.settlementDeadlineUnixSeconds;
|
|
270
|
+
return atUnixSeconds >= deadline
|
|
271
|
+
? { kind: 'expired' }
|
|
272
|
+
: { kind: 'unsettled' };
|
|
273
|
+
}
|
|
274
|
+
/** Projects whether an accumulated ATLAS bank is empty, claimable, or expired.
|
|
275
|
+
* @example
|
|
276
|
+
* ```ts
|
|
277
|
+
* declare const bank: LoyaltyAtlasBankSnapshot;
|
|
278
|
+
* const state = deriveLoyaltyAtlasBankState(bank, 1_700_000_000n);
|
|
279
|
+
* ```
|
|
280
|
+
*/
|
|
281
|
+
export function deriveLoyaltyAtlasBankState(bank, atUnixSeconds) {
|
|
282
|
+
if (bank.claimableAtlasRaw === 0n)
|
|
283
|
+
return { kind: 'empty' };
|
|
284
|
+
return bank.expiresAtUnixSeconds !== 0n &&
|
|
285
|
+
atUnixSeconds >= bank.expiresAtUnixSeconds
|
|
286
|
+
? { claimableAtlasRaw: bank.claimableAtlasRaw, kind: 'expired' }
|
|
287
|
+
: { claimableAtlasRaw: bank.claimableAtlasRaw, kind: 'claimable' };
|
|
288
|
+
}
|
|
289
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/loyalty/index.ts"],"names":[],"mappings":"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"}
|