import { type HyperliquidClient } from '../core/client.js'; import type { GuardianAlert, GuardianPrefs, GuardianTargetState, GuardianThresholds } from './types.js'; export interface GuardianTelegramChannel { token: string; chatId: string; } export interface GuardianAgentHookChannel { hooksToken: string; gatewayPort?: number; } export interface GuardianOptions { /** Addresses to watch. Default: the configured account address. */ addresses?: string[]; /** Min severity + per-rule opt-out (same contract as the hosted guardian). */ prefs?: GuardianPrefs; /** Rule threshold overrides. */ thresholds?: Partial; /** clearinghouseState cadence (ms). Default 30s; drops to 15s near liquidation. */ pollIntervalMs?: number; /** frontendOpenOrders cadence (ms). Default 120s. */ ordersIntervalMs?: number; /** Price (mids + main-dex ctxs) cadence (ms). Default 30s. */ pricesIntervalMs?: number; /** HIP-3 mark/funding cadence (ms), fetched only while HIP-3 positions exist. Default 5m. */ hip3PricesIntervalMs?: number; /** Rule-engine tick (ms), pure in-memory. Default 5s. */ riskIntervalMs?: number; /** * Subscribe WS userEvents for instant liquidation alerts and fill-triggered * re-polls. Only active when exactly one address is watched (the feed is not * tagged per user). Default true. */ useWebSocket?: boolean; /** Telegram channel. Default: from TELEGRAM_BOT_TOKEN/TELEGRAM_CHAT_ID env. Pass false to disable. */ telegram?: GuardianTelegramChannel | false; /** OpenClaw agent hook channel. Default: from OPENCLAW_HOOKS_TOKEN/OPENCLAW_GATEWAY_PORT env. Pass false to disable. */ agentHook?: GuardianAgentHookChannel | false; /** Print alerts as JSON lines instead of human-readable text. */ json?: boolean; /** Suppress console alert output entirely (library consumers). */ quiet?: boolean; verbose?: boolean; /** Callback fired for every alert that passes prefs. */ onAlert?: (alert: GuardianAlert) => void; /** Injectable client (tests / plugin). Default getClient(). */ client?: HyperliquidClient; } export interface GuardianStats { addresses: string[]; statePolls: number; orderPolls: number; alertsFired: number; alertsDelivered: number; deliveryErrors: number; evaluations: number; pricesAt: number | null; channels: string[]; } export interface GuardianHandle { stop(): Promise; getStats(): GuardianStats; getTargets(): GuardianTargetState[]; } export declare class Guardian { private readonly client; private readonly targets; private readonly prices; private readonly risk; private readonly prefs; private readonly telegram; private readonly agentHook; private readonly opts; private timers; private wsSubs; private wsUsed; private stopped; private polling; private statePolls; private orderPolls; private alertsFired; private alertsDelivered; private deliveryErrors; private lastPricesAt; constructor(addresses: string[], opts?: GuardianOptions); channels(): string[]; start(): Promise; stop(): Promise; getStats(): GuardianStats; getTargets(): GuardianTargetState[]; private startWebSocket; private hasHip3Positions; private refreshPrices; /** HIP-3 mark/funding — heavier (per-dex metaAndAssetCtxs), only while HIP-3 positions exist. */ private refreshHip3Prices; private pollAllStates; private pollAllOrders; private pollState; private pollOrders; /** Snapshot diff → position lifecycle alerts (mirrors the hosted poller). */ private diff; private passesPrefs; private dispatch; private log; } /** Start watching. Resolves once the first snapshot is seeded. */ export declare function startGuardian(opts?: GuardianOptions): Promise; //# sourceMappingURL=engine.d.ts.map