Scanning
Scanning is how fleets survey space for things worth finding. Like combat, it is a capability-only entry, imported directly rather than reached through the root client.
import { getFleetScanningState, getScanPatterns } from '@aephia/atlas-kit/scanning';Patterns are the catalog
Section titled “Patterns are the catalog”A scan pattern is a definition: what a kind of scan does and what it costs. Patterns are shared and stable, so read them once.
const patterns = await getScanPatterns(ctx);State is per fleet, and per character
Section titled “State is per fleet, and per character”Two projections, answering different questions:
const fleetState = await getFleetScanningState(ctx, fleetAddress);const characterState = await getCharacterScanningState(ctx, profileAddress);The fleet’s state is about this fleet’s scanning. The character’s is the wider picture across what they own — and note it starts from the profile address, not the character’s: the SDK derives the character from the profile for you.
Cooldowns are derived
Section titled “Cooldowns are derived”const cooldown = deriveScanCooldownState(fleetState, nowUnixSeconds);Note that this is a plain function, not a read. Cooldown is computed from state you already have plus the pattern definitions — there is no account to fetch that says “ready in 40 seconds”.
That is a recurring shape in this SDK: anything time-dependent is derived at the moment you ask, because storing it would mean storing something that is wrong a second later.
Gotchas
Section titled “Gotchas”A cooldown is only as fresh as its inputs. If you derive from a cached snapshot, you are computing against that snapshot’s age. Re-read before deriving if precision matters.
Not composed into the root client. Import from @aephia/atlas-kit/scanning.
Absent scanning state is normal. A fleet that has never scanned has nothing to report.