import type { IdeId } from '../../services/ide/ide-types.js'; import type { HookScope } from '../../services/skills/hooks-settings-service.js'; export type HookCliOptions = { global?: boolean; project?: string; dryRun?: boolean; json?: boolean; ide?: string; progress?: boolean; }; /** What a hook-script copy reported back: whether it landed, and where from / to. */ export type HookScriptCopy = { copied: boolean; source: string; target: string; }; /** Both copies one install makes, for whichever scope it was asked about. */ export type HookScriptCopies = { bridgeCopy: HookScriptCopy; codeGateCopy: HookScriptCopy; }; /** Everything the install verb derived once and hands to both of its envelopes. */ export type InstallContext = { scope: HookScope; projectRoot: string | undefined; ide: IdeId; skipProgress: boolean; }; export declare function resolveScope(options: { global?: boolean; }): HookScope; export declare function resolveProjectRoot(scope: HookScope, project: string | undefined): string | undefined; /** * Resolve the IDE the install should target. The CLI user can override with * `--ide `. Otherwise we delegate to `detectIdeFromContext` which checks * `process.env[adapter.envVar]` → stdin shape → cwd `.trae`/`.claude` → * fallback `'claude-code'`. Pass `parsedStdin: null` since `peaks hooks * install` is not invoked from inside an IDE hook — there's no stdin payload. */ export declare function resolveIdeForCommand(options: { ide?: string; }, projectRoot: string | undefined): IdeId;