import { type Kysely } from 'kysely'; /** * Menus, and the items in them. * * The point of the design is that a menu item **references** its target rather than storing a URL. * A page moved from /admissions to /admission-office keeps its menu entry pointing at the right * place, because the path is resolved from `content_items.path` at render time. Storing the URL * would mean every move silently broke the navigation — which is the same failure the redirects * table exists to prevent, and it would be strange to solve it in one place and not the other. * * Three target kinds, discriminated by `target_type` with one nullable column each: * * - `item` — a content item. Follows moves, and drops out of the public menu when unpublished. * - `term` — a taxonomy term, for a term archive page. * - `url` — anything external, or a path this CMS does not own. * * A CHECK constraint would be the tidier way to enforce "exactly the matching column is set", but * a rejected save has to name the half-filled target rather than a constraint, so it is validated in the * service instead, where the error message can say something useful. */ export declare function up(db: Kysely): Promise; export declare function down(db: Kysely): Promise;