export type { Actor } from './authz.js'
export { assertCanManageMenus } from './authz.js'

export {
  MenuAuthorizationError,
  MenuCycleError,
  MenuDepthExceededError,
  MenuLimitExceededError,
  MenuNotFoundError,
  MenuUrlSchemeError,
  MenuValidationError,
  isMenuAuthorizationError,
  isMenuCycleError,
  isMenuDepthExceededError,
  isMenuLimitExceededError,
  isMenuNotFoundError,
  isMenuUrlSchemeError,
  isMenuValidationError,
} from './errors.js'

export { MAX_ITEMS_PER_MENU, MAX_MENU_DEPTH } from './limits.js'

export type { MenuItemNode, MenuItemRow, MenuRow, MenuTarget } from './model.js'
export type { MenuTree } from './read.js'

export {
  menus,
  menuItems,
  menusSchema,
  menusMigrationSql,
  MENU_KEY_RE,
  type MenusSchema,
} from './schema.js'

export { createMenu, updateMenu, deleteMenu } from './menus.js'

export {
  addMenuItem,
  updateMenuItem,
  removeMenuItem,
  moveMenuItem,
  reorderMenuItems,
} from './items.js'

export { getMenuTree, listMenus } from './read.js'

export { assertAllowedMenuUrl } from './url-scheme.js'
