@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,318 @@
|
|
|
1
|
+
import { LOYALTY_ATLAS_BANK_DISCRIMINATOR, LOYALTY_CONTRIBUTION_DISCRIMINATOR, LOYALTY_EPOCH_DISCRIMINATOR, SAGE_PROGRAM_ADDRESS, getLoyaltyAtlasBankDecoder, getLoyaltyContributionDecoder, getLoyaltyEpochDecoder, } from '@staratlas/dev-sage';
|
|
2
|
+
import { getAddressEncoder, getBytesEncoder, getProgramDerivedAddress, getU16Encoder, getU64Encoder, } from '@solana/kit';
|
|
3
|
+
import { AccountDecodeError, InvalidAccountOwnerError, InvalidDiscriminatorError, MissingGameContextError, } from '../../client/errors.js';
|
|
4
|
+
import { deriveAtlasRewardConfigAddress, deriveFactionAccountAddress, validateUnsignedU16EntityId, validateUnsignedU64, } from './pda.js';
|
|
5
|
+
const EPOCH_DATA_LENGTH = 156;
|
|
6
|
+
const CONTRIBUTION_DATA_LENGTH = 148;
|
|
7
|
+
const BANK_DATA_LENGTH = 170;
|
|
8
|
+
export const LOYALTY_EPOCH_FILTER_OFFSETS = Object.freeze({
|
|
9
|
+
discriminator: 0,
|
|
10
|
+
game: 12,
|
|
11
|
+
faction: 44,
|
|
12
|
+
});
|
|
13
|
+
export const LOYALTY_CONTRIBUTION_FILTER_OFFSETS = Object.freeze({
|
|
14
|
+
discriminator: 0,
|
|
15
|
+
game: 12,
|
|
16
|
+
profile: 44,
|
|
17
|
+
});
|
|
18
|
+
export const LOYALTY_ATLAS_BANK_FILTER_OFFSETS = Object.freeze({
|
|
19
|
+
discriminator: 0,
|
|
20
|
+
game: 10,
|
|
21
|
+
profile: 42,
|
|
22
|
+
});
|
|
23
|
+
/** Audited read and deferred-action relationships for loyalty state. */
|
|
24
|
+
export const LOYALTY_RELATIONSHIPS = Object.freeze([
|
|
25
|
+
{
|
|
26
|
+
from: 'game + faction + epoch | game + profile + faction',
|
|
27
|
+
kind: 'derived',
|
|
28
|
+
mechanism: 'generated LoyaltyEpoch, LoyaltyContribution, and LoyaltyAtlasBank PDA seeds',
|
|
29
|
+
to: 'loyalty state',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
from: 'loyalty account',
|
|
33
|
+
kind: 'stored',
|
|
34
|
+
mechanism: 'repeated Game, Profile, faction, epoch, and reward config identity fields',
|
|
35
|
+
to: 'game | profile | faction | epoch | reward config',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
from: 'epoch | contribution | bank',
|
|
39
|
+
kind: 'nested',
|
|
40
|
+
mechanism: 'lifecycle timestamps and exact LP/ATLAS values',
|
|
41
|
+
to: 'loyalty lifecycle and balances',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
from: 'loyalty',
|
|
45
|
+
kind: 'instruction-only',
|
|
46
|
+
mechanism: 'initialization, settlement, sweeping, and claiming co-accounts are not durable relations',
|
|
47
|
+
to: 'actions',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
from: 'faction | profile',
|
|
51
|
+
kind: 'discovered',
|
|
52
|
+
mechanism: 'verified discriminator and Game plus faction (epochs) or Profile (contributions and banks) offsets',
|
|
53
|
+
to: 'epochs | contributions | banks',
|
|
54
|
+
},
|
|
55
|
+
]);
|
|
56
|
+
function discriminator(value) {
|
|
57
|
+
return Object.freeze(Array.from(value));
|
|
58
|
+
}
|
|
59
|
+
function hasDiscriminator(data, expected) {
|
|
60
|
+
return expected.every((byte, index) => data[index] === byte);
|
|
61
|
+
}
|
|
62
|
+
function validate(account, type, expected, length) {
|
|
63
|
+
if (account.owner !== SAGE_PROGRAM_ADDRESS) {
|
|
64
|
+
throw new InvalidAccountOwnerError(type, account.address, SAGE_PROGRAM_ADDRESS, account.owner);
|
|
65
|
+
}
|
|
66
|
+
if (!hasDiscriminator(account.data, expected)) {
|
|
67
|
+
throw new InvalidDiscriminatorError(type, account.address);
|
|
68
|
+
}
|
|
69
|
+
if (account.data.length !== length) {
|
|
70
|
+
throw new AccountDecodeError(type, account.address, new RangeError(`Expected exactly ${String(length)} account bytes, received ${String(account.data.length)}.`));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
function decodeExactly(account, type, read) {
|
|
74
|
+
try {
|
|
75
|
+
const [decoded, offset] = read(account.data, 0);
|
|
76
|
+
if (offset !== account.data.length) {
|
|
77
|
+
throw new RangeError(`Decoded ${String(offset)} of ${String(account.data.length)} ${type} account bytes; trailing bytes are not accepted.`);
|
|
78
|
+
}
|
|
79
|
+
return decoded;
|
|
80
|
+
}
|
|
81
|
+
catch (cause) {
|
|
82
|
+
throw new AccountDecodeError(type, account.address, cause);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function translateEpoch(value) {
|
|
86
|
+
const statuses = ['open', 'closed', 'swept'];
|
|
87
|
+
const status = statuses[value.status];
|
|
88
|
+
validateUnsignedU16EntityId('faction', value.factionId);
|
|
89
|
+
if (value.endsAt < value.startsAt) {
|
|
90
|
+
throw new RangeError('LoyaltyEpoch ends before it starts.');
|
|
91
|
+
}
|
|
92
|
+
if (value.settlementDeadline !== 0n &&
|
|
93
|
+
value.settlementDeadline < value.endsAt) {
|
|
94
|
+
throw new RangeError('LoyaltyEpoch settlement deadline precedes its end.');
|
|
95
|
+
}
|
|
96
|
+
return {
|
|
97
|
+
bump: value.bump,
|
|
98
|
+
configVersion: value.configVersion,
|
|
99
|
+
endsAtUnixSeconds: value.endsAt,
|
|
100
|
+
epochIndex: value.epochIndex,
|
|
101
|
+
factionId: value.factionId,
|
|
102
|
+
game: value.gameId,
|
|
103
|
+
kingSystems: value.kingSystems,
|
|
104
|
+
poolAtlasRaw: value.poolAtlas,
|
|
105
|
+
settledAtlasRaw: value.settledAtlas,
|
|
106
|
+
settlementDeadlineUnixSeconds: value.settlementDeadline,
|
|
107
|
+
startsAtUnixSeconds: value.startsAt,
|
|
108
|
+
status,
|
|
109
|
+
totalLpRaw: value.totalLp,
|
|
110
|
+
unsettledAtlasRaw: value.unsettledAtlas,
|
|
111
|
+
version: value.version,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
function translateContribution(value) {
|
|
115
|
+
validateUnsignedU16EntityId('faction', value.factionId);
|
|
116
|
+
if (value.settled !== 0 && value.settled !== 1) {
|
|
117
|
+
throw new RangeError(`Unsupported LoyaltyContribution settled flag ${String(value.settled)}.`);
|
|
118
|
+
}
|
|
119
|
+
if ((value.settled === 0) !== (value.settledAt === 0n)) {
|
|
120
|
+
throw new RangeError('LoyaltyContribution settled flag and timestamp are inconsistent.');
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
atlasEntitlementRaw: value.atlasEntitlement,
|
|
124
|
+
bump: value.bump,
|
|
125
|
+
epochIndex: value.epochIndex,
|
|
126
|
+
factionId: value.factionId,
|
|
127
|
+
game: value.gameId,
|
|
128
|
+
lpRaw: value.lp,
|
|
129
|
+
profile: value.profile,
|
|
130
|
+
settled: value.settled === 1,
|
|
131
|
+
settledAtUnixSeconds: value.settledAt,
|
|
132
|
+
version: value.version,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
function translateBank(value) {
|
|
136
|
+
validateUnsignedU16EntityId('faction', value.factionId);
|
|
137
|
+
// A bank's claimable balance is the unclaimed subset of its cumulative
|
|
138
|
+
// lifetime ATLAS credits, so it cannot exceed that credited total.
|
|
139
|
+
if (value.claimableAtlas > value.lifetimeAtlas) {
|
|
140
|
+
throw new RangeError('LoyaltyAtlasBank claimable ATLAS exceeds its lifetime credited ATLAS.');
|
|
141
|
+
}
|
|
142
|
+
return {
|
|
143
|
+
bump: value.bump,
|
|
144
|
+
claimableAtlasRaw: value.claimableAtlas,
|
|
145
|
+
expiresAtUnixSeconds: value.expiresAt,
|
|
146
|
+
factionId: value.factionId,
|
|
147
|
+
game: value.gameId,
|
|
148
|
+
lastCreditedAtUnixSeconds: value.lastCreditedAt,
|
|
149
|
+
lifetimeAtlasRaw: value.lifetimeAtlas,
|
|
150
|
+
lifetimeLpRaw: value.lifetimeLp,
|
|
151
|
+
profile: value.profile,
|
|
152
|
+
version: value.version,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
const epochDiscriminator = discriminator(LOYALTY_EPOCH_DISCRIMINATOR);
|
|
156
|
+
const contributionDiscriminator = discriminator(LOYALTY_CONTRIBUTION_DISCRIMINATOR);
|
|
157
|
+
const bankDiscriminator = discriminator(LOYALTY_ATLAS_BANK_DISCRIMINATOR);
|
|
158
|
+
export const loyaltyEpochAccountDefinition = Object.freeze({
|
|
159
|
+
decode(account) {
|
|
160
|
+
validate(account, 'loyaltyEpoch', epochDiscriminator, EPOCH_DATA_LENGTH);
|
|
161
|
+
try {
|
|
162
|
+
return translateEpoch(decodeExactly(account, 'loyaltyEpoch', (bytes, offset) => getLoyaltyEpochDecoder().read(bytes, offset)));
|
|
163
|
+
}
|
|
164
|
+
catch (cause) {
|
|
165
|
+
if (cause instanceof AccountDecodeError)
|
|
166
|
+
throw cause;
|
|
167
|
+
throw new AccountDecodeError('loyaltyEpoch', account.address, cause);
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
discriminator: epochDiscriminator,
|
|
171
|
+
minimumDataLength: EPOCH_DATA_LENGTH,
|
|
172
|
+
programAddress: SAGE_PROGRAM_ADDRESS,
|
|
173
|
+
type: 'loyaltyEpoch',
|
|
174
|
+
validate(account) {
|
|
175
|
+
validate(account, 'loyaltyEpoch', epochDiscriminator, EPOCH_DATA_LENGTH);
|
|
176
|
+
},
|
|
177
|
+
});
|
|
178
|
+
export const loyaltyContributionAccountDefinition = Object.freeze({
|
|
179
|
+
decode(account) {
|
|
180
|
+
validate(account, 'loyaltyContribution', contributionDiscriminator, CONTRIBUTION_DATA_LENGTH);
|
|
181
|
+
const decoded = decodeExactly(account, 'loyaltyContribution', (bytes, offset) => getLoyaltyContributionDecoder().read(bytes, offset));
|
|
182
|
+
try {
|
|
183
|
+
return translateContribution(decoded);
|
|
184
|
+
}
|
|
185
|
+
catch (cause) {
|
|
186
|
+
throw new AccountDecodeError('loyaltyContribution', account.address, cause);
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
discriminator: contributionDiscriminator,
|
|
190
|
+
minimumDataLength: CONTRIBUTION_DATA_LENGTH,
|
|
191
|
+
programAddress: SAGE_PROGRAM_ADDRESS,
|
|
192
|
+
type: 'loyaltyContribution',
|
|
193
|
+
validate(account) {
|
|
194
|
+
validate(account, 'loyaltyContribution', contributionDiscriminator, CONTRIBUTION_DATA_LENGTH);
|
|
195
|
+
},
|
|
196
|
+
});
|
|
197
|
+
export const loyaltyAtlasBankAccountDefinition = Object.freeze({
|
|
198
|
+
decode(account) {
|
|
199
|
+
validate(account, 'loyaltyAtlasBank', bankDiscriminator, BANK_DATA_LENGTH);
|
|
200
|
+
const decoded = decodeExactly(account, 'loyaltyAtlasBank', (bytes, offset) => getLoyaltyAtlasBankDecoder().read(bytes, offset));
|
|
201
|
+
try {
|
|
202
|
+
return translateBank(decoded);
|
|
203
|
+
}
|
|
204
|
+
catch (cause) {
|
|
205
|
+
throw new AccountDecodeError('loyaltyAtlasBank', account.address, cause);
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
discriminator: bankDiscriminator,
|
|
209
|
+
minimumDataLength: BANK_DATA_LENGTH,
|
|
210
|
+
programAddress: SAGE_PROGRAM_ADDRESS,
|
|
211
|
+
type: 'loyaltyAtlasBank',
|
|
212
|
+
validate(account) {
|
|
213
|
+
validate(account, 'loyaltyAtlasBank', bankDiscriminator, BANK_DATA_LENGTH);
|
|
214
|
+
},
|
|
215
|
+
});
|
|
216
|
+
const textEncoder = new TextEncoder();
|
|
217
|
+
function seed(value) {
|
|
218
|
+
return getBytesEncoder().encode(textEncoder.encode(value));
|
|
219
|
+
}
|
|
220
|
+
export async function deriveLoyaltyEpochAddress(game, factionId, epochIndex) {
|
|
221
|
+
validateUnsignedU16EntityId('faction', factionId);
|
|
222
|
+
validateUnsignedU64('Loyalty epoch index', epochIndex, 'Use an unsigned 64-bit bigint from 0 through 18446744073709551615 before deriving the loyalty account.');
|
|
223
|
+
const [address] = await getProgramDerivedAddress({
|
|
224
|
+
programAddress: SAGE_PROGRAM_ADDRESS,
|
|
225
|
+
seeds: [
|
|
226
|
+
seed('LoyaltyEpoch'),
|
|
227
|
+
getAddressEncoder().encode(game),
|
|
228
|
+
getU16Encoder().encode(factionId),
|
|
229
|
+
getU64Encoder().encode(epochIndex),
|
|
230
|
+
],
|
|
231
|
+
});
|
|
232
|
+
return address;
|
|
233
|
+
}
|
|
234
|
+
export async function deriveLoyaltyContributionAddress(game, profile, factionId, epochIndex) {
|
|
235
|
+
validateUnsignedU16EntityId('faction', factionId);
|
|
236
|
+
validateUnsignedU64('Loyalty epoch index', epochIndex, 'Use an unsigned 64-bit bigint from 0 through 18446744073709551615 before deriving the loyalty account.');
|
|
237
|
+
const [address] = await getProgramDerivedAddress({
|
|
238
|
+
programAddress: SAGE_PROGRAM_ADDRESS,
|
|
239
|
+
seeds: [
|
|
240
|
+
seed('LoyaltyContribution'),
|
|
241
|
+
getAddressEncoder().encode(game),
|
|
242
|
+
getAddressEncoder().encode(profile),
|
|
243
|
+
getU16Encoder().encode(factionId),
|
|
244
|
+
getU64Encoder().encode(epochIndex),
|
|
245
|
+
],
|
|
246
|
+
});
|
|
247
|
+
return address;
|
|
248
|
+
}
|
|
249
|
+
export async function deriveLoyaltyAtlasBankAddress(game, profile, factionId) {
|
|
250
|
+
validateUnsignedU16EntityId('faction', factionId);
|
|
251
|
+
const [address] = await getProgramDerivedAddress({
|
|
252
|
+
programAddress: SAGE_PROGRAM_ADDRESS,
|
|
253
|
+
seeds: [
|
|
254
|
+
seed('LoyaltyAtlasBank'),
|
|
255
|
+
getAddressEncoder().encode(game),
|
|
256
|
+
getAddressEncoder().encode(profile),
|
|
257
|
+
getU16Encoder().encode(factionId),
|
|
258
|
+
],
|
|
259
|
+
});
|
|
260
|
+
return address;
|
|
261
|
+
}
|
|
262
|
+
export { deriveFactionAccountAddress as deriveLoyaltyFactionAddress, deriveAtlasRewardConfigAddress as deriveLoyaltyRewardConfigAddress, };
|
|
263
|
+
function bytesFilter(bytes, offset) {
|
|
264
|
+
return { bytes: new Uint8Array(Array.from(bytes)), offset };
|
|
265
|
+
}
|
|
266
|
+
export function buildLoyaltyEpochDiscoveryFilters(game, factionId) {
|
|
267
|
+
validateUnsignedU16EntityId('faction', factionId);
|
|
268
|
+
return Object.freeze([
|
|
269
|
+
bytesFilter(LOYALTY_EPOCH_DISCRIMINATOR, LOYALTY_EPOCH_FILTER_OFFSETS.discriminator),
|
|
270
|
+
bytesFilter(getAddressEncoder().encode(game), LOYALTY_EPOCH_FILTER_OFFSETS.game),
|
|
271
|
+
bytesFilter(getU16Encoder().encode(factionId), LOYALTY_EPOCH_FILTER_OFFSETS.faction),
|
|
272
|
+
]);
|
|
273
|
+
}
|
|
274
|
+
export function buildLoyaltyContributionDiscoveryFilters(game, profile) {
|
|
275
|
+
return Object.freeze([
|
|
276
|
+
bytesFilter(LOYALTY_CONTRIBUTION_DISCRIMINATOR, LOYALTY_CONTRIBUTION_FILTER_OFFSETS.discriminator),
|
|
277
|
+
bytesFilter(getAddressEncoder().encode(game), LOYALTY_CONTRIBUTION_FILTER_OFFSETS.game),
|
|
278
|
+
bytesFilter(getAddressEncoder().encode(profile), LOYALTY_CONTRIBUTION_FILTER_OFFSETS.profile),
|
|
279
|
+
]);
|
|
280
|
+
}
|
|
281
|
+
export function buildLoyaltyAtlasBankDiscoveryFilters(game, profile) {
|
|
282
|
+
return Object.freeze([
|
|
283
|
+
bytesFilter(LOYALTY_ATLAS_BANK_DISCRIMINATOR, LOYALTY_ATLAS_BANK_FILTER_OFFSETS.discriminator),
|
|
284
|
+
bytesFilter(getAddressEncoder().encode(game), LOYALTY_ATLAS_BANK_FILTER_OFFSETS.game),
|
|
285
|
+
bytesFilter(getAddressEncoder().encode(profile), LOYALTY_ATLAS_BANK_FILTER_OFFSETS.profile),
|
|
286
|
+
]);
|
|
287
|
+
}
|
|
288
|
+
function requireGame(context) {
|
|
289
|
+
if (context.game === undefined)
|
|
290
|
+
throw new MissingGameContextError();
|
|
291
|
+
return context.game;
|
|
292
|
+
}
|
|
293
|
+
async function discover(context, definition, filters, options, validateCandidate) {
|
|
294
|
+
const candidates = await context.data.discover(definition, {
|
|
295
|
+
...options,
|
|
296
|
+
filters,
|
|
297
|
+
strategy: 'targeted-program-accounts',
|
|
298
|
+
});
|
|
299
|
+
for (const candidate of candidates) {
|
|
300
|
+
if (!validateCandidate(candidate)) {
|
|
301
|
+
throw new AccountDecodeError(definition.type, candidate.address, new RangeError('Decoded loyalty fields contradicted discovery filters.'), `${definition.type} ${candidate.address} contradicts the requested Game, Profile, or faction. Refresh discovery and verify the requested loyalty keys before retrying.`);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
return candidates;
|
|
305
|
+
}
|
|
306
|
+
export function discoverLoyaltyEpochsByFaction(context, factionId, options = {}) {
|
|
307
|
+
const game = requireGame(context);
|
|
308
|
+
return discover(context, loyaltyEpochAccountDefinition, buildLoyaltyEpochDiscoveryFilters(game, factionId), options, ({ data }) => data.game === game && data.factionId === factionId);
|
|
309
|
+
}
|
|
310
|
+
export function discoverLoyaltyContributionsByProfile(context, profile, options = {}) {
|
|
311
|
+
const game = requireGame(context);
|
|
312
|
+
return discover(context, loyaltyContributionAccountDefinition, buildLoyaltyContributionDiscoveryFilters(game, profile), options, ({ data }) => data.game === game && data.profile === profile);
|
|
313
|
+
}
|
|
314
|
+
export function discoverLoyaltyAtlasBanksByProfile(context, profile, options = {}) {
|
|
315
|
+
const game = requireGame(context);
|
|
316
|
+
return discover(context, loyaltyAtlasBankAccountDefinition, buildLoyaltyAtlasBankDiscoveryFilters(game, profile), options, ({ data }) => data.game === game && data.profile === profile);
|
|
317
|
+
}
|
|
318
|
+
//# sourceMappingURL=loyalty.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loyalty.js","sourceRoot":"","sources":["../../../src/internal/c4/loyalty.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gCAAgC,EAChC,kCAAkC,EAClC,2BAA2B,EAC3B,oBAAoB,EACpB,0BAA0B,EAC1B,6BAA6B,EAC7B,sBAAsB,GAIvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,aAAa,EACb,aAAa,GAGd,MAAM,aAAa,CAAC;AAUrB,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,8BAA8B,EAC9B,2BAA2B,EAC3B,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,UAAU,CAAC;AAElB,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAC9B,MAAM,wBAAwB,GAAG,GAAG,CAAC;AACrC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC,MAAM,CAAC;IACxD,aAAa,EAAE,CAAC;IAChB,IAAI,EAAE,EAAE;IACR,OAAO,EAAE,EAAE;CACZ,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/D,aAAa,EAAE,CAAC;IAChB,IAAI,EAAE,EAAE;IACR,OAAO,EAAE,EAAE;CACZ,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7D,aAAa,EAAE,CAAC;IAChB,IAAI,EAAE,EAAE;IACR,OAAO,EAAE,EAAE;CACZ,CAAC,CAAC;AAEH,wEAAwE;AACxE,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC;IACjD;QACE,IAAI,EAAE,mDAAmD;QACzD,IAAI,EAAE,SAAS;QACf,SAAS,EACP,6EAA6E;QAC/E,EAAE,EAAE,eAAe;KACpB;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,QAAQ;QACd,SAAS,EACP,2EAA2E;QAC7E,EAAE,EAAE,kDAAkD;KACvD;IACD;QACE,IAAI,EAAE,6BAA6B;QACnC,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,gDAAgD;QAC3D,EAAE,EAAE,gCAAgC;KACrC;IACD;QACE,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,kBAAkB;QACxB,SAAS,EACP,0FAA0F;QAC5F,EAAE,EAAE,SAAS;KACd;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,YAAY;QAClB,SAAS,EACP,oGAAoG;QACtG,EAAE,EAAE,gCAAgC;KACrC;CACO,CAAC,CAAC;AAgDZ,SAAS,aAAa,CAAC,KAAiB;IACtC,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAgB,EAAE,QAA2B;IACrE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,QAAQ,CACf,OAAmB,EACnB,IAAgB,EAChB,QAA2B,EAC3B,MAAc;IAEd,IAAI,OAAO,CAAC,KAAK,KAAK,oBAAoB,EAAE,CAAC;QAC3C,MAAM,IAAI,wBAAwB,CAChC,IAAI,EACJ,OAAO,CAAC,OAAO,EACf,oBAAoB,EACpB,OAAO,CAAC,KAAK,CACd,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,yBAAyB,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QACnC,MAAM,IAAI,kBAAkB,CAC1B,IAAI,EACJ,OAAO,CAAC,OAAO,EACf,IAAI,UAAU,CACZ,oBAAoB,MAAM,CAAC,MAAM,CAAC,4BAA4B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAC7F,CACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CACpB,OAAmB,EACnB,IAAgB,EAChB,IAAiE;IAEjE,IAAI,CAAC;QACH,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAChD,IAAI,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,IAAI,UAAU,CAClB,WAAW,MAAM,CAAC,MAAM,CAAC,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,kDAAkD,CACtH,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,KAAmB;IACzC,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAU,CAAC;IACtD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAE,CAAC;IACvC,2BAA2B,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACxD,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAClC,MAAM,IAAI,UAAU,CAAC,qCAAqC,CAAC,CAAC;IAC9D,CAAC;IACD,IACE,KAAK,CAAC,kBAAkB,KAAK,EAAE;QAC/B,KAAK,CAAC,kBAAkB,GAAG,KAAK,CAAC,MAAM,EACvC,CAAC;QACD,MAAM,IAAI,UAAU,CAAC,oDAAoD,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,iBAAiB,EAAE,KAAK,CAAC,MAAM;QAC/B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,IAAI,EAAE,KAAK,CAAC,MAAM;QAClB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,YAAY,EAAE,KAAK,CAAC,SAAS;QAC7B,eAAe,EAAE,KAAK,CAAC,YAAY;QACnC,6BAA6B,EAAE,KAAK,CAAC,kBAAkB;QACvD,mBAAmB,EAAE,KAAK,CAAC,QAAQ;QACnC,MAAM;QACN,UAAU,EAAE,KAAK,CAAC,OAAO;QACzB,iBAAiB,EAAE,KAAK,CAAC,cAAc;QACvC,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,KAA0B;IAE1B,2BAA2B,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACxD,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,UAAU,CAClB,gDAAgD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CACzE,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,KAAK,EAAE,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,UAAU,CAClB,kEAAkE,CACnE,CAAC;IACJ,CAAC;IACD,OAAO;QACL,mBAAmB,EAAE,KAAK,CAAC,gBAAgB;QAC3C,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,IAAI,EAAE,KAAK,CAAC,MAAM;QAClB,KAAK,EAAE,KAAK,CAAC,EAAE;QACf,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,KAAK,CAAC,OAAO,KAAK,CAAC;QAC5B,oBAAoB,EAAE,KAAK,CAAC,SAAS;QACrC,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAuB;IAC5C,2BAA2B,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACxD,uEAAuE;IACvE,mEAAmE;IACnE,IAAI,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;QAC/C,MAAM,IAAI,UAAU,CAClB,uEAAuE,CACxE,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,iBAAiB,EAAE,KAAK,CAAC,cAAc;QACvC,oBAAoB,EAAE,KAAK,CAAC,SAAS;QACrC,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,IAAI,EAAE,KAAK,CAAC,MAAM;QAClB,yBAAyB,EAAE,KAAK,CAAC,cAAc;QAC/C,gBAAgB,EAAE,KAAK,CAAC,aAAa;QACrC,aAAa,EAAE,KAAK,CAAC,UAAU;QAC/B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC;AACJ,CAAC;AAED,MAAM,kBAAkB,GAAG,aAAa,CAAC,2BAA2B,CAAC,CAAC;AACtE,MAAM,yBAAyB,GAAG,aAAa,CAC7C,kCAAkC,CACnC,CAAC;AACF,MAAM,iBAAiB,GAAG,aAAa,CAAC,gCAAgC,CAAC,CAAC;AAE1E,MAAM,CAAC,MAAM,6BAA6B,GACxC,MAAM,CAAC,MAAM,CAAC;IACZ,MAAM,CAAC,OAAmB;QACxB,QAAQ,CAAC,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;QACzE,IAAI,CAAC;YACH,OAAO,cAAc,CACnB,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CACvD,sBAAsB,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAC7C,CACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,kBAAkB;gBAAE,MAAM,KAAK,CAAC;YACrD,MAAM,IAAI,kBAAkB,CAAC,cAAc,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IACD,aAAa,EAAE,kBAAkB;IACjC,iBAAiB,EAAE,iBAAiB;IACpC,cAAc,EAAE,oBAAoB;IACpC,IAAI,EAAE,cAAc;IACpB,QAAQ,CAAC,OAAmB;QAC1B,QAAQ,CAAC,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;IAC3E,CAAC;CACF,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,oCAAoC,GAC/C,MAAM,CAAC,MAAM,CAAC;IACZ,MAAM,CAAC,OAAmB;QACxB,QAAQ,CACN,OAAO,EACP,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,CACzB,CAAC;QACF,MAAM,OAAO,GAAG,aAAa,CAC3B,OAAO,EACP,qBAAqB,EACrB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,6BAA6B,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CACvE,CAAC;QACF,IAAI,CAAC;YACH,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,kBAAkB,CAC1B,qBAAqB,EACrB,OAAO,CAAC,OAAO,EACf,KAAK,CACN,CAAC;QACJ,CAAC;IACH,CAAC;IACD,aAAa,EAAE,yBAAyB;IACxC,iBAAiB,EAAE,wBAAwB;IAC3C,cAAc,EAAE,oBAAoB;IACpC,IAAI,EAAE,qBAAqB;IAC3B,QAAQ,CAAC,OAAmB;QAC1B,QAAQ,CACN,OAAO,EACP,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,CACzB,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,iCAAiC,GAC5C,MAAM,CAAC,MAAM,CAAC;IACZ,MAAM,CAAC,OAAmB;QACxB,QAAQ,CACN,OAAO,EACP,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,CACjB,CAAC;QACF,MAAM,OAAO,GAAG,aAAa,CAC3B,OAAO,EACP,kBAAkB,EAClB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,0BAA0B,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CACpE,CAAC;QACF,IAAI,CAAC;YACH,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,kBAAkB,CAC1B,kBAAkB,EAClB,OAAO,CAAC,OAAO,EACf,KAAK,CACN,CAAC;QACJ,CAAC;IACH,CAAC;IACD,aAAa,EAAE,iBAAiB;IAChC,iBAAiB,EAAE,gBAAgB;IACnC,cAAc,EAAE,oBAAoB;IACpC,IAAI,EAAE,kBAAkB;IACxB,QAAQ,CAAC,OAAmB;QAC1B,QAAQ,CACN,OAAO,EACP,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,CACjB,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEL,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAEtC,SAAS,IAAI,CAAC,KAAa;IACzB,OAAO,eAAe,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,IAAa,EACb,SAAiB,EACjB,UAAkB;IAElB,2BAA2B,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAClD,mBAAmB,CACjB,qBAAqB,EACrB,UAAU,EACV,wGAAwG,CACzG,CAAC;IACF,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,wBAAwB,CAAC;QAC/C,cAAc,EAAE,oBAAoB;QACpC,KAAK,EAAE;YACL,IAAI,CAAC,cAAc,CAAC;YACpB,iBAAiB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;YAChC,aAAa,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;YACjC,aAAa,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC;SACnC;KACF,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,IAAa,EACb,OAAgB,EAChB,SAAiB,EACjB,UAAkB;IAElB,2BAA2B,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAClD,mBAAmB,CACjB,qBAAqB,EACrB,UAAU,EACV,wGAAwG,CACzG,CAAC;IACF,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,wBAAwB,CAAC;QAC/C,cAAc,EAAE,oBAAoB;QACpC,KAAK,EAAE;YACL,IAAI,CAAC,qBAAqB,CAAC;YAC3B,iBAAiB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;YAChC,iBAAiB,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;YACnC,aAAa,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;YACjC,aAAa,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC;SACnC;KACF,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,IAAa,EACb,OAAgB,EAChB,SAAiB;IAEjB,2BAA2B,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAClD,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,wBAAwB,CAAC;QAC/C,cAAc,EAAE,oBAAoB;QACpC,KAAK,EAAE;YACL,IAAI,CAAC,kBAAkB,CAAC;YACxB,iBAAiB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;YAChC,iBAAiB,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;YACnC,aAAa,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;SAClC;KACF,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,OAAO,EACL,2BAA2B,IAAI,2BAA2B,EAC1D,8BAA8B,IAAI,gCAAgC,GACnE,CAAC;AAEF,SAAS,WAAW,CAClB,KAAyB,EACzB,MAAc;IAEd,OAAO,EAAE,KAAK,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,IAAa,EACb,SAAiB;IAEjB,2BAA2B,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAClD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,WAAW,CACT,2BAA2B,EAC3B,4BAA4B,CAAC,aAAa,CAC3C;QACD,WAAW,CACT,iBAAiB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAChC,4BAA4B,CAAC,IAAI,CAClC;QACD,WAAW,CACT,aAAa,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EACjC,4BAA4B,CAAC,OAAO,CACrC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,wCAAwC,CACtD,IAAa,EACb,OAAgB;IAEhB,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,WAAW,CACT,kCAAkC,EAClC,mCAAmC,CAAC,aAAa,CAClD;QACD,WAAW,CACT,iBAAiB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAChC,mCAAmC,CAAC,IAAI,CACzC;QACD,WAAW,CACT,iBAAiB,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EACnC,mCAAmC,CAAC,OAAO,CAC5C;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,qCAAqC,CACnD,IAAa,EACb,OAAgB;IAEhB,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,WAAW,CACT,gCAAgC,EAChC,iCAAiC,CAAC,aAAa,CAChD;QACD,WAAW,CACT,iBAAiB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAChC,iCAAiC,CAAC,IAAI,CACvC;QACD,WAAW,CACT,iBAAiB,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EACnC,iCAAiC,CAAC,OAAO,CAC1C;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,OAAoB;IACvC,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;QAAE,MAAM,IAAI,uBAAuB,EAAE,CAAC;IACpE,OAAO,OAAO,CAAC,IAAI,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,QAAQ,CACrB,OAAoB,EACpB,UAA+B,EAC/B,OAAwC,EACxC,OAAuD,EACvD,iBAA8D;IAE9D,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;QACzD,GAAG,OAAO;QACV,OAAO;QACP,QAAQ,EAAE,2BAA2B;KACtC,CAAC,CAAC;IACH,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,kBAAkB,CAC1B,UAAU,CAAC,IAAI,EACf,SAAS,CAAC,OAAO,EACjB,IAAI,UAAU,CACZ,wDAAwD,CACzD,EACD,GAAG,UAAU,CAAC,IAAI,IAAI,SAAS,CAAC,OAAO,gIAAgI,CACxK,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,OAAoB,EACpB,SAAiB,EACjB,UAA0D,EAAE;IAE5D,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAClC,OAAO,QAAQ,CACb,OAAO,EACP,6BAA6B,EAC7B,iCAAiC,CAAC,IAAI,EAAE,SAAS,CAAC,EAClD,OAAO,EACP,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CACjE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qCAAqC,CACnD,OAAoB,EACpB,OAAgB,EAChB,UAA0D,EAAE;IAE5D,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAClC,OAAO,QAAQ,CACb,OAAO,EACP,oCAAoC,EACpC,wCAAwC,CAAC,IAAI,EAAE,OAAO,CAAC,EACvD,OAAO,EACP,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,CAC7D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kCAAkC,CAChD,OAAoB,EACpB,OAAgB,EAChB,UAA0D,EAAE;IAE5D,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAClC,OAAO,QAAQ,CACb,OAAO,EACP,iCAAiC,EACjC,qCAAqC,CAAC,IAAI,EAAE,OAAO,CAAC,EACpD,OAAO,EACP,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,CAC7D,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import type { Address, DiscoveryRequest, ProgramAccountFilter, SageContext, SnapshotEnvelope } from '../../client/contracts.js';
|
|
2
|
+
import type { C4AccountAdapter } from './adapter.js';
|
|
3
|
+
export declare const LOCAL_MARKET_FILTER_OFFSETS: Readonly<{
|
|
4
|
+
discriminator: 0;
|
|
5
|
+
system: 9;
|
|
6
|
+
}>;
|
|
7
|
+
export declare const MARKET_RELATIONSHIPS: readonly [{
|
|
8
|
+
readonly from: "starSystem + cargoId + starbaseSeqId";
|
|
9
|
+
readonly kind: "derived";
|
|
10
|
+
readonly mechanism: "LocalMarket PDA seeds: literal, System, cargo id, sequence id";
|
|
11
|
+
readonly to: "localMarket";
|
|
12
|
+
}, {
|
|
13
|
+
readonly from: "game + starSystem + starbaseSeqId";
|
|
14
|
+
readonly kind: "derived";
|
|
15
|
+
readonly mechanism: "FactionMarket PDA seeds: literal, Game, System, sequence id";
|
|
16
|
+
readonly to: "factionMarket";
|
|
17
|
+
}, {
|
|
18
|
+
readonly from: "starSystem";
|
|
19
|
+
readonly kind: "discovered";
|
|
20
|
+
readonly mechanism: "targeted LocalMarket discriminator and System filters";
|
|
21
|
+
readonly to: "localMarket[]";
|
|
22
|
+
}, {
|
|
23
|
+
readonly from: "localMarket";
|
|
24
|
+
readonly kind: "stored";
|
|
25
|
+
readonly mechanism: "System, initializer Profile, and maker Character fields";
|
|
26
|
+
readonly to: "starSystem | profile | character[]";
|
|
27
|
+
}, {
|
|
28
|
+
readonly from: "factionMarket";
|
|
29
|
+
readonly kind: "stored";
|
|
30
|
+
readonly mechanism: "Game, System, and cargo offer fields";
|
|
31
|
+
readonly to: "game | starSystem | cargoDefinition[]";
|
|
32
|
+
}, {
|
|
33
|
+
readonly from: "localMarket";
|
|
34
|
+
readonly kind: "nested";
|
|
35
|
+
readonly mechanism: "bid/ask order books and maker state maps";
|
|
36
|
+
readonly to: "orders | makerState";
|
|
37
|
+
}, {
|
|
38
|
+
readonly from: "market";
|
|
39
|
+
readonly kind: "instruction-only";
|
|
40
|
+
readonly mechanism: "trade instructions reference placement and settlement accounts";
|
|
41
|
+
readonly to: "order placement | cancellation | settlement";
|
|
42
|
+
}];
|
|
43
|
+
export interface LocalMarketOrderData {
|
|
44
|
+
readonly orderId: bigint;
|
|
45
|
+
readonly maker: Address;
|
|
46
|
+
readonly priceRaw: bigint;
|
|
47
|
+
readonly priceAtlas: number;
|
|
48
|
+
readonly quantityRaw: bigint;
|
|
49
|
+
readonly side: 'bid' | 'ask';
|
|
50
|
+
}
|
|
51
|
+
export interface LocalMarketMakerData {
|
|
52
|
+
readonly character: Address;
|
|
53
|
+
readonly openOrderCount: number;
|
|
54
|
+
readonly rentBytesOwnedRaw: bigint;
|
|
55
|
+
readonly escrowedOrReleasedAtlasRaw: bigint;
|
|
56
|
+
readonly escrowedOrReleasedAtlas: number;
|
|
57
|
+
readonly cargoRaw: bigint;
|
|
58
|
+
}
|
|
59
|
+
export interface LocalMarketSideData {
|
|
60
|
+
readonly nextOrderIdRaw: bigint;
|
|
61
|
+
readonly makers: readonly LocalMarketMakerData[];
|
|
62
|
+
readonly orders: readonly LocalMarketOrderData[];
|
|
63
|
+
}
|
|
64
|
+
export interface LocalMarketAccountData {
|
|
65
|
+
readonly version: number;
|
|
66
|
+
readonly system: Address;
|
|
67
|
+
readonly starbaseSequenceId: bigint;
|
|
68
|
+
readonly bump: number;
|
|
69
|
+
readonly initializerProfile: Address;
|
|
70
|
+
readonly cargo: {
|
|
71
|
+
readonly cargoId: number;
|
|
72
|
+
readonly amountRaw: bigint;
|
|
73
|
+
};
|
|
74
|
+
readonly vaultRaw: bigint;
|
|
75
|
+
readonly vaultAtlas: number;
|
|
76
|
+
readonly bids: LocalMarketSideData;
|
|
77
|
+
readonly asks: LocalMarketSideData;
|
|
78
|
+
}
|
|
79
|
+
export interface FactionMarketOfferData {
|
|
80
|
+
readonly cargoId: number;
|
|
81
|
+
readonly canBuyFromFaction: boolean;
|
|
82
|
+
readonly canSellToFaction: boolean;
|
|
83
|
+
readonly priceRaw: bigint;
|
|
84
|
+
readonly priceAtlas: number;
|
|
85
|
+
readonly remainingQuantityRaw: bigint;
|
|
86
|
+
}
|
|
87
|
+
export interface FactionMarketAccountData {
|
|
88
|
+
readonly version: number;
|
|
89
|
+
readonly bump: number;
|
|
90
|
+
readonly game: Address;
|
|
91
|
+
readonly factionId: number;
|
|
92
|
+
readonly system: Address;
|
|
93
|
+
readonly starbaseSequenceId: bigint;
|
|
94
|
+
readonly status: 'draft' | 'active';
|
|
95
|
+
readonly minimumStandingToBuy: number;
|
|
96
|
+
readonly minimumStandingToSell: number;
|
|
97
|
+
readonly priceTierBasisPoints: readonly number[];
|
|
98
|
+
readonly authoredTargetQuantityRaw: bigint;
|
|
99
|
+
readonly restockPeriodSeconds: number;
|
|
100
|
+
readonly lastRestockedAtUnixSeconds: bigint;
|
|
101
|
+
readonly atlasBurnBasisPoints: number;
|
|
102
|
+
readonly standingBasisPoints: number;
|
|
103
|
+
readonly faucetEnabled: boolean;
|
|
104
|
+
readonly offers: readonly FactionMarketOfferData[];
|
|
105
|
+
}
|
|
106
|
+
export declare const localMarketAccountDefinition: C4AccountAdapter<LocalMarketAccountData>;
|
|
107
|
+
export declare const factionMarketAccountDefinition: C4AccountAdapter<FactionMarketAccountData>;
|
|
108
|
+
export declare function deriveLocalMarketAddress(system: Address, cargoId: number, starbaseSequenceId: bigint): Promise<Address>;
|
|
109
|
+
export declare function deriveFactionMarketAddress(game: Address, system: Address, starbaseSequenceId: bigint): Promise<Address>;
|
|
110
|
+
export declare function buildLocalMarketSystemDiscoveryFilters(system: Address): readonly ProgramAccountFilter[];
|
|
111
|
+
export declare function discoverLocalMarketsBySystem(context: SageContext, system: Address, options?: Omit<DiscoveryRequest, 'filters' | 'strategy'>): Promise<readonly SnapshotEnvelope<LocalMarketAccountData>[]>;
|
|
112
|
+
//# sourceMappingURL=market.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"market.d.ts","sourceRoot":"","sources":["../../../src/internal/c4/market.ts"],"names":[],"mappings":"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"}
|