import { type AgentDefinition, query, type SDKMessage } from "@anthropic-ai/claude-agent-sdk";
import type { Logger } from "pino";
import type { AgentCapabilityFlags, AgentClient, AgentLaunchContext, AgentModelDefinition, AgentPersistenceHandle, AgentSession, AgentSessionConfig, AgentTimelineItem, ListModelsOptions, ListPersistedAgentsOptions, PersistedAgentDescriptor } from "../agent-sdk-types.js";
import { type ProviderRuntimeSettings } from "../provider-launch-config.js";
type EventIdentifiers = {
    taskId: string | null;
    parentMessageId: string | null;
    messageId: string | null;
};
export type ClaudeContentChunk = {
    type: string;
    [key: string]: any;
};
type ClaudeAgentClientOptions = {
    defaults?: {
        agents?: Record<string, AgentDefinition>;
    };
    logger: Logger;
    runtimeSettings?: ProviderRuntimeSettings;
    queryFactory?: typeof query;
};
export declare function resolveClaudeCliExecutable(): string | null;
/**
 * Resolves Claude CLI auth mode from the merged spawn env.
 * - API-key mode (ANTHROPIC_API_KEY present): set CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
 *   to skip the OAuth client_data ping/metrics/autoupdater hits, and strip conflicting
 *   Bedrock/Vertex/OAuth vars so the CLI routes to the API-key code path (avoids
 *   403 invalid_api_key from picking a non-API-key path that ignores our key).
 *   Note: do NOT use CLAUDE_CODE_SIMPLE=1 — despite the name it is a kill-switch that
 *   also drops Skill/Glob/Grep/Write/Task tools, replaces the system prompt with a
 *   4-line stub, and disables CLAUDE.md/agents/attachments.
 * - Local-auth mode (no API key): leave env untouched so the CLI can use the user's
 *   `claude login` OAuth credentials from keychain or ~/.claude/credentials.
 */
export declare function resolveClaudeAuthSpawnEnv(mergedEnv: Record<string, string | undefined>): {
    spawnEnv: Record<string, string | undefined>;
    hasApiKey: boolean;
};
export declare function resolveClaudeAuthSpawnEnv(mergedEnv: Record<string, string | undefined>, authMode: ProviderRuntimeSettings["authMode"]): {
    spawnEnv: Record<string, string | undefined>;
    hasApiKey: boolean;
};
export declare function extractUserMessageText(content: unknown): string | null;
export declare function readEventIdentifiers(message: SDKMessage): EventIdentifiers;
export declare class ClaudeAgentClient implements AgentClient {
    readonly provider: "claude";
    readonly capabilities: AgentCapabilityFlags;
    private readonly defaults?;
    private readonly logger;
    private readonly runtimeSettings?;
    private readonly queryFactory;
    constructor(options: ClaudeAgentClientOptions);
    createSession(config: AgentSessionConfig, launchContext?: AgentLaunchContext): Promise<AgentSession>;
    resumeSession(handle: AgentPersistenceHandle, overrides?: Partial<AgentSessionConfig>, launchContext?: AgentLaunchContext): Promise<AgentSession>;
    listModels(_options?: ListModelsOptions): Promise<AgentModelDefinition[]>;
    listPersistedAgents(options?: ListPersistedAgentsOptions): Promise<PersistedAgentDescriptor[]>;
    isAvailable(): Promise<boolean>;
    getDiagnostic(): Promise<{
        diagnostic: string;
    }>;
    private assertConfig;
}
export declare function convertClaudeHistoryEntry(entry: any, mapBlocks: (content: string | ClaudeContentChunk[]) => AgentTimelineItem[]): AgentTimelineItem[];
export declare function parseClaudeSessionDescriptor(filePath: string, mtime: Date): Promise<PersistedAgentDescriptor | null>;
export {};
//# sourceMappingURL=claude-agent.d.ts.map