import type { ScaffoldWarning } from '../../types/index.js'; export type ManifestKind = 'npm' | 'py' | 'cargo' | 'go'; export type ManifestStatus = 'missing' | 'parsed' | 'unparseable'; export type NpmDepScope = 'deps' | 'dev' | 'peer' | 'optional'; export type DepScope = NpmDepScope | 'all'; export interface PackageJson { readonly name?: string; readonly version?: string; readonly private?: boolean; readonly main?: string; readonly module?: string; readonly types?: string; readonly typings?: string; readonly browser?: string | Readonly>; readonly exports?: unknown; readonly bin?: string | Readonly>; readonly type?: 'module' | 'commonjs'; readonly engines?: Readonly>; readonly scripts?: Readonly>; readonly dependencies?: Readonly>; readonly devDependencies?: Readonly>; readonly peerDependencies?: Readonly>; readonly optionalDependencies?: Readonly>; readonly workspaces?: readonly string[] | { readonly packages?: readonly string[]; }; } export interface PyprojectToml { readonly project?: { readonly name?: string; readonly dependencies?: readonly string[]; readonly 'optional-dependencies'?: Readonly>; readonly scripts?: Readonly>; }; readonly tool?: { readonly poetry?: { readonly dependencies?: Readonly>; readonly 'dev-dependencies'?: Readonly>; readonly group?: Readonly>; }>>; }; readonly [k: string]: unknown; }; readonly 'build-system'?: { readonly requires?: readonly string[]; }; } export interface CargoToml { readonly package?: { readonly name?: string; readonly version?: string; }; readonly dependencies?: Readonly>; readonly 'dev-dependencies'?: Readonly>; readonly lib?: Readonly>; readonly bin?: readonly { readonly name: string; readonly path?: string; }[]; } export interface GoMod { readonly module?: string; readonly goVersion?: string; readonly requires?: readonly GoModRequire[]; } export interface GoModRequire { readonly path: string; readonly version: string; readonly indirect: boolean; } export interface SignalContext { readonly projectRoot: string; readonly warnings: readonly ScaffoldWarning[]; hasFile(relPath: string): boolean; dirExists(relPath: string): boolean; rootEntries(): readonly string[]; /** List entries in a subdirectory (depth-1, sorted, includes dotfiles, returns [] on missing/unreadable). */ listDir(relPath: string): readonly string[]; readFileText(relPath: string, maxBytes?: number): string | undefined; manifestStatus(kind: ManifestKind): ManifestStatus; packageJson(): PackageJson | undefined; pyprojectToml(): PyprojectToml | undefined; cargoToml(): CargoToml | undefined; goMod(): GoMod | undefined; hasDep(name: string, where?: ManifestKind | readonly ManifestKind[], scope?: DepScope): boolean; hasAnyDep(names: readonly string[], where?: ManifestKind | readonly ManifestKind[], scope?: DepScope): boolean; } export declare function createSignalContext(projectRoot: string): SignalContext; export interface FakeContextInput { projectRoot?: string; rootEntries?: readonly string[]; files?: Readonly>; dirs?: readonly string[]; /** Per-directory listing — keys are relative paths, values are sorted entry names. */ dirListings?: Readonly>; packageJson?: PackageJson | 'unparseable' | 'missing'; pyprojectToml?: PyprojectToml | 'unparseable' | 'missing'; cargoToml?: CargoToml | 'unparseable' | 'missing'; goMod?: GoMod | 'unparseable' | 'missing'; /** Override individual manifest statuses (e.g., to test 'unparseable' edge cases). */ manifestStatuses?: Partial>; } export declare function createFakeSignalContext(input?: FakeContextInput): SignalContext; //# sourceMappingURL=context.d.ts.map