import type { TeamRole } from '@levelcode/common/types/team-config';
/**
 * Team roles ordered from lowest to highest authority.
 * Index 0 is the lowest level (intern), last element is the highest (cto).
 *
 * Specialist roles (researcher, scientist, designer, product-lead, tester)
 * are placed alongside their equivalent IC/management level.
 */
export declare const ROLE_HIERARCHY: TeamRole[];
/**
 * Get the numeric authority level for a role.
 * 0 = intern (lowest), 13 = CTO (highest).
 */
export declare function getRoleLevel(role: TeamRole): number;
/**
 * Returns true if the manager role has authority over the subordinate role.
 * A role can manage any role with a strictly lower level.
 */
export declare function canManage(managerRole: TeamRole, subordinateRole: TeamRole): boolean;
/**
 * Get the team roles that a given role is allowed to spawn as sub-agents.
 * Returns an empty array for roles that cannot spawn other team agents.
 */
export declare function getSpawnableRoles(role: TeamRole): TeamRole[];
