import { type Token } from "esprima";
import type { EvaluationPair } from "./shared.js";
interface Position {
    line: number;
    column: number;
}
type TokenWithRangeAndLoc = Token & {
    range?: [number, number];
    loc?: {
        source?: string | null | undefined;
        start: Position;
        end: Position;
    };
};
export declare const extractEntity: (indexToStart: number, tokens: Array<TokenWithRangeAndLoc>) => EvaluationPair;
export declare const extractJsEvaluationPairs: (jsSnippet: string) => EvaluationPair[];
export declare const extractJsEvaluationBindings: (jsSnippet: string) => Promise<string[]>;
export interface IdentifierWithType {
    name: string;
    type: string;
    optional: boolean;
}
export declare function extractExternalIdentifiersFromJS(code: string): string[];
/**
 * Extract external identifiers with their type annotations from JavaScript/TypeScript code.
 * Looks for destructured parameters with TypeScript type annotations like:
 *   fn: ({ param }: { param: string }) => ...
 *
 * @param code - JavaScript/TypeScript source code
 * @returns Array of identifiers with their type information, or undefined if types can't be extracted
 */
export declare function extractExternalIdentifiersWithTypesFromJS(code: string): IdentifierWithType[] | undefined;
export {};
//# sourceMappingURL=js-identifiers.d.ts.map