@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,9 @@
|
|
|
1
|
+
export const INVALIDATE_CONTEXT_ADDRESSES = Symbol('invalidateContextAddresses');
|
|
2
|
+
export const READ_CONTEXT_RAW_ACCOUNTS = Symbol('readContextRawAccounts');
|
|
3
|
+
export function invalidateContextAddresses(context, addresses) {
|
|
4
|
+
context.data[INVALIDATE_CONTEXT_ADDRESSES](addresses);
|
|
5
|
+
}
|
|
6
|
+
export function readContextRawAccounts(context, addresses, options) {
|
|
7
|
+
return context.data[READ_CONTEXT_RAW_ACCOUNTS](addresses, options);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=reconciliation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconciliation.js","sourceRoot":"","sources":["../../src/client/reconciliation.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,4BAA4B,GAAkB,MAAM,CAC/D,4BAA4B,CAC7B,CAAC;AACF,MAAM,CAAC,MAAM,yBAAyB,GAAkB,MAAM,CAC5D,wBAAwB,CACzB,CAAC;AAUF,MAAM,UAAU,0BAA0B,CACxC,OAAoB,EACpB,SAA6B;IAE5B,OAAO,CAAC,IAA8B,CAAC,4BAA4B,CAAC,CACnE,SAAS,CACV,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAAoB,EACpB,SAA6B,EAC7B,OAA4B;IAE5B,OAAQ,OAAO,CAAC,IAA8B,CAAC,yBAAyB,CAAC,CACvE,SAAS,EACT,OAAO,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Address, EntityType } from './contracts.js';
|
|
2
|
+
/** A lightweight cross-domain reference to an independently addressable account.
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* declare const fleetAddress: Address;
|
|
7
|
+
* const fleet: EntityRef<'fleet'> = entityRef('fleet', fleetAddress);
|
|
8
|
+
* ```
|
|
9
|
+
*/
|
|
10
|
+
export interface EntityRef<TType extends EntityType = EntityType> {
|
|
11
|
+
readonly type: TType;
|
|
12
|
+
readonly address: Address;
|
|
13
|
+
}
|
|
14
|
+
/** Creates a plain typed reference without resolving or reading the account.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* declare const fleetAddress: Address;
|
|
19
|
+
* const fleet = entityRef('fleet', fleetAddress);
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export declare function entityRef<TType extends EntityType>(type: TType, address: Address): EntityRef<TType>;
|
|
23
|
+
//# sourceMappingURL=refs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refs.d.ts","sourceRoot":"","sources":["../../src/client/refs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE1D;;;;;;;GAOG;AACH,MAAM,WAAW,SAAS,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU;IAC9D,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,KAAK,SAAS,UAAU,EAChD,IAAI,EAAE,KAAK,EACX,OAAO,EAAE,OAAO,GACf,SAAS,CAAC,KAAK,CAAC,CAElB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Creates a plain typed reference without resolving or reading the account.
|
|
2
|
+
*
|
|
3
|
+
* @example
|
|
4
|
+
* ```ts
|
|
5
|
+
* declare const fleetAddress: Address;
|
|
6
|
+
* const fleet = entityRef('fleet', fleetAddress);
|
|
7
|
+
* ```
|
|
8
|
+
*/
|
|
9
|
+
export function entityRef(type, address) {
|
|
10
|
+
return Object.freeze({ type, address });
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=refs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refs.js","sourceRoot":"","sources":["../../src/client/refs.ts"],"names":[],"mappings":"AAeA;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CACvB,IAAW,EACX,OAAgB;IAEhB,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
import { type Address, type DiscoveryRequest, type EntityRef, type ReadOptions, type SageContext } from '../client/index.js';
|
|
2
|
+
import { type CombatFaction, type LootRewardData, type OutlawFlagAccountData } from '../internal/c4/combat.js';
|
|
3
|
+
import { type FleetCombatStatsData } from '../internal/c4/fleet.js';
|
|
4
|
+
import type { GameCombatConfigurationData, GameStimulantEffectData } from '../internal/c4/game.js';
|
|
5
|
+
import { type CargoDefinitionSummary } from '../registry/index.js';
|
|
6
|
+
/** Faction identifier accepted by combat reads.
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* const faction: CombatFaction = 'mud';
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
export type { CombatFaction } from '../internal/c4/combat.js';
|
|
13
|
+
/** Translated Loot reward state, including unknown raw status bytes.
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* const reward: LootRewardData = { kind: 'none' };
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export type { LootRewardData } from '../internal/c4/combat.js';
|
|
20
|
+
/** Translated optional OutlawFlag account data.
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* declare const data: OutlawFlagAccountData;
|
|
24
|
+
* console.log(data.faction, data.isOutlaw);
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export type { OutlawFlagAccountData } from '../internal/c4/combat.js';
|
|
28
|
+
/** Translated Fleet combat statistics.
|
|
29
|
+
* @example
|
|
30
|
+
* ```ts
|
|
31
|
+
* declare const stats: FleetCombatStatsData;
|
|
32
|
+
* console.log(stats.hp, stats.damageKinetic);
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export type { FleetCombatStatsData } from '../internal/c4/fleet.js';
|
|
36
|
+
/** Translated Game combat configuration before cargo resolution.
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts
|
|
39
|
+
* declare const configuration: GameCombatConfigurationData;
|
|
40
|
+
* console.log(configuration.maxFleetSize);
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export type { GameCombatConfigurationData } from '../internal/c4/game.js';
|
|
44
|
+
/** One translated combat stimulant effect.
|
|
45
|
+
* @example
|
|
46
|
+
* ```ts
|
|
47
|
+
* const effect: GameStimulantEffectData = {
|
|
48
|
+
* charges: 1,
|
|
49
|
+
* deltaBps: 250,
|
|
50
|
+
* stackRuleId: 0,
|
|
51
|
+
* statId: 2,
|
|
52
|
+
* };
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export type { GameStimulantEffectData } from '../internal/c4/game.js';
|
|
56
|
+
/** Options supported by targeted Loot discovery.
|
|
57
|
+
* @example
|
|
58
|
+
* ```ts
|
|
59
|
+
* const options: LootDiscoveryOptions = { commitment: 'confirmed' };
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export type LootDiscoveryOptions = Omit<DiscoveryRequest, 'filters' | 'strategy'>;
|
|
63
|
+
/** One cargo-backed combat stimulant definition.
|
|
64
|
+
* @example
|
|
65
|
+
* ```ts
|
|
66
|
+
* declare const stimulant: CombatStimulantDefinition;
|
|
67
|
+
* console.log(stimulant.cargo.name, stimulant.effects.length);
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export interface CombatStimulantDefinition {
|
|
71
|
+
readonly cargo: CargoDefinitionSummary;
|
|
72
|
+
readonly effects: readonly GameStimulantEffectData[];
|
|
73
|
+
}
|
|
74
|
+
/** Immutable Game combat configuration and stimulant catalog.
|
|
75
|
+
* @example
|
|
76
|
+
* ```ts
|
|
77
|
+
* declare const configuration: CombatConfigurationSnapshot;
|
|
78
|
+
* console.log(configuration.globalCeasefire, configuration.maxFleetSize);
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
export interface CombatConfigurationSnapshot extends Omit<GameCombatConfigurationData, 'stimulantDefinitions'> {
|
|
82
|
+
readonly kind: 'combatConfiguration';
|
|
83
|
+
readonly address: Address;
|
|
84
|
+
readonly stimulantDefinitions: {
|
|
85
|
+
readonly sequenceId: number;
|
|
86
|
+
readonly definitions: readonly CombatStimulantDefinition[];
|
|
87
|
+
};
|
|
88
|
+
toJSON(): unknown;
|
|
89
|
+
}
|
|
90
|
+
/** Immutable focused combat projection of one Fleet.
|
|
91
|
+
* @example
|
|
92
|
+
* ```ts
|
|
93
|
+
* declare const status: FleetCombatStatusSnapshot;
|
|
94
|
+
* console.log(
|
|
95
|
+
* status.current.abilityPowerPoints,
|
|
96
|
+
* status.timing.abilityPowerReloadAtUnixSeconds,
|
|
97
|
+
* );
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
export interface FleetCombatStatusSnapshot {
|
|
101
|
+
readonly kind: 'fleetCombatStatus';
|
|
102
|
+
readonly fleet: EntityRef<'fleet'>;
|
|
103
|
+
readonly ownerProfile: EntityRef<'profile'>;
|
|
104
|
+
readonly faction: CombatFaction;
|
|
105
|
+
readonly participant: {
|
|
106
|
+
readonly kind: 'player';
|
|
107
|
+
} | {
|
|
108
|
+
readonly kind: 'npc';
|
|
109
|
+
readonly factionId: number;
|
|
110
|
+
};
|
|
111
|
+
readonly current: {
|
|
112
|
+
readonly abilityPowerPoints: number;
|
|
113
|
+
readonly shieldPoints: number;
|
|
114
|
+
readonly hullPoints: number;
|
|
115
|
+
readonly pendingHullPoints: number;
|
|
116
|
+
};
|
|
117
|
+
readonly stance: {
|
|
118
|
+
readonly ammoUsage: 'none' | 'light' | 'heavy';
|
|
119
|
+
};
|
|
120
|
+
readonly timing: {
|
|
121
|
+
readonly abilityPowerReloadAtUnixSeconds: bigint;
|
|
122
|
+
readonly shieldBreakDelayEndsAtUnixSeconds: bigint;
|
|
123
|
+
readonly lastCombatUpdateAtUnixSeconds: bigint;
|
|
124
|
+
};
|
|
125
|
+
readonly stimulants: readonly {
|
|
126
|
+
readonly statId: number;
|
|
127
|
+
readonly deltaBps: number;
|
|
128
|
+
readonly chargesRemaining: number;
|
|
129
|
+
}[];
|
|
130
|
+
readonly stats: FleetCombatStatsData;
|
|
131
|
+
toJSON(): unknown;
|
|
132
|
+
}
|
|
133
|
+
/** One resolved cargo quantity inside Loot.
|
|
134
|
+
* @example
|
|
135
|
+
* ```ts
|
|
136
|
+
* declare const item: LootCargoItem;
|
|
137
|
+
* console.log(item.cargo.name, item.quantityRaw);
|
|
138
|
+
* ```
|
|
139
|
+
*/
|
|
140
|
+
export interface LootCargoItem {
|
|
141
|
+
readonly cargo: CargoDefinitionSummary;
|
|
142
|
+
readonly quantityRaw: bigint;
|
|
143
|
+
}
|
|
144
|
+
/** Resolved inventory for one Loot leg.
|
|
145
|
+
* @example
|
|
146
|
+
* ```ts
|
|
147
|
+
* declare const inventory: LootInventory;
|
|
148
|
+
* console.log(inventory.items.length);
|
|
149
|
+
* ```
|
|
150
|
+
*/
|
|
151
|
+
export interface LootInventory {
|
|
152
|
+
readonly sequenceId: number;
|
|
153
|
+
readonly storageCostRaw: bigint;
|
|
154
|
+
readonly items: readonly LootCargoItem[];
|
|
155
|
+
}
|
|
156
|
+
/** One translated Loot item group.
|
|
157
|
+
* @example
|
|
158
|
+
* ```ts
|
|
159
|
+
* declare const item: LootItem;
|
|
160
|
+
* console.log(item.destroyer.address, item.exclusivityUnlockAtUnixSeconds);
|
|
161
|
+
* ```
|
|
162
|
+
*/
|
|
163
|
+
export interface LootItem {
|
|
164
|
+
readonly destroyer: EntityRef<'fleet'>;
|
|
165
|
+
readonly exclusivityUnlockAtUnixSeconds: bigint;
|
|
166
|
+
readonly rewardReclaimAtUnixSeconds: bigint;
|
|
167
|
+
readonly inventory: LootInventory;
|
|
168
|
+
}
|
|
169
|
+
/** Immutable Loot snapshot with resolved cargo inventory.
|
|
170
|
+
* @example
|
|
171
|
+
* ```ts
|
|
172
|
+
* declare const loot: LootSnapshot;
|
|
173
|
+
* console.log(loot.reward.kind, loot.items.length);
|
|
174
|
+
* ```
|
|
175
|
+
*/
|
|
176
|
+
export interface LootSnapshot {
|
|
177
|
+
readonly kind: 'loot';
|
|
178
|
+
readonly address: Address;
|
|
179
|
+
readonly version: number;
|
|
180
|
+
readonly game: EntityRef<'game'>;
|
|
181
|
+
readonly profile: EntityRef<'profile'>;
|
|
182
|
+
readonly coordinates: {
|
|
183
|
+
readonly x: number;
|
|
184
|
+
readonly y: number;
|
|
185
|
+
};
|
|
186
|
+
readonly reward: LootRewardData;
|
|
187
|
+
readonly items: readonly LootItem[];
|
|
188
|
+
toJSON(): unknown;
|
|
189
|
+
}
|
|
190
|
+
/** Immutable optional outlaw declaration derived from Profile and faction.
|
|
191
|
+
* @example
|
|
192
|
+
* ```ts
|
|
193
|
+
* declare const flag: OutlawFlagSnapshot;
|
|
194
|
+
* console.log(flag.isOutlaw, flag.pvpUntilUnixSeconds);
|
|
195
|
+
* ```
|
|
196
|
+
*/
|
|
197
|
+
export interface OutlawFlagSnapshot extends Omit<OutlawFlagAccountData, 'profile'> {
|
|
198
|
+
readonly kind: 'outlawFlag';
|
|
199
|
+
readonly address: Address;
|
|
200
|
+
readonly profile: EntityRef<'profile'>;
|
|
201
|
+
toJSON(): unknown;
|
|
202
|
+
}
|
|
203
|
+
/** Reads the configured Game's combat settings and stimulant catalog.
|
|
204
|
+
* @example
|
|
205
|
+
* ```ts
|
|
206
|
+
* declare const ctx: SageContext;
|
|
207
|
+
* const configuration = await getCombatConfiguration(ctx);
|
|
208
|
+
* ```
|
|
209
|
+
*/
|
|
210
|
+
export declare function getCombatConfiguration(context: SageContext, options?: ReadOptions): Promise<CombatConfigurationSnapshot>;
|
|
211
|
+
/** Reads one Fleet and returns only its translated combat state.
|
|
212
|
+
* @example
|
|
213
|
+
* ```ts
|
|
214
|
+
* declare const ctx: SageContext;
|
|
215
|
+
* declare const fleet: Address;
|
|
216
|
+
* const status = await getFleetCombatStatus(ctx, fleet);
|
|
217
|
+
* ```
|
|
218
|
+
*/
|
|
219
|
+
export declare function getFleetCombatStatus(context: SageContext, address: Address, options?: ReadOptions): Promise<FleetCombatStatusSnapshot>;
|
|
220
|
+
/** Reads required Loot by its signer-created account address.
|
|
221
|
+
* @example
|
|
222
|
+
* ```ts
|
|
223
|
+
* declare const ctx: SageContext;
|
|
224
|
+
* declare const address: Address;
|
|
225
|
+
* const loot = await getLoot(ctx, address);
|
|
226
|
+
* ```
|
|
227
|
+
*/
|
|
228
|
+
export declare function getLoot(context: SageContext, address: Address, options?: ReadOptions): Promise<LootSnapshot>;
|
|
229
|
+
/** Reads optional Loot by account address.
|
|
230
|
+
* @example
|
|
231
|
+
* ```ts
|
|
232
|
+
* declare const ctx: SageContext;
|
|
233
|
+
* declare const address: Address;
|
|
234
|
+
* const loot = await maybeGetLoot(ctx, address);
|
|
235
|
+
* ```
|
|
236
|
+
*/
|
|
237
|
+
export declare function maybeGetLoot(context: SageContext, address: Address, options?: ReadOptions): Promise<LootSnapshot | undefined>;
|
|
238
|
+
/** Discovers Loot created by one Profile using stable targeted filters.
|
|
239
|
+
* @example
|
|
240
|
+
* ```ts
|
|
241
|
+
* declare const ctx: SageContext;
|
|
242
|
+
* declare const profile: Address;
|
|
243
|
+
* const loot = await getLootByProfile(ctx, profile);
|
|
244
|
+
* ```
|
|
245
|
+
*/
|
|
246
|
+
export declare function getLootByProfile(context: SageContext, profile: Address, options?: LootDiscoveryOptions): Promise<readonly LootSnapshot[]>;
|
|
247
|
+
/** Derives and reads an optional OutlawFlag for a Profile/faction pair.
|
|
248
|
+
* @example
|
|
249
|
+
* ```ts
|
|
250
|
+
* declare const ctx: SageContext;
|
|
251
|
+
* declare const profile: Address;
|
|
252
|
+
* const flag = await getOutlawFlag(ctx, profile, 'mud');
|
|
253
|
+
* ```
|
|
254
|
+
*/
|
|
255
|
+
export declare function getOutlawFlag(context: SageContext, profile: Address, againstFaction: CombatFaction, options?: ReadOptions): Promise<OutlawFlagSnapshot | undefined>;
|
|
256
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/combat/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import { AccountDecodeError, entityRef, } from '../client/index.js';
|
|
2
|
+
import { deriveOutlawFlagAddress, discoverLootAccounts, lootAccountDefinition, outlawFlagAccountDefinition, } from '../internal/c4/combat.js';
|
|
3
|
+
import { assertCanonicalFleetAddress, fleetAccountDefinition, } from '../internal/c4/fleet.js';
|
|
4
|
+
import { requireGameAddress } from '../internal/game-context.js';
|
|
5
|
+
import { attachJsonSerialization } from '../internal/json.js';
|
|
6
|
+
import { attachReadMeta, readMeta } from '../internal/read-meta.js';
|
|
7
|
+
import { freezeResolvedSnapshot } from '../internal/resolved-snapshot.js';
|
|
8
|
+
import { resolveCargo, } from '../registry/index.js';
|
|
9
|
+
import { readGameCombatConfiguration } from '../registry/combat.js';
|
|
10
|
+
const CONFIGURATION_SNAPSHOTS = new WeakMap();
|
|
11
|
+
const FLEET_STATUS_SNAPSHOTS = new WeakMap();
|
|
12
|
+
const LOOT_SNAPSHOTS = new WeakMap();
|
|
13
|
+
const OUTLAW_SNAPSHOTS = new WeakMap();
|
|
14
|
+
function metadata(envelope, strategy = 'direct') {
|
|
15
|
+
return {
|
|
16
|
+
commitment: envelope.commitment,
|
|
17
|
+
slot: envelope.slot,
|
|
18
|
+
source: envelope.source,
|
|
19
|
+
strategy,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
async function createConfigurationSnapshot(context, envelope) {
|
|
23
|
+
const { stimulantDefinitions, ...configuration } = envelope.data;
|
|
24
|
+
const definitions = await Promise.all(stimulantDefinitions.definitions.map(async (definition) => ({
|
|
25
|
+
cargo: await resolveCargo(context, definition.cargoId),
|
|
26
|
+
effects: definition.effects,
|
|
27
|
+
})));
|
|
28
|
+
return freezeResolvedSnapshot(attachReadMeta(attachJsonSerialization({
|
|
29
|
+
...configuration,
|
|
30
|
+
address: envelope.address,
|
|
31
|
+
kind: 'combatConfiguration',
|
|
32
|
+
stimulantDefinitions: {
|
|
33
|
+
definitions,
|
|
34
|
+
sequenceId: stimulantDefinitions.sequenceId,
|
|
35
|
+
},
|
|
36
|
+
}), metadata(envelope)));
|
|
37
|
+
}
|
|
38
|
+
/** Reads the configured Game's combat settings and stimulant catalog.
|
|
39
|
+
* @example
|
|
40
|
+
* ```ts
|
|
41
|
+
* declare const ctx: SageContext;
|
|
42
|
+
* const configuration = await getCombatConfiguration(ctx);
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export async function getCombatConfiguration(context, options) {
|
|
46
|
+
const envelope = await readGameCombatConfiguration(context, options);
|
|
47
|
+
const existing = CONFIGURATION_SNAPSHOTS.get(envelope);
|
|
48
|
+
if (existing !== undefined)
|
|
49
|
+
return existing;
|
|
50
|
+
const pending = createConfigurationSnapshot(context, envelope);
|
|
51
|
+
CONFIGURATION_SNAPSHOTS.set(envelope, pending);
|
|
52
|
+
void pending.catch(() => CONFIGURATION_SNAPSHOTS.delete(envelope));
|
|
53
|
+
return pending;
|
|
54
|
+
}
|
|
55
|
+
function fleetStatus(envelope) {
|
|
56
|
+
const existing = FLEET_STATUS_SNAPSHOTS.get(envelope);
|
|
57
|
+
if (existing !== undefined)
|
|
58
|
+
return existing;
|
|
59
|
+
const data = envelope.data;
|
|
60
|
+
const snapshot = freezeResolvedSnapshot(attachReadMeta(attachJsonSerialization({
|
|
61
|
+
current: {
|
|
62
|
+
abilityPowerPoints: data.ap,
|
|
63
|
+
hullPoints: data.hp,
|
|
64
|
+
pendingHullPoints: data.pendingHp,
|
|
65
|
+
shieldPoints: data.sp,
|
|
66
|
+
},
|
|
67
|
+
faction: data.faction,
|
|
68
|
+
fleet: entityRef('fleet', envelope.address),
|
|
69
|
+
kind: 'fleetCombatStatus',
|
|
70
|
+
ownerProfile: entityRef('profile', data.ownerProfile),
|
|
71
|
+
// The 2026-08-04 PTR census records npcFactionId 0 as the player
|
|
72
|
+
// sentinel; positive ids identify NPC factions in observed Fleets.
|
|
73
|
+
participant: data.npcFactionId === 0
|
|
74
|
+
? { kind: 'player' }
|
|
75
|
+
: { factionId: data.npcFactionId, kind: 'npc' },
|
|
76
|
+
stance: data.stance,
|
|
77
|
+
stats: data.stats.combat,
|
|
78
|
+
stimulants: data.activeStimulants.map((stimulant) => ({
|
|
79
|
+
chargesRemaining: stimulant.chargesRemaining,
|
|
80
|
+
deltaBps: stimulant.deltaBps,
|
|
81
|
+
statId: stimulant.stat,
|
|
82
|
+
})),
|
|
83
|
+
timing: {
|
|
84
|
+
abilityPowerReloadAtUnixSeconds: data.apReloadExpiresAt,
|
|
85
|
+
lastCombatUpdateAtUnixSeconds: data.lastCombatUpdate,
|
|
86
|
+
shieldBreakDelayEndsAtUnixSeconds: data.shieldBreakDelayExpiresAt,
|
|
87
|
+
},
|
|
88
|
+
}), metadata(envelope)));
|
|
89
|
+
FLEET_STATUS_SNAPSHOTS.set(envelope, snapshot);
|
|
90
|
+
return snapshot;
|
|
91
|
+
}
|
|
92
|
+
/** Reads one Fleet and returns only its translated combat state.
|
|
93
|
+
* @example
|
|
94
|
+
* ```ts
|
|
95
|
+
* declare const ctx: SageContext;
|
|
96
|
+
* declare const fleet: Address;
|
|
97
|
+
* const status = await getFleetCombatStatus(ctx, fleet);
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
export async function getFleetCombatStatus(context, address, options) {
|
|
101
|
+
const game = requireGameAddress(context);
|
|
102
|
+
const envelope = await context.data.read(fleetAccountDefinition, address, options);
|
|
103
|
+
if (envelope.data.game !== game) {
|
|
104
|
+
throw new AccountDecodeError('fleet', address, new RangeError('The Fleet belongs to a different Game.'), `Fleet ${address} belongs to Game ${envelope.data.game}, not configured Game ${game}. Verify the Fleet address and cluster before retrying.`);
|
|
105
|
+
}
|
|
106
|
+
await assertCanonicalFleetAddress(envelope);
|
|
107
|
+
return fleetStatus(envelope);
|
|
108
|
+
}
|
|
109
|
+
async function resolveInventory(context, inventory) {
|
|
110
|
+
return {
|
|
111
|
+
items: await Promise.all(inventory.amounts.map(async ({ amount, cargoId }) => ({
|
|
112
|
+
cargo: await resolveCargo(context, cargoId),
|
|
113
|
+
quantityRaw: amount,
|
|
114
|
+
}))),
|
|
115
|
+
sequenceId: inventory.sequenceId,
|
|
116
|
+
storageCostRaw: inventory.storageCostRaw,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
async function createLootSnapshot(context, envelope) {
|
|
120
|
+
const game = requireGameAddress(context);
|
|
121
|
+
if (envelope.data.game !== game) {
|
|
122
|
+
throw new AccountDecodeError('loot', envelope.address, new RangeError('The Loot belongs to a different Game.'), `Loot ${envelope.address} belongs to Game ${envelope.data.game}, not configured Game ${game}. Verify the Loot address and cluster before retrying.`);
|
|
123
|
+
}
|
|
124
|
+
return freezeResolvedSnapshot(attachReadMeta(attachJsonSerialization({
|
|
125
|
+
address: envelope.address,
|
|
126
|
+
coordinates: envelope.data.coordinates,
|
|
127
|
+
game: entityRef('game', envelope.data.game),
|
|
128
|
+
items: await Promise.all(envelope.data.items.map(async (item) => ({
|
|
129
|
+
destroyer: entityRef('fleet', item.destroyer),
|
|
130
|
+
exclusivityUnlockAtUnixSeconds: item.exclusivityUnlockAtUnixSeconds,
|
|
131
|
+
inventory: await resolveInventory(context, item.inventory),
|
|
132
|
+
rewardReclaimAtUnixSeconds: item.rewardReclaimAtUnixSeconds,
|
|
133
|
+
}))),
|
|
134
|
+
kind: 'loot',
|
|
135
|
+
profile: entityRef('profile', envelope.data.profile),
|
|
136
|
+
reward: envelope.data.reward,
|
|
137
|
+
version: envelope.data.version,
|
|
138
|
+
}), metadata(envelope)));
|
|
139
|
+
}
|
|
140
|
+
function lootSnapshot(context, envelope) {
|
|
141
|
+
const existing = LOOT_SNAPSHOTS.get(envelope);
|
|
142
|
+
if (existing !== undefined)
|
|
143
|
+
return existing;
|
|
144
|
+
const pending = createLootSnapshot(context, envelope);
|
|
145
|
+
LOOT_SNAPSHOTS.set(envelope, pending);
|
|
146
|
+
void pending.catch(() => LOOT_SNAPSHOTS.delete(envelope));
|
|
147
|
+
return pending;
|
|
148
|
+
}
|
|
149
|
+
/** Reads required Loot by its signer-created account address.
|
|
150
|
+
* @example
|
|
151
|
+
* ```ts
|
|
152
|
+
* declare const ctx: SageContext;
|
|
153
|
+
* declare const address: Address;
|
|
154
|
+
* const loot = await getLoot(ctx, address);
|
|
155
|
+
* ```
|
|
156
|
+
*/
|
|
157
|
+
export async function getLoot(context, address, options) {
|
|
158
|
+
requireGameAddress(context);
|
|
159
|
+
return lootSnapshot(context, await context.data.read(lootAccountDefinition, address, options));
|
|
160
|
+
}
|
|
161
|
+
/** Reads optional Loot by account address.
|
|
162
|
+
* @example
|
|
163
|
+
* ```ts
|
|
164
|
+
* declare const ctx: SageContext;
|
|
165
|
+
* declare const address: Address;
|
|
166
|
+
* const loot = await maybeGetLoot(ctx, address);
|
|
167
|
+
* ```
|
|
168
|
+
*/
|
|
169
|
+
export async function maybeGetLoot(context, address, options) {
|
|
170
|
+
requireGameAddress(context);
|
|
171
|
+
const [envelope] = await context.data.readMany(lootAccountDefinition, [address], options);
|
|
172
|
+
return envelope === undefined ? undefined : lootSnapshot(context, envelope);
|
|
173
|
+
}
|
|
174
|
+
/** Discovers Loot created by one Profile using stable targeted filters.
|
|
175
|
+
* @example
|
|
176
|
+
* ```ts
|
|
177
|
+
* declare const ctx: SageContext;
|
|
178
|
+
* declare const profile: Address;
|
|
179
|
+
* const loot = await getLootByProfile(ctx, profile);
|
|
180
|
+
* ```
|
|
181
|
+
*/
|
|
182
|
+
export async function getLootByProfile(context, profile, options) {
|
|
183
|
+
requireGameAddress(context);
|
|
184
|
+
const envelopes = await discoverLootAccounts(context, profile, options);
|
|
185
|
+
const snapshots = await Promise.all(envelopes.map((envelope) => lootSnapshot(context, envelope)));
|
|
186
|
+
return Object.freeze(attachReadMeta(snapshots, readMeta(envelopes)));
|
|
187
|
+
}
|
|
188
|
+
function outlawSnapshot(envelope) {
|
|
189
|
+
const existing = OUTLAW_SNAPSHOTS.get(envelope);
|
|
190
|
+
if (existing !== undefined)
|
|
191
|
+
return existing;
|
|
192
|
+
const { profile, ...data } = envelope.data;
|
|
193
|
+
const snapshot = freezeResolvedSnapshot(attachReadMeta(attachJsonSerialization({
|
|
194
|
+
...data,
|
|
195
|
+
address: envelope.address,
|
|
196
|
+
kind: 'outlawFlag',
|
|
197
|
+
profile: entityRef('profile', profile),
|
|
198
|
+
}), metadata(envelope, 'derived')));
|
|
199
|
+
OUTLAW_SNAPSHOTS.set(envelope, snapshot);
|
|
200
|
+
return snapshot;
|
|
201
|
+
}
|
|
202
|
+
/** Derives and reads an optional OutlawFlag for a Profile/faction pair.
|
|
203
|
+
* @example
|
|
204
|
+
* ```ts
|
|
205
|
+
* declare const ctx: SageContext;
|
|
206
|
+
* declare const profile: Address;
|
|
207
|
+
* const flag = await getOutlawFlag(ctx, profile, 'mud');
|
|
208
|
+
* ```
|
|
209
|
+
*/
|
|
210
|
+
export async function getOutlawFlag(context, profile, againstFaction, options) {
|
|
211
|
+
requireGameAddress(context);
|
|
212
|
+
const address = await deriveOutlawFlagAddress(profile, againstFaction);
|
|
213
|
+
const [envelope] = await context.data.readMany(outlawFlagAccountDefinition, [address], options);
|
|
214
|
+
if (envelope === undefined)
|
|
215
|
+
return undefined;
|
|
216
|
+
if (envelope.data.profile !== profile ||
|
|
217
|
+
envelope.data.faction !== againstFaction) {
|
|
218
|
+
throw new AccountDecodeError('outlawFlag', address, new RangeError('The OutlawFlag contradicted its derived seeds.'), `OutlawFlag ${address} does not match Profile ${profile} and faction ${againstFaction}. Verify the configured cluster and pinned PDA recipe before retrying.`);
|
|
219
|
+
}
|
|
220
|
+
return outlawSnapshot(envelope);
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/combat/index.ts"],"names":[],"mappings":"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"}
|