@aephia/atlas-kit 0.6.0-next.3 → 0.6.0-next.30
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/README.md +4 -1
- package/dist/cargo/actions/deposit.d.ts.map +1 -1
- package/dist/cargo/actions/deposit.js +51 -9
- package/dist/cargo/actions/deposit.js.map +1 -1
- package/dist/cargo/actions/wallet-context.d.ts +2 -3
- package/dist/cargo/actions/wallet-context.d.ts.map +1 -1
- package/dist/cargo/actions/wallet-context.js +6 -33
- package/dist/cargo/actions/wallet-context.js.map +1 -1
- package/dist/cargo/actions/wallet-token.d.ts +1 -1
- package/dist/cargo/actions/wallet-token.d.ts.map +1 -1
- package/dist/cargo/actions/wallet-token.js +1 -9
- package/dist/cargo/actions/wallet-token.js.map +1 -1
- package/dist/cargo/actions/withdrawal.d.ts.map +1 -1
- package/dist/cargo/actions/withdrawal.js +54 -11
- package/dist/cargo/actions/withdrawal.js.map +1 -1
- package/dist/client/errors.d.ts +4 -0
- package/dist/client/errors.d.ts.map +1 -1
- package/dist/client/errors.js +31 -1
- package/dist/client/errors.js.map +1 -1
- package/dist/client/index.d.ts +1 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +1 -0
- package/dist/client/index.js.map +1 -1
- package/dist/client/rpc-subscription-provider.d.ts +35 -0
- package/dist/client/rpc-subscription-provider.d.ts.map +1 -0
- package/dist/client/rpc-subscription-provider.js +190 -0
- package/dist/client/rpc-subscription-provider.js.map +1 -0
- package/dist/factions/actions/index.d.ts +36 -0
- package/dist/factions/actions/index.d.ts.map +1 -0
- package/dist/factions/actions/index.js +136 -0
- package/dist/factions/actions/index.js.map +1 -0
- package/dist/factions/index.d.ts +1 -0
- package/dist/factions/index.d.ts.map +1 -1
- package/dist/factions/index.js +1 -0
- package/dist/factions/index.js.map +1 -1
- package/dist/factions/profile-faction.d.ts +58 -0
- package/dist/factions/profile-faction.d.ts.map +1 -0
- package/dist/factions/profile-faction.js +63 -0
- package/dist/factions/profile-faction.js.map +1 -0
- package/dist/fleets/actions/add-ship.d.ts +35 -0
- package/dist/fleets/actions/add-ship.d.ts.map +1 -0
- package/dist/fleets/actions/add-ship.js +149 -0
- package/dist/fleets/actions/add-ship.js.map +1 -0
- package/dist/fleets/actions/create-fleet.d.ts +36 -0
- package/dist/fleets/actions/create-fleet.d.ts.map +1 -0
- package/dist/fleets/actions/create-fleet.js +138 -0
- package/dist/fleets/actions/create-fleet.js.map +1 -0
- package/dist/fleets/actions/index.d.ts +3 -0
- package/dist/fleets/actions/index.d.ts.map +1 -1
- package/dist/fleets/actions/index.js +3 -0
- package/dist/fleets/actions/index.js.map +1 -1
- package/dist/fleets/actions/ship-import.d.ts +48 -0
- package/dist/fleets/actions/ship-import.d.ts.map +1 -0
- package/dist/fleets/actions/ship-import.js +309 -0
- package/dist/fleets/actions/ship-import.js.map +1 -0
- package/dist/identity/actions/create-profile.d.ts +56 -0
- package/dist/identity/actions/create-profile.d.ts.map +1 -0
- package/dist/identity/actions/create-profile.js +139 -0
- package/dist/identity/actions/create-profile.js.map +1 -0
- package/dist/identity/actions/index.d.ts +38 -0
- package/dist/identity/actions/index.d.ts.map +1 -0
- package/dist/identity/actions/index.js +109 -0
- package/dist/identity/actions/index.js.map +1 -0
- package/dist/identity/index.d.ts +15 -0
- package/dist/identity/index.d.ts.map +1 -1
- package/dist/identity/index.js +15 -0
- package/dist/identity/index.js.map +1 -1
- package/dist/identity/permissions.d.ts +124 -0
- package/dist/identity/permissions.d.ts.map +1 -0
- package/dist/identity/permissions.js +171 -0
- package/dist/identity/permissions.js.map +1 -0
- package/dist/internal/c4/cargo-bytes-config.d.ts +7 -0
- package/dist/internal/c4/cargo-bytes-config.d.ts.map +1 -0
- package/dist/internal/c4/cargo-bytes-config.js +19 -0
- package/dist/internal/c4/cargo-bytes-config.js.map +1 -0
- package/dist/internal/c4/character-registration.d.ts +9 -0
- package/dist/internal/c4/character-registration.d.ts.map +1 -0
- package/dist/internal/c4/character-registration.js +21 -0
- package/dist/internal/c4/character-registration.js.map +1 -0
- package/dist/internal/c4/faction-adapter.d.ts +12 -0
- package/dist/internal/c4/faction-adapter.d.ts.map +1 -0
- package/dist/internal/c4/faction-adapter.js +52 -0
- package/dist/internal/c4/faction-adapter.js.map +1 -0
- package/dist/internal/c4/faction-enrollment.d.ts +6 -0
- package/dist/internal/c4/faction-enrollment.d.ts.map +1 -0
- package/dist/internal/c4/faction-enrollment.js +8 -0
- package/dist/internal/c4/faction-enrollment.js.map +1 -0
- package/dist/internal/c4/faction-epoch-meter.d.ts +10 -0
- package/dist/internal/c4/faction-epoch-meter.d.ts.map +1 -0
- package/dist/internal/c4/faction-epoch-meter.js +31 -0
- package/dist/internal/c4/faction-epoch-meter.js.map +1 -0
- package/dist/internal/c4/faction-treasury.d.ts +23 -0
- package/dist/internal/c4/faction-treasury.d.ts.map +1 -0
- package/dist/internal/c4/faction-treasury.js +48 -0
- package/dist/internal/c4/faction-treasury.js.map +1 -0
- package/dist/internal/c4/factions.d.ts +9 -30
- package/dist/internal/c4/factions.d.ts.map +1 -1
- package/dist/internal/c4/factions.js +4 -89
- package/dist/internal/c4/factions.js.map +1 -1
- package/dist/internal/c4/fleet-creation.d.ts +7 -0
- package/dist/internal/c4/fleet-creation.d.ts.map +1 -0
- package/dist/internal/c4/fleet-creation.js +180 -0
- package/dist/internal/c4/fleet-creation.js.map +1 -0
- package/dist/internal/c4/fleet-crew-binding.d.ts +2 -0
- package/dist/internal/c4/fleet-crew-binding.d.ts.map +1 -1
- package/dist/internal/c4/fleet-crew-binding.js +5 -0
- package/dist/internal/c4/fleet-crew-binding.js.map +1 -1
- package/dist/internal/c4/fleet-ship-assembly.d.ts +11 -0
- package/dist/internal/c4/fleet-ship-assembly.d.ts.map +1 -0
- package/dist/internal/c4/fleet-ship-assembly.js +44 -0
- package/dist/internal/c4/fleet-ship-assembly.js.map +1 -0
- package/dist/internal/c4/game.d.ts +18 -6
- package/dist/internal/c4/game.d.ts.map +1 -1
- package/dist/internal/c4/game.js +32 -8
- package/dist/internal/c4/game.js.map +1 -1
- package/dist/internal/c4/identity.d.ts +2 -7
- package/dist/internal/c4/identity.d.ts.map +1 -1
- package/dist/internal/c4/identity.js +2 -23
- package/dist/internal/c4/identity.js.map +1 -1
- package/dist/internal/c4/legacy-cargo-config.d.ts +6 -0
- package/dist/internal/c4/legacy-cargo-config.d.ts.map +1 -0
- package/dist/internal/c4/legacy-cargo-config.js +26 -0
- package/dist/internal/c4/legacy-cargo-config.js.map +1 -0
- package/dist/internal/c4/profile-creation.d.ts +17 -0
- package/dist/internal/c4/profile-creation.d.ts.map +1 -0
- package/dist/internal/c4/profile-creation.js +36 -0
- package/dist/internal/c4/profile-creation.js.map +1 -0
- package/dist/internal/c4/profile-faction.d.ts.map +1 -1
- package/dist/internal/c4/profile-faction.js +2 -0
- package/dist/internal/c4/profile-faction.js.map +1 -1
- package/dist/internal/c4/profile-permissions.d.ts +14 -0
- package/dist/internal/c4/profile-permissions.d.ts.map +1 -0
- package/dist/internal/c4/profile-permissions.js +80 -0
- package/dist/internal/c4/profile-permissions.js.map +1 -0
- package/dist/internal/c4/wallet-cargo-cache.d.ts +3 -0
- package/dist/internal/c4/wallet-cargo-cache.d.ts.map +1 -0
- package/dist/internal/c4/wallet-cargo-cache.js +24 -0
- package/dist/internal/c4/wallet-cargo-cache.js.map +1 -0
- package/dist/internal/loyalty-atlas-bank-state.d.ts +16 -0
- package/dist/internal/loyalty-atlas-bank-state.d.ts.map +1 -0
- package/dist/internal/loyalty-atlas-bank-state.js +10 -0
- package/dist/internal/loyalty-atlas-bank-state.js.map +1 -0
- package/dist/internal/planning/account-state.d.ts +4 -0
- package/dist/internal/planning/account-state.d.ts.map +1 -0
- package/dist/internal/planning/account-state.js +11 -0
- package/dist/internal/planning/account-state.js.map +1 -0
- package/dist/internal/planning/authorization-adapter.d.ts +17 -0
- package/dist/internal/planning/authorization-adapter.d.ts.map +1 -1
- package/dist/internal/planning/authorization-adapter.js +50 -0
- package/dist/internal/planning/authorization-adapter.js.map +1 -1
- package/dist/internal/planning/faction-enrollment.d.ts +12 -0
- package/dist/internal/planning/faction-enrollment.d.ts.map +1 -0
- package/dist/internal/planning/faction-enrollment.js +67 -0
- package/dist/internal/planning/faction-enrollment.js.map +1 -0
- package/dist/internal/planning/faction-trade-state.d.ts +16 -0
- package/dist/internal/planning/faction-trade-state.d.ts.map +1 -0
- package/dist/internal/planning/faction-trade-state.js +39 -0
- package/dist/internal/planning/faction-trade-state.js.map +1 -0
- package/dist/internal/planning/fleet-creation.d.ts +29 -0
- package/dist/internal/planning/fleet-creation.d.ts.map +1 -0
- package/dist/internal/planning/fleet-creation.js +106 -0
- package/dist/internal/planning/fleet-creation.js.map +1 -0
- package/dist/internal/planning/fleet-ship-assembly.d.ts +35 -0
- package/dist/internal/planning/fleet-ship-assembly.d.ts.map +1 -0
- package/dist/internal/planning/fleet-ship-assembly.js +135 -0
- package/dist/internal/planning/fleet-ship-assembly.js.map +1 -0
- package/dist/internal/planning/ship-token.d.ts +10 -0
- package/dist/internal/planning/ship-token.d.ts.map +1 -0
- package/dist/internal/planning/ship-token.js +47 -0
- package/dist/internal/planning/ship-token.js.map +1 -0
- package/dist/internal/planning/token-mint.d.ts +4 -0
- package/dist/internal/planning/token-mint.d.ts.map +1 -0
- package/dist/internal/planning/token-mint.js +15 -0
- package/dist/internal/planning/token-mint.js.map +1 -0
- package/dist/internal/planning/trade-faction-market.d.ts +20 -0
- package/dist/internal/planning/trade-faction-market.d.ts.map +1 -0
- package/dist/internal/planning/trade-faction-market.js +56 -0
- package/dist/internal/planning/trade-faction-market.js.map +1 -0
- package/dist/loyalty/actions/index.d.ts.map +1 -1
- package/dist/loyalty/actions/index.js +4 -3
- package/dist/loyalty/actions/index.js.map +1 -1
- package/dist/loyalty/index.d.ts.map +1 -1
- package/dist/loyalty/index.js +2 -6
- package/dist/loyalty/index.js.map +1 -1
- package/dist/markets/actions/index.d.ts +1 -0
- package/dist/markets/actions/index.d.ts.map +1 -1
- package/dist/markets/actions/index.js +1 -0
- package/dist/markets/actions/index.js.map +1 -1
- package/dist/markets/actions/trade-faction-market.d.ts +43 -0
- package/dist/markets/actions/trade-faction-market.d.ts.map +1 -0
- package/dist/markets/actions/trade-faction-market.js +288 -0
- package/dist/markets/actions/trade-faction-market.js.map +1 -0
- package/dist/mining/actions/index.d.ts +86 -0
- package/dist/mining/actions/index.d.ts.map +1 -0
- package/dist/mining/actions/index.js +295 -0
- package/dist/mining/actions/index.js.map +1 -0
- package/dist/planning/execution.d.ts.map +1 -1
- package/dist/planning/execution.js +191 -16
- package/dist/planning/execution.js.map +1 -1
- package/dist/planning/index.d.ts +316 -4
- package/dist/planning/index.d.ts.map +1 -1
- package/dist/planning/index.js +489 -12
- package/dist/planning/index.js.map +1 -1
- package/dist/planning/simulation.d.ts +18 -1
- package/dist/planning/simulation.d.ts.map +1 -1
- package/dist/planning/simulation.js +56 -10
- package/dist/planning/simulation.js.map +1 -1
- package/dist/registry/cargo.d.ts +9 -6
- package/dist/registry/cargo.d.ts.map +1 -1
- package/dist/registry/cargo.js +30 -4
- package/dist/registry/cargo.js.map +1 -1
- package/dist/registry/onboarding.d.ts +6 -0
- package/dist/registry/onboarding.d.ts.map +1 -0
- package/dist/registry/onboarding.js +24 -0
- package/dist/registry/onboarding.js.map +1 -0
- package/dist/registry/ships.d.ts +28 -0
- package/dist/registry/ships.d.ts.map +1 -0
- package/dist/registry/ships.js +51 -0
- package/dist/registry/ships.js.map +1 -0
- package/package.json +13 -1
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { isAddress, isOffCurveAddress } from '@solana/kit';
|
|
2
|
+
import { InvalidActionInputError } from '../client/errors.js';
|
|
3
|
+
import { attachJsonSerialization } from '../internal/json.js';
|
|
4
|
+
import { PROFILE_SCOPE, SAGE_SCOPE, permissionBitsForScope, translatePermissions, } from '../internal/c4/profile-permissions.js';
|
|
5
|
+
/** Pinned supported Player Profile program scope, where bit zero means AUTH.
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* const mask = composeProfilePermissions(PROFILE_PERMISSION_SCOPE, ['authenticate']);
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
export const PROFILE_PERMISSION_SCOPE = PROFILE_SCOPE;
|
|
12
|
+
/** Pinned supported SAGE program scope, where bit zero means manageGame.
|
|
13
|
+
* Recognized names describe bits, not complete action authorization policies.
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* const mask = composeProfilePermissions(SAGE_PERMISSION_SCOPE, ['moveFleet']);
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export const SAGE_PERMISSION_SCOPE = SAGE_SCOPE;
|
|
20
|
+
function invalid(field, value, remedy) {
|
|
21
|
+
throw new InvalidActionInputError(field, value, 'explicit valid scoped Profile permission input', remedy);
|
|
22
|
+
}
|
|
23
|
+
function validateScope(scope) {
|
|
24
|
+
if (typeof scope !== 'string' || !isAddress(scope))
|
|
25
|
+
invalid('scope', scope, 'Supply the explicit z.ink/Solana program address whose permissions you are inspecting.');
|
|
26
|
+
}
|
|
27
|
+
function validateMask(mask) {
|
|
28
|
+
if (typeof mask !== 'bigint' || mask < 0n || mask > 0xffffffffffffffffn)
|
|
29
|
+
invalid('permissionsRaw', mask, 'Supply a bigint mask from 0n through 18446744073709551615n.');
|
|
30
|
+
}
|
|
31
|
+
function knownMask(scope) {
|
|
32
|
+
return permissionBitsForScope(scope).reduce((raw, [flag]) => raw | flag, 0n);
|
|
33
|
+
}
|
|
34
|
+
/** Compose only verified names under an explicit scope. Empty input returns zero.
|
|
35
|
+
* Profile and SAGE names require their exact supported program scope;
|
|
36
|
+
* drainSolVault is recognized across scopes. Names identify verified bits, not
|
|
37
|
+
* complete action authorization policies. No default authority mask is added.
|
|
38
|
+
* @example
|
|
39
|
+
* ```ts
|
|
40
|
+
* const raw = composeProfilePermissions(PROFILE_PERMISSION_SCOPE, ['addKeys', 'removeKeys']);
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export function composeProfilePermissions(scope, names) {
|
|
44
|
+
validateScope(scope);
|
|
45
|
+
if (!Array.isArray(names))
|
|
46
|
+
invalid('names', names, 'Supply an array of verified Profile permission names.');
|
|
47
|
+
return names.reduce((raw, name) => {
|
|
48
|
+
const entry = permissionBitsForScope(scope).find(([, permission]) => permission === name);
|
|
49
|
+
if (!entry)
|
|
50
|
+
invalid('permission', name, 'Select a verified permission name for this exact scope: Profile names require PROFILE_PERMISSION_SCOPE and SAGE names require SAGE_PERMISSION_SCOPE.');
|
|
51
|
+
return raw | entry[0];
|
|
52
|
+
}, 0n);
|
|
53
|
+
}
|
|
54
|
+
/** Union exact raw masks, preserving unknown bits. Empty input returns zero.
|
|
55
|
+
* This is a pure bit operation. Callers must track the scope each mask belongs to;
|
|
56
|
+
* combining masks does not establish permission meanings or authorization.
|
|
57
|
+
* @example
|
|
58
|
+
* ```ts
|
|
59
|
+
* const raw = unionProfilePermissionMasks([4n, 0n]);
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export function unionProfilePermissionMasks(masks) {
|
|
63
|
+
if (!Array.isArray(masks))
|
|
64
|
+
invalid('masks', masks, 'Supply an array of unsigned 64-bit bigint masks.');
|
|
65
|
+
return masks.reduce((raw, mask) => {
|
|
66
|
+
validateMask(mask);
|
|
67
|
+
return raw | mask;
|
|
68
|
+
}, 0n);
|
|
69
|
+
}
|
|
70
|
+
/** Numeric bit containment only, including unknown bits; this is not authorization.
|
|
71
|
+
* Callers must track the scope each mask belongs to; this pure bit operation
|
|
72
|
+
* neither checks scope compatibility nor interprets permission meanings.
|
|
73
|
+
* @example
|
|
74
|
+
* ```ts
|
|
75
|
+
* const contains = containsProfilePermissions(6n, 4n);
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
export function containsProfilePermissions(availableRaw, requiredRaw) {
|
|
79
|
+
validateMask(availableRaw);
|
|
80
|
+
validateMask(requiredRaw);
|
|
81
|
+
return (availableRaw & requiredRaw) === requiredRaw;
|
|
82
|
+
}
|
|
83
|
+
/** Inspect known meanings without discarding unrecognized raw bits.
|
|
84
|
+
* @example
|
|
85
|
+
* ```ts
|
|
86
|
+
* const inspection = inspectProfilePermissions(PROFILE_PERMISSION_SCOPE, 1n);
|
|
87
|
+
* console.log(inspection.permissions, inspection.unrecognizedBitsRaw);
|
|
88
|
+
* ```
|
|
89
|
+
*/
|
|
90
|
+
export function inspectProfilePermissions(scope, permissionsRaw) {
|
|
91
|
+
validateScope(scope);
|
|
92
|
+
validateMask(permissionsRaw);
|
|
93
|
+
return Object.freeze(attachJsonSerialization({
|
|
94
|
+
scope,
|
|
95
|
+
permissionsRaw,
|
|
96
|
+
permissions: Object.freeze([
|
|
97
|
+
...translatePermissions(permissionsRaw, scope),
|
|
98
|
+
]),
|
|
99
|
+
unrecognizedBitsRaw: permissionsRaw & ~knownMask(scope),
|
|
100
|
+
}));
|
|
101
|
+
}
|
|
102
|
+
/** Inspect every key against an exact scope, mask, direct signer and explicit time.
|
|
103
|
+
* No AUTH override, role/certificate delegation, threshold policy, RPC, wall clock,
|
|
104
|
+
* refresh or signer is used. All original indices remain visible; select an index
|
|
105
|
+
* explicitly for an existing planner and retain its freshness and simulation checks.
|
|
106
|
+
* Canonical expiresAtRaw controls expiry; negative values are permanent. A key
|
|
107
|
+
* remains unexpired at its exact expiry second and expires only when at is later.
|
|
108
|
+
* @example
|
|
109
|
+
* ```ts
|
|
110
|
+
* declare const profile: ProfileSnapshot;
|
|
111
|
+
* declare const requirement: ProfileKeyRequirement;
|
|
112
|
+
* const candidates = inspectProfileKeys(profile, requirement);
|
|
113
|
+
* console.log(candidates.map(key => [key.keyIndex, key.status]));
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
export function inspectProfileKeys(profile, requirement) {
|
|
117
|
+
if (profile === null ||
|
|
118
|
+
typeof profile !== 'object' ||
|
|
119
|
+
Array.isArray(profile) ||
|
|
120
|
+
profile.kind !== 'profile' ||
|
|
121
|
+
!Array.isArray(profile.keys))
|
|
122
|
+
invalid('profile', profile, 'Load a ProfileSnapshot with getProfile and pass that loaded Profile, not a Character or raw account.');
|
|
123
|
+
if (requirement === null ||
|
|
124
|
+
typeof requirement !== 'object' ||
|
|
125
|
+
Array.isArray(requirement) ||
|
|
126
|
+
Object.keys(requirement).some((key) => !['signer', 'scope', 'permissionsRaw', 'at'].includes(key)))
|
|
127
|
+
invalid('requirement', requirement, 'Pass only signer, scope, permissionsRaw and at; delegated authorization and AUTH overrides are unsupported.');
|
|
128
|
+
const { signer, scope, permissionsRaw, at } = requirement;
|
|
129
|
+
validateScope(scope);
|
|
130
|
+
validateMask(permissionsRaw);
|
|
131
|
+
if (typeof signer !== 'string' ||
|
|
132
|
+
!isAddress(signer) ||
|
|
133
|
+
isOffCurveAddress(signer))
|
|
134
|
+
invalid('signer', signer, 'Supply the address of a directly signing external z.ink/Solana account.');
|
|
135
|
+
if (typeof at !== 'bigint' || at < 0n || at > 0x7fffffffffffffffn)
|
|
136
|
+
invalid('at', at, 'Supply explicit nonnegative bigint Unix seconds within the signed 64-bit range.');
|
|
137
|
+
const unknownRequired = (permissionsRaw & ~knownMask(scope)) !== 0n;
|
|
138
|
+
return Object.freeze(profile.keys.map((key, keyIndex) => {
|
|
139
|
+
const diagnostics = [];
|
|
140
|
+
const expired = key.expiresAtRaw >= 0n && key.expiresAtRaw < at;
|
|
141
|
+
if (key.address !== signer)
|
|
142
|
+
diagnostics.push('address-mismatch');
|
|
143
|
+
if (key.scope !== scope)
|
|
144
|
+
diagnostics.push('scope-mismatch');
|
|
145
|
+
if (expired)
|
|
146
|
+
diagnostics.push('expired');
|
|
147
|
+
if ((key.permissionsRaw & permissionsRaw) !== permissionsRaw)
|
|
148
|
+
diagnostics.push('missing-permissions');
|
|
149
|
+
const mismatch = diagnostics.length > 0;
|
|
150
|
+
if (unknownRequired)
|
|
151
|
+
diagnostics.push('unrecognized-permissions');
|
|
152
|
+
const status = mismatch
|
|
153
|
+
? 'mismatch'
|
|
154
|
+
: unknownRequired
|
|
155
|
+
? 'indeterminate'
|
|
156
|
+
: 'match';
|
|
157
|
+
return Object.freeze(attachJsonSerialization({
|
|
158
|
+
keyIndex,
|
|
159
|
+
address: key.address,
|
|
160
|
+
scope: key.scope,
|
|
161
|
+
permissionsRaw: key.permissionsRaw,
|
|
162
|
+
isProfileAuthority: key.scope === PROFILE_SCOPE && (key.permissionsRaw & 1n) !== 0n,
|
|
163
|
+
expiresAtRaw: key.expiresAtRaw,
|
|
164
|
+
...(key.expiresAtRaw < 0n ? {} : { expiresAt: key.expiresAtRaw }),
|
|
165
|
+
expired,
|
|
166
|
+
diagnostics: Object.freeze(diagnostics),
|
|
167
|
+
status,
|
|
168
|
+
}));
|
|
169
|
+
}));
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=permissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/identity/permissions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type Address } from '@solana/kit';
|
|
2
|
+
import { type CargoType } from '@staratlas/dev-sage';
|
|
3
|
+
/** Canonical cache address (32 bytes) followed by the pinned CargoType encoding (124 bytes). */
|
|
4
|
+
export declare function encodeCargoBytesConfiguration(cache: Address, cargo: CargoType): Uint8Array<ArrayBuffer>;
|
|
5
|
+
/** Distinct from the frozen historical JSON digest; never used to reinterpret old guards. */
|
|
6
|
+
export declare function hashCargoBytesConfiguration(cache: Address, cargo: CargoType): Promise<string>;
|
|
7
|
+
//# sourceMappingURL=cargo-bytes-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cargo-bytes-config.d.ts","sourceRoot":"","sources":["../../../src/internal/c4/cargo-bytes-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAuB,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAE1E,gGAAgG;AAChG,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,SAAS,GACf,UAAU,CAAC,WAAW,CAAC,CAOzB;AAED,6FAA6F;AAC7F,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,MAAM,CAAC,CAQjB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { getAddressEncoder } from '@solana/kit';
|
|
2
|
+
import { getCargoTypeEncoder } from '@staratlas/dev-sage';
|
|
3
|
+
/** Canonical cache address (32 bytes) followed by the pinned CargoType encoding (124 bytes). */
|
|
4
|
+
export function encodeCargoBytesConfiguration(cache, cargo) {
|
|
5
|
+
const cacheBytes = getAddressEncoder().encode(cache);
|
|
6
|
+
const cargoBytes = getCargoTypeEncoder().encode(cargo);
|
|
7
|
+
const bytes = new Uint8Array(cacheBytes.length + cargoBytes.length);
|
|
8
|
+
bytes.set(cacheBytes);
|
|
9
|
+
bytes.set(cargoBytes, cacheBytes.length);
|
|
10
|
+
return bytes;
|
|
11
|
+
}
|
|
12
|
+
/** Distinct from the frozen historical JSON digest; never used to reinterpret old guards. */
|
|
13
|
+
export async function hashCargoBytesConfiguration(cache, cargo) {
|
|
14
|
+
const hash = await globalThis.crypto.subtle.digest('SHA-256', encodeCargoBytesConfiguration(cache, cargo));
|
|
15
|
+
return [...new Uint8Array(hash)]
|
|
16
|
+
.map((value) => value.toString(16).padStart(2, '0'))
|
|
17
|
+
.join('');
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=cargo-bytes-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cargo-bytes-config.js","sourceRoot":"","sources":["../../../src/internal/c4/cargo-bytes-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAgB,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAkB,MAAM,qBAAqB,CAAC;AAE1E,gGAAgG;AAChG,MAAM,UAAU,6BAA6B,CAC3C,KAAc,EACd,KAAgB;IAEhB,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,mBAAmB,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACpE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACtB,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IACzC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,6FAA6F;AAC7F,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,KAAc,EACd,KAAgB;IAEhB,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAChD,SAAS,EACT,6BAA6B,CAAC,KAAK,EAAE,KAAK,CAAC,CAC5C,CAAC;IACF,OAAO,CAAC,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;SAC7B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SACnD,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type Address, type Instruction } from '@solana/kit';
|
|
2
|
+
/** Address-only adapter for the pinned registerCharacter instruction contract. */
|
|
3
|
+
export declare function createRegisterCharacterInstruction(input: {
|
|
4
|
+
readonly profile: Address;
|
|
5
|
+
readonly funder: Address;
|
|
6
|
+
readonly character: Address;
|
|
7
|
+
readonly game: Address;
|
|
8
|
+
}): Instruction;
|
|
9
|
+
//# sourceMappingURL=character-registration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"character-registration.d.ts","sourceRoot":"","sources":["../../../src/internal/c4/character-registration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAM1E,kFAAkF;AAClF,wBAAgB,kCAAkC,CAAC,KAAK,EAAE;IACxD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB,GAAG,WAAW,CAgBd"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { AccountRole } from '@solana/kit';
|
|
2
|
+
import { SAGE_PROGRAM_ADDRESS, getRegisterCharacterInstructionDataEncoder, } from '@staratlas/dev-sage';
|
|
3
|
+
/** Address-only adapter for the pinned registerCharacter instruction contract. */
|
|
4
|
+
export function createRegisterCharacterInstruction(input) {
|
|
5
|
+
// Preserve the generated account order and roles without creating a signer.
|
|
6
|
+
return {
|
|
7
|
+
programAddress: SAGE_PROGRAM_ADDRESS,
|
|
8
|
+
accounts: [
|
|
9
|
+
{ address: input.profile, role: AccountRole.READONLY },
|
|
10
|
+
{ address: input.funder, role: AccountRole.WRITABLE_SIGNER },
|
|
11
|
+
{ address: input.character, role: AccountRole.WRITABLE },
|
|
12
|
+
{ address: input.game, role: AccountRole.READONLY },
|
|
13
|
+
{
|
|
14
|
+
address: '11111111111111111111111111111111',
|
|
15
|
+
role: AccountRole.READONLY,
|
|
16
|
+
},
|
|
17
|
+
],
|
|
18
|
+
data: getRegisterCharacterInstructionDataEncoder().encode({}),
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=character-registration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"character-registration.js","sourceRoot":"","sources":["../../../src/internal/c4/character-registration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkC,MAAM,aAAa,CAAC;AAC1E,OAAO,EACL,oBAAoB,EACpB,0CAA0C,GAC3C,MAAM,qBAAqB,CAAC;AAE7B,kFAAkF;AAClF,MAAM,UAAU,kCAAkC,CAAC,KAKlD;IACC,4EAA4E;IAC5E,OAAO;QACL,cAAc,EAAE,oBAAoB;QACpC,QAAQ,EAAE;YACR,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,QAAQ,EAAE;YACtD,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,eAAe,EAAE;YAC5D,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,QAAQ,EAAE;YACxD,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,QAAQ,EAAE;YACnD;gBACE,OAAO,EAAE,kCAA6C;gBACtD,IAAI,EAAE,WAAW,CAAC,QAAQ;aAC3B;SACF;QACD,IAAI,EAAE,0CAA0C,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;KAC9D,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Decoder } from '@solana/kit';
|
|
2
|
+
import type { EntityType, RawAccount } from '../../client/contracts.js';
|
|
3
|
+
import type { C4AccountAdapter } from './adapter.js';
|
|
4
|
+
export declare function adapter<TEncoded, TData>(options: {
|
|
5
|
+
readonly type: EntityType;
|
|
6
|
+
readonly discriminator: Uint8Array;
|
|
7
|
+
readonly minimumDataLength: number;
|
|
8
|
+
readonly exact?: boolean;
|
|
9
|
+
readonly decoder: Decoder<TEncoded>;
|
|
10
|
+
readonly translate: (value: TEncoded, account: RawAccount) => TData;
|
|
11
|
+
}): C4AccountAdapter<TData>;
|
|
12
|
+
//# sourceMappingURL=faction-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faction-adapter.d.ts","sourceRoot":"","sources":["../../../src/internal/c4/faction-adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAMxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAwDrD,wBAAgB,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE;IAChD,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,UAAU,CAAC;IACnC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,KAAK,KAAK,CAAC;CACrE,GAAG,gBAAgB,CAAC,KAAK,CAAC,CA6B1B"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { SAGE_PROGRAM_ADDRESS } from '@staratlas/dev-sage';
|
|
2
|
+
import { AccountDecodeError, InvalidAccountOwnerError, InvalidDiscriminatorError, } from '../../client/errors.js';
|
|
3
|
+
function hasDiscriminator(data, discriminator) {
|
|
4
|
+
return discriminator.every((byte, index) => data[index] === byte);
|
|
5
|
+
}
|
|
6
|
+
function validateAccount(account, type, discriminator, minimumDataLength, exact) {
|
|
7
|
+
if (account.owner !== SAGE_PROGRAM_ADDRESS) {
|
|
8
|
+
throw new InvalidAccountOwnerError(type, account.address, SAGE_PROGRAM_ADDRESS, account.owner);
|
|
9
|
+
}
|
|
10
|
+
if (!hasDiscriminator(account.data, discriminator)) {
|
|
11
|
+
throw new InvalidDiscriminatorError(type, account.address);
|
|
12
|
+
}
|
|
13
|
+
if ((exact && account.data.length !== minimumDataLength) ||
|
|
14
|
+
(!exact && account.data.length < minimumDataLength)) {
|
|
15
|
+
throw new AccountDecodeError(type, account.address, new RangeError(`Expected ${exact ? 'exactly' : 'at least'} ${minimumDataLength} account bytes, received ${account.data.length}.`));
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function decodeExactly(account, type, decoder) {
|
|
19
|
+
try {
|
|
20
|
+
const [value, offset] = decoder.read(account.data, 0);
|
|
21
|
+
if (offset !== account.data.length) {
|
|
22
|
+
throw new RangeError(`Decoded ${offset} of ${account.data.length} bytes.`);
|
|
23
|
+
}
|
|
24
|
+
return value;
|
|
25
|
+
}
|
|
26
|
+
catch (cause) {
|
|
27
|
+
throw new AccountDecodeError(type, account.address, cause);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export function adapter(options) {
|
|
31
|
+
const discriminator = Object.freeze(Array.from(options.discriminator));
|
|
32
|
+
const validate = (account) => validateAccount(account, options.type, discriminator, options.minimumDataLength, options.exact === true);
|
|
33
|
+
return Object.freeze({
|
|
34
|
+
decode(account) {
|
|
35
|
+
validate(account);
|
|
36
|
+
try {
|
|
37
|
+
return options.translate(decodeExactly(account, options.type, options.decoder), account);
|
|
38
|
+
}
|
|
39
|
+
catch (cause) {
|
|
40
|
+
if (cause instanceof AccountDecodeError)
|
|
41
|
+
throw cause;
|
|
42
|
+
throw new AccountDecodeError(options.type, account.address, cause);
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
discriminator,
|
|
46
|
+
minimumDataLength: options.minimumDataLength,
|
|
47
|
+
programAddress: SAGE_PROGRAM_ADDRESS,
|
|
48
|
+
type: options.type,
|
|
49
|
+
validate,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=faction-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faction-adapter.js","sourceRoot":"","sources":["../../../src/internal/c4/faction-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { PROFILE_FACTION_PROGRAM_ADDRESS } from '@staratlas/dev-profile-faction';
|
|
2
|
+
import { PLAYER_PROFILE_PROGRAM_ADDRESS } from '@staratlas/dev-player-profile';
|
|
3
|
+
export { PROFILE_FACTION_PROGRAM_ADDRESS, PLAYER_PROFILE_PROGRAM_ADDRESS };
|
|
4
|
+
/** Pinned initial-enrollment data only; keeps generated bindings behind the C4 boundary. */
|
|
5
|
+
export declare function encodeChooseFactionData(keyIndex: number, faction: 1 | 2 | 3): import("@solana/kit").ReadonlyUint8Array<ArrayBuffer>;
|
|
6
|
+
//# sourceMappingURL=faction-enrollment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faction-enrollment.d.ts","sourceRoot":"","sources":["../../../src/internal/c4/faction-enrollment.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,+BAA+B,EAChC,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,+BAA+B,EAAE,8BAA8B,EAAE,CAAC;AAC3E,4FAA4F;AAC5F,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,yDAE3E"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { getChooseFactionInstructionDataEncoder, PROFILE_FACTION_PROGRAM_ADDRESS, } from '@staratlas/dev-profile-faction';
|
|
2
|
+
import { PLAYER_PROFILE_PROGRAM_ADDRESS } from '@staratlas/dev-player-profile';
|
|
3
|
+
export { PROFILE_FACTION_PROGRAM_ADDRESS, PLAYER_PROFILE_PROGRAM_ADDRESS };
|
|
4
|
+
/** Pinned initial-enrollment data only; keeps generated bindings behind the C4 boundary. */
|
|
5
|
+
export function encodeChooseFactionData(keyIndex, faction) {
|
|
6
|
+
return getChooseFactionInstructionDataEncoder().encode({ keyIndex, faction });
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=faction-enrollment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faction-enrollment.js","sourceRoot":"","sources":["../../../src/internal/c4/faction-enrollment.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sCAAsC,EACtC,+BAA+B,GAChC,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,+BAA+B,EAAE,8BAA8B,EAAE,CAAC;AAC3E,4FAA4F;AAC5F,MAAM,UAAU,uBAAuB,CAAC,QAAgB,EAAE,OAAkB;IAC1E,OAAO,sCAAsC,EAAE,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;AAChF,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type Address } from '@solana/kit';
|
|
2
|
+
import type { RawAccount } from '../../client/contracts.js';
|
|
3
|
+
/** Narrow validation for the trade-only aggregate standing cohort. */
|
|
4
|
+
export declare function decodeTradeEpochMeter(account: RawAccount): import("@staratlas/dev-sage").FactionEpochMeter;
|
|
5
|
+
/** Canonical trade-only aggregate meter PDA. */
|
|
6
|
+
export declare function deriveTradeEpochMeterAddress({ game, factionId, }: {
|
|
7
|
+
readonly game: Address;
|
|
8
|
+
readonly factionId: number;
|
|
9
|
+
}): Promise<Address>;
|
|
10
|
+
//# sourceMappingURL=faction-epoch-meter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faction-epoch-meter.d.ts","sourceRoot":"","sources":["../../../src/internal/c4/faction-epoch-meter.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,OAAO,EACb,MAAM,aAAa,CAAC;AAMrB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG5D,sEAAsE;AACtE,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,UAAU,mDAuBxD;AAED,gDAAgD;AAChD,wBAAsB,4BAA4B,CAAC,EACjD,IAAI,EACJ,SAAS,GACV,EAAE;IACD,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,GAAG,OAAO,CAAC,OAAO,CAAC,CAWnB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { getAddressEncoder, getProgramDerivedAddress, getU16Encoder, } from '@solana/kit';
|
|
2
|
+
import { FACTION_EPOCH_METER_DISCRIMINATOR, getFactionEpochMeterDecoder, SAGE_PROGRAM_ADDRESS, } from '@staratlas/dev-sage';
|
|
3
|
+
import { SageSdkError } from '../../client/errors.js';
|
|
4
|
+
/** Narrow validation for the trade-only aggregate standing cohort. */
|
|
5
|
+
export function decodeTradeEpochMeter(account) {
|
|
6
|
+
try {
|
|
7
|
+
if (account.owner !== SAGE_PROGRAM_ADDRESS)
|
|
8
|
+
throw new Error('Unexpected account owner.');
|
|
9
|
+
if (!FACTION_EPOCH_METER_DISCRIMINATOR.every((byte, index) => account.data[index] === byte))
|
|
10
|
+
throw new Error('Invalid Faction Epoch Meter discriminator.');
|
|
11
|
+
const decoder = getFactionEpochMeterDecoder();
|
|
12
|
+
if (account.data.length !== decoder.fixedSize)
|
|
13
|
+
throw new RangeError(`Expected ${decoder.fixedSize} Faction Epoch Meter bytes, received ${account.data.length}.`);
|
|
14
|
+
return decoder.decode(account.data);
|
|
15
|
+
}
|
|
16
|
+
catch (cause) {
|
|
17
|
+
throw new SageSdkError('ACCOUNT_DECODE_FAILED', 'Faction Epoch Meter ownership, discriminator or data is invalid. Verify the canonical Game/faction meter address, cluster and installed binding version, refresh the reputation cohort, and retry.', { address: account.address, cause });
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/** Canonical trade-only aggregate meter PDA. */
|
|
21
|
+
export async function deriveTradeEpochMeterAddress({ game, factionId, }) {
|
|
22
|
+
return (await getProgramDerivedAddress({
|
|
23
|
+
programAddress: SAGE_PROGRAM_ADDRESS,
|
|
24
|
+
seeds: [
|
|
25
|
+
new TextEncoder().encode('FactionEpochMeter'),
|
|
26
|
+
getAddressEncoder().encode(game),
|
|
27
|
+
getU16Encoder().encode(factionId),
|
|
28
|
+
],
|
|
29
|
+
}))[0];
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=faction-epoch-meter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faction-epoch-meter.js","sourceRoot":"","sources":["../../../src/internal/c4/faction-epoch-meter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,aAAa,GAEd,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iCAAiC,EACjC,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,sEAAsE;AACtE,MAAM,UAAU,qBAAqB,CAAC,OAAmB;IACvD,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,KAAK,KAAK,oBAAoB;YACxC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,IACE,CAAC,iCAAiC,CAAC,KAAK,CACtC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAC9C;YAED,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,2BAA2B,EAAE,CAAC;QAC9C,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,SAAS;YAC3C,MAAM,IAAI,UAAU,CAClB,YAAY,OAAO,CAAC,SAAS,wCAAwC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAC5F,CAAC;QACJ,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,YAAY,CACpB,uBAAuB,EACvB,oMAAoM,EACpM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,CACpC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,gDAAgD;AAChD,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,EACjD,IAAI,EACJ,SAAS,GAIV;IACC,OAAO,CACL,MAAM,wBAAwB,CAAC;QAC7B,cAAc,EAAE,oBAAoB;QACpC,KAAK,EAAE;YACL,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC;YAC7C,iBAAiB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;YAChC,aAAa,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;SAClC;KACF,CAAC,CACH,CAAC,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type Address } from '@solana/kit';
|
|
2
|
+
export interface FactionTreasuryAccountData {
|
|
3
|
+
readonly version: number;
|
|
4
|
+
readonly bump: number;
|
|
5
|
+
readonly game: Address;
|
|
6
|
+
readonly factionId: number;
|
|
7
|
+
readonly atlasBalanceRaw: bigint;
|
|
8
|
+
readonly atlasBalance: number;
|
|
9
|
+
readonly epochStartedAtUnixSeconds: bigint;
|
|
10
|
+
readonly epochLengthSeconds: bigint;
|
|
11
|
+
readonly atlasOutThisEpochRaw: bigint;
|
|
12
|
+
readonly atlasOutThisEpoch: number;
|
|
13
|
+
readonly atlasOutCapPerEpochRaw: bigint;
|
|
14
|
+
readonly atlasOutCapPerEpoch: number;
|
|
15
|
+
readonly reserves: readonly {
|
|
16
|
+
readonly cargoId: number;
|
|
17
|
+
readonly quantityRaw: bigint;
|
|
18
|
+
readonly floorRaw: bigint;
|
|
19
|
+
}[];
|
|
20
|
+
}
|
|
21
|
+
export declare const factionTreasuryAccountDefinition: import("./adapter.js").C4AccountAdapter<FactionTreasuryAccountData>;
|
|
22
|
+
export declare function deriveFactionTreasuryAddress(game: Address, factionId: number): Promise<Address>;
|
|
23
|
+
//# sourceMappingURL=faction-treasury.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faction-treasury.d.ts","sourceRoot":"","sources":["../../../src/internal/c4/faction-treasury.ts"],"names":[],"mappings":"AAMA,OAAO,EAIL,KAAK,OAAO,EACb,MAAM,aAAa,CAAC;AAKrB,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,SAAS;QAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC3B,EAAE,CAAC;CACL;AA2BD,eAAO,MAAM,gCAAgC,qEAM3C,CAAC;AACH,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC,CAYlB"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { FACTION_TREASURY_DISCRIMINATOR, getFactionTreasuryDecoder, SAGE_PROGRAM_ADDRESS, } from '@staratlas/dev-sage';
|
|
2
|
+
import { getAddressEncoder, getProgramDerivedAddress, getU16Encoder, } from '@solana/kit';
|
|
3
|
+
import { adapter } from './faction-adapter.js';
|
|
4
|
+
import { validateUnsignedU16EntityId } from './pda.js';
|
|
5
|
+
const FLOYDS_PER_ATLAS = 100_000_000;
|
|
6
|
+
function factionTreasury(value) {
|
|
7
|
+
const cargoIds = new Set([...value.reserves.keys(), ...value.floors.keys()]);
|
|
8
|
+
return {
|
|
9
|
+
atlasBalance: Number(value.vault) / FLOYDS_PER_ATLAS,
|
|
10
|
+
atlasBalanceRaw: value.vault,
|
|
11
|
+
atlasOutCapPerEpoch: Number(value.atlasOutCapPerEpoch) / FLOYDS_PER_ATLAS,
|
|
12
|
+
atlasOutCapPerEpochRaw: value.atlasOutCapPerEpoch,
|
|
13
|
+
atlasOutThisEpoch: Number(value.atlasOutThisEpoch) / FLOYDS_PER_ATLAS,
|
|
14
|
+
atlasOutThisEpochRaw: value.atlasOutThisEpoch,
|
|
15
|
+
bump: value.bump,
|
|
16
|
+
epochLengthSeconds: value.epochLenSecs,
|
|
17
|
+
epochStartedAtUnixSeconds: value.epochStart,
|
|
18
|
+
factionId: value.factionId,
|
|
19
|
+
game: value.gameId,
|
|
20
|
+
reserves: [...cargoIds]
|
|
21
|
+
.sort((left, right) => left - right)
|
|
22
|
+
.map((cargoId) => ({
|
|
23
|
+
cargoId,
|
|
24
|
+
floorRaw: value.floors.get(cargoId) ?? 0n,
|
|
25
|
+
quantityRaw: value.reserves.get(cargoId) ?? 0n,
|
|
26
|
+
})),
|
|
27
|
+
version: value.version,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export const factionTreasuryAccountDefinition = adapter({
|
|
31
|
+
decoder: getFactionTreasuryDecoder(),
|
|
32
|
+
discriminator: FACTION_TREASURY_DISCRIMINATOR,
|
|
33
|
+
minimumDataLength: 92,
|
|
34
|
+
translate: factionTreasury,
|
|
35
|
+
type: 'factionTreasury',
|
|
36
|
+
});
|
|
37
|
+
export async function deriveFactionTreasuryAddress(game, factionId) {
|
|
38
|
+
validateUnsignedU16EntityId('faction', factionId);
|
|
39
|
+
return (await getProgramDerivedAddress({
|
|
40
|
+
programAddress: SAGE_PROGRAM_ADDRESS,
|
|
41
|
+
seeds: [
|
|
42
|
+
new TextEncoder().encode('FactionTreasury'),
|
|
43
|
+
getAddressEncoder().encode(game),
|
|
44
|
+
getU16Encoder().encode(factionId),
|
|
45
|
+
],
|
|
46
|
+
}))[0];
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=faction-treasury.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faction-treasury.js","sourceRoot":"","sources":["../../../src/internal/c4/faction-treasury.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,8BAA8B,EAC9B,yBAAyB,EACzB,oBAAoB,GAErB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,aAAa,GAEd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AACvD,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAsBrC,SAAS,eAAe,CAAC,KAAsB;IAC7C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7E,OAAO;QACL,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,gBAAgB;QACpD,eAAe,EAAE,KAAK,CAAC,KAAK;QAC5B,mBAAmB,EAAE,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG,gBAAgB;QACzE,sBAAsB,EAAE,KAAK,CAAC,mBAAmB;QACjD,iBAAiB,EAAE,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,gBAAgB;QACrE,oBAAoB,EAAE,KAAK,CAAC,iBAAiB;QAC7C,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,kBAAkB,EAAE,KAAK,CAAC,YAAY;QACtC,yBAAyB,EAAE,KAAK,CAAC,UAAU;QAC3C,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,IAAI,EAAE,KAAK,CAAC,MAAM;QAClB,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC;aACpB,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC;aACnC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACjB,OAAO;YACP,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE;YACzC,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE;SAC/C,CAAC,CAAC;QACL,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,gCAAgC,GAAG,OAAO,CAAC;IACtD,OAAO,EAAE,yBAAyB,EAAE;IACpC,aAAa,EAAE,8BAA8B;IAC7C,iBAAiB,EAAE,EAAE;IACrB,SAAS,EAAE,eAAe;IAC1B,IAAI,EAAE,iBAAiB;CACxB,CAAC,CAAC;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,IAAa,EACb,SAAiB;IAEjB,2BAA2B,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAClD,OAAO,CACL,MAAM,wBAAwB,CAAC;QAC7B,cAAc,EAAE,oBAAoB;QACpC,KAAK,EAAE;YACL,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC;YAC3C,iBAAiB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;YAChC,aAAa,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;SAClC;KACF,CAAC,CACH,CAAC,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
export { factionTreasuryAccountDefinition, deriveFactionTreasuryAddress, type FactionTreasuryAccountData, } from './faction-treasury.js';
|
|
1
2
|
import type { Address, DiscoveryRequest, ProgramAccountFilter, SageContext, SnapshotEnvelope } from '../../client/contracts.js';
|
|
2
|
-
import type { C4AccountAdapter } from './adapter.js';
|
|
3
3
|
import { deriveFactionAccountAddress } from './pda.js';
|
|
4
4
|
/** Stable FactionOwnership offsets verified against the pinned generated codec. */
|
|
5
5
|
export declare const FACTION_OWNERSHIP_FILTER_OFFSETS: Readonly<{
|
|
@@ -123,25 +123,6 @@ export interface FactionStandingAccountData {
|
|
|
123
123
|
readonly bandFloorReachedAtUnixSeconds: bigint;
|
|
124
124
|
readonly storylineExpiresAtUnixSeconds: bigint | null;
|
|
125
125
|
}
|
|
126
|
-
export interface FactionTreasuryAccountData {
|
|
127
|
-
readonly version: number;
|
|
128
|
-
readonly bump: number;
|
|
129
|
-
readonly game: Address;
|
|
130
|
-
readonly factionId: number;
|
|
131
|
-
readonly atlasBalanceRaw: bigint;
|
|
132
|
-
readonly atlasBalance: number;
|
|
133
|
-
readonly epochStartedAtUnixSeconds: bigint;
|
|
134
|
-
readonly epochLengthSeconds: bigint;
|
|
135
|
-
readonly atlasOutThisEpochRaw: bigint;
|
|
136
|
-
readonly atlasOutThisEpoch: number;
|
|
137
|
-
readonly atlasOutCapPerEpochRaw: bigint;
|
|
138
|
-
readonly atlasOutCapPerEpoch: number;
|
|
139
|
-
readonly reserves: readonly {
|
|
140
|
-
readonly cargoId: number;
|
|
141
|
-
readonly quantityRaw: bigint;
|
|
142
|
-
readonly floorRaw: bigint;
|
|
143
|
-
}[];
|
|
144
|
-
}
|
|
145
126
|
export type FactionOwnershipAssetData = {
|
|
146
127
|
readonly kind: 'starbase';
|
|
147
128
|
readonly system: Address;
|
|
@@ -223,21 +204,19 @@ export interface RegionTrackerAccountData {
|
|
|
223
204
|
readonly gridExponent: number;
|
|
224
205
|
readonly regions: readonly FactionRegionData[];
|
|
225
206
|
}
|
|
226
|
-
export declare const factionAccountDefinition: C4AccountAdapter<FactionAccountData>;
|
|
227
|
-
export declare const factionConfigAccountDefinition: C4AccountAdapter<FactionConfigAccountData>;
|
|
228
|
-
export declare const factionEconomicsConfigAccountDefinition: C4AccountAdapter<FactionEconomicsConfigAccountData>;
|
|
229
|
-
export declare const factionRelationTrackerAccountDefinition: C4AccountAdapter<FactionRelationTrackerAccountData>;
|
|
230
|
-
export declare const factionStandingAccountDefinition: C4AccountAdapter<FactionStandingAccountData>;
|
|
231
|
-
export declare const
|
|
232
|
-
export declare const
|
|
233
|
-
export declare const
|
|
234
|
-
export declare const regionTrackerAccountDefinition: C4AccountAdapter<RegionTrackerAccountData>;
|
|
207
|
+
export declare const factionAccountDefinition: import("./adapter.js").C4AccountAdapter<FactionAccountData>;
|
|
208
|
+
export declare const factionConfigAccountDefinition: import("./adapter.js").C4AccountAdapter<FactionConfigAccountData>;
|
|
209
|
+
export declare const factionEconomicsConfigAccountDefinition: import("./adapter.js").C4AccountAdapter<FactionEconomicsConfigAccountData>;
|
|
210
|
+
export declare const factionRelationTrackerAccountDefinition: import("./adapter.js").C4AccountAdapter<FactionRelationTrackerAccountData>;
|
|
211
|
+
export declare const factionStandingAccountDefinition: import("./adapter.js").C4AccountAdapter<FactionStandingAccountData>;
|
|
212
|
+
export declare const factionOwnershipAccountDefinition: import("./adapter.js").C4AccountAdapter<FactionOwnershipAccountData>;
|
|
213
|
+
export declare const kingSystemTrackerAccountDefinition: import("./adapter.js").C4AccountAdapter<KingSystemTrackerAccountData>;
|
|
214
|
+
export declare const regionTrackerAccountDefinition: import("./adapter.js").C4AccountAdapter<RegionTrackerAccountData>;
|
|
235
215
|
export { deriveFactionAccountAddress };
|
|
236
216
|
export declare function deriveFactionConfigAddress(game: Address): Promise<Address>;
|
|
237
217
|
export declare function deriveFactionEconomicsConfigAddress(game: Address): Promise<Address>;
|
|
238
218
|
export declare function deriveFactionRelationTrackerAddress(game: Address): Promise<Address>;
|
|
239
219
|
export declare function deriveFactionStandingAddress(game: Address, profile: Address, factionId: number): Promise<Address>;
|
|
240
|
-
export declare function deriveFactionTreasuryAddress(game: Address, factionId: number): Promise<Address>;
|
|
241
220
|
export declare function deriveFactionOwnershipAddress(game: Address, kind: 'region', regionId: number): Promise<Address>;
|
|
242
221
|
export declare function deriveFactionOwnershipAddress(game: Address, kind: Exclude<FactionOwnershipKind, 'region'>, assetKey: Address): Promise<Address>;
|
|
243
222
|
export declare function deriveKingSystemTrackerAddress(game: Address): Promise<Address>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factions.d.ts","sourceRoot":"","sources":["../../../src/internal/c4/factions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"factions.d.ts","sourceRoot":"","sources":["../../../src/internal/c4/factions.ts"],"names":[],"mappings":"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"}
|