import { Axis, Placement } from "./axes.mjs";
import { MotionValue } from "motion/react";
//#region src/base-ui/DraggablePanel/core/controller.d.ts
interface PanelControllerOptions {
  collapseThreshold?: number;
  defaultSize: number;
  expand: boolean;
  max?: number;
  min: number;
  onExpandChange?: (expand: boolean) => void;
  onSizeChange?: (size: number, delta: number) => void;
  onSizeDragging?: (size: number, delta: number) => void;
  placement: Placement;
  size: number;
}
interface PanelState {
  collapsing: boolean;
  dragging: boolean;
  folding: boolean;
}
interface PanelKeyEvent {
  key: string;
  preventDefault: () => void;
  shiftKey: boolean;
}
interface PanelController {
  attach: (element: HTMLElement) => () => void;
  axis: Axis;
  bounds: () => {
    max: number;
    min: number;
  };
  drag: {
    cancel: () => void;
    end: () => void;
    move: (offset: {
      x: number;
      y: number;
    }) => void;
    start: () => void;
  };
  motion: {
    content: MotionValue<number>;
    size: MotionValue<number>;
  };
  options: PanelControllerOptions;
  reset: () => void;
  resizeByKey: (event: PanelKeyEvent) => void;
  state: PanelState;
  subscribe: (listener: () => void) => () => void;
  sync: (options: PanelControllerOptions) => void;
  target: number;
}
//#endregion
export { PanelController, PanelControllerOptions, PanelKeyEvent, PanelState };
//# sourceMappingURL=controller.d.mts.map