import type { RoleRecord } from './rbac'; /** * Idempotently seed the three default role packs. Existing role records * with the same `(name, guard_name)` are left untouched. * * Throws only if the underlying `createRole` throws for a reason other * than a unique-constraint race (the BqbRbacStore's `swallowDuplicate` * already handles that case). Caller should typically log the error and * surface it — a missing roles table means the migrations haven't run * yet, which is a different bug than a seeder failure. */ export declare function seedDefaultRoles(): Promise; /** * The role packs every Stacks install starts with. `useRole()`'s built-in * predicates (`isAdmin`, `isDev`, `isClient`) check these names verbatim, * so renaming them in a project effectively unbinds the composable from * its defaults — that's fine, but obvious to readers. * @defaultValue `[ { name: 'admin', guard_name: 'web', description: 'Full access. Sees every dashboard surface, every model, every infra control.', }, { name: 'dev', guard_name: 'web', description: 'Developer / infra. Sees dev-mode surfaces (CI, query inspector, runner alerts) but not billing/admin-only management.', }, { name: 'client', guard_name: 'web', description: 'End user / client. Sees content, orders, profile, billing - no dev tools, no infra surfaces.', }, ]` */ export declare const DEFAULT_ROLE_PACKS: Array<{ name: string, guard_name: string, description: string }>; export declare interface SeedDefaultRolesResult { created: RoleRecord[] skipped: Array<{ name: string, guard_name: string, reason: 'already_exists' }> }