@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,247 @@
|
|
|
1
|
+
import { FACTION_MARKET_DISCRIMINATOR, LOCAL_MARKET_DISCRIMINATOR, SAGE_PROGRAM_ADDRESS, ScanPatternStatus, getFactionMarketDecoder, getLocalMarketDecoder, } from '@staratlas/dev-sage';
|
|
2
|
+
import { getAddressEncoder, getBytesEncoder, getProgramDerivedAddress, getU16Encoder, getU64Encoder, } from '@solana/kit';
|
|
3
|
+
import { AccountDecodeError, InvalidAccountOwnerError, InvalidDerivationInputError, InvalidDiscriminatorError, InvalidEntityIdError, } from '../../client/errors.js';
|
|
4
|
+
const FLOYDS_PER_ATLAS = 100_000_000;
|
|
5
|
+
const LOCAL_MARKET_MINIMUM_DATA_LENGTH = 132;
|
|
6
|
+
const FACTION_MARKET_MINIMUM_DATA_LENGTH = 132;
|
|
7
|
+
const MAX_U64 = 18446744073709551615n;
|
|
8
|
+
const LOCAL_DISCRIMINATOR = Object.freeze(Array.from(LOCAL_MARKET_DISCRIMINATOR));
|
|
9
|
+
const FACTION_DISCRIMINATOR = Object.freeze(Array.from(FACTION_MARKET_DISCRIMINATOR));
|
|
10
|
+
export const LOCAL_MARKET_FILTER_OFFSETS = Object.freeze({
|
|
11
|
+
discriminator: 0,
|
|
12
|
+
system: 9,
|
|
13
|
+
});
|
|
14
|
+
export const MARKET_RELATIONSHIPS = Object.freeze([
|
|
15
|
+
{
|
|
16
|
+
from: 'starSystem + cargoId + starbaseSeqId',
|
|
17
|
+
kind: 'derived',
|
|
18
|
+
mechanism: 'LocalMarket PDA seeds: literal, System, cargo id, sequence id',
|
|
19
|
+
to: 'localMarket',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
from: 'game + starSystem + starbaseSeqId',
|
|
23
|
+
kind: 'derived',
|
|
24
|
+
mechanism: 'FactionMarket PDA seeds: literal, Game, System, sequence id',
|
|
25
|
+
to: 'factionMarket',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
from: 'starSystem',
|
|
29
|
+
kind: 'discovered',
|
|
30
|
+
mechanism: 'targeted LocalMarket discriminator and System filters',
|
|
31
|
+
to: 'localMarket[]',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
from: 'localMarket',
|
|
35
|
+
kind: 'stored',
|
|
36
|
+
mechanism: 'System, initializer Profile, and maker Character fields',
|
|
37
|
+
to: 'starSystem | profile | character[]',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
from: 'factionMarket',
|
|
41
|
+
kind: 'stored',
|
|
42
|
+
mechanism: 'Game, System, and cargo offer fields',
|
|
43
|
+
to: 'game | starSystem | cargoDefinition[]',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
from: 'localMarket',
|
|
47
|
+
kind: 'nested',
|
|
48
|
+
mechanism: 'bid/ask order books and maker state maps',
|
|
49
|
+
to: 'orders | makerState',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
from: 'market',
|
|
53
|
+
kind: 'instruction-only',
|
|
54
|
+
mechanism: 'trade instructions reference placement and settlement accounts',
|
|
55
|
+
to: 'order placement | cancellation | settlement',
|
|
56
|
+
},
|
|
57
|
+
]);
|
|
58
|
+
function validateCargoId(cargoId) {
|
|
59
|
+
if (!Number.isInteger(cargoId) || cargoId < 0 || cargoId > 65_535) {
|
|
60
|
+
throw new InvalidEntityIdError('market', cargoId);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function validateStarbaseSequenceId(starbaseSequenceId) {
|
|
64
|
+
if (typeof starbaseSequenceId !== 'bigint' ||
|
|
65
|
+
starbaseSequenceId < 0n ||
|
|
66
|
+
starbaseSequenceId > MAX_U64) {
|
|
67
|
+
throw new InvalidDerivationInputError('Starbase sequence id', starbaseSequenceId, `Use a bigint from 0 through ${String(MAX_U64)} before deriving or reading the Market account.`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function makers(values) {
|
|
71
|
+
return [...values].map(([character, maker]) => ({
|
|
72
|
+
cargoRaw: maker.totals.cargo,
|
|
73
|
+
character,
|
|
74
|
+
escrowedOrReleasedAtlas: Number(maker.totals.atlas) / FLOYDS_PER_ATLAS,
|
|
75
|
+
escrowedOrReleasedAtlasRaw: maker.totals.atlas,
|
|
76
|
+
openOrderCount: maker.orderCount,
|
|
77
|
+
rentBytesOwnedRaw: maker.rentBytesOwned,
|
|
78
|
+
}));
|
|
79
|
+
}
|
|
80
|
+
function side(value, kind) {
|
|
81
|
+
return {
|
|
82
|
+
makers: makers(value.makers),
|
|
83
|
+
nextOrderIdRaw: value.idCounter,
|
|
84
|
+
orders: value.orders.map((order) => ({
|
|
85
|
+
maker: order.maker,
|
|
86
|
+
orderId: order.orderId,
|
|
87
|
+
priceAtlas: Number(order.price) / FLOYDS_PER_ATLAS,
|
|
88
|
+
priceRaw: order.price,
|
|
89
|
+
quantityRaw: order.quantity,
|
|
90
|
+
side: kind,
|
|
91
|
+
})),
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
function translateLocal(value) {
|
|
95
|
+
return {
|
|
96
|
+
asks: side(value.asks, 'ask'),
|
|
97
|
+
bids: side(value.bids, 'bid'),
|
|
98
|
+
bump: value.bump,
|
|
99
|
+
cargo: { amountRaw: value.cargo.amount, cargoId: value.cargo.cargoId },
|
|
100
|
+
initializerProfile: value.marketInitializer,
|
|
101
|
+
starbaseSequenceId: value.starbaseSeqId,
|
|
102
|
+
system: value.system,
|
|
103
|
+
vaultAtlas: Number(value.vault) / FLOYDS_PER_ATLAS,
|
|
104
|
+
vaultRaw: value.vault,
|
|
105
|
+
version: value.version,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
function status(value) {
|
|
109
|
+
switch (value) {
|
|
110
|
+
case ScanPatternStatus.Draft:
|
|
111
|
+
return 'draft';
|
|
112
|
+
case ScanPatternStatus.Active:
|
|
113
|
+
return 'active';
|
|
114
|
+
/* v8 ignore next -- the generated enum decoder rejects unknown values. */
|
|
115
|
+
default:
|
|
116
|
+
throw new RangeError(`Unsupported Faction Market status ${String(value)}.`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
function translateFaction(value) {
|
|
120
|
+
return {
|
|
121
|
+
atlasBurnBasisPoints: value.atlasBurnBps,
|
|
122
|
+
authoredTargetQuantityRaw: value.authoredTargetQty,
|
|
123
|
+
bump: value.bump,
|
|
124
|
+
factionId: value.factionId,
|
|
125
|
+
faucetEnabled: value.faucetEnabled !== 0,
|
|
126
|
+
game: value.gameId,
|
|
127
|
+
lastRestockedAtUnixSeconds: value.lastRestockAt,
|
|
128
|
+
minimumStandingToBuy: value.minStandingBuy,
|
|
129
|
+
minimumStandingToSell: value.minStandingSell,
|
|
130
|
+
offers: value.offers.map((offer) => ({
|
|
131
|
+
canBuyFromFaction: (offer.sideFlags & 1) !== 0,
|
|
132
|
+
canSellToFaction: (offer.sideFlags & 2) !== 0,
|
|
133
|
+
cargoId: offer.cargoId,
|
|
134
|
+
priceAtlas: Number(offer.price) / FLOYDS_PER_ATLAS,
|
|
135
|
+
priceRaw: offer.price,
|
|
136
|
+
remainingQuantityRaw: offer.remainingQty,
|
|
137
|
+
})),
|
|
138
|
+
priceTierBasisPoints: [...value.priceTierBps],
|
|
139
|
+
restockPeriodSeconds: value.restockPeriodSecs,
|
|
140
|
+
standingBasisPoints: value.standingBps,
|
|
141
|
+
starbaseSequenceId: value.starbaseSeqId,
|
|
142
|
+
status: status(value.status),
|
|
143
|
+
system: value.system,
|
|
144
|
+
version: value.version,
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
function validate(account, discriminator, label, minimumDataLength) {
|
|
148
|
+
if (account.owner !== SAGE_PROGRAM_ADDRESS) {
|
|
149
|
+
throw new InvalidAccountOwnerError('market', account.address, SAGE_PROGRAM_ADDRESS, account.owner);
|
|
150
|
+
}
|
|
151
|
+
if (!discriminator.every((byte, index) => account.data[index] === byte)) {
|
|
152
|
+
throw new InvalidDiscriminatorError('market', account.address);
|
|
153
|
+
}
|
|
154
|
+
if (account.data.length < minimumDataLength) {
|
|
155
|
+
throw new AccountDecodeError('market', account.address, new RangeError(`Expected at least ${minimumDataLength} ${label} bytes, received ${account.data.length}.`));
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
function decodeExactly(account, label, read) {
|
|
159
|
+
try {
|
|
160
|
+
const [value, offset] = read(account.data, 0);
|
|
161
|
+
if (offset !== account.data.length) {
|
|
162
|
+
throw new RangeError(`Trailing bytes are not accepted for ${label}.`);
|
|
163
|
+
}
|
|
164
|
+
return value;
|
|
165
|
+
}
|
|
166
|
+
catch (cause) {
|
|
167
|
+
throw new AccountDecodeError('market', account.address, cause);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
export const localMarketAccountDefinition = Object.freeze({
|
|
171
|
+
decode(account) {
|
|
172
|
+
validate(account, LOCAL_DISCRIMINATOR, 'Local Market account', LOCAL_MARKET_MINIMUM_DATA_LENGTH);
|
|
173
|
+
return translateLocal(decodeExactly(account, 'Local Market', (bytes, offset) => getLocalMarketDecoder().read(bytes, offset)));
|
|
174
|
+
},
|
|
175
|
+
discriminator: LOCAL_DISCRIMINATOR,
|
|
176
|
+
minimumDataLength: LOCAL_MARKET_MINIMUM_DATA_LENGTH,
|
|
177
|
+
programAddress: SAGE_PROGRAM_ADDRESS,
|
|
178
|
+
type: 'market',
|
|
179
|
+
validate(account) {
|
|
180
|
+
validate(account, LOCAL_DISCRIMINATOR, 'Local Market account', LOCAL_MARKET_MINIMUM_DATA_LENGTH);
|
|
181
|
+
},
|
|
182
|
+
});
|
|
183
|
+
export const factionMarketAccountDefinition = Object.freeze({
|
|
184
|
+
decode(account) {
|
|
185
|
+
validate(account, FACTION_DISCRIMINATOR, 'Faction Market account', FACTION_MARKET_MINIMUM_DATA_LENGTH);
|
|
186
|
+
return translateFaction(decodeExactly(account, 'Faction Market', (bytes, offset) => getFactionMarketDecoder().read(bytes, offset)));
|
|
187
|
+
},
|
|
188
|
+
discriminator: FACTION_DISCRIMINATOR,
|
|
189
|
+
minimumDataLength: FACTION_MARKET_MINIMUM_DATA_LENGTH,
|
|
190
|
+
programAddress: SAGE_PROGRAM_ADDRESS,
|
|
191
|
+
type: 'market',
|
|
192
|
+
validate(account) {
|
|
193
|
+
validate(account, FACTION_DISCRIMINATOR, 'Faction Market account', FACTION_MARKET_MINIMUM_DATA_LENGTH);
|
|
194
|
+
},
|
|
195
|
+
});
|
|
196
|
+
export async function deriveLocalMarketAddress(system, cargoId, starbaseSequenceId) {
|
|
197
|
+
validateCargoId(cargoId);
|
|
198
|
+
validateStarbaseSequenceId(starbaseSequenceId);
|
|
199
|
+
const [address] = await getProgramDerivedAddress({
|
|
200
|
+
programAddress: SAGE_PROGRAM_ADDRESS,
|
|
201
|
+
seeds: [
|
|
202
|
+
getBytesEncoder().encode(new Uint8Array([76, 111, 99, 97, 108, 77, 97, 114, 107, 101, 116])),
|
|
203
|
+
getAddressEncoder().encode(system),
|
|
204
|
+
getU16Encoder().encode(cargoId),
|
|
205
|
+
getU64Encoder().encode(starbaseSequenceId),
|
|
206
|
+
],
|
|
207
|
+
});
|
|
208
|
+
return address;
|
|
209
|
+
}
|
|
210
|
+
export async function deriveFactionMarketAddress(game, system, starbaseSequenceId) {
|
|
211
|
+
validateStarbaseSequenceId(starbaseSequenceId);
|
|
212
|
+
const [address] = await getProgramDerivedAddress({
|
|
213
|
+
programAddress: SAGE_PROGRAM_ADDRESS,
|
|
214
|
+
seeds: [
|
|
215
|
+
getBytesEncoder().encode(new Uint8Array([
|
|
216
|
+
70, 97, 99, 116, 105, 111, 110, 77, 97, 114, 107, 101, 116,
|
|
217
|
+
])),
|
|
218
|
+
getAddressEncoder().encode(game),
|
|
219
|
+
getAddressEncoder().encode(system),
|
|
220
|
+
getU64Encoder().encode(starbaseSequenceId),
|
|
221
|
+
],
|
|
222
|
+
});
|
|
223
|
+
return address;
|
|
224
|
+
}
|
|
225
|
+
export function buildLocalMarketSystemDiscoveryFilters(system) {
|
|
226
|
+
return Object.freeze([
|
|
227
|
+
{ bytes: new Uint8Array(LOCAL_MARKET_DISCRIMINATOR), offset: 0 },
|
|
228
|
+
{
|
|
229
|
+
bytes: new Uint8Array(getAddressEncoder().encode(system)),
|
|
230
|
+
offset: LOCAL_MARKET_FILTER_OFFSETS.system,
|
|
231
|
+
},
|
|
232
|
+
]);
|
|
233
|
+
}
|
|
234
|
+
export async function discoverLocalMarketsBySystem(context, system, options = {}) {
|
|
235
|
+
const values = await context.data.discover(localMarketAccountDefinition, {
|
|
236
|
+
...options,
|
|
237
|
+
filters: buildLocalMarketSystemDiscoveryFilters(system),
|
|
238
|
+
strategy: 'targeted-program-accounts',
|
|
239
|
+
});
|
|
240
|
+
for (const value of values) {
|
|
241
|
+
if (value.data.system !== system) {
|
|
242
|
+
throw new AccountDecodeError('market', value.address, new RangeError('The decoded Local Market contradicted its System filter.'), `Local Market ${value.address} does not belong to requested Star System ${system}. Verify the provider and LocalMarket system offset before retrying.`);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
return values;
|
|
246
|
+
}
|
|
247
|
+
//# sourceMappingURL=market.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"market.js","sourceRoot":"","sources":["../../../src/internal/c4/market.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Address } from '../../client/contracts.js';
|
|
2
|
+
export declare function validateUnsignedU16EntityId(entityType: 'starSystem' | 'recipe' | 'faction', id: number): void;
|
|
3
|
+
export declare function validateUnsignedU64(field: string, value: bigint, remedy: string): void;
|
|
4
|
+
export declare function deriveFactionAccountAddress(game: Address, factionId: number): Promise<Address>;
|
|
5
|
+
export declare function deriveAtlasRewardConfigAddress(game: Address, configVersion: number): Promise<Address>;
|
|
6
|
+
//# sourceMappingURL=pda.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pda.d.ts","sourceRoot":"","sources":["../../../src/internal/c4/pda.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAwBzD,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,YAAY,GAAG,QAAQ,GAAG,SAAS,EAC/C,EAAE,EAAE,MAAM,GACT,IAAI,CAKN;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,IAAI,CAIN;AAED,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC,CAMlB;AAED,wBAAsB,8BAA8B,CAClD,IAAI,EAAE,OAAO,EACb,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,OAAO,CAAC,CAclB"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { SAGE_PROGRAM_ADDRESS } from '@staratlas/dev-sage';
|
|
2
|
+
import { getAddressEncoder, getBytesEncoder, getProgramDerivedAddress, getU16Encoder, getU32Encoder, } from '@solana/kit';
|
|
3
|
+
import { InvalidDerivationInputError, InvalidEntityIdError, } from '../../client/errors.js';
|
|
4
|
+
const U64_MAX = 0xffffffffffffffffn;
|
|
5
|
+
const textEncoder = new TextEncoder();
|
|
6
|
+
function literalSeed(value) {
|
|
7
|
+
return getBytesEncoder().encode(textEncoder.encode(value));
|
|
8
|
+
}
|
|
9
|
+
async function deriveAddress(literal, remainingSeeds) {
|
|
10
|
+
const [address] = await getProgramDerivedAddress({
|
|
11
|
+
programAddress: SAGE_PROGRAM_ADDRESS,
|
|
12
|
+
seeds: [literalSeed(literal), ...remainingSeeds],
|
|
13
|
+
});
|
|
14
|
+
return address;
|
|
15
|
+
}
|
|
16
|
+
export function validateUnsignedU16EntityId(entityType, id) {
|
|
17
|
+
const minimumId = entityType === 'faction' ? 1 : 0;
|
|
18
|
+
if (!Number.isInteger(id) || id < minimumId || id > 65_535) {
|
|
19
|
+
throw new InvalidEntityIdError(entityType, id);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export function validateUnsignedU64(field, value, remedy) {
|
|
23
|
+
if (typeof value !== 'bigint' || value < 0n || value > U64_MAX) {
|
|
24
|
+
throw new InvalidDerivationInputError(field, value, remedy);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export async function deriveFactionAccountAddress(game, factionId) {
|
|
28
|
+
validateUnsignedU16EntityId('faction', factionId);
|
|
29
|
+
return deriveAddress('FactionAccount', [
|
|
30
|
+
getAddressEncoder().encode(game),
|
|
31
|
+
getU16Encoder().encode(factionId),
|
|
32
|
+
]);
|
|
33
|
+
}
|
|
34
|
+
export async function deriveAtlasRewardConfigAddress(game, configVersion) {
|
|
35
|
+
if (!Number.isInteger(configVersion) ||
|
|
36
|
+
configVersion < 0 ||
|
|
37
|
+
configVersion > 0xffff_ffff) {
|
|
38
|
+
throw new RangeError('AtlasRewardConfig version must be an unsigned 32-bit integer.');
|
|
39
|
+
}
|
|
40
|
+
return deriveAddress('AtlasRewardConfig', [
|
|
41
|
+
getAddressEncoder().encode(game),
|
|
42
|
+
getU32Encoder().encode(configVersion),
|
|
43
|
+
]);
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=pda.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pda.js","sourceRoot":"","sources":["../../../src/internal/c4/pda.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,aAAa,EACb,aAAa,GAEd,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,OAAO,GAAG,mBAAsB,CAAC;AACvC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAEtC,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,eAAe,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,OAAe,EACf,cAA6C;IAE7C,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,wBAAwB,CAAC;QAC/C,cAAc,EAAE,oBAAoB;QACpC,KAAK,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,GAAG,cAAc,CAAC;KACjD,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,UAA+C,EAC/C,EAAU;IAEV,MAAM,SAAS,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,SAAS,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;QAC3D,MAAM,IAAI,oBAAoB,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,KAAa,EACb,KAAa,EACb,MAAc;IAEd,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,EAAE,IAAI,KAAK,GAAG,OAAO,EAAE,CAAC;QAC/D,MAAM,IAAI,2BAA2B,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,IAAa,EACb,SAAiB;IAEjB,2BAA2B,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAClD,OAAO,aAAa,CAAC,gBAAgB,EAAE;QACrC,iBAAiB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;QAChC,aAAa,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;KAClC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,IAAa,EACb,aAAqB;IAErB,IACE,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC;QAChC,aAAa,GAAG,CAAC;QACjB,aAAa,GAAG,WAAW,EAC3B,CAAC;QACD,MAAM,IAAI,UAAU,CAClB,+DAA+D,CAChE,CAAC;IACJ,CAAC;IACD,OAAO,aAAa,CAAC,mBAAmB,EAAE;QACxC,iBAAiB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;QAChC,aAAa,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC;KACtC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Address } from '../../client/contracts.js';
|
|
2
|
+
import type { C4AccountAdapter } from './adapter.js';
|
|
3
|
+
export type ProfileFactionAlignment = 'unaligned' | 'mud' | 'oni' | 'ustur';
|
|
4
|
+
export interface ProfileFactionAccountData {
|
|
5
|
+
readonly version: number;
|
|
6
|
+
readonly profile: Address;
|
|
7
|
+
readonly faction: ProfileFactionAlignment;
|
|
8
|
+
readonly factionId: number;
|
|
9
|
+
readonly bump: number;
|
|
10
|
+
}
|
|
11
|
+
export declare const profileFactionAccountDefinition: C4AccountAdapter<ProfileFactionAccountData>;
|
|
12
|
+
/** Derives ProfileFaction from its pinned Profile-only seed recipe. */
|
|
13
|
+
export declare function deriveProfileFactionAddress(profile: Address): Promise<Address>;
|
|
14
|
+
//# sourceMappingURL=profile-faction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-faction.d.ts","sourceRoot":"","sources":["../../../src/internal/c4/profile-faction.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,OAAO,EAAc,MAAM,2BAA2B,CAAC;AAMrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAOrD,MAAM,MAAM,uBAAuB,GAAG,WAAW,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;AAE5E,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AA4CD,eAAO,MAAM,+BAA+B,EAAE,gBAAgB,CAAC,yBAAyB,CAyBpF,CAAC;AAEL,uEAAuE;AACvE,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,OAAO,CAAC,CAalB"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { PROFILE_FACTION_ACCOUNT_DISCRIMINATOR, PROFILE_FACTION_PROGRAM_ADDRESS, Faction, getProfileFactionAccountDecoder, } from '@staratlas/dev-profile-faction';
|
|
2
|
+
import { getAddressEncoder, getBytesEncoder, getProgramDerivedAddress, } from '@solana/kit';
|
|
3
|
+
import { AccountDecodeError, InvalidAccountOwnerError, InvalidDiscriminatorError, } from '../../client/errors.js';
|
|
4
|
+
const PROFILE_FACTION_ACCOUNT_LENGTH = 43;
|
|
5
|
+
const DISCRIMINATOR = Object.freeze(Array.from(PROFILE_FACTION_ACCOUNT_DISCRIMINATOR));
|
|
6
|
+
function validate(account) {
|
|
7
|
+
if (account.owner !== PROFILE_FACTION_PROGRAM_ADDRESS) {
|
|
8
|
+
throw new InvalidAccountOwnerError('profileFaction', account.address, PROFILE_FACTION_PROGRAM_ADDRESS, account.owner);
|
|
9
|
+
}
|
|
10
|
+
if (account.data.length < DISCRIMINATOR.length ||
|
|
11
|
+
DISCRIMINATOR.some((byte, index) => account.data[index] !== byte)) {
|
|
12
|
+
throw new InvalidDiscriminatorError('profileFaction', account.address);
|
|
13
|
+
}
|
|
14
|
+
if (account.data.length !== PROFILE_FACTION_ACCOUNT_LENGTH) {
|
|
15
|
+
throw new AccountDecodeError('profileFaction', account.address, new RangeError(`Expected exactly ${String(PROFILE_FACTION_ACCOUNT_LENGTH)} ProfileFaction account bytes, received ${String(account.data.length)}.`));
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function alignment(value) {
|
|
19
|
+
switch (value) {
|
|
20
|
+
case Faction.Unaligned:
|
|
21
|
+
return 'unaligned';
|
|
22
|
+
case Faction.Mud:
|
|
23
|
+
return 'mud';
|
|
24
|
+
case Faction.Oni:
|
|
25
|
+
return 'oni';
|
|
26
|
+
case Faction.Ustur:
|
|
27
|
+
return 'ustur';
|
|
28
|
+
/* v8 ignore next -- the generated enum decoder rejects unknown values. */
|
|
29
|
+
default:
|
|
30
|
+
throw new RangeError(`Unsupported ProfileFaction ${String(value)}.`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export const profileFactionAccountDefinition = Object.freeze({
|
|
34
|
+
decode(account) {
|
|
35
|
+
validate(account);
|
|
36
|
+
try {
|
|
37
|
+
const [decoded] = getProfileFactionAccountDecoder().read(account.data, 0);
|
|
38
|
+
return Object.freeze({
|
|
39
|
+
bump: decoded.bump,
|
|
40
|
+
faction: alignment(decoded.faction),
|
|
41
|
+
factionId: decoded.faction,
|
|
42
|
+
profile: decoded.profile,
|
|
43
|
+
version: decoded.version,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
catch (cause) {
|
|
47
|
+
throw new AccountDecodeError('profileFaction', account.address, cause);
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
discriminator: DISCRIMINATOR,
|
|
51
|
+
minimumDataLength: PROFILE_FACTION_ACCOUNT_LENGTH,
|
|
52
|
+
programAddress: PROFILE_FACTION_PROGRAM_ADDRESS,
|
|
53
|
+
type: 'profileFaction',
|
|
54
|
+
validate,
|
|
55
|
+
});
|
|
56
|
+
/** Derives ProfileFaction from its pinned Profile-only seed recipe. */
|
|
57
|
+
export async function deriveProfileFactionAddress(profile) {
|
|
58
|
+
const [address] = await getProgramDerivedAddress({
|
|
59
|
+
programAddress: PROFILE_FACTION_PROGRAM_ADDRESS,
|
|
60
|
+
seeds: [
|
|
61
|
+
getBytesEncoder().encode(new Uint8Array([
|
|
62
|
+
112, 108, 97, 121, 101, 114, 95, 102, 97, 99, 116, 105, 111, 110,
|
|
63
|
+
])),
|
|
64
|
+
getAddressEncoder().encode(profile),
|
|
65
|
+
],
|
|
66
|
+
});
|
|
67
|
+
return address;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=profile-faction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-faction.js","sourceRoot":"","sources":["../../../src/internal/c4/profile-faction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import type { Address, DiscoveryRequest, ProgramAccountFilter, SageContext, SnapshotEnvelope } from '../../client/contracts.js';
|
|
2
|
+
import type { C4AccountAdapter } from './adapter.js';
|
|
3
|
+
import { deriveAtlasRewardConfigAddress } from './pda.js';
|
|
4
|
+
export { LOOT_FILTER_OFFSETS as REWARD_LOOT_FILTER_OFFSETS } from './loot-layout.js';
|
|
5
|
+
/** Audited read and deferred-action relationships for ATLAS rewards. */
|
|
6
|
+
export declare const REWARD_RELATIONSHIPS: readonly [{
|
|
7
|
+
readonly from: "game | game + config version";
|
|
8
|
+
readonly kind: "derived";
|
|
9
|
+
readonly mechanism: "AtlasRewardRegistry, AtlasRewardConfig, and AtlasRewardTreasury PDA seeds";
|
|
10
|
+
readonly to: "reward registry | config | treasury";
|
|
11
|
+
}, {
|
|
12
|
+
readonly from: "registry | loot";
|
|
13
|
+
readonly kind: "stored";
|
|
14
|
+
readonly mechanism: "registry config/epoch selectors and Loot reward commitment fields";
|
|
15
|
+
readonly to: "config | epoch | reward commitment";
|
|
16
|
+
}, {
|
|
17
|
+
readonly from: "config | treasury | loot";
|
|
18
|
+
readonly kind: "nested";
|
|
19
|
+
readonly mechanism: "reward rates, curves, cargo reserves, and commitment legs";
|
|
20
|
+
readonly to: "reward values";
|
|
21
|
+
}, {
|
|
22
|
+
readonly from: "rewards";
|
|
23
|
+
readonly kind: "instruction-only";
|
|
24
|
+
readonly mechanism: "funding, advancement, settlement, and sweeping co-accounts are not durable relations";
|
|
25
|
+
readonly to: "actions";
|
|
26
|
+
}, {
|
|
27
|
+
readonly from: "profile";
|
|
28
|
+
readonly kind: "discovered";
|
|
29
|
+
readonly mechanism: "validated Loot discovery exposes only reward-bearing Loot references";
|
|
30
|
+
readonly to: "loot[]";
|
|
31
|
+
}];
|
|
32
|
+
export interface AtlasRewardRegistryAccountData {
|
|
33
|
+
readonly version: number;
|
|
34
|
+
readonly bump: number;
|
|
35
|
+
readonly game: Address;
|
|
36
|
+
readonly currentEpoch: bigint;
|
|
37
|
+
readonly currentEpochStartedAtUnixSeconds: bigint;
|
|
38
|
+
readonly currentEpochEndsAtUnixSeconds: bigint;
|
|
39
|
+
readonly initialEpochOffsetSeconds: bigint;
|
|
40
|
+
readonly activeConfigVersion: number;
|
|
41
|
+
readonly pendingConfig: {
|
|
42
|
+
readonly kind: 'none';
|
|
43
|
+
} | {
|
|
44
|
+
readonly kind: 'pending';
|
|
45
|
+
readonly configVersion: number;
|
|
46
|
+
readonly effectiveEpoch: bigint;
|
|
47
|
+
};
|
|
48
|
+
readonly latestConfigVersion: number;
|
|
49
|
+
}
|
|
50
|
+
export interface AtlasRewardConfigAccountData {
|
|
51
|
+
readonly version: number;
|
|
52
|
+
readonly bump: number;
|
|
53
|
+
readonly enabled: boolean;
|
|
54
|
+
readonly game: Address;
|
|
55
|
+
readonly configVersion: number;
|
|
56
|
+
readonly effectiveEpoch: bigint;
|
|
57
|
+
readonly createdAtUnixSeconds: bigint;
|
|
58
|
+
readonly sourceFlags: number;
|
|
59
|
+
readonly epochLengthSeconds: number;
|
|
60
|
+
readonly claimSettlementWindowSeconds: number;
|
|
61
|
+
readonly atlasBankInactivityExpirySeconds: bigint;
|
|
62
|
+
readonly rewardLootReclaimSeconds: bigint;
|
|
63
|
+
readonly factionPoolLeverRaw: bigint;
|
|
64
|
+
readonly kingSystemCurveRaw: readonly (readonly bigint[])[];
|
|
65
|
+
readonly pveLpRateBps: number;
|
|
66
|
+
readonly pvpMedallionRateBps: number;
|
|
67
|
+
readonly salvageEvRateBps: number;
|
|
68
|
+
readonly repairKitLpRateRaw: bigint;
|
|
69
|
+
readonly lossModelTargetBps: readonly number[];
|
|
70
|
+
readonly starbaseDestructionMedallionsRaw: readonly bigint[];
|
|
71
|
+
readonly activeMedallion: {
|
|
72
|
+
readonly cargoId: number;
|
|
73
|
+
readonly generation: number;
|
|
74
|
+
readonly buyerPriceAtlasRaw: bigint;
|
|
75
|
+
};
|
|
76
|
+
readonly medallionBuybackCapPerEpochRaw: bigint;
|
|
77
|
+
readonly rewardReserveLowBalanceThresholdRaw: bigint;
|
|
78
|
+
readonly upgradeLpRates: readonly {
|
|
79
|
+
readonly cargoId: number;
|
|
80
|
+
readonly lpPerRawUnit: bigint;
|
|
81
|
+
}[];
|
|
82
|
+
readonly salvageEntries: readonly {
|
|
83
|
+
readonly cargoId: number;
|
|
84
|
+
readonly weight: number;
|
|
85
|
+
readonly referenceValueAtlasRaw: bigint;
|
|
86
|
+
}[];
|
|
87
|
+
}
|
|
88
|
+
export interface AtlasRewardTreasuryAccountData {
|
|
89
|
+
readonly version: number;
|
|
90
|
+
readonly bump: number;
|
|
91
|
+
readonly game: Address;
|
|
92
|
+
readonly reserves: readonly {
|
|
93
|
+
readonly cargoId: number;
|
|
94
|
+
readonly quantityRaw: bigint;
|
|
95
|
+
}[];
|
|
96
|
+
}
|
|
97
|
+
export interface RewardLootAccountData {
|
|
98
|
+
readonly version: number;
|
|
99
|
+
readonly game: Address;
|
|
100
|
+
readonly profile: Address;
|
|
101
|
+
readonly reward: {
|
|
102
|
+
readonly kind: 'none';
|
|
103
|
+
} | {
|
|
104
|
+
readonly kind: 'committed' | 'resolved';
|
|
105
|
+
readonly configVersion: number;
|
|
106
|
+
readonly slot: bigint;
|
|
107
|
+
readonly committedAtUnixSeconds: bigint;
|
|
108
|
+
readonly legs: readonly {
|
|
109
|
+
readonly recipient: Address;
|
|
110
|
+
readonly medallionsRaw: bigint;
|
|
111
|
+
readonly salvageTargetValueAtlasRaw: bigint;
|
|
112
|
+
}[];
|
|
113
|
+
} | {
|
|
114
|
+
readonly kind: 'unknown';
|
|
115
|
+
readonly rawStatus: number;
|
|
116
|
+
readonly configVersion: number;
|
|
117
|
+
readonly slot: bigint;
|
|
118
|
+
readonly committedAtUnixSeconds: bigint;
|
|
119
|
+
readonly legs: readonly {
|
|
120
|
+
readonly recipient: Address;
|
|
121
|
+
readonly medallionsRaw: bigint;
|
|
122
|
+
readonly salvageTargetValueAtlasRaw: bigint;
|
|
123
|
+
}[];
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
export declare const atlasRewardRegistryAccountDefinition: C4AccountAdapter<AtlasRewardRegistryAccountData>;
|
|
127
|
+
export declare const atlasRewardConfigAccountDefinition: C4AccountAdapter<AtlasRewardConfigAccountData>;
|
|
128
|
+
export declare const atlasRewardTreasuryAccountDefinition: C4AccountAdapter<AtlasRewardTreasuryAccountData>;
|
|
129
|
+
export declare const rewardLootAccountDefinition: C4AccountAdapter<RewardLootAccountData>;
|
|
130
|
+
export declare function buildRewardLootDiscoveryFilters(game: Address, profile: Address): readonly ProgramAccountFilter[];
|
|
131
|
+
export declare function discoverRewardLootAccounts(context: SageContext, profile: Address, options?: Omit<DiscoveryRequest, 'filters' | 'strategy'>): Promise<readonly SnapshotEnvelope<RewardLootAccountData>[]>;
|
|
132
|
+
export declare function deriveAtlasRewardRegistryAddress(game: Address): Promise<Address>;
|
|
133
|
+
export { deriveAtlasRewardConfigAddress };
|
|
134
|
+
export declare function deriveAtlasRewardTreasuryAddress(game: Address): Promise<Address>;
|
|
135
|
+
//# sourceMappingURL=rewards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rewards.d.ts","sourceRoot":"","sources":["../../../src/internal/c4/rewards.ts"],"names":[],"mappings":"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"}
|