import { type RunStore } from "../run-state/index.js";
import { type ModelProfile, type SeedAgentConfig, type SeedAgentName, type SeedTeamSpawnPolicy, type SeedTeamCapabilityProfile } from "../../config/schema.js";
export declare const SEED_TEAM_SPEC_SCHEMA_VERSION = 1;
export declare const seedTeamCoverageAreas: readonly ["planner", "executor", "verifier"];
export type SeedTeamCoverageArea = (typeof seedTeamCoverageAreas)[number];
export type SeedTeamSemanticConflictPolicy = "exclusive" | "serialized" | "merge_review" | "human_approved_overlap";
export type SeedTeamToolPolicy = {
    allowed_tools: string[];
    denied_tools: string[];
};
export type SeedTeamMcpPolicy = {
    allowed_mcps: string[];
    denied_mcps: string[];
};
export type SeedTeamSkillPolicy = {
    allowed_skills: string[];
    denied_skills: string[];
    allow_user_skills: boolean;
};
export type SeedTeamPromptBudget = {
    max_prompt_chars: number;
};
export type SeedTeamModelRoute = {
    model_profile?: ModelProfile;
    fallback_profiles: ModelProfile[];
};
export type SeedTeamLaunchPolicy = {
    mode: "sync" | "background";
    wait_for_dependencies: boolean;
    parallel_group?: string;
};
export type SeedTeamDeliveryPolicy = {
    report_to: string;
    expected_artifact_paths: string[];
};
export type SeedTeamEvidenceContract = {
    required_refs: string[];
    required_artifacts: string[];
    oracle_scope: string[];
};
export type SeedTeamHumanGate = {
    risk_tier: "low" | "medium" | "high";
    escalation_triggers: string[];
};
export type SeedTeamWorkflowTemplate = {
    name: string;
    required_coverage: SeedTeamCoverageArea[];
};
export type SeedTeamMemberSpec = {
    role_id: string;
    role_label: string;
    coverage: SeedTeamCoverageArea[];
    capability_profile: SeedTeamCapabilityProfile;
    resolved_agent?: SeedAgentName;
    resolved_category?: string;
    model_profile?: ModelProfile;
    mission_prompt: string;
    tool_policy: SeedTeamToolPolicy;
    mcp_policy: SeedTeamMcpPolicy;
    skill_policy: SeedTeamSkillPolicy;
    prompt_budget: SeedTeamPromptBudget;
    model_route: SeedTeamModelRoute;
    spawn_policy: SeedTeamSpawnPolicy;
    launch_policy: SeedTeamLaunchPolicy;
    delivery_policy: SeedTeamDeliveryPolicy;
    evidence_contract: SeedTeamEvidenceContract;
    authoritative_inputs: string[];
    expected_state_version: number;
    read_paths: string[];
    write_paths: string[];
    evidence_paths: string[];
    artifact_paths: string[];
    expected_outputs: string[];
    stop_condition: string;
    dependencies: string[];
    artifact_inputs: string[];
    evidence_inputs: string[];
    verifier_obligations: string[];
    oracle_scope: string[];
    semantic_conflict_policy: SeedTeamSemanticConflictPolicy;
    human_in_the_loop: SeedTeamHumanGate;
};
export type SeedTeamSpec = {
    schema_version: typeof SEED_TEAM_SPEC_SCHEMA_VERSION;
    team_id: string;
    team_name: string;
    objective: string;
    lead_owner: string;
    workflow_template?: SeedTeamWorkflowTemplate;
    coverage: SeedTeamCoverageArea[];
    members: SeedTeamMemberSpec[];
    authoritative_inputs: string[];
    expected_state_version: number;
    read_paths: string[];
    write_paths: string[];
    evidence_paths: string[];
    artifact_paths: string[];
    expected_outputs: string[];
    stop_condition: string;
    dependencies: string[];
    artifact_inputs: string[];
    evidence_inputs: string[];
    created_at: string;
    accepted_at?: string;
};
export type SeedTeamSpecValidationIssue = {
    code: string;
    path: string;
    message: string;
    severity: "error" | "warning";
};
export type SeedTeamSpecValidationResult = {
    ok: boolean;
    spec: SeedTeamSpec;
    issues: SeedTeamSpecValidationIssue[];
};
export type AcceptedSeedTeamSpec = {
    accepted: true;
    spec: SeedTeamSpec;
    json_path: string;
    markdown_path: string;
    validation: SeedTeamSpecValidationResult;
};
export type RejectedSeedTeamSpec = {
    accepted: false;
    validation: SeedTeamSpecValidationResult;
};
export declare function teamSpecsRoot(store: RunStore, runId: string): string;
export declare function teamSpecJsonPath(store: RunStore, runId: string, teamId: string): string;
export declare function teamSpecMarkdownPath(store: RunStore, runId: string, teamId: string): string;
export declare function validateTeamSpec(input: unknown, config: SeedAgentConfig): SeedTeamSpecValidationResult;
export declare function acceptTeamSpec(store: RunStore, runId: string, input: unknown, options?: {
    actor?: string;
    sessionId?: string;
}): Promise<AcceptedSeedTeamSpec | RejectedSeedTeamSpec>;
export declare function renderTeamSpecMarkdown(spec: SeedTeamSpec): string;
