/* eslint-disable */
/* tslint:disable */
/**
 * This is an autogenerated file created by the Stencil compiler.
 * It contains typing information for all components that exist in this project.
 */
import { HTMLStencilElement, JSXBase } from "./stencil-public-runtime";
import { Page } from "./models/page";
import { PageConfig } from "./components/book-page/book-page";
import { Paragraph } from "./models/paragraph";
import { PageConfig as PageConfig1 } from "./components/book-page/book-page";
import { ReadStyle } from "./models/read-style";
import { Decorator } from "./models/decorator";
import { BookReaderEvent, ContextMenuAction, ScrollDirectionAction } from "./events/events";
import { Selection } from "./models/selection";
export namespace Components {
    interface BookPage {
        "config": PageConfig;
        "page": Page;
    }
    interface BookPagesComparison {
        "config": PageConfig;
        "page": Page;
        "page2": Page;
    }
    interface BookReader {
        "config": any;
        "decorators": Decorator[];
        "getConfig": () => Promise<any>;
        "getFirstVisibleElementOnViewport": () => Promise<string>;
        "getReadStyle": () => Promise<ReadStyle>;
        "goToElementById": (id: string, shift?: number) => Promise<void>;
        "goToPage": (no: number, shift?: number) => Promise<void>;
        "goToParagraph": (page: number, parag: number, shift?: number) => Promise<void>;
        "highlightKeywords": (elementId: string, keywords: string[]) => Promise<void>;
        "pages": Page[];
        "pages2": Page[];
        "readStyle": ReadStyle;
        "setAllPages": (pages: Page[], pages2: Page[]) => Promise<void>;
        "setConfig": (config: any) => Promise<void>;
        "setDecorators": (decorators: Decorator[]) => Promise<void>;
        "setPages": (pages: Page[]) => Promise<void>;
        "setReadStyle": (style: ReadStyle) => Promise<void>;
    }
    interface ContextMenu {
        "anchor": HTMLElement;
        "config": any;
    }
    interface MyComponent {
        /**
          * The first name
         */
        "first": string;
        /**
          * The last name
         */
        "last": string;
        /**
          * The middle name
         */
        "middle": string;
    }
}
declare global {
    interface HTMLBookPageElement extends Components.BookPage, HTMLStencilElement {
    }
    var HTMLBookPageElement: {
        prototype: HTMLBookPageElement;
        new (): HTMLBookPageElement;
    };
    interface HTMLBookPagesComparisonElement extends Components.BookPagesComparison, HTMLStencilElement {
    }
    var HTMLBookPagesComparisonElement: {
        prototype: HTMLBookPagesComparisonElement;
        new (): HTMLBookPagesComparisonElement;
    };
    interface HTMLBookReaderElement extends Components.BookReader, HTMLStencilElement {
    }
    var HTMLBookReaderElement: {
        prototype: HTMLBookReaderElement;
        new (): HTMLBookReaderElement;
    };
    interface HTMLContextMenuElement extends Components.ContextMenu, HTMLStencilElement {
    }
    var HTMLContextMenuElement: {
        prototype: HTMLContextMenuElement;
        new (): HTMLContextMenuElement;
    };
    interface HTMLMyComponentElement extends Components.MyComponent, HTMLStencilElement {
    }
    var HTMLMyComponentElement: {
        prototype: HTMLMyComponentElement;
        new (): HTMLMyComponentElement;
    };
    interface HTMLElementTagNameMap {
        "book-page": HTMLBookPageElement;
        "book-pages-comparison": HTMLBookPagesComparisonElement;
        "book-reader": HTMLBookReaderElement;
        "context-menu": HTMLContextMenuElement;
        "my-component": HTMLMyComponentElement;
    }
}
declare namespace LocalJSX {
    interface BookPage {
        "config"?: PageConfig;
        "onLangComparison"?: (event: CustomEvent<Paragraph>) => void;
        "page"?: Page;
    }
    interface BookPagesComparison {
        "config"?: PageConfig;
        "page"?: Page;
        "page2"?: Page;
    }
    interface BookReader {
        "config"?: any;
        "decorators"?: Decorator[];
        "onBookReady"?: (event: CustomEvent<BookReaderEvent<string, string>>) => void;
        "onBookUpdated"?: (event: CustomEvent<BookReaderEvent<string, string>>) => void;
        "onComparison"?: (event: CustomEvent<BookReaderEvent<string, Paragraph>>) => void;
        "onContextMenuItem"?: (event: CustomEvent<BookReaderEvent<ContextMenuAction, Selection>>) => void;
        "onDecorator"?: (event: CustomEvent<BookReaderEvent<string, Decorator>>) => void;
        "onScrollDirection"?: (event: CustomEvent<BookReaderEvent<ScrollDirectionAction, string>>) => void;
        "onSelection"?: (event: CustomEvent<BookReaderEvent<string, Selection>>) => void;
        "onStopScrolling"?: (event: CustomEvent<BookReaderEvent<string, string>>) => void;
        "pages"?: Page[];
        "pages2"?: Page[];
        "readStyle"?: ReadStyle;
    }
    interface ContextMenu {
        "anchor"?: HTMLElement;
        "config"?: any;
        "onMenuItemClicked"?: (event: CustomEvent<BookReaderEvent<ContextMenuAction, Selection>>) => void;
    }
    interface MyComponent {
        /**
          * The first name
         */
        "first"?: string;
        /**
          * The last name
         */
        "last"?: string;
        /**
          * The middle name
         */
        "middle"?: string;
    }
    interface IntrinsicElements {
        "book-page": BookPage;
        "book-pages-comparison": BookPagesComparison;
        "book-reader": BookReader;
        "context-menu": ContextMenu;
        "my-component": MyComponent;
    }
}
export { LocalJSX as JSX };
declare module "@stencil/core" {
    export namespace JSX {
        interface IntrinsicElements {
            "book-page": LocalJSX.BookPage & JSXBase.HTMLAttributes<HTMLBookPageElement>;
            "book-pages-comparison": LocalJSX.BookPagesComparison & JSXBase.HTMLAttributes<HTMLBookPagesComparisonElement>;
            "book-reader": LocalJSX.BookReader & JSXBase.HTMLAttributes<HTMLBookReaderElement>;
            "context-menu": LocalJSX.ContextMenu & JSXBase.HTMLAttributes<HTMLContextMenuElement>;
            "my-component": LocalJSX.MyComponent & JSXBase.HTMLAttributes<HTMLMyComponentElement>;
        }
    }
}
