import { type ComputedRef } from 'vue';
export interface UseSplitterPanel {
    defaultSize: number;
    min?: number;
    max?: number;
    collapsible?: boolean;
    collapseThreshold?: number;
}
export interface UseSplitterRedistributeInput {
    sizes: number[];
    panels: UseSplitterPanel[];
    handleIndex: number;
    delta: number;
}
export type UseSplitterRedistributeFn = (input: UseSplitterRedistributeInput) => number[];
export type SplitterOrientation = 'horizontal' | 'vertical';
export interface UseSplitterOptions {
    panels: ComputedRef<UseSplitterPanel[]>;
    orientation: () => SplitterOrientation;
    sizes: () => number[] | undefined;
    onSizeChange: (sizes: number[]) => void;
    onResizeStart?: (handleIndex: number) => void;
    onResizeEnd?: (handleIndex: number, sizes: number[]) => void;
    onCollapseChange?: (panelIndex: number, collapsed: boolean) => void;
    redistribute: () => 'nearest' | 'equal' | UseSplitterRedistributeFn | undefined;
    step: () => number;
    shiftStep: () => number;
    dir: () => 'ltr' | 'rtl';
    resetOnDoubleClick: () => boolean;
}
export interface UseSplitterReturnValue {
    readonly sizes: number[];
    readonly collapsed: boolean[];
    readonly activeHandle: number;
    setContainer: (node: any) => void;
    getHandleProps: (index: number) => Record<string, any>;
    setSizes: (sizes: number[]) => void;
    collapse: (panelIndex: number) => void;
    expand: (panelIndex: number) => void;
    toggleCollapse: (panelIndex: number) => void;
    reset: (handleIndex: number) => void;
}
export declare function useSplitter(options: UseSplitterOptions): UseSplitterReturnValue;
