import type { PdfDownloadResult, SidebarMode } from "../types.js";
import { usePdfOutline } from "./usePdfOutline.js";
import type { UsePdfViewerCoreOptions, UsePdfViewerCoreResult } from "./usePdfViewerCore.js";
import type { UsePdfViewerSearchResult } from "./usePdfViewerSearch.js";
export interface UsePdfViewerStateOptions extends UsePdfViewerCoreOptions {
	/** Whether the sidebar is initially open (default false) */
	initialSidebarOpen?: boolean;
	/** Which sidebar panel to show (default "thumbnails") */
	sidebarMode?: SidebarMode;
	/** Callback fired when a download completes or fails */
	onDownload?: (result: PdfDownloadResult) => void;
}
export interface UsePdfViewerStateResult extends UsePdfViewerCoreResult {
	/** Zoom in by one step (disables auto-size) */
	zoomIn: () => void;
	/** Zoom out by one step (disables auto-size) */
	zoomOut: () => void;
	/** Toggle auto-size (fit to width) on or off */
	toggleAutoSize: () => void;
	/** Current rotation in degrees (0, 90, 180, 270) */
	rotation: number;
	/** Rotate 90 degrees counter-clockwise */
	rotateLeft: () => void;
	/** Rotate 90 degrees clockwise */
	rotateRight: () => void;
	/** Whether the sidebar panel is open */
	sidebarOpen: boolean;
	/** Which sidebar panel is active */
	sidebarMode: SidebarMode;
	/** Change the active sidebar panel */
	setSidebarMode: (mode: SidebarMode) => void;
	/** Toggle sidebar open/closed */
	toggleSidebar: () => void;
	/** Search state and actions */
	search: UsePdfViewerSearchResult;
	/** Document outline items (from bookmarks or text extraction) */
	outlineItems: ReturnType<typeof usePdfOutline>;
	/** Download the PDF as a file */
	download: (filename?: string) => void;
}
export declare function usePdfViewerState({ src, initialPage, initialScale, initialAutoSize, initialSidebarOpen, sidebarMode: sidebarModeProp, onDownload }: UsePdfViewerStateOptions): UsePdfViewerStateResult;
