type GatewayRequestOptions = {
    model: string;
    maxTokens: number;
    temperature: number;
    prompt: string;
};
type GatewayToolUseOptions = {
    model: string;
    maxTokens: number;
    temperature: number;
    system: string;
    prompt: string;
    tool: {
        name: string;
        description: string;
        input_schema: Record<string, unknown>;
        strict?: boolean;
    };
    /** Wrap the system prompt in a cache_control block for prompt caching. */
    cacheSystemPrompt?: boolean;
};
export declare const asReasonText: (value: unknown) => string;
/**
 * Sends authenticated requests to the Rivet LLM gateway.
 * Handles JWT auth, automatic token refresh on 401, and rate limit errors.
 */
export declare class GatewayClient {
    private configManager;
    private gatewayUrl;
    private proxyUrl;
    constructor(gatewayUrl?: string, proxyUrl?: string);
    /** Send a message to the gateway and return the raw text response. */
    sendMessage(options: GatewayRequestOptions): Promise<string>;
    /**
     * Send a request that forces the model to invoke a single tool, and return
     * the parsed `input` of that tool call. Throws if the model didn't call the
     * tool (which the API guarantees won't happen with `tool_choice: { type:
     * 'tool' }`, but we check anyway).
     */
    sendToolUse<TInput>(options: GatewayToolUseOptions): Promise<TInput>;
    private postMessages;
    /** Refresh the access token using the stored refresh token. */
    private refreshAccessToken;
}
export {};
//# sourceMappingURL=GatewayClient.d.ts.map