import type { MutationContext, PlanningSessionId, ProjectId } from "@awp/contracts";
import type { PlanningInterviewerResolvedSelection, PlanningSession } from "@awp/domain";
import type { IdGenerator } from "./ports/runtime.js";
import type { PlanningModelProvider } from "./ports/providers.js";
import type { ProjectPlanningInterviewerConfiguration } from "./configuration.js";
import type { I2PlanningService, PlannerStructuredDisposition } from "./planning.js";
export interface PlanningInterviewerConfigurationResolver {
    resolveProjectPlanningInterviewer(projectId: ProjectId): Promise<ProjectPlanningInterviewerConfiguration>;
}
export declare class PlannerConfigurationRequiredError extends Error {
    constructor(message?: string);
}
export declare class PlannerModelOutputError extends Error {
    constructor(message: string);
}
export interface PlannerTurnResult {
    readonly session: PlanningSession;
    readonly selection: PlanningInterviewerResolvedSelection;
}
interface PlannerModelEnvelope {
    readonly reply: string;
    readonly disposition: PlannerStructuredDisposition;
}
export declare function parsePlannerModelOutput(text: string): PlannerModelEnvelope;
export declare class PlanningAgentService {
    private readonly planning;
    private readonly configuration;
    private readonly provider;
    private readonly ids;
    constructor(planning: I2PlanningService, configuration: PlanningInterviewerConfigurationResolver, provider: PlanningModelProvider, ids: IdGenerator);
    effectiveSelection(session: PlanningSession): Promise<PlanningInterviewerResolvedSelection>;
    turn(input: {
        readonly sessionId: PlanningSessionId;
        readonly message: string;
        readonly context: MutationContext;
    }): Promise<PlannerTurnResult>;
}
export {};
//# sourceMappingURL=planner-agent.d.ts.map