/**
 * @license
 * Copyright 2023 Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { ICustomElementFoundation } from '@tylertech/forge-core';
import { ISplitViewBase } from '../core/split-view-base';
import { ISplitViewPanelComponent } from '../split-view-panel';
import { ISplitViewAdapter } from './split-view-adapter';
import { ISplitViewUpdateConfig, SplitViewOrientation } from './split-view-constants';
export interface ISplitViewFoundation extends ISplitViewBase, ICustomElementFoundation {
    orientation: SplitViewOrientation;
    layerSlottedPanels(target: ISplitViewPanelComponent): void;
    unlayerSlottedPanels(): void;
    update(config: ISplitViewUpdateConfig): void;
    refitSlottedPanels(): void;
}
export declare class SplitViewFoundation implements ISplitViewFoundation {
    private _adapter;
    private _orientation;
    private _disabled;
    private _allowClose;
    private _autoClose;
    private _autoCloseThreshold;
    private _slotListener;
    private _didOpenListener;
    private _didCloseListener;
    private _resizeObserverCallback;
    private _isInitialized;
    constructor(_adapter: ISplitViewAdapter);
    initialize(): void;
    disconnect(): void;
    private _onSlotChange;
    private _onDidOpen;
    private _onDidClose;
    private _onResize;
    /**
     * Sets the resizable value of slotted panels with no resizable value set.
     */
    private _layoutSlottedPanels;
    /**
     * Get/set whether panels are arranged horizontally or vertically.
     */
    get orientation(): SplitViewOrientation;
    set orientation(value: SplitViewOrientation);
    private _applyOrientation;
    /**
     * Get/set whether interactions are disabled.
     */
    get disabled(): boolean;
    set disabled(value: boolean);
    private _applyDisabled;
    /**
     * Get/set whether closing the panel is disabled.
     */
    get allowClose(): boolean;
    set allowClose(value: boolean);
    private _applyAllowClose;
    /**
     * Get/set whether the panel closes when a threshold size is reached.
     */
    get autoClose(): boolean;
    set autoClose(value: boolean);
    private _applyAutoClose;
    /**
     * Get/set the size at which panels auto close.
     */
    get autoCloseThreshold(): number;
    set autoCloseThreshold(value: number);
    private _applyAutoCloseThreshold;
    /**
     * Layers panels in a set order during an animation. Panels that the target is animating toward
     * stack above it and other layers stack under it.
     * @param target The animating panel.
     */
    layerSlottedPanels(target: ISplitViewPanelComponent): void;
    /**
     * Removes layering after an animation.
     */
    unlayerSlottedPanels(): void;
    /**
     * Updates the provided characteristics of each panel.
     * @param config An update configuration.
     */
    update(config: ISplitViewUpdateConfig): void;
    /**
     * Resizes panels within the split view to avoid overflow.
     */
    refitSlottedPanels(): void;
}
