import { EventEmitter, ComponentInterface } from '../../stencil-public-runtime';
/**
 * Split panes display two adjacent panels, allowing the user to reposition them.
 *
 * @version 2.0.0
 * @status stable
 *
 * @part start - The start panel.
 * @part end - The end panel.
 * @part panel - Targets both the start and end panels.
 * @part divider - The divider that separates the start and end panels.
 *
 * @slot start - The start panel.
 * @slot end - The end panel.
 * @slot handle - An optional handle to render at the center of the divider.
 */
export declare class SplitPane implements ComponentInterface {
    host: HTMLNanoSplitPaneElement;
    private cachedPositionInPixels;
    private ro;
    private isAnimating;
    private didLoad;
    private get size();
    private get shouldAnimate();
    private set shouldAnimate(value);
    private _shouldAnimate;
    constructor();
    /**
     * The current position of the divider from the primary panel's edge
     * as a percentage 0-100. Defaults to 50% of the container's initial size.
     */
    get position(): number;
    set position(pos: number);
    private _position;
    handlePositionChange(): void;
    /**
     * The current position of the divider from the primary panel's edge in pixels.
     */
    positionInPixels: number;
    handlePositionInPixelsChange(): void;
    /** Draws the split panel in a vertical orientation with the start and end panels stacked. */
    vertical: boolean;
    /** Disables resizing. Note that the position may still change as a result of resizing the host element. */
    disabled: boolean;
    /**
     * If no primary panel is designated, both panels will resize proportionally when the host element is resized. If a
     * primary panel is designated, it will maintain its size and the other panel will grow or shrink as needed when the
     * host element is resized.
     */
    primary?: 'start' | 'end';
    /**
     * One or more space-separated values at which the divider should snap. Values can be in pixels or percentages, e.g.
     * `"100px 50%"`.
     */
    snap?: string;
    /** How close the divider must be to a snap point until snapping occurs. */
    snapThreshold: number;
    /** When changing `position` via property, the pane will animate into position. Make `animationDuration` 0 to disable. */
    animationDuration: number;
    /** Emitted when the divider's position changes. */
    nanoReposition: EventEmitter;
    /** Emitted when the divider is being dragged. */
    nanoDragging: EventEmitter<number>;
    /**
     * Utility to convert % to pixels
     * @param value to convert
     * @returns converted value as pixels
     */
    getPercentageToPixels(value: number): Promise<number>;
    /**
     * Utility to convert pixels to % (`position`)
     * @param value to convert
     * @returns converted value as a %
     */
    getPixelsToPercentage(value: number): Promise<number>;
    private animatePosition;
    private percentageToPixels;
    private pixelsToPercentage;
    private attachRO;
    private detachRO;
    private handleDrag;
    private handleKeyDown;
    private handleResize;
    componentDidLoad(): void;
    connectedCallback(): void;
    disconnectedCallback(): void;
    componentDidRender(): void;
    render(): any;
}
