import { PdfGrid } from '../pdf-grid';
import { RectangleF } from './../../../drawing/pdf-drawing';
import { PdfLayoutResult, PdfLayoutParams, PdfLayoutFormat, ElementLayouter } from './../../../graphics/figures/base/element-layouter';
import { PdfGraphics } from './../../../graphics/pdf-graphics';
import { PdfPage } from './../../../pages/pdf-page';
import { PdfGridRow } from '../pdf-grid-row';
import { PdfGridCellStyle } from '../styles/style';
/**
 * Class `lay outing the text`.
 *
 */
export declare class PdfGridLayouter extends ElementLayouter {
    /**
     * `Text` data.
     * @private
     */
    private text;
    /**
     * Pdf `font`.
     * @private
     */
    private font;
    /**
     * String `format`.
     * @private
     */
    private format;
    /**
     * `Size` of the text.
     * @private
     */
    private gridColumns;
    /**
     * @hidden
     * @private
     */
    private gridRows;
    /**
     * @hidden
     * @private
     */
    private gridHeaders;
    /**
     * @hidden
     * @private
     */
    private gridInitialWidth;
    /**
     * @hidden
     * @private
     */
    isComplete: boolean;
    /**
     * @hidden
     * @private
     */
    private gridSize;
    private parentCell;
    private parentCellIndex;
    tempWidth: number;
    private childheight;
    /**
     * The event raised on `starting cell drawing`.
     * @event
     * @private
     */
    beginCellDraw: Function;
    /**
     * The event raised on `ending cell drawing`.
     * @event
     * @private
     */
    endCellDraw: Function;
    /**
     * The event raised on `begin cell lay outing`.
     * @event
     * @private
     */
    beginPageLayout: Function;
    /**
     * The event raised on `end cell lay outing`.
     * @event
     * @private
     */
    endPageLayout: Function;
    /**
     * @hidden
     * @private
     */
    /**
     * @hidden
     * @private
     */
    private gridLocation;
    /**
     * @hidden
     * @private
     */
    private gridStyle;
    /**
     * @hidden
     * @private
     */
    private pageWidth;
    /**
     * Check weather it is `child grid or not`.
     * @private
     */
    private isChildGrid;
    /**
     * @hidden
     * @private
     */
    rowLayoutBoundsWidth: number;
    /**
     * @hidden
     * @private
     */
    hasRowSpanSpan: boolean;
    /**
     * @hidden
     * @private
     */
    isRearranged: boolean;
    /**
     * @hidden
     * @private
     */
    private bRepeatHeader;
    /**
     * @hidden
     * @private
     */
    private pageBounds;
    /**
     * @hidden
     * @private
     */
    private currentPage;
    /**
     * @hidden
     * @private
     */
    private currentPageBounds;
    /**
     * @hidden
     * @private
     */
    private currentBounds;
    /**
     * @hidden
     * @private
     */
    private listOfNavigatePages;
    /**
     * @hidden
     * @private
     */
    private startLocation;
    /**
     * @hidden
     * @private
     */
    private hType;
    /**
     * @hidden
     * @private
     */
    private flag;
    /**
     * @hidden
     * @private
     */
    private columnRanges;
    /**
     * @hidden
     * @private
     */
    private cellStartIndex;
    /**
     * @hidden
     * @private
     */
    private cellEndIndex;
    /**
     * @hidden
     * @private
     */
    private currentRowIndex;
    /**
     * @hidden
     * @private
     */
    static repeatRowIndex: number;
    /**
     * @hidden
     * @private
     */
    private isChanged;
    /**
     * @hidden
     * @private
     */
    private currentLocation;
    /**
     * @hidden
     * @private
     */
    private breakRow;
    /**
     * @hidden
     * @private
     */
    private rowBreakPageHeightCellIndex;
    private slr;
    private remainderText;
    private isPaginate;
    /**
     * Initialize a new instance for `PdfGrid` class.
     * @private
     */
    constructor(baseFormat: PdfGrid);
    readonly Grid: PdfGrid;
    /**
     * `Bounds` of the text.
     * @private
     */
    private rectangle;
    /**
     * Pdf page `height`.
     * @private
     */
    private gridHeight;
    /**
     * Specifies if [`isTabReplaced`].
     * @private
     */
    private isTabReplaced;
    /**
     * `currentGraphics` of the text.
     * @private
     */
    private currentGraphics;
    /**
     * Count of tab `occurance`.
     * @private
     */
    private tabOccuranceCount;
    /**
     * Checks whether the x co-ordinate is need to set as client size or not.
     * @hidden
     * @private
     */
    private isOverloadWithPosition;
    /**
     * Stores client size of the page if the layout method invoked with `PointF` overload.
     * @hidden
     * @private
     */
    private clientSize;
    private gridLayoutFormat;
    private isHeader;
    /**
     * Initializes a new instance of the `StringLayouter` class.
     * @private
     */
    /**
     * `Layouts` the text.
     * @private
     */
    /**
     * `Layouts` the specified graphics.
     * @private
     */
    /**
     * `Layouts` the specified graphics.
     * @private
     */
    /**
     * Gets the `format`.
     * @private
     */
    private getFormat;
    /**
     * `Layouts` the element.
     * @private
     */
    protected layoutInternal(param: PdfLayoutParams): PdfLayoutResult;
    /**
     * `Determines the column draw ranges`.
     * @private
     */
    private determineColumnDrawRanges;
    /**
     * `Layouts the on page`.
     * @private
     */
    private layoutOnPage;
    private checkIsFisished;
    /**
     * Gets the `next page`.
     * @private
     */
    getNextPageformat(format: PdfLayoutFormat): PdfPage;
    private CheckIfDefaultFormat;
    /**
     * `Raises BeforeCellDraw event`.
     * @private
     */
    private RaiseBeforeCellDraw;
    /**
     * `Raises AfterCellDraw event`.
     * @private
     */
    private raiseAfterCellDraw;
    private reArrangePages;
    /**
     * Gets the `layout result`.
     * @private
     */
    private getLayoutResult;
    /**
     * `Recalculate row height` for the split cell to be drawn.
     * @private
     */
    ReCalculateHeight(row: PdfGridRow, height: number): number;
    /**
     * `Raises BeforePageLayout event`.
     * @private
     */
    private raiseBeforePageLayout;
    /**
     * `Raises PageLayout event` if needed.
     * @private
     */
    private raisePageLayouted;
    private drawRow;
    private isFitToCell;
    /**
     * `Draws row`
     * @private
     */
    private drawRowWithBreak;
}
/**
 * `Initializes` internal data.
 * @private
 */
export declare class PdfGridLayoutResult extends PdfLayoutResult {
    /**
     * Constructor
     * @private
     */
    constructor(page: PdfPage, bounds: RectangleF);
}
/**
 * `PdfGridLayoutFormat` class represents a flexible grid that consists of columns and rows.
 */
export declare class PdfGridLayoutFormat extends PdfLayoutFormat {
    /**
     * Initializes a new instance of the `PdfGridLayoutFormat` class.
     * @private
     */
    constructor();
    /**
     * Initializes a new instance of the `PdfGridLayoutFormat` class.
     * @private
     */
    constructor(baseFormat: PdfLayoutFormat);
}
export declare abstract class GridCellEventArgs {
    /**
     * @hidden
     * @private
     */
    private gridRowIndex;
    /**
     * @hidden
     * @private
     */
    private gridCellIndex;
    /**
     * @hidden
     * @private
     */
    private internalValue;
    /**
     * @hidden
     * @private
     */
    private gridBounds;
    /**
     * @hidden
     * @private
     */
    private pdfGraphics;
    /**
     * Gets the value of current `row index`.
     * @private
     */
    readonly rowIndex: number;
    /**
     * Gets the value of current `cell index`.
     * @private
     */
    readonly cellIndex: number;
    /**
     * Gets the actual `value` of current cell.
     * @private
     */
    readonly value: string;
    /**
     * Gets the `bounds` of current cell.
     * @private
     */
    readonly bounds: RectangleF;
    /**
     * Gets the instance of `current graphics`.
     * @private
     */
    readonly graphics: PdfGraphics;
    /**
     * Initialize a new instance for `GridCellEventArgs` class.
     * @private
     */
    constructor(graphics: PdfGraphics, rowIndex: number, cellIndex: number, bounds: RectangleF, value: string);
}
export declare class PdfGridBeginCellDrawEventArgs extends GridCellEventArgs {
    /**
     * @hidden
     * @private
     */
    private bSkip;
    /**
     * @hidden
     * @private
     */
    private cellStyle;
    /**
     * Gets or sets a value indicating whether the value of this cell should be `skipped`.
     * @private
     */
    skip: boolean;
    /**
     * Gets or sets a `style` value of the cell.
     * @private
     */
    style: PdfGridCellStyle;
    /**
     * Initializes a new instance of the `StartCellLayoutEventArgs` class.
     * @private
     */
    constructor(graphics: PdfGraphics, rowIndex: number, cellIndex: number, bounds: RectangleF, value: string, style: PdfGridCellStyle);
}
export declare class PdfGridEndCellDrawEventArgs extends GridCellEventArgs {
    /**
     * @hidden
     * @private
     */
    private cellStyle;
    /**
     * Get the `PdfGridCellStyle`.
     * @private
     */
    readonly style: PdfGridCellStyle;
    /**
     * Initializes a new instance of the `PdfGridEndCellLayoutEventArgs` class.
     * @private
     */
    constructor(graphics: PdfGraphics, rowIndex: number, cellIndex: number, bounds: RectangleF, value: string, style: PdfGridCellStyle);
}
export declare class PdfCancelEventArgs {
    /**
     * @hidden
     * @private
     */
    private isCancel;
    /**
     * Gets and Sets the value of `cancel`.
     * @private
     */
    cancel: boolean;
}
export declare class BeginPageLayoutEventArgs extends PdfCancelEventArgs {
    /**
     * The `bounds` of the lay outing on the page.
     * @private
     */
    private cellBounds;
    /**
     * `Page` where the lay outing should start.
     * @private
     */
    private pdfPage;
    /**
     * Gets or sets value that indicates the lay outing `bounds` on the page.
     * @private
     */
    bounds: RectangleF;
    /**
     * Gets the `page` where the lay outing should start.
     * @private
     */
    readonly page: PdfPage;
    /**
     * Initializes a new instance of the `BeginPageLayoutEventArgs` class with the specified rectangle and page.
     * @private
     */
    constructor(bounds: RectangleF, page: PdfPage);
}
/**
 * `EndPageLayoutEventArgs` class is alternate for end page layout events.
 */
export declare class EndPageLayoutEventArgs extends PdfCancelEventArgs {
    /**
     * `Layout result`.
     * @private
     */
    private layoutResult;
    /**
     * The `next page` for lay outing.
     * @private
     */
    private nextPdfPage;
    /**
     * Gets the lay outing `result` of the page.
     * @private
     */
    readonly result: PdfLayoutResult;
    /**
     * Gets or sets a value indicating the `next page` where the element should be layout.
     * @private
     */
    nextPage: PdfPage;
    /**
     * Initializes a new instance of the `EndPageLayoutEventArgs` class. with the specified 'PdfLayoutResult'.
     * @private
     */
    constructor(result: PdfLayoutResult);
}
/**
 * `PdfGridBeginPageLayoutEventArgs` class is alternate for begin page layout events.
 */
export declare class PdfGridBeginPageLayoutEventArgs extends BeginPageLayoutEventArgs {
    /**
     * @hidden
     * @private
     */
    private startRow;
    /**
     * Gets the `start row index`.
     * @private
     */
    readonly startRowIndex: number;
    /**
     * Initialize a new instance of `PdfGridBeginPageLayoutEventArgs` class.
     * @private
     */
    constructor(bounds: RectangleF, page: PdfPage, startRow: number);
}
/**
 * `PdfGridEndPageLayoutEventArgs` class is alternate for begin page layout events.
 */
export declare class PdfGridEndPageLayoutEventArgs extends EndPageLayoutEventArgs {
    /**
     * Initialize a new instance of `PdfGridEndPageLayoutEventArgs` class.
     * @private
     */
    constructor(result: PdfLayoutResult);
}
export declare class RowLayoutResult {
    /**
     * @hidden
     * @private
     */
    private bIsFinished;
    /**
     * @hidden
     * @private
     */
    private layoutedBounds;
    /**
     * Gets or sets a value indicating whether this instance `is finish`.
     * @private
     */
    isFinish: boolean;
    /**
     * Gets or sets the `bounds`.
     * @private
     */
    bounds: RectangleF;
    /**
     * Initializes a new instance of the `RowLayoutResult` class.
     * @private
     */
    constructor();
}
