import type { FileArtifact } from "../../types.js";
import type { FallbackStrategy } from "@superblocksteam/library-shared/types";
export type ProviderType = "vertex" | "bedrock";
export type CoreModelType = "claude-sonnet-4-5" | "claude-opus-4-5" | "claude-opus-4-6";
export type { FallbackStrategy };
export interface RetryConfigOptions {
    maxAttempts?: number;
    maxAttemptsPerProvider?: number | Record<ProviderType, Record<CoreModelType, number> | number>;
    maxTotalTimeMs?: number;
    initialDelayMs?: number;
    maxDelayMs?: number;
    backoffMultiplier?: number;
}
/**
 * Fallback configuration - controls multi-provider retry behavior.
 * When enabled, the system will try alternative providers on failure.
 * This is separate from provider selection.
 */
export interface FallbackConfigOptions {
    enabled?: boolean;
    strategy?: FallbackStrategy;
}
export interface LoggingConfigOptions {
    enabled?: boolean;
    conversationId?: string;
    saveArtifact?: (artifact: FileArtifact, stepId: string, runTimestamp: string) => Promise<void>;
    metadata?: Record<string, unknown>;
}
export interface StreamConfigOptions {
    retry?: RetryConfigOptions;
    provider: ProviderType;
    model: CoreModelType;
    fallback?: FallbackConfigOptions;
    logging?: LoggingConfigOptions;
}
interface ResolvedRetryConfig {
    maxAttempts: number;
    maxAttemptsPerProvider: number | Record<ProviderType, Record<CoreModelType, number> | number>;
    maxTotalTimeMs: number;
    initialDelayMs: number;
    maxDelayMs: number;
    backoffMultiplier: number;
}
interface ResolvedProviderConfig {
    provider: ProviderType;
    model: CoreModelType;
}
interface ResolvedFallbackConfig {
    enabled: boolean;
    strategy: FallbackStrategy;
}
interface ResolvedLoggingConfig {
    enabled: boolean;
    conversationId?: string;
    saveArtifact?: (artifact: FileArtifact, stepId: string, runTimestamp: string) => Promise<void>;
    metadata: Record<string, unknown>;
}
export declare class StreamConfig {
    private readonly _retry;
    private readonly _provider;
    private readonly _fallback;
    private readonly _logging;
    private constructor();
    static create(options: StreamConfigOptions): StreamConfig;
    get retry(): Readonly<ResolvedRetryConfig>;
    get provider(): Readonly<ResolvedProviderConfig>;
    get fallback(): Readonly<ResolvedFallbackConfig>;
    get logging(): Readonly<ResolvedLoggingConfig>;
}
//# sourceMappingURL=config.d.ts.map