import type { AppSection } from './app-sections';
/**
 * The roles here are duplicates of the roles in the database.
 * It needs to be here, in the types package, so it can be used in all packages.
 * If we pull it in from `@knapsack/hasura-gql-client`, which is the source, we get a dependency cycle. So we do it this way.
 * If the roles change in the database, we need to change them here too. We will get a build error if we don't (see code in `@knapsack/hasura-gql-client`).
 */
export type Role = 'ADMIN' | 'CONTRIBUTOR' | 'CONSUMER' | 'VIEWER' | 'ANONYMOUS'
/**
 * These are not used, but exist in the DB
 * @todo: remove unused roles from database
 * @link https://linear.app/knapsack/issue/KSP-5991/remove-unused-roles-from-database
 */
 | 'EDITOR' | 'MANAGER';
export type RolePermissions = {
    canManageUsers: boolean;
    canDelete: boolean;
    canEdit: boolean;
    canPublish: boolean;
    canView: boolean;
};
export type RoleSectionAccess = Record<AppSection, {
    canView: boolean;
    canEdit: boolean;
}>;
export type RoleInfo = {
    id: Role;
    title: string;
    hierarchy: number;
    permissions: RolePermissions;
    sectionAccess: RoleSectionAccess;
};
export declare const rolesById: Record<Role, RoleInfo>;
export declare const roles: RoleInfo[];
//# sourceMappingURL=user-roles.d.ts.map