/**
 * @license
 * Copyright Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { ISplitViewPanelCursorConfig, ISplitViewPanelState, SplitViewInputDeviceType } from './split-view-panel-constants';
import { ISplitViewPanelAdapter } from './split-view-panel-adapter';
import { SplitViewOrientation } from '../split-view/split-view-constants';
import { ISplitViewPanelComponent, SplitViewPanelComponent } from './split-view-panel';
/**
 * Creates a default split view panel state object.
 * @returns A new state object.
 */
export declare function initState(): ISplitViewPanelState;
/**
 * Gets a state object reflecting the panel's parameters at the beginning of a resize.
 * @param adapter The panel's adapter.
 * @param state The panel's state object.
 * @returns An updated state object.
 */
export declare function setState(adapter: ISplitViewPanelAdapter, state: ISplitViewPanelState): ISplitViewPanelState;
/**
 * Gets a state object with all properties related to a resize reset to default.
 * @param state The panel's state object.
 * @returns An updated state object.
 */
export declare function clearState(state: ISplitViewPanelState): ISplitViewPanelState;
/**
 * Performs a panel resize triggered by a pointer event.
 * @param adapter The panel's adapter.
 * @param evt The pointer event.
 * @param state The panel's state object.
 * @returns Whether a resize happened.
 */
export declare function pointerResize(adapter: ISplitViewPanelAdapter, evt: PointerEvent, state: ISplitViewPanelState): boolean;
/**
 * Performs a panel resize triggered by a keyboard event.
 * @param adapter The panel's adapter.
 * @param increment The pixel amount to change the panel's size.
 * @param state The panel's state object.
 * @returns Whether a resize happened.
 */
export declare function keyboardResize(adapter: ISplitViewPanelAdapter, increment: number, state: ISplitViewPanelState): boolean;
/**
 * Resizes a panel to its minimum possible size.
 * @param adapter The panel's adapter.
 * @param state The panel's state object.
 * @returns The new pixel size of the panel.
 */
export declare function minResize(adapter: ISplitViewPanelAdapter, state: ISplitViewPanelState): number;
/**
 * Resizes a panel to its maximum possible size.
 * @param adapter The panel's adapter.
 * @param state The panel's state object.
 * @returns The new pixel size of the panel.
 */
export declare function maxResize(adapter: ISplitViewPanelAdapter, state: ISplitViewPanelState): number;
/**
   * Sets a panel's sibling's size to reflect changes in the panel's size.
   * @param adapter The panel's adapter.
   * @param delta The change in size to apply to the sibling.
   * @param state The panel's state object.
   */
export declare function resizeSibling(adapter: ISplitViewPanelAdapter, delta: number, state: ISplitViewPanelState): void;
/**
   * Returns a size limited to an allowed range.
   * @param size The size to try setting this panel to.
   * @param state The panel's state object.
   * @returns A pixel value.
   */
export declare function clampSize(size: number, state: ISplitViewPanelState): number;
/**
   * Checks whether a panel is at its min or max size while resizing and runs logic related to
   * that once.
   * @param adapter The panel's adapter.
   * @param state The panel's state object.
   * @param inputDevice The input device responsible for the resize.
   * @returns Whether the panel is at its min or max size.
   */
export declare function handleBoundariesDuringResize(adapter: ISplitViewPanelAdapter, state: ISplitViewPanelState, inputDevice?: SplitViewInputDeviceType): boolean;
/**
   * Checks whether a panel is at its min or max size while not resizing and runs logic related to
   * that once.
   * @param adapter The panel's adapter.
   * @param size The panel's size.
   * @param state The panel's state object.
   * @returns Whether the panel is at its min or max size.
   */
export declare function handleBoundariesAfterResize(adapter: ISplitViewPanelAdapter, size: number, state: ISplitViewPanelState): boolean;
/**
   * Gets the accessible valuenow of a panel.
   * @param size The panel's size in pixels.
   * @param state The panel's state object.
   */
export declare function getValuenow(size: number, state: ISplitViewPanelState): number;
/**
 * Gets the appropriate cursor for the handle orientation.
 * @param orientation
 * @returns A CSS cursor keyword value.
 */
export declare function getCursor(orientation: SplitViewOrientation, config?: ISplitViewPanelCursorConfig): string;
/**
 * Gets the approporate drag icon for the handle orientation.
 * @param orientation
 * @returns A Forge icon name.
 */
export declare function getHandleIcon(orientation: SplitViewOrientation): string;
/**
 * Gets the panel that the given panel resizes into.
 * @param el A split view panel.
 * @returns A sibling split view panel or undefined if there is not a sibling.
 */
export declare function getSplitViewPanelSibling(el: ISplitViewPanelComponent): SplitViewPanelComponent | undefined;
/**
 * Extracts a size and unit from a `number` or `string` formatted as a CSS dimension using px or %.
 * A `number` is interpreted to be a pixel value.
 * @param value A `number` or `string` representing a size in pixels or percent.
 * @returns An object containing the parsed size and unit.
 */
export declare function parseSize(value: number | string): {
    amount: number;
    unit: 'px' | '%' | '';
};
/**
 * Gets a pixel size value from a pixel or percent value.
 * @param value A `number` or `string` representing a size in pixels or percent.
 * @param parentSize The pixel size of the parent container along the relevant axis.
 * @returns A pixel amount.
 */
export declare function getPixelDimension(value: number | string, parentSize: number): number;
/**
 * Creates a transparent element to overlay on top of the document body, ensuring the split view
 * behaves as expected when dragging over other contexts.
 * @returns An overlay element.
 */
export declare function createOverlay(): HTMLElement;
