import { GcSelectionPoint } from "./GcMeasurementTypes";
export type SignatureInfo = {
    contactInfo: string;
    location: string;
    signerName: string;
    reason: string;
    signatureField: string;
};
export type FieldAppearanceRenderingType = "Custom" | "Web" | "Predefined";
export type DocumentInitParameters = {
    url?: string | URL;
    data?: any | Array<number> | string;
    httpHeaders?: Object;
    initialData?: any;
    length?: number;
    range?: any;
    rangeChunkSize?: number;
    worker?: any;
    verbosity?: number;
    docBaseUrl?: string;
    cMapUrl?: string;
    cMapPacked?: boolean;
    CMapReaderFactory?: Object;
    useSystemFonts?: boolean;
    standardFontDataUrl?: string;
    StandardFontDataFactory?: Object;
    useWorkerFetch?: boolean;
    stopAtErrors?: boolean;
    maxImageSize?: number;
    isEvalSupported?: boolean;
    disableFontFace?: boolean;
    fontExtraProperties?: boolean;
    enableXfa?: boolean;
    ownerDocument?: any;
    disableRange?: boolean;
    disableStream?: boolean;
    disableAutoFetch?: boolean;
    pdfBug?: boolean;
};
export type OpenParameters = {
    headers: {
        [header: string]: string;
    };
    withCredentials: boolean;
    password: string;
    friendlyPdfUrl?: string;
} & DocumentInitParameters;
export type OptionalContentConfig = {
    creator: null | string;
    name: null | string;
    getGroup(id: string): OptionalContentGroup;
    getGroups(): {
        [id: string]: OptionalContentGroup;
    };
    getOrder(): {
        name: string | null;
        order: string[];
    }[];
    isVisible(groupOrId: string | OptionalContentGroup): any;
    setVisibility(id: string, visible: boolean): any;
    viewScale: number;
};
export type OptionalContentGroup = {
    id: string;
    name: string;
    type: "OCG" | string;
    visible: boolean;
    exportState?: "ON" | "OFF";
    viewState?: "ON" | "OFF";
    printState?: "ON" | "OFF";
    creatorInfo?: {
        Creator: string;
        Subtype: string;
    };
    intent?: "View" | "Design";
    zoom?: {
        min?: number;
        max?: number;
    };
};
export type StructTreeNode = {
    role: "Root" | string;
    children: Array<StructTreeNode | StructTreeContent>;
};
export type StructTreeContent = {
    id: string;
    type: "content" | "object";
    actualText: string | undefined;
};
export type ViewerFeatureName = 'JavaScript' | 'AllAttachments' | 'FileAttachments' | 'SoundAttachments' | 'RichMediaAttachments' | 'DragAndDrop' | 'SubmitForm' | 'Print' | 'Open' | 'Layers' | 'CustomFonts' | 'Redact' | 'ConvertToContent' | 'NewDocument' | 'NewPage' | 'DeletePage' | 'PdfOrganizer' | 'ReplaceText' | 'ESign' | 'Save' | 'SaveToPng' | 'SaveToSvg' | 'Collaboration' | 'Linearization' | 'IncrementalUpdate' | 'RichText';
export type StampCategory = {
    id?: string;
    name: string;
    stampImages?: string[];
    stampImageUrls?: string[];
    isDynamic?: boolean;
    dpi?: number;
};
export interface IPageViewport {
    offsetX: number;
    offsetY: number;
    rotation: number;
    scale: number;
    transform: number;
    viewBox: number[];
    width: number;
    height: number;
}
export interface IGcPageView {
    viewport: IPageViewport;
    ensureFullyLoaded(): Promise<IGcPageView>;
    ensureSelectionPainter(): Promise<any>;
    ensureAnnotationLayerRendered(): Promise<any>;
    pageIndex: number;
    width: number;
    height: number;
    renderingId: string;
    renderingState: any;
    outputScale: any;
    scale: number;
    rotation: number;
    annotationLayerDirty?: boolean;
}
export interface IGcVisiblePage {
    id: number;
    view: IGcPageView;
    x: number;
    y: number;
    percent: number;
}
export interface IGcVisiblePagesInfo {
    first: IGcVisiblePage;
    last: IGcVisiblePage;
    views: IGcVisiblePage[];
}
export interface IGcSelectionCopier {
    showTextMarkupContextMenu(event: MouseEvent | TouchEvent, coords?: {
        clientX: number;
        clientY: number;
    }): boolean;
    showCustomContextMenu(event: MouseEvent | TouchEvent, coords?: {
        clientX: number;
        clientY: number;
    }): boolean;
    copySelectedText(): boolean;
    printSelectedText(): any;
    resetAll(): any;
    resetPage(pageIndex: number): any;
    beginUpdatePages(): any;
    endUpdatePages(): any;
    beginUpdatePage(pageIndex: number): any;
    endUpdatePage(): any;
    getSelectedText(): any;
    lastCaretPos: GcSelectionPoint;
    lastMousePos: GcSelectionPoint;
    notifyCaretPositionChanged(x: number, y: number, pageIndex: number): any;
    notifyViewerFocused(viewer: any): any;
    onNativeContextMenuStart(): any;
    onNativeContextMenuEnd(): any;
    hasSelectedText: boolean;
    currentSelectionBox: null | {
        pageIndex: number;
        x: number;
        y: number;
        w: number;
        h: number;
        paintedBoxes: {
            pageIndex: number;
            x: number;
            y: number;
            w: number;
            h: number;
            angle: number;
            dir: "ltr" | "rtl";
            vertical: boolean;
            itemData: any;
        }[];
    };
}
export type SaveSettings = {
    format?: "PDF" | "PNG" | "SVG";
    pages?: string;
    reload?: boolean;
    saveMode?: "Auto" | "Default" | "Linearized" | "IncrementalUpdate";
    saveModificationsOnly?: boolean;
    sign?: SignatureInfo;
    progressTitle?: string;
    progressMessage?: string;
    zoomFactor?: number;
};
export type PageViewport = {
    viewBox: number[];
    width: number;
    height: number;
    scale: number;
    rotation: number;
    offsetX: number;
    offsetY: number;
    transform: number[];
    clone(args: Partial<PageViewport>): PageViewport;
    convertToViewportPoint(x: number, y: number): number[];
    convertToViewportRectangle(rect: number[]): number[];
    convertToPdfPoint(x: any, y: any): number[];
};
export type ViewerPreferences = {
    hideToolbar?: boolean;
    hideMenubar?: boolean;
    hideWindowUI?: boolean;
    fitWindow?: boolean;
    centerWindow?: boolean;
    displayDocTitle?: boolean;
    nonFullScreenPageMode?: PageMode;
    openAction?: OpenAction;
    pageMode?: PageMode;
    pageLayout?: PageLayout;
};
export type PageMode = "UseAttachments" | "UseOC" | "UseOutlines" | "UseThumbs" | "UseNone" | "FullScreen" | "";
export type PageLayout = "SinglePage" | "OneColumn" | "TwoColumnLeft" | "TwoColumnRight" | "TwoPageRight" | "TwoPageLeft" | "";
export type OpenAction = {
    dest: number[];
};
export type BusEventName = "outlineloaded" | "attachmentsloaded" | "namedaction" | "pagemode" | "fileattachmentannotation" | "pagerendered" | "pagecancelled" | "scalechange" | "pagesinit" | "pagesloaded" | "documentchanged" | "rotationchanging" | "updateviewarea" | "undostorechanged" | "annotationeditstarted" | "annotationeditdone" | "show-custom-layout" | "hide-custom-layout" | "unselectannotation" | "annotation-bounds-change" | "pagechange" | "mousemodechange" | "request-answer" | "textlayerready" | "textselectionchanged" | "viewersizechanged" | "articlebeadnavigate" | "error" | "open" | "pagelabels" | "documentload";
export interface IGCEventBus {
    on(eventName: BusEventName, listener: Function): any;
    off(eventName: BusEventName, listener: Function): any;
    dispatch(eventName: BusEventName, ...rest: any[]): any;
}
export type KeyboardShortcutTool = "zoomin" | "zoomout" | "zoom_pagesize" | "zoom_clientsize" | "select_all" | "rotate" | "pan" | "holdToPan" | "selection" | "open" | "search" | "print" | "move_caret_left" | "move_caret_right" | "move_caret_up" | "move_caret_down" | "move_caret_document_start" | "move_caret_document_end" | "move_caret_sequence_start" | "move_caret_sequence_end" | "confirm-ok" | "confirm-cancel" | "scrollUp" | "scrollDown" | "search";
export type KeyboardShortcutDefinition = {
    keyCode?: number;
    ctrl?: boolean;
    shift?: boolean;
    alt?: boolean;
    meta?: boolean;
    tool?: KeyboardShortcutTool | Function;
};
export type JsCancelEventArgs = {
    cancel?: boolean;
    jsCode: string;
    targetAnnotation: any;
    executor: any;
};
export type JsEventArgs = {
    jsCode: string;
    targetAnnotation: any;
    executor: any;
};
export type JsExecutionConfig = {
    disable?: boolean;
    before?: (args: JsCancelEventArgs) => void;
    after?: (args: JsEventArgs) => void;
    repaintWhenDone?: boolean;
    repaintOnStep?: boolean;
};
export type DocumentListItem = {
    name: string;
    path: string;
    title: string;
    previewContent?: string;
};
export type SubmitFormOptions = {
    fields?: string[];
    refs?: string[];
    include?: boolean;
    includeNoValueFields?: boolean;
    exportFormat?: boolean;
    getMethod?: boolean;
    submitCoordinates?: boolean;
    submitUsingGet?: boolean;
    xFDF?: boolean;
    submitPDF?: boolean;
    canonicalFormat?: boolean;
};
export type ScrollPageIntoViewOptions = ScrollIntoViewOptions & {
    behavior?: ScrollBehavior;
    block?: ScrollLogicalPosition;
    inline?: ScrollLogicalPosition;
    scrollMode?: 'always' | 'if-needed';
    visibilityThreshold?: number;
};
export type ReplaceTextModel = {
    newText: string;
    selectedText: string;
    selectedCoords: SelectedTextCoordinates;
    fontInfo: {
        font: string;
        fontHeight: number;
        fontFamily: string | null;
        fontDescent: number;
        scale: number;
    };
};
export type SelectedTextCoordinates = {
    pageIndex: number;
    outerRect: number[];
    quadPoints: {
        x: number;
        y: number;
    }[][];
};
export type FontFormat = "truetype" | "opentype" | "woff" | "woff2" | "ttc";
