import { VariableType } from "../types.js"; import { BuiltinSignature } from "./types.js"; /** Types for `BUILTIN_VARIABLES` (lib/config.ts) that the checker knows. * `__dirname` is the per-module directory constant every compiled module * defines (imports.mustache:38). `color` is deliberately absent — it has * never been typed and typing it is unrelated scope. */ export declare const BUILTIN_VARIABLE_TYPES: Record; /** * Signatures for builtin / auto-imported functions that the typechecker * needs to know about. * * Stdlib functions (`print`, `read`, `fetch`, `range`, etc.) used to live * here too. They are now resolved through `importedFunctions` via the * auto-injected `import { ... } from "std::index"` statement, using the * real signatures from `stdlib/index.agency`. This means a user `def * print()` correctly shadows the stdlib version with no special-casing. * * `llm` stays here — the runtime implements it as a primitive, not a * stdlib wrapper, and its argument is structurally typed. */ /** * Methods callable on any Agency function / tool value * (`fn.describe("…")`, `fn.preapprove()`, `fn.rename("…")`). Declared here * as plain {@link BuiltinSignature}s so adding a new one is a one-line type * entry — the typechecker validates arity + arg types generically via * `validatePrimitiveMethodCall` (see synthesizer.ts) rather than needing * bespoke checker code. * * `partial` is intentionally NOT here: it takes named arguments validated * against the *base* function's parameter list, which the generic * signature path can't express, so it keeps its own logic in the checker. * * Return type is `any` for all three: each returns a new function/tool, and * the chain (`fn.partial(...).describe(...).rename(...)`) is resolved as * `any` so further method calls type-check. */ export declare const AGENCY_FUNCTION_METHOD_TYPES: Record; export declare const BUILTIN_FUNCTION_TYPES: Record;