import type { RoleLevel } from '../types/roles';
import { type Scope, type ScopeName } from '../types/scopes';
export declare const getOrganizationOnlyScopes: () => ScopeName[];
export declare const isOrganizationOnlyScope: (scopeName: string) => boolean;
export declare const getOrgAssignableScopes: () => ScopeName[];
export declare const isOrgAssignableScope: (scopeName: string) => boolean;
export declare const isScopeAssignableAtLevel: (scopeName: string, level: RoleLevel) => boolean;
export declare const getScopes: ({ isEnterprise }?: {
    isEnterprise?: boolean | undefined;
}) => Scope[];
export declare const getAllScopeMap: ({ isEnterprise }?: {
    isEnterprise?: boolean | undefined;
}) => Record<ScopeName, Scope>;
type ScopeGraphOptions = {
    isEnterprise?: boolean;
};
export declare const getScopeAncestors: (scopeName: string, { isEnterprise }?: ScopeGraphOptions) => ScopeName[];
export declare const getScopeDescendants: (scopeName: string, { isEnterprise }?: ScopeGraphOptions) => ScopeName[];
export declare const getScopeSubstitutes: (scopeName: string, { isEnterprise }?: ScopeGraphOptions) => ScopeName[];
/**
 * Returns the granted scopes that coveringScopeNames does not satisfy, using
 * getScopeSubstitutes semantics (manage:X covers view:X, unmodified covers
 * @modifier variants). Organization-only scopes are excluded.
 */
export declare const getUncoveredProjectScopes: (grantedScopeNames: string[], coveringScopeNames: string[], { isEnterprise }?: ScopeGraphOptions) => ScopeName[];
export declare const getUnsatisfiedScopeDependencies: (existingScopeNames: string[], scopeName: string, { isEnterprise }?: ScopeGraphOptions) => ScopeName[];
export {};
//# sourceMappingURL=scopes.d.ts.map