/**
 * LangChain callback handler for Oso integration.
 *
 * Example usage:
 *   import { OsoCallback } from '@osohq/langchain';
 *
 *   const callback = new OsoCallback({
 *     apiKey: "your-oso-api-key",
 *     agentId: "my-support-agent",
 *     users: [{ type: "User", id: "user-123" }]
 *   });
 *
 *   const agent = createAgent({ llm, tools, prompt });
 *   const result = await agent.invoke({ input: "Hello" }, { callbacks: [callback] });
 */
import { BaseCallbackHandler } from "@langchain/core/callbacks/base";
import type { Serialized } from "@langchain/core/load/serializable";
import type { ChainValues } from "@langchain/core/utils/types";
export type LogLevel = "error" | "warn" | "info" | "debug";
export type LoggingFn = (level: LogLevel, message: string, metadata?: Record<string, any>) => void;
export type Value = {
    type: string;
    id: string;
};
export interface OsoCallbackConfig {
    /** Oso API URL (default: OSO_URL env var or https://cloud.osohq.com) */
    url?: string;
    /** Oso API key (default: OSO_AUTH env var) */
    apiKey?: string;
    /** Session ID to group related conversations (default: auto-generated UUID) */
    sessionId?: string;
    /** Additional metadata to attach to all events */
    metadata?: Record<string, any>;
    /** Agent identifier for tracking (default: "default-agent") */
    agentId?: string;
    /** Users associated with this session */
    users?: Value[];
    logger?: LoggingFn;
}
/**
 * LangChain callback handler that sends agent events to Oso.
 */
export declare class OsoCallback extends BaseCallbackHandler {
    name: string;
    private url;
    private apiKey?;
    private sessionId;
    private metadata;
    private agentId;
    private users;
    private logger;
    private rootRunId?;
    private toolNames;
    constructor(config?: OsoCallbackConfig);
    private getEventBase;
    handleToolStart(tool: Serialized, input: string, runId: string, parentRunId?: string, tags?: string[], metadata?: Record<string, any>, runName?: string): Promise<void>;
    handleToolEnd(output: string, runId: string, parentRunId?: string): Promise<void>;
    handleToolError(error: Error, runId: string, parentRunId?: string): Promise<void>;
    handleChainStart(chain: Serialized, inputs: ChainValues, runId: string, parentRunId?: string, tags?: string[], metadata?: Record<string, any>): Promise<void>;
    handleChainEnd(outputs: ChainValues, runId: string, parentRunId?: string): Promise<void>;
    handleChainError(error: Error, runId: string, parentRunId?: string): Promise<void>;
    private sendEvent;
}
//# sourceMappingURL=callbacks.d.ts.map