export interface Config { tradeUrls: string[]; poe2LogPath: string; poe2WindowTitle: string; browserUserDataDir: string; travelTimeoutMs: number; stashScanTimeoutMs: number; waitForMoreItemsMs: number; betweenTradesDelayMs: number; } export interface Region { x: number; y: number; width: number; height: number; } export interface ScreenRegions { stashArea: Region; priceWarningDialog: Region; priceWarningNoButton: Region; inventoryArea: Region; stashTabArea: Region; } export interface TradeInfo { searchId: string; itemIds: string[]; whisperText: string; timestamp: number; tradeUrl: string; page: unknown; // Playwright Page reference } export interface StashItem { name: string; stats: string; price: string; position: { x: number; y: number }; } export type TradeState = | 'IDLE' | 'TRAVELING' | 'IN_SELLERS_HIDEOUT' | 'SCANNING_STASH' | 'BUYING' | 'WAITING_FOR_MORE' | 'GOING_HOME' | 'IN_HIDEOUT' | 'FAILED'; export interface LogEvent { timestamp: Date; type: 'area-entered' | 'whisper-received' | 'trade-accepted' | 'unknown'; data: Record; } export type LinkMode = 'live' | 'scrap'; export type PostAction = 'stash' | 'salvage'; export type ScrapState = 'IDLE' | 'TRAVELING' | 'BUYING' | 'SALVAGING' | 'STORING' | 'FAILED'; export interface TradeItem { id: string; w: number; h: number; stashX: number; stashY: number; account: string; }