type SectionData = { id: string };
type ItemData = { id: string };

type SectionArgs = { section: SectionData; index: number };
type ItemArgs = { Item: ItemData; section: SectionData; index: number };

const BoardView: React.FC<{
  ref?: React.Ref<HTMLDivElement>;
  sections: SectionData[];
  renderSection: (args: SectionArgs) => React.ReactNode;
  renderSectionOverlay?: (args: SectionArgs) => React.ReactNode;
  renderItemOverlay?: (args: ItemArgs) => React.ReactNode;
  onMoveSection?: (source: SectionArgs, destination: SectionArgs) => void;
  onMoveItem?: (source: ItemArgs, destination: ItemArgs) => void;
  className?: string;
  isDragAndDropDisabled?: boolean;
}> & {
  Section: React.FC<{
    ref?: React.Ref<HTMLDivElement>;
    section: SectionData;
    items: ItemData[];
    renderItem: (args: ItemArgs) => React.ReactNode;
    isDragAndDropDisabled?: boolean;
  }>;
};

export default BoardView;
