import { Book, RelocateEvent, RebookPlugin, TOCItem } from '../core/types'; export interface TrialLimitOptions { maxPages?: number; epsilon?: number; sampleSections?: number; sampleMaxBytes?: number; bytesPerEstimatedTextUnit?: number; estimatedTextUnitsPerPage?: number; viewport?: { width?: number; height?: number; margin?: number; }; typography?: { fontSize?: number; lineHeight?: number; fillRatio?: number; }; } export interface TrialLimitState { maxPages: number; estimatedPageCount: number; limitFraction: number; pageStepFraction: number; estimatedBy: 'page-list' | 'pre-paginated-sections' | 'sampled-text' | 'section-size'; } export interface TrialSnapshotLike { sectionIndex: number; sectionCount: number; pageIndex: number; pageCount: number; fraction: number; } export interface TrialTOCAccessItem { item: TOCItem; key: string; index: number; label: string; href: string; depth: number; parentHrefs: string[]; hasChildren: boolean; sectionIndex: number; sectionFraction: number; disabled: boolean; } export interface TrialLimitController { readonly state: TrialLimitState; getTotalFraction(location: Pick | null | undefined, sectionFractions: readonly number[]): number; getTargetFraction(target: string | number, sectionFractions: readonly number[]): number; canGoTo(target: string | number, sectionFractions: readonly number[]): boolean; getTOCItems(sectionFractions: readonly number[], items?: readonly TOCItem[]): TrialTOCAccessItem[]; getAllowedTOCHrefs(sectionFractions: readonly number[]): string[]; getCurrentTOCItem(items: readonly TrialTOCAccessItem[], location: Pick | null | undefined): TrialTOCAccessItem | null; getNextTotalFraction(snapshot: TrialSnapshotLike, sectionFractions: readonly number[]): number; canGoNext(location: Pick | null | undefined, sectionFractions: readonly number[]): boolean; } export type TrialLimitedBook = Book & { trialLimit: TrialLimitController; }; export declare function withTrialLimit(options?: TrialLimitOptions): RebookPlugin; export declare function estimateTrialLimitState(book: Book, options?: TrialLimitOptions): Promise; export declare function estimateBookPageCount(book: Book, options?: TrialLimitOptions): Promise<{ pageCount: number; estimatedBy: TrialLimitState['estimatedBy']; }>; //# sourceMappingURL=trial-limit.d.ts.map