| import BoundingRect from 'zrender/lib/core/BoundingRect.js'; | 
| import { BoxLayoutOptionMixin, ComponentLayoutMode } from './types.js'; | 
| import Group from 'zrender/lib/graphic/Group.js'; | 
| import Element from 'zrender/lib/Element.js'; | 
| export interface LayoutRect extends BoundingRect { | 
|     margin: number[]; | 
| } | 
| export interface NewlineElement extends Element { | 
|     newline: boolean; | 
| } | 
| /** | 
|  * @public | 
|  */ | 
| export declare const LOCATION_PARAMS: readonly ["left", "right", "top", "bottom", "width", "height"]; | 
| /** | 
|  * @public | 
|  */ | 
| export declare const HV_NAMES: readonly [readonly ["width", "left", "right"], readonly ["height", "top", "bottom"]]; | 
| declare function boxLayout(orient: 'horizontal' | 'vertical', group: Group, gap: number, maxWidth?: number, maxHeight?: number): void; | 
| /** | 
|  * VBox or HBox layouting | 
|  * @param {string} orient | 
|  * @param {module:zrender/graphic/Group} group | 
|  * @param {number} gap | 
|  * @param {number} [width=Infinity] | 
|  * @param {number} [height=Infinity] | 
|  */ | 
| export declare const box: typeof boxLayout; | 
| /** | 
|  * VBox layouting | 
|  * @param {module:zrender/graphic/Group} group | 
|  * @param {number} gap | 
|  * @param {number} [width=Infinity] | 
|  * @param {number} [height=Infinity] | 
|  */ | 
| export declare const vbox: (group: Group, gap: number, maxWidth?: number, maxHeight?: number) => void; | 
| /** | 
|  * HBox layouting | 
|  * @param {module:zrender/graphic/Group} group | 
|  * @param {number} gap | 
|  * @param {number} [width=Infinity] | 
|  * @param {number} [height=Infinity] | 
|  */ | 
| export declare const hbox: (group: Group, gap: number, maxWidth?: number, maxHeight?: number) => void; | 
| /** | 
|  * If x or x2 is not specified or 'center' 'left' 'right', | 
|  * the width would be as long as possible. | 
|  * If y or y2 is not specified or 'middle' 'top' 'bottom', | 
|  * the height would be as long as possible. | 
|  */ | 
| export declare function getAvailableSize(positionInfo: { | 
|     left?: number | string; | 
|     top?: number | string; | 
|     right?: number | string; | 
|     bottom?: number | string; | 
| }, containerRect: { | 
|     width: number; | 
|     height: number; | 
| }, margin?: number[] | number): { | 
|     width: number; | 
|     height: number; | 
| }; | 
| /** | 
|  * Parse position info. | 
|  */ | 
| export declare function getLayoutRect(positionInfo: BoxLayoutOptionMixin & { | 
|     aspect?: number; | 
| }, containerRect: { | 
|     width: number; | 
|     height: number; | 
| }, margin?: number | number[]): LayoutRect; | 
| /** | 
|  * Position a zr element in viewport | 
|  *  Group position is specified by either | 
|  *  {left, top}, {right, bottom} | 
|  *  If all properties exists, right and bottom will be igonred. | 
|  * | 
|  * Logic: | 
|  *     1. Scale (against origin point in parent coord) | 
|  *     2. Rotate (against origin point in parent coord) | 
|  *     3. Traslate (with el.position by this method) | 
|  * So this method only fixes the last step 'Traslate', which does not affect | 
|  * scaling and rotating. | 
|  * | 
|  * If be called repeatly with the same input el, the same result will be gotten. | 
|  * | 
|  * Return true if the layout happend. | 
|  * | 
|  * @param el Should have `getBoundingRect` method. | 
|  * @param positionInfo | 
|  * @param positionInfo.left | 
|  * @param positionInfo.top | 
|  * @param positionInfo.right | 
|  * @param positionInfo.bottom | 
|  * @param positionInfo.width Only for opt.boundingModel: 'raw' | 
|  * @param positionInfo.height Only for opt.boundingModel: 'raw' | 
|  * @param containerRect | 
|  * @param margin | 
|  * @param opt | 
|  * @param opt.hv Only horizontal or only vertical. Default to be [1, 1] | 
|  * @param opt.boundingMode | 
|  *        Specify how to calculate boundingRect when locating. | 
|  *        'all': Position the boundingRect that is transformed and uioned | 
|  *               both itself and its descendants. | 
|  *               This mode simplies confine the elements in the bounding | 
|  *               of their container (e.g., using 'right: 0'). | 
|  *        'raw': Position the boundingRect that is not transformed and only itself. | 
|  *               This mode is useful when you want a element can overflow its | 
|  *               container. (Consider a rotated circle needs to be located in a corner.) | 
|  *               In this mode positionInfo.width/height can only be number. | 
|  */ | 
| export declare function positionElement(el: Element, positionInfo: BoxLayoutOptionMixin, containerRect: { | 
|     width: number; | 
|     height: number; | 
| }, margin?: number[] | number, opt?: { | 
|     hv: [1 | 0 | boolean, 1 | 0 | boolean]; | 
|     boundingMode: 'all' | 'raw'; | 
| }, out?: { | 
|     x?: number; | 
|     y?: number; | 
| }): boolean; | 
| /** | 
|  * @param option Contains some of the properties in HV_NAMES. | 
|  * @param hvIdx 0: horizontal; 1: vertical. | 
|  */ | 
| export declare function sizeCalculable(option: BoxLayoutOptionMixin, hvIdx: number): boolean; | 
| export declare function fetchLayoutMode(ins: any): ComponentLayoutMode; | 
| /** | 
|  * Consider Case: | 
|  * When default option has {left: 0, width: 100}, and we set {right: 0} | 
|  * through setOption or media query, using normal zrUtil.merge will cause | 
|  * {right: 0} does not take effect. | 
|  * | 
|  * @example | 
|  * ComponentModel.extend({ | 
|  *     init: function () { | 
|  *         ... | 
|  *         let inputPositionParams = layout.getLayoutParams(option); | 
|  *         this.mergeOption(inputPositionParams); | 
|  *     }, | 
|  *     mergeOption: function (newOption) { | 
|  *         newOption && zrUtil.merge(thisOption, newOption, true); | 
|  *         layout.mergeLayoutParam(thisOption, newOption); | 
|  *     } | 
|  * }); | 
|  * | 
|  * @param targetOption | 
|  * @param newOption | 
|  * @param opt | 
|  */ | 
| export declare function mergeLayoutParam<T extends BoxLayoutOptionMixin>(targetOption: T, newOption: T, opt?: ComponentLayoutMode): void; | 
| /** | 
|  * Retrieve 'left', 'right', 'top', 'bottom', 'width', 'height' from object. | 
|  */ | 
| export declare function getLayoutParams(source: BoxLayoutOptionMixin): BoxLayoutOptionMixin; | 
| /** | 
|  * Retrieve 'left', 'right', 'top', 'bottom', 'width', 'height' from object. | 
|  * @param {Object} source | 
|  * @return {Object} Result contains those props. | 
|  */ | 
| export declare function copyLayoutParams(target: BoxLayoutOptionMixin, source: BoxLayoutOptionMixin): BoxLayoutOptionMixin; | 
| export {}; |