import { ChartLayout } from '../../../types/vega-chart';
export declare type MarginType = {
  top: number;
  right: number;
  bottom: number;
  left: number;
};
export declare const DEFAULT_LAYOUT: {
  width: undefined;
  height: undefined;
  margin: MarginType;
};
export declare const DEFAULT_MARGIN_TOP_WITH_LEGENDS: number;
export declare const DEFAULT_MARGIN_LEFT_WITH_AXIS: number;
/** The ChartDimensionController class contains methods for setting and retrieving the width and height of a chart container element. */
export declare class ChartDimensionController {
  private container;
  /**
   * This is a constructor function that takes an HTMLElement as a parameter and assigns it to a private property called "container".
   *
   * @param {HTMLElement} container - The "container" parameter is a reference to an HTML element that
   * will be used as a container for the component or module being constructed. This parameter is
   * typically passed in during the instantiation of the component or module and is used to specify
   * where the component or module should be rendered in the DOM.
   */
  constructor(container: HTMLElement);
  /**
   * This function sets the width and height of a container element based on a given layout object. if the layout is null, then will not update,
   * prevent the original style is changed
   *
   * @param {ChartLayout} layout - ChartLayout object that contains the width and height values for the chart container.
   */
  setContainerWidthAndHeight(layout: ChartLayout): void;
  /**
   * This function returns the client width of a container or parses the width from a layout object.
   *
   * @param {ChartLayout} layout - In this function, the layout parameter is used to determine the width of the chart container. If the container's
   * clientWidth property is not available,
   * @returns {number} returning a number. The number is either the client width of the container element or the parsed width value from the `ChartLayout` object.
   */
  getContainerClientWidth(layout?: ChartLayout): number;
  /**
   * This function returns the height of a container element in pixels, either by accessing its clientHeight property or by parsing a string value from the layout object.
   *
   * @param {ChartLayout} layout -  the layout parameter is used to determine the height of the chart container if it is not already set.
   * @returns {number} The function `getContainerClientHeight` returns a number which represents the height of
   * the container client or the parsed height value from the `ChartLayout` object.
   */
  getContainerClientHeight(layout?: ChartLayout): number;
  /**
   * This function calculates the inner width of a chart container by subtracting the left and right margins from the client width.
   *
   * @param {ChartLayout} layout - ChartLayout object that contains information about the chart layout,
   * including the container width and margin.
   * @returns {number} the inner width of a container element, which is calculated by subtracting the left and
   * right margins from the client width of the container.
   */
  getContainerInnerWidth(layout?: ChartLayout): number;
  /**
   * This function calculates the inner height of a chart container by subtracting the top and bottom margins from the client height.
   *
   * @param {ChartLayout} layout - The `layout` parameter is an object of type `ChartLayout` which
   * contains information about the layout of a chart, including its dimensions and margins.
   * @returns {number} the inner height of a container element, which is calculated by subtracting the top and
   * bottom margins from the client height of the container. The returned value is a number.
   */
  getContainerInnerHeight(layout?: ChartLayout): number;
  /**
   * This function merges a given chart layout with default values and returns the updated layout.
   *
   * @param {string} chartName - A string representing the name of the chart.
   * @param {ChartLayout} layout - The `layout` parameter is an optional object that contains properties
   * for the width, height, and margin of a chart. If provided, it will be merged with the default
   * layout settings to create a new layout object. If not provided, the default layout settings will be
   * used.
   * @param {boolean} hasLegends - A boolean value indicating whether the chart has legends or not.
   * @returns {ChartLayout} a ChartLayout object.
   */
  mergeLayout(chartName: string, layout: ChartLayout | undefined, hasLegends: boolean): ChartLayout;
}
