import Database from 'better-sqlite3'; import { StolenItemRecord, FenceNpc, HeatLevel } from '../../schema/theft.js'; export declare class TheftRepository { private db; private inventoryRepo; constructor(db: Database.Database); /** * Record a theft event * @param transferItem - If true, physically moves item from victim to thief inventory */ recordTheft(record: { itemId: string; stolenFrom: string; stolenBy: string; stolenLocation?: string | null; witnesses?: string[]; transferItem?: boolean; quantity?: number; }): StolenItemRecord & { transferred: boolean; }; /** * Check if an item is currently stolen (not recovered or cleared) */ isStolen(itemId: string): boolean; /** * Get theft record for an item */ getTheftRecord(itemId: string): StolenItemRecord | null; /** * Get all stolen items currently held by a character */ getStolenItemsHeldBy(characterId: string): StolenItemRecord[]; /** * Get all items stolen FROM a character */ getItemsStolenFrom(characterId: string): StolenItemRecord[]; /** * Get all active theft records (not recovered) */ getAllActiveThefts(): StolenItemRecord[]; /** * Update heat level */ updateHeatLevel(itemId: string, newHeat: HeatLevel): void; /** * Report theft to guards */ reportToGuards(itemId: string, bounty?: number): void; /** * Mark item as recovered */ markRecovered(itemId: string): void; /** * Mark item as fenced */ markFenced(itemId: string, fenceId: string): void; /** * Clear stolen flag completely (after cooldown) */ clearStolenFlag(itemId: string): void; /** * Process heat decay for all stolen items */ processHeatDecay(daysAdvanced: number): { itemId: string; oldHeat: HeatLevel; newHeat: HeatLevel; }[]; /** * Register an NPC as a fence * EDGE-006: Throws error if NPC has been a theft victim */ registerFence(fence: { npcId: string; factionId?: string | null; buyRate?: number; maxHeatLevel?: HeatLevel; dailyHeatCapacity?: number; specializations?: string[]; cooldownDays?: number; reputation?: number; }): FenceNpc; /** * Get fence data for an NPC */ getFence(npcId: string): FenceNpc | null; /** * List all fences */ listFences(factionId?: string): FenceNpc[]; /** * Check if fence will accept an item */ canFenceAccept(fenceId: string, stolenRecord: StolenItemRecord, itemValue: number): { accepted: boolean; reason?: string; price?: number; }; /** * Record a fence transaction * @param paySeller - If true, transfers gold from fence to seller * @param sellerId - Required if paySeller is true * @param price - Required if paySeller is true (amount to pay) */ recordFenceTransaction(fenceId: string, itemId: string, itemHeatLevel: HeatLevel, options?: { paySeller?: boolean; sellerId?: string; price?: number; }): { fenced: boolean; paid: boolean; amountPaid?: number; }; /** * Reset daily heat capacity for all fences */ resetFenceDailyCapacity(): void; private rowToStolenItem; private rowToFence; } //# sourceMappingURL=theft.repo.d.ts.map