import { type StoryQuestId } from './storyQuests.js'; export type QuestId = 'lostBeagle' | 'clarksChores' | 'rangerSaw' | 'debbieScarecrow' | 'anneFoxes' | 'carriageDriver' | 'carriageHorse' | 'battlefieldBridge' | 'hopePier' | 'captainsOrders' | 'clearRatTunnel' | 'findRimdel' | 'wilsonRod' | StoryQuestId; export type QuestState = 'not_started' | 'offered' | 'active' | 'fed' | 'ready' | 'hired' | 'completed'; export type QuestsSnapshot = Record; export type QuestReward = { kind: string; qty: number; }; /** * The journal's shelves (James's quest-book design, 2026-09-22). A quest * says which shelf it is on; the book groups by these in this order, and * the card's kicker is the label. */ export type QuestCategory = 'main' | 'master' | 'side' | 'exploration' | 'combat' | 'skilling' | 'mini'; export declare const QUEST_CATEGORY_ORDER: readonly QuestCategory[]; export declare const QUEST_CATEGORY_META: Record; /** * What the quest card draws at the top: an NPC kind (the fox for Anne's * quest, Bernie for Forbes') or, failing that, an item from the bag. The * client renders the real model, so the card's picture is the thing itself. */ export type QuestArt = { npc?: string; item?: string; }; export type QuestMeta = { title: string; description: string; giverNpcKind: string; /** Which shelf of the journal it sits on. */ category: QuestCategory; /** The giver's name, for the card's giver row. */ giverName: string; /** What the giver says on the card, shorter than the description. */ giverLine: string; /** The subject of the card's picture. */ art?: QuestArt; hidden?: boolean; objectives: { active: string; activeHungry?: string; fed?: string; ready?: string; hired?: string; }; rewards: QuestReward[]; /** A lasting perk the quest unlocks, a line of its own on the card (Fred's Pass). */ perk?: string; }; export declare const QUEST_IDS: QuestId[]; export declare const CLARKS_CHORES_MILK_NEEDED = 3; export declare const CLARKS_CHORES_EGGS_NEEDED = 4; export declare const CLARKS_CHORES_FORAGING_XP = 120; /** * The quests' Explorer XP was raised tenfold on 2026-09-26 (James: "it's * currently hard to level explorer without quest xp"): a discovery pays 33 and * level 30 needs about 22,000, so the one-time quests are where Explorer levels. * The builds in woodwork.ts (bridges, the pier) rose the same way. */ export declare const CLARKS_CHORES_EXPLORER_XP = 530; /** * Halved from 40 and 40 on 2026-10-01 (James agreed with the analytical run: the opening should feel quick; * the simulator spent hours of its first day on this one hand-in). */ export declare const DEBBIE_SCARECROW_HAY_NEEDED = 20; export declare const DEBBIE_SCARECROW_BIRCH_LOGS_NEEDED = 20; export declare const DEBBIE_SCARECROW_WOODWORK_XP = 100; export declare const DEBBIE_SCARECROW_EXPLORER_XP = 530; export declare const LOST_BEAGLE_EXPLORER_XP = 660; /** Same as Clark's Chores / Debbie: a gather-and-deliver on the shore. */ export declare const WILSON_ROD_EXPLORER_XP = 530; export declare const RANGER_SAW_EXPLORER_XP = 160; /** * Mid-early hunt: foxes are baited from Foraging-3 tracks. Ten kills (was 20 until 2026-10-01): three or four * baits of three raw rabbits each, a short forest loop rather than an evening's grind. */ export declare const ANNE_FOXES_NEEDED = 10; /** Matches Debbie's skill-XP grant; Mastery is the Weapon Mastery pool (`precisionXp`). */ export declare const ANNE_FOXES_MASTERY_XP = 100; /** Same as Clark's Chores - foxes are found by foraging tracks. */ export declare const ANNE_FOXES_FORAGING_XP = 120; /** Same as Clark's Chores / Debbie. */ export declare const ANNE_FOXES_EXPLORER_XP = 530; export declare const CARRIAGE_REPAIR_WOOD_QTY = 30; /** Midway between Debbie's 100 (birch delivery) and early poplar crafts (~120). */ export declare const CARRIAGE_REPAIR_WOODWORK_XP = 150; export declare const CARRIAGE_DRIVER_EXPLORER_XP = 400; export declare const CARRIAGE_RIDE_BASECAMP_COST = 10; export declare const CARRIAGE_RIDE_FARM_COST = 5; /** Hope Beach is the starting shore - same short hop as the farm, priced to match. */ export declare const CARRIAGE_RIDE_BEACH_COST = 5; /** Sold at the stable counter; never enters the bag - it hitches to the carriage. */ export declare const CARRIAGE_HORSE_KIND = "carriagehorse"; /** Stable Master sells a draft horse so the carriage can actually run. */ export declare const CARRIAGE_HORSE_COST = 200; export declare const RAT_TUNNEL_CLEAR_COIN_REWARD = 200; export declare const CAPTAINS_ORDERS_GOBLINS_NEEDED = 30; /** Interaction-only food bubble; also lets Bernie finish eating before going home. */ export declare const BERNIE_BUBBLE_MS = 4000; /** Finding Rimdel at the Trade Hall: he was only ever one conversation away, once he was in the Capital. */ export declare const FIND_RIMDEL_EXPLORER_XP = 1500; export declare const QUEST_META: Record; export declare function isQuestId(value: unknown): value is QuestId; export declare function isQuestInProgress(state: QuestState): boolean; export declare function ownsCarriageHorse(quests: QuestsSnapshot): boolean; export declare function defaultQuests(): QuestsSnapshot; export declare function normalizeQuests(raw: unknown): QuestsSnapshot; //# sourceMappingURL=quests.d.ts.map