/** * Permissions Policy Handler * * P1 - Permissions Policy (formerly Feature Policy) management * * Supports: * - Permissions-Policy header parsing * - Feature availability checking * - Allowlist validation * - Policy inheritance detection * - iframe-specific policies * * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Permissions_Policy */ export type PermissionsPolicyFeature = 'accelerometer' | 'ambient-light-sensor' | 'autoplay' | 'battery' | 'camera' | 'clipboard-read' | 'clipboard-write' | 'compute-pressure' | 'display-capture' | 'document-domain' | 'encrypted-media' | 'execution-while-out-of-viewport' | 'execution-while-not-rendered' | 'focus-without-user-activation' | 'fullscreen' | 'gamepad' | 'geolocation' | 'gyroscope' | 'hid' | 'identity-credentials-get' | 'idle-detection' | 'local-fonts' | 'magnetometer' | 'microphone' | 'midi' | 'otp-credentials' | 'payment' | 'picture-in-picture' | 'publickey-credentials-get' | 'screen-wake-lock' | 'serial' | 'smartcard' | 'storage-access' | 'sync-xhr' | 'touch' | 'usb' | 'web-share' | 'window-management' | 'xr-spatial-tracking'; export interface PermissionsPolicyDirective { /** Feature name */ feature: PermissionsPolicyFeature; /** Allowlist of origins */ allowlist: string[]; /** Whether 'self' is allowed */ allowsSelf: boolean; /** Whether '*' is allowed (all origins) */ allowsAll: boolean; /** Whether 'none' is set */ allowsNone: boolean; /** Specific allowed origins */ allowedOrigins: string[]; } export interface PermissionsPolicyResult { /** Feature is available in current context */ available: boolean; /** Feature is allowed by policy */ allowed: boolean; /** Policy directive if present */ directive?: PermissionsPolicyDirective; } export interface PermissionsPolicyReport { /** Full header value */ header: string | null; /** Parsed directives */ directives: Map; /** Features disabled by policy */ disabledFeatures: PermissionsPolicyFeature[]; /** Features with wildcard allowance */ wildcardFeatures: PermissionsPolicyFeature[]; /** Security score (0-100) */ securityScore: number; /** Recommendations */ recommendations: string[]; } /** * Permissions Policy Handler class */ export declare class PermissionsPolicyHandler { private page; constructor(page: any); /** * Get Permissions-Policy header */ getPermissionsPolicyHeader(): Promise; /** * Get Permissions-Policy from iframe */ getIframePermissionsPolicy(iframeSelector: string): Promise; /** * Parse Permissions-Policy header */ parsePermissionsPolicy(header: string): Map; /** * Get full policy report */ getPolicyReport(): Promise; /** * Check if a feature is available and allowed */ checkFeature(feature: string): Promise; /** * Check multiple features at once */ checkFeatures(features: PermissionsPolicyFeature[]): Promise>; /** * Get all iframe policies on the page */ getIframePolicies(): Promise>; /** * Test if iframe can access a feature */ testIframeFeatureAccess(iframeSelector: string, feature: string): Promise; /** * Validate security of permissions policy */ validateSecurity(): Promise<{ secure: boolean; issues: string[]; warnings: string[]; }>; /** * Generate recommended Permissions-Policy header */ generateRecommendedPolicy(options?: { allowGeolocation?: boolean; allowCamera?: boolean; allowMicrophone?: boolean; allowPayment?: boolean; allowedOrigins?: string[]; }): string; } /** * Factory function to create Permissions Policy Handler */ export declare function createPermissionsPolicyHandler(page: any): PermissionsPolicyHandler; export default PermissionsPolicyHandler;