/**
 * Ollama connector (local inference daemon).
 *
 * Ollama exposes a chat endpoint that accepts OpenAI-style messages and tool
 * definitions but answers in newline-delimited JSON rather than SSE. Because of
 * that framing difference this connector cannot ride the shared
 * {@link streamOpenAICompatibleChat} streamer — it owns its own loop, decoding
 * the body with the foundation's {@link ndjsonLines} reader and folding the
 * deltas into a {@link Reply} via {@link foldReply}.
 *
 * Wire shape (re-derived from Ollama's public `/api/chat` docs):
 *
 *   POST {baseUrl||http://localhost:11434}/api/chat
 *   { model, messages, tools?, stream: true, options? }
 *
 *   {"message":{"content":"par"},"done":false}
 *   {"message":{"content":"tial"},"done":false}
 *   {"message":{"role":"assistant","content":"",
 *     "tool_calls":[{"function":{"name":"f","arguments":{"a":1}}}]},"done":false}
 *   {"message":{"content":""},"done":true,"done_reason":"stop",
 *     "prompt_eval_count":11,"eval_count":42}
 *
 * Serves the single `ollama` card in the catalog: `llama3.1:8b`. Pricing is
 * zero (it runs on the caller's own hardware), and the daemon is unauthenticated
 * by default, so the resolved secret is sent as a bearer token only when one is
 * actually present (handy for reverse-proxied deployments that do gate access).
 */
import type { Connector, CredentialResolver } from "../contract";
/** Dependencies injected into the connector factory. */
interface OllamaConnectorDeps {
    /** Resolve the (optional) bearer secret, honoring a per-call override. */
    readonly resolveSecret: CredentialResolver["resolve"];
}
/**
 * Build a {@link Connector} for the Ollama local inference daemon.
 *
 * `stream()` resolves the optional bearer secret lazily on first iteration,
 * POSTs the chat request, then walks the NDJSON body line by line, translating
 * each into neutral {@link Emission}s and closing with a terminal `done`
 * carrying the folded {@link Reply}. Any failure is delivered as a terminal
 * `error` emission so the channel never throws. `complete()` simply drains that
 * same channel, keeping both entry points on one code path.
 */
export declare function createollamaConnector(deps: OllamaConnectorDeps): Connector;
export {};
