/**
 *
 *2026-01-08:
 * NOTE:  THIS IS OUTDATED AND WILL BE RELACED WHEN Permissions Impossible webpart is updated.
 *
 *
 */
/**
 * IMPORT EXAMPLES FOR EXTERNAL PROJECTS:
 *
 * Main exports from this file:
 * import {
 *   getPermissionLevelsAPI,
 *   getPermissionLevelDetailsAPI,
 *   IFpsPermissionLevelsReturn,
 *   IFpsPermissionLevelInfo,
 *   IFpsPermissionLevelDetailsInfo,
 *   IFpsPermissionInfo,
 * } from '@mikezimm/fps-core-v7/lib/restAPIs/permissions/getPermissionLevelsAPI';
 *
 * Supporting imports (internal dependencies):
 * import { IFpsSpHttpServiceMIN } from '@mikezimm/fps-core-v7/lib/components/molecules/SpHttp/Sp/IFpsSpHttpServiceMIN';
 * import { check4This, Check4 } from '@mikezimm/fps-core-v7/lib/logic/Links/CheckSearch';
 * import { doSpHttpFetchOrPostAndCheck } from '@mikezimm/fps-core-v7/lib/components/molecules/SpHttp/Sp/doSpHttpFetch';
 * import { SourcePropsNoWebUrl } from '@mikezimm/fps-core-v7/lib/components/molecules/source-props/ISourceProps';
 * import { makeAbsoluteUrl } from '@mikezimm/fps-core-v7/lib/logic/Strings/getSiteCollectionUrlFromLink';
 * import { createErrorFpsListReturn } from '@mikezimm/fps-core-v7/lib/components/molecules/process-results/createErrorFpsListItemsReturn';
 * import { IPerformanceSettings } from '@mikezimm/fps-core-v7/lib/components/molecules/Performance/IPerformanceSettings';
 * import { startPerformOpV2, updatePerformanceEndV2 } from '@mikezimm/fps-core-v7/lib/components/molecules/Performance/functions';
 * import { IPerformanceOp } from '@mikezimm/fps-core-v7/lib/components/molecules/Performance/IPerformance';
 * import { IFpsErrorObject } from '@mikezimm/fps-core-v7/lib/types/fps-returns/common/IFpsErrorObject';
 * import { IRoleDefinitionInfo, IBasePermissions } from '@mikezimm/fps-core-v7/lib/types/@pnp/@2.14.0/sp/security';
 */
import { IFpsSpHttpServiceMIN } from "../../components/molecules/SpHttp/Sp/IFpsSpHttpServiceMIN";
import { IPerformanceOp } from "../../components/molecules/Performance/IPerformance";
import { IFpsErrorObject } from "../../types/fps-returns/common/IFpsErrorObject";
import { IBasePermissions } from "../../types/@pnp/@2.14.0/sp/security";
/**
 * Represents a permission level as it appears in the SharePoint UI
 * (e.g., Full Control, Design, Edit, Contribute, Read)
 */
export interface IFpsPermissionLevelInfo {
    Id: number;
    Name: string;
    Description: string;
    Hidden: boolean;
    Order: number;
    RoleTypeKind: number;
    BasePermissions: IBasePermissions;
}
/**
 * Represents an individual permission within a permission level
 * (e.g., "Manage Lists", "Add Items", "Edit Items", etc.)
 */
export interface IFpsPermissionInfo {
    name: string;
    description: string;
    enabled: boolean;
    permissionId: number;
}
/**
 * Complete permission level details including all granular permissions
 */
export interface IFpsPermissionLevelDetailsInfo extends IFpsPermissionLevelInfo {
    permissions: IFpsPermissionInfo[];
}
/**
 * Response object for permission levels API fetch
 */
export interface IFpsPermissionLevelsReturn extends IFpsErrorObject {
    permissionLevels: IFpsPermissionLevelInfo[];
    permissionLevelDetails?: IFpsPermissionLevelDetailsInfo[];
    items?: any;
    item?: any;
    fetchOp?: IPerformanceOp;
}
/**
 * 2025-01-03:  New function to fetch SharePoint Online Permission Levels
 *
 * getPermissionLevelsAPI fetches all permission levels defined at the site level
 * from the SharePoint REST API endpoint: /_api/web/RoleDefinitions
 *
 * Optionally can fetch detailed permission breakdowns for each level by
 * parsing the role settings UI or making additional API calls.
 *
 * import { getPermissionLevelsAPI } from '@mikezimm/fps-core-v7/lib/restAPIs/permissions/getPermissionLevelsAPI';
 *
 * @param fpsSpService - The SharePoint HTTP service for making API calls
 * @param webUrl - The web URL to fetch permission levels from
 * @param includeDetails - If true, fetch detailed permission info for each level (optional)
 * @param alertMe - Whether to show alert messages on error (optional)
 * @param consoleLog - Whether to log results to console (optional)
 * @returns Promise with permission levels and optional detailed permission info
 */
export declare function getPermissionLevelsAPI(fpsSpService: IFpsSpHttpServiceMIN, webUrl: string, includeDetails?: boolean, alertMe?: boolean | undefined, consoleLog?: boolean | undefined): Promise<IFpsPermissionLevelsReturn>;
/**
 * Helper function to fetch detailed permission information for a specific permission level
 * This parses the BasePermissions bits to determine which individual permissions are enabled
 *
 * @param fpsSpService - The SharePoint HTTP service
 * @param webUrl - The web URL
 * @param roleDefinitionId - The ID of the role definition to get details for
 * @param alertMe - Whether to show alerts
 * @param consoleLog - Whether to log to console
 * @returns Object with array of individual permissions and their enabled status
 */
export declare function getPermissionLevelDetailsAPI(fpsSpService: IFpsSpHttpServiceMIN, webUrl: string, roleDefinitionId: number, alertMe?: boolean | undefined, consoleLog?: boolean | undefined): Promise<{
    permissions: IFpsPermissionInfo[];
}>;
//# sourceMappingURL=getPermissionLevelsAPI.d.ts.map