import type { RemoteDesktopQuality, ScreenInfo, CaptureFrame } from "./types.js"; export declare function getSharpLoadStatus(): string; export declare function extractRawRegion(raw: Buffer, srcWidth: number, left: number, top: number, w: number, h: number): Buffer | null; export declare class ScreenCapture { private static readonly ACTIVE_INTERVAL_MS; private static readonly STILL_FRAME_COUNT; private static readonly IDLE_INTERVAL_MS; private static readonly PERIODIC_FULL_FRAME_INTERVAL_MS; private screens; private captureTimer; private fps; private quality; private activeScreenId; private onFrame; private captureInFlight; private encodePending; private encoding; private consecutiveStillFrames; private inputBoostFrames; private lastRaw; private lastRawWidth; private lastRawHeight; private pendingReference; frameStats: { full: number; partial: number; null: number; sharpFail: number; }; resetFrameStats(): void; listScreens(): Promise; private cachedMonitors; private getActiveMonitor; private acquireShot; private encodeShot; captureVirtualDesktop(force?: boolean): Promise; private totalTileCount; private mapLimit; private outputRectToSource; private detectChangedTiles; private commitReferenceFrame; private discardReferenceFrame; setActiveScreen(screenId: string | null): void; startLoop(onFrame: (frame: CaptureFrame) => boolean | void): void; private scheduleLoop; private lastFullFrameAt; private captureOnce; private drainEncode; private consecutiveNullCaptures; private captureSafeFullFrame; private currentIntervalMs; requestFrame(): void; private backpressureThrottleUntil; notifyFrameDropped(): void; requestFullFrame(): void; stopLoop(): void; setQuality(quality?: RemoteDesktopQuality, fps?: number): void; getQuality(): RemoteDesktopQuality; getScreens(): ScreenInfo[]; }