import type { NobjcObject } from "objc-js";
import type { _NSNotification } from "../Foundation/NSNotification.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _PDFSelection } from "./PDFSelection.js";
export interface _PDFDocumentDelegate {
    /**
     * Notification delegate methods. If implemented by the delegate, these are called. See notification comments above.
     */
    documentDidUnlock$?(notification: _NSNotification): void;
    documentDidBeginDocumentFind$?(notification: _NSNotification): void;
    documentDidEndDocumentFind$?(notification: _NSNotification): void;
    documentDidBeginPageFind$?(notification: _NSNotification): void;
    documentDidEndPageFind$?(notification: _NSNotification): void;
    documentDidFindMatch$?(notification: _NSNotification): void;
    /**
     * If implemented by the delegate, called for every search instance found during a find. PDFDocument's implementation accumulates each PDFSelection (instance) in an NSArray.
     */
    didMatchString$?(instance: _PDFSelection): void;
    /**
     * If implemented by the delegate, will be called when a PDFPage is instantiated. PDFDocument's implementation calls -[PDFDocument pageClass] (see above).
     */
    classForPage?(): NobjcObject;
    /**
     * If implemented by the delegate, will be called when a PDFAnnotation is instantiated by a page. PDFPage by default will instantiate object of class. This allows you to instead return your own PDFAnnotation subclass. Return nil for annotation types you do not subclass.
     */
    classForAnnotationType$?(annotationType: _NSString): NobjcObject;
    /**
     * If implemented by the delegate, will be called when a PDFAnnotation is instantiated by a page. PDFPage by default will instantiate object of class. This allows you to instead return your own PDFAnnotationXxxx subclass. If you would like to return your own PDFAnnotation subclass, use PDFDocument's delegate method -[classForAnnotationType:] instead.
     */
    classForAnnotationClass$?(annotationClass: NobjcObject): NobjcObject;
}
