export type LedgerSection = 'places' | 'quests' | 'fish' | 'bosses' | 'events' | 'ring' | 'yard' | 'derby' | 'sled' | 'fort' | 'hunt' | 'mire' | 'road' | 'tunnel' | 'field' | 'lean' | 'wanted' | 'delve' | 'arcane' | 'voyage' | 'weekly' | 'kitchens' | 'beacon' | 'convoy' | 'quarters' | 'heath'; export declare const LEDGER_SECTIONS: readonly { id: LedgerSection; label: string; blurb: string; }[]; export type LedgerLine = { /** `
:`; marked lines are written to `ledgerMarks` under exactly this id. */ id: string; section: LedgerSection; label: string; /** Explorer XP paid once, when the line is first earned. 0 = paid elsewhere already, counted only. */ xp: number; /** True when the server writes a mark for it (otherwise it is read from existing character state). */ marked: boolean; }; /** PLACEHOLDER Explorer XP for a marked line, and a bonus when a whole page is finished (balance is last). */ export declare const LEDGER_BOSS_XP = 150; export declare const LEDGER_EVENT_XP = 100; export declare const LEDGER_RING_XP = 200; export declare const LEDGER_YARD_XP = 40; export declare const LEDGER_DERBY_XP = 40; export declare const LEDGER_SLED_XP = 60; export declare const LEDGER_FORT_XP = 60; export declare const LEDGER_HUNT_XP = 40; export declare const LEDGER_MIRE_XP = 60; export declare const LEDGER_ROAD_XP = 60; export declare const LEDGER_FIELD_XP = 50; export declare const LEDGER_DELVE_XP = 50; export declare const LEDGER_ARCANE_XP = 60; export declare const LEDGER_VOYAGE_XP = 40; export declare const LEDGER_KITCHEN_XP = 40; export declare const LEDGER_QUARTERS_XP = 40; export declare const LEDGER_BEACON_XP = 40; export declare const LEDGER_CONVOY_XP = 40; export declare const LEDGER_HEATH_XP = 50; export declare const LEDGER_PAGE_BONUS_XP: Readonly>; /** The named bosses (NpcKinds) whose fall is written in the book. Labels are what the book shows. */ export declare const LEDGER_BOSSES: readonly { kind: string; label: string; }[]; /** * The yard's drill sergeants, by id. Defined here (not in the yard module) so the book and the yard cannot drift; the yard * (sparringYard.ts) reads this list for its bouts. */ export declare const LEDGER_YARD_SERGEANTS: readonly { id: string; label: string; }[]; /** The Fishing Derby's lines (marked by the server from a finished round, fishingDerby.ts). Ids are the marks it writes. */ export declare const LEDGER_DERBY_LINES: readonly { id: string; label: string; }[]; /** The Heartwood Hunt's lines (marked by the server from a finished round, heartwoodHunt.ts). Ids are the marks it writes. */ export declare const LEDGER_HUNT_LINES: readonly { id: string; label: string; }[]; /** Beacon Night's lines (marked by the server from a finished night, beaconNight.ts). Ids are the marks it writes. */ export declare const LEDGER_BEACON_LINES: readonly { id: string; label: string; }[]; /** The Timber Convoy's lines (marked by the server from a finished convoy, timberConvoy.ts). Ids are the marks it writes. */ export declare const LEDGER_CONVOY_LINES: readonly { id: string; label: string; }[]; /** Hask's Sled Run's lines (marked by the server from a finished run, sledRun.ts). Ids are the marks it writes. */ export declare const LEDGER_SLED_LINES: readonly { id: string; label: string; }[]; export declare const LEDGER_LINES: readonly LedgerLine[]; export declare function ledgerLine(id: string): LedgerLine | null; export declare function ledgerLinesIn(section: LedgerSection): LedgerLine[]; /** The id of a section's finishing bonus in `ledgerPaid` (never a line, never a mark). */ export declare function ledgerBonusId(section: LedgerSection): string; /** What the server reads to work out the book: the character's own saved state. */ export type LedgerInput = { discoveredZones: Iterable; /** Ids of quests whose state is 'completed'. */ questsDone: Iterable; /** Aquarium species kinds the book holds (donated at least once). */ aquariumKinds: Iterable; /** `ledgerMarks`: marked line ids. */ marks: Iterable; }; /** Every line id the character has earned (derived lines read from their state, marked lines from their marks). */ export declare function ledgerEarned(input: LedgerInput): Set; export declare function ledgerSectionDone(section: LedgerSection, earned: ReadonlySet): boolean; export declare function ledgerSectionCount(section: LedgerSection, earned: ReadonlySet): { have: number; total: number; }; /** What the book owes that has not been paid yet: each earned line's XP, and a finished page's bonus. Pure. */ export declare function ledgerOwed(earned: ReadonlySet, paid: ReadonlySet): { id: string; xp: number; label: string; }[]; /** A line id that may be marked (a known marked line); anything else is not a mark. */ export declare function isLedgerMark(id: unknown): id is string; /** Whatever the database held, made safe: only known marked lines survive, once each. */ export declare function normalizeLedgerMarks(raw: unknown): string[]; /** The paid set may hold line ids and bonus ids; unknown ids are dropped. */ export declare function normalizeLedgerPaid(raw: unknown): string[]; export type AchievementCondition = { kind: 'count'; section: LedgerSection; min: number; } | { kind: 'page'; section: LedgerSection; } | { kind: 'line'; id: string; } | { kind: 'total'; min: number; } | { kind: 'level'; skill: LedgerLevelSkill; min: number; }; export type LedgerLevelSkill = 'combat' | 'explorer' | 'strength' | 'mastery'; export type LedgerAchievement = { /** The Steamworks API name: capitals, digits, underscores. Never renamed once created on Steam. */ id: string; title: string; description: string; when: AchievementCondition; }; export declare const LEDGER_ACHIEVEMENTS: readonly LedgerAchievement[]; /** A character's levels, for the level achievements. */ export type LedgerLevels = Partial>; /** The achievement ids a character has earned: a pure function of the earned lines and their levels. */ export declare function ledgerAchievements(earned: ReadonlySet, levels?: LedgerLevels): string[]; /** The wire snapshot: what the client draws the book from. */ export type LedgerSnapshot = { earned: string[]; achievements: string[]; /** Explorer XP the book has paid so far (shown on the cover). */ xpPaid: number; }; //# sourceMappingURL=explorerLedger.d.ts.map