import { CSSProperties, ReactNode } from 'react';
import { IArchbaseDataSourceBase } from '@archbase/data';
export type PDFSource = string | Uint8Array | {
    url: string;
} | {
    data: string | Uint8Array;
};
export type PDFRenderMode = 'canvas' | 'svg' | 'none';
export type PDFTextLayerMode = 'legacy' | 'typedArray';
export interface PDFAnnotation {
    id: string;
    type: 'highlight' | 'comment' | 'bookmark';
    pageIndex: number;
    rect: {
        x: number;
        y: number;
        width: number;
        height: number;
    };
    content?: string;
    color?: string;
    author?: string;
    createdAt: Date;
}
export interface PDFToolbarActions {
    zoomIn?: boolean;
    zoomOut?: boolean;
    nextPage?: boolean;
    previousPage?: boolean;
    firstPage?: boolean;
    lastPage?: boolean;
    rotate?: boolean;
    download?: boolean;
    print?: boolean;
    pageNavigation?: boolean;
}
export interface ArchbasePDFViewerProps<T, ID> {
    dataSource?: IArchbaseDataSourceBase<T>;
    dataField?: string;
    file?: PDFSource;
    onLoadSuccess?: (pdf: any) => void;
    onLoadError?: (error: Error) => void;
    width?: string | number;
    height?: string | number;
    page?: number;
    scale?: number;
    rotation?: number;
    renderMode?: PDFRenderMode;
    textLayer?: boolean;
    toolbar?: boolean | PDFToolbarActions;
    toolbarPosition?: 'top' | 'bottom' | 'both';
    annotations?: PDFAnnotation[];
    onAnnotationAdd?: (annotation: PDFAnnotation) => void;
    onAnnotationRemove?: (annotationId: string) => void;
    onAnnotationUpdate?: (annotationId: string, updates: Partial<PDFAnnotation>) => void;
    enableAnnotations?: boolean;
    showAnnotationsList?: boolean;
    style?: CSSProperties;
    className?: string;
    onPageChange?: (currentPage: number, totalPages: number) => void;
    onZoomChange?: (scale: number) => void;
    title?: string;
    ariaLabel?: string;
    disabled?: boolean;
    loading?: ReactNode;
    error?: ReactNode;
    noData?: ReactNode;
}
