/**
 * Top-level gateway dispatch.
 *
 * The single entry point callers use to talk to any model. Given a model id, it
 * resolves the {@link ModelCard} from the catalog, selects the {@link Connector}
 * that speaks the card's wire dialect, and delegates the streaming or one-shot
 * invocation to it. Unknown model ids fail fast with an `unsupported`
 * {@link GatewayError}.
 */
import type { Channel, Conversation, ModelCard, Reply, StreamOptions } from "./contract";
/**
 * Open a streaming invocation against a model.
 *
 * Resolves the card by id, routes to the matching connector, and returns its
 * {@link Channel}. Throws an `unsupported` {@link GatewayError} when the id is
 * not in the catalog.
 */
export declare function stream(modelId: string, conversation: Conversation, options?: StreamOptions): Channel;
/**
 * Open a streaming invocation against a pre-resolved {@link ModelCard}.
 *
 * Bypasses catalog lookup — useful when the caller already holds a card (e.g.
 * from a fluent {@link models} query) and wants to route it directly.
 */
export declare function streamWithCard(card: ModelCard, conversation: Conversation, options?: StreamOptions): Channel;
/**
 * Run a one-shot invocation against a model and resolve the assembled
 * {@link Reply}. Throws an `unsupported` {@link GatewayError} for unknown ids.
 */
export declare function complete(modelId: string, conversation: Conversation, options?: StreamOptions): Promise<Reply>;
/**
 * Run a one-shot invocation against a pre-resolved {@link ModelCard}.
 */
export declare function completeWithCard(card: ModelCard, conversation: Conversation, options?: StreamOptions): Promise<Reply>;
