/** @module Viewer/Search */ /** */
export declare class Rect {
    /** @hidden */
    constructor(left: number, top: number, width: number, height: number);
    /** Gets or sets the left coordinate of this @see:Rect. */
    left: number;
    /** Gets or sets the top coordinate of this @see:Rect. */
    top: number;
    /** Gets or sets the width of this @see:Rect. */
    width: number;
    /** Gets or sets the height of this @see:Rect. */
    height: number;
}
/** Defines options to perform search. */
export type FindOptions = {
    /** The text to search for. */
    Text: string;
    /** Specifies whether the search is case sensitive. */
    MatchCase: boolean;
    /** Specifies whether to search for the specified whole word only. */
    WholeWord: boolean;
    /** Specifies whether to perform the search in the backward order. */
    SearchBackward: boolean;
};
/** Defines a text range. */
export declare class Range {
    /** The range start */
    readonly Start: number;
    /** The range length */
    readonly Length: number;
    /**
     * Constructor of {@link Range}
     * @param start The range start
     * @param length The range length
     */
    constructor(start: number, length: number);
    /** True is range is empty */
    get isEmpty(): boolean;
    /** Gets the empty range. */
    static readonly Empty: Range;
}
/** Defines a search result. */
export declare class SearchResult {
    /** The index of the page where the occurence is found.*/
    readonly PageIndex: number;
    /** Text to display. */
    readonly DisplayText: string;
    /** The whole text item area coordinates. */
    readonly ItemArea: Rect;
    /** The logical page item number (for subsequent searches, ordered). */
    readonly ItemIndex: number;
    /** The selection text range. */
    readonly Range: Range;
    /** Plugin-specific data. */
    readonly UserData?: any;
    /** @hidden */
    constructor(
    /** The index of the page where the occurence is found.*/
    PageIndex: number, 
    /** Text to display. */
    DisplayText: string, 
    /** The whole text item area coordinates. */
    ItemArea: Rect, 
    /** The logical page item number (for subsequent searches, ordered). */
    ItemIndex: number, 
    /** The selection text range. */
    Range: Range, 
    /** Plugin-specific data. */
    UserData?: any);
    /** @hidden Result indicating page boundaries, not an actual result. */
    static readonly MakePageStart: (pageIndex: number) => SearchResult;
    /** Result indicating search is finished. Also indicates position past the end of document. */
    static readonly PastEnd: SearchResult;
    /** Special result value for Find method to begin searching from the beginning of the document/page */
    static readonly BeforeBegin: SearchResult;
}
/** @hidden Defines a progress info. */
export type ProgressModel = {
    pageIndex: number;
    pageCount: number | null;
};
/** @hidden */
export type Model = {
    options: FindOptions;
    results: SearchResult[];
    status: 'ready' | 'inprogress' | 'suspended' | 'done' | 'cancelled';
    progress: ProgressModel;
};
/** @hidden */
export type Msg = {
    type: 'PushResult';
    payload: SearchResult;
} | {
    type: 'ResetResults';
} | {
    type: 'Started';
} | {
    type: 'SearchCompleted';
} | {
    type: 'Suspended';
} | {
    type: 'Cancelled';
} | {
    type: 'Progress';
    payload: ProgressModel;
} | {
    type: 'UpdateOption';
    payload: {
        option: 'MatchCase' | 'WholeWord';
        value: boolean;
    };
} | {
    type: 'UpdateText';
    payload: {
        text: string;
    };
};
