import { LifecycleHooks } from '@b64hub/sfpm-core'; import type { PermissionSetHooksOptions } from './types.js'; /** * Creates lifecycle hooks for assigning permission sets during installation. * * Registers hooks on `install:pre` and `install:post` that assign * permission sets to the target org user. * * Permission set names are resolved from **two sources** (merged, deduplicated): * * 1. **Global options** — `permissionSetHooks({ permSets: [...] })` in `sfpm.config.ts` * 2. **Per-package overrides** — `packageOptions.hooks["permission-set"].pre/post` * * When a per-package `hooks["permission-set"]` is set to `false`, the hook is * skipped entirely for that package (handled by the lifecycle engine). * * Already-assigned permission sets are detected and skipped automatically. * * @param options - Hook configuration options * @returns A LifecycleHooks instance to pass to `defineConfig({ hooks: [...] })` * * @example * ```typescript * // sfpm.config.ts * import { defineConfig } from '@b64hub/sfpm-core'; * import { permissionSetHooks } from '@b64hub/sfpm-hooks'; * * export default defineConfig({ * hooks: [ * permissionSetHooks({ permSets: ['SharedPermSet'], failOnError: false }), * ], * }); * ``` * * @example * ```jsonc * // sfdx-project.json — per-package overrides * { * "packageOptions": { * "hooks": { * "permission-set": { "pre": ["ReadOnly"], "post": ["Admin"] } * } * } * } * ``` */ export declare function permissionSetHooks(options?: PermissionSetHooksOptions): LifecycleHooks;