/** The two menu options a cook who keeps a kitchen order shows (ids sent as the dialog option). */ export declare const CAMP_KITCHEN_READ_ACTION = "kitchen:read"; export declare const CAMP_KITCHEN_HAND_ACTION = "kitchen:hand"; export declare const CAMP_KITCHEN_OPTION_LABELS: Readonly>; export type CampDish = { /** The cooked item kind. */ kind: string; label: string; }; export type CampKitchen = { /** Stable id: the Ledger mark is `kitchen:`, the saved record keys on it. */ id: string; /** The cook's name (a resident of that name; the CampTrader's, or Calverton's Cook Dorcas Marsh). */ cook: string; /** The NPC kind the cook stands as: a resident unless stated (Old Hask is a trapper, Miller Agnes a miller; T119). */ npcKind?: string; place: string; /** Roughly where players of this kitchen's levels are: the guide and the Ledger line say it. */ band: string; /** The day's dish is drawn from these. */ dishes: readonly CampDish[]; /** How many of the day's dish the order wants. */ qty: number; }; export declare const CAMP_KITCHENS: readonly CampKitchen[]; export declare const CAMP_KITCHEN_IDS: readonly string[]; export declare function campKitchenById(id: unknown): CampKitchen | null; /** The kitchen a cook keeps, by the name they are known by (null for anybody else). */ export declare function campKitchenByCook(name: string | null | undefined): CampKitchen | null; /** The kitchen an NPC keeps, by their kind and name (a resident unless the kitchen says otherwise; null for anybody else). */ export declare function campKitchenForNpc(kind: string | null | undefined, name: string | null | undefined): CampKitchen | null; /** Every dish kind any kitchen can ask for (what the cooking counter tracks). */ export declare const CAMP_ORDER_DISH_KINDS: ReadonlySet; export declare const CAMP_DAY_MS: number; /** The UTC day a moment falls in (the same number as dailyHooks.ts dailyDay, so Bruce's day and the cooks' agree). */ export declare function campOrderDay(nowMs: number): number; export type CampOrder = { kitchenId: string; cook: string; day: number; dish: string; label: string; qty: number; /** The Cooking level the dish is cooked at (what the cook tells a hand who cannot yet). */ level: number; coins: number; cookingXp: number; }; /** Coins a dish adds to an order: about twice what a counter pays for it (PLACEHOLDER). */ export declare function campOrderCoinsPerDish(level: number): number; /** Today's order at one kitchen. A pure function of the kitchen and the day. */ export declare function campOrderFor(kitchenId: string, day: number): CampOrder | null; /** `day`: the UTC day this is for (0 = never). `cooked`: dishes this character cooked that day, by kind, not yet spent. `claimed`: kitchens filled that day. */ export type CampOrdersState = { day: number; cooked: Record; claimed: string[]; }; export declare const EMPTY_CAMP_ORDERS: CampOrdersState; /** The most of one dish the pool will hold: more than a day's orders could spend (fifteen kitchens, six each). */ export declare const CAMP_COOKED_CAP = 99; /** Whatever the database held, made safe: whole days, only known dishes with whole positive counts (capped), only known kitchens, once each. */ export declare function normalizeCampOrders(raw: unknown): CampOrdersState; /** The record as it stands on `day`: yesterday's is cleared (the midnight turnover), today's is kept. Pure. */ export declare function campOrdersOn(state: CampOrdersState, day: number): CampOrdersState; /** One more of a dish cooked by this character, today. Dishes no kitchen asks for are not tracked. Pure. */ export declare function campOrdersWithCooked(state: CampOrdersState, dishKind: string, day: number): CampOrdersState; export declare function campOrderClaimed(state: CampOrdersState, kitchenId: string, day: number): boolean; /** How many kitchens' orders are filled today. */ export declare function campOrdersFilled(state: CampOrdersState, day: number): number; export type CampHandInCheck = { ok: true; } | { ok: false; why: 'claimed' | 'not-cooked' | 'bag'; have: number; need: number; }; /** * Can this character fill the kitchen's order now? Every refusal before anything moves: already filled today; fewer cooked by them today than * the order wants (a bought dish never counts); or fewer in the bag than it wants (they cooked them, then dropped, sold or ate them). */ export declare function campOrderCheck(state: CampOrdersState, order: CampOrder, bagCount: number): CampHandInCheck; /** The record after a hand-in: the dishes are spent from the pool and the kitchen is marked filled. Call only after campOrderCheck said ok. Pure. */ export declare function campOrdersAfterHandIn(state: CampOrdersState, order: CampOrder): CampOrdersState; export declare function campOrderLine(order: CampOrder): string; /** The cook's answer to "Today's order": what is wanted, and where the character stands. */ export declare function campOrderReadText(order: CampOrder, state: CampOrdersState): string; export declare function campOrderRefuseText(check: Extract, order: CampOrder): string; export declare function campOrderPaidText(order: CampOrder): string; /** Ledger marks a filled order writes: one per kitchen. */ export declare const CAMP_KITCHEN_MARK_PREFIX = "kitchens:"; export declare function campKitchenMark(kitchenId: string): string; export declare const LEDGER_KITCHEN_LINES: readonly { id: string; label: string; }[]; /** A character with this much Cooking hears of the kitchens in the login line. */ export declare const CAMP_ORDERS_LINE_COOKING = 10; /** The login line's piece: "the camp cooks have orders up (3 of 8 filled)", or null below the Cooking level that cares. */ export declare function campOrdersTodayText(cooking: number, state: CampOrdersState, now: number): string | null; //# sourceMappingURL=campKitchens.d.ts.map