import type { ExternalSignatureMap } from './ecosystem-signatures.js'; import { type ExternalBoundaryIslandShape } from './external-boundary-utils.js'; import { type ExternalImportRegistry, type ExternalImportTarget } from './import-metadata.js'; import type { IRNode } from './types.js'; export interface ExternalImportBinding { names: string[]; default?: string; from?: string; signature?: string; signatures?: ExternalSignatureMap; types: boolean; line?: number; col?: number; } export interface ExternalBoundary { package: string; explicitPackage?: boolean; registry: ExternalImportRegistry; target: ExternalImportTarget; targetFamily: 'all' | 'ts' | 'python' | 'none'; island?: CapabilityIslandRef; runtime?: string; protocol?: string; module?: string; args?: string[]; session?: string; options?: string; error?: string; timeout?: string; effects: string[]; serialization?: string; requiresSidecar?: boolean; version?: string; review?: string; reason?: string; imports: ExternalImportBinding[]; line?: number; col?: number; } export type CapabilityIslandRef = ExternalBoundaryIslandShape; export interface CapabilityIsland extends CapabilityIslandRef { imports: ExternalBoundary[]; } export interface SidecarPackage { package: string; registry: ExternalImportRegistry; target: ExternalImportTarget; targetFamily: 'all' | 'ts' | 'python' | 'none'; imports: ExternalImportBinding[]; version?: string; line?: number; col?: number; } export interface SidecarManifest { name: string; kind?: string; runtime: string; protocol?: string; module?: string; args?: string[]; session?: string; options?: string; error?: string; timeout?: string; effects: string[]; serialization?: string; requiresSidecar: true; packages: SidecarPackage[]; line?: number; col?: number; } export declare function collectExternalBoundaries(root: IRNode): ExternalBoundary[]; export declare function collectCapabilityIslands(root: IRNode): CapabilityIsland[]; export declare function sidecarManifestFromIsland(island: CapabilityIsland): SidecarManifest | null; export declare function sidecarManifestFromNode(node: IRNode): SidecarManifest | null; export declare function collectSidecarManifests(root: IRNode): SidecarManifest[];