/**
 * NPM Package Type Resolution
 *
 * Functions for discovering and extracting type information from npm packages
 * that have TypeScript declaration files (.d.ts).
 */
import type { TDataType } from './ast/types.js';
/**
 * Port definition compatible with TNodeType.ports
 */
export type TNpmPackagePort = {
    name: string;
    defaultLabel?: string;
    reference?: string;
    type: TDataType;
    direction: 'INPUT' | 'OUTPUT';
    scope?: string;
};
/**
 * Node type for npm package functions
 */
export type TNpmNodeType = {
    name: string;
    variant: 'FUNCTION';
    category: string;
    function: string;
    label: string;
    importSource: string;
    ports: TNpmPackagePort[];
    synchronicity: 'SYNC' | 'ASYNC';
    description: string;
};
/**
 * Get list of all packages that have TypeScript declarations (.d.ts files).
 * Any package with types can be used as a node type in workflows.
 * Excludes @types/* packages as they are type augmentations.
 *
 * @param workdir - Directory to start searching from
 * @param nodeModulesOverride - Optional explicit node_modules path (for testing)
 * @returns Object with packages array, each containing name and typesPath
 */
export declare function getTypedPackages(workdir: string, nodeModulesOverride?: string): {
    packages: Array<{
        name: string;
        typesPath: string | null;
    }>;
};
/**
 * Get function exports from a package's .d.ts file and return as TNodeType[].
 *
 * @param packageName - The npm package name
 * @param workdir - Directory to start searching from
 * @param nodeModulesOverride - Optional explicit node_modules path (for testing)
 * @returns Array of node types for the package's exported functions
 */
export declare function getPackageExports(packageName: string, workdir: string, nodeModulesOverride?: string): TNpmNodeType[];
//# sourceMappingURL=npm-packages.d.ts.map