import type { LlmResponse } from '../../../core/llm/types.js';
export type AgentModelTurnRetryReason = 'transport_error' | 'empty_response';
export type AgentModelTurnRetryDecision = {
    retryable: boolean;
    reason?: AgentModelTurnRetryReason;
    maxAttempts: number;
    message: string;
};
export type AgentModelTurnRetryFailure = {
    kind: 'error';
    error: unknown;
} | {
    kind: 'response';
    response: LlmResponse;
};
/**
 * Owns retry classification and delay policy for a single model turn.
 *
 * The agent loop retries only the provider/model request. It never replays tool
 * calls or complete runs, because those effects belong to later loop phases.
 */
export declare class AgentModelTurnRetryService {
    static resolve(failure: AgentModelTurnRetryFailure): AgentModelTurnRetryDecision;
    static nextDelayMs(attempt: number): number;
    private static resolveResponse;
    private static resolveError;
    private static readStatusCode;
    private static hasRetryableErrorCode;
    private static hasRetryableMessage;
    private static formatErrorMessage;
}
//# sourceMappingURL=model-turn-retry-service.d.ts.map