import { type WorkflowDispatchProviderValue } from './dispatch-matrix.js';
export { VALID_DISPATCH_MATRIX_TIERS, isCodexMaterializedRouteTarget, isWorkflowDispatchCandidateLadder, isWorkflowDispatchFallbackRoute, toWorkflowDispatchCandidateLadder, validateDispatchRouteTarget, type DispatchRouteTargetValidation, type WorkflowDispatchCandidate, type WorkflowDispatchCandidateLadder, type WorkflowDispatchFallbackRoute, type WorkflowDispatchLegacyMatrixCell, type WorkflowDispatchMatrixCell, type WorkflowDispatchMatrixTier, type WorkflowDispatchProviderValue, type WorkflowDispatchRoute, type WorkflowDispatchRouteEntry, type WorkflowDispatchRouteTarget, } from './dispatch-matrix.js';
export interface OatDocumentationConfig {
    root?: string;
    tooling?: string;
    config?: string;
    index?: string;
    requireForProjectCompletion?: boolean;
}
export interface OatGitConfig {
    defaultBranch?: string;
}
export interface OatArchiveConfig {
    s3Uri?: string;
    s3SyncOnComplete?: boolean;
    summaryExportPath?: string;
    wrapUpExportPath?: string;
    awsProfile?: string;
    awsRegion?: string;
}
export type WorkflowHillCheckpointDefault = 'every' | 'final';
export type WorkflowProjectLog = true | false | 'auto';
export type WorkflowPostImplementStep = 'summary' | 'document' | 'pr';
export type WorkflowPostImplementLegacySequence = 'wait' | 'summary' | 'pr' | 'docs-pr';
export interface WorkflowPostImplementStructuredSequence {
    preApproval: WorkflowPostImplementStep[];
    postApproval: WorkflowPostImplementStep[];
}
export type WorkflowPostImplementSequence = WorkflowPostImplementLegacySequence | WorkflowPostImplementStructuredSequence;
export type WorkflowReviewExecutionModel = 'subagent' | 'inline' | 'fresh-session';
export type WorkflowDesignMode = 'collaborative' | 'selective' | 'draft';
export type WorkflowCodexDispatchCeiling = 'low' | 'medium' | 'high' | 'xhigh' | 'max';
export type WorkflowClaudeDispatchCeiling = 'haiku' | 'sonnet' | 'opus' | 'fable';
export type WorkflowDispatchCeilingPreset = 'balanced' | 'maximum' | 'cost-conscious';
export type WorkflowDispatchPolicyMode = 'managed' | 'inherit';
export type WorkflowManagedDispatchPolicy = 'economy' | 'balanced' | 'high' | 'frontier' | 'uncapped';
export type GateOnFailure = 'block' | 'prompt' | 'warn';
export type GateAvoid = 'same-family' | 'same-runtime' | 'none';
export declare const MIN_GATE_TIMEOUT_MS = 1000;
export declare const MAX_GATE_TIMEOUT_MS = 14400000;
export declare function isValidGateTimeoutMs(value: unknown): value is number;
export interface WorkflowDispatchCeiling {
    preset?: WorkflowDispatchCeilingPreset;
    recommendationVersion?: string;
    providers?: Record<string, WorkflowDispatchProviderValue>;
}
export interface WorkflowDispatchPolicy {
    mode: WorkflowDispatchPolicyMode;
    policy?: WorkflowManagedDispatchPolicy;
}
export interface WorkflowAutoArtifactReview {
    plan?: boolean;
    analysis?: boolean;
}
export interface GateConfig {
    command: string;
    onFailure: GateOnFailure;
    description?: string;
    maxAttempts?: number;
}
export interface ExecTargetInvocation {
    model?: string | 'provider-default';
    reasoningEffort?: string | 'provider-default';
}
export interface ExecTarget {
    runtime: string;
    baseCommand: string[];
    invocation?: ExecTargetInvocation;
    models?: string[];
    hostDetectionCommand?: string[];
    availabilityCommand?: string[];
    priority: number;
    timeoutMs?: number;
}
export type ExecTargetConfig = Partial<ExecTarget>;
export interface WorkflowGatesConfig {
    execTargets?: Record<string, ExecTargetConfig | null>;
    skills?: Record<string, GateConfig | null>;
}
export interface WorkflowGateTimeouts {
    code?: number;
    artifact?: number;
}
export interface OatWorkflowConfig {
    hillCheckpointDefault?: WorkflowHillCheckpointDefault;
    archiveOnComplete?: boolean;
    createPrOnComplete?: boolean;
    postImplementSequence?: WorkflowPostImplementSequence;
    reviewExecutionModel?: WorkflowReviewExecutionModel;
    autoReviewAtHillCheckpoints?: boolean;
    autoNarrowReReviewScope?: boolean;
    autoArtifactReview?: WorkflowAutoArtifactReview;
    projectLog?: WorkflowProjectLog;
    projectLogLedgerPath?: string;
    designMode?: WorkflowDesignMode;
    dispatchPolicy?: WorkflowDispatchPolicy;
    dispatchCeiling?: WorkflowDispatchCeiling;
    gateTimeouts?: WorkflowGateTimeouts;
    gates?: WorkflowGatesConfig;
}
export declare const VALID_CODEX_DISPATCH_CEILINGS: readonly WorkflowCodexDispatchCeiling[];
export declare const VALID_CLAUDE_DISPATCH_CEILINGS: readonly WorkflowClaudeDispatchCeiling[];
export declare const VALID_DISPATCH_CEILING_PRESETS: readonly WorkflowDispatchCeilingPreset[];
export declare const VALID_DISPATCH_POLICY_MODES: readonly WorkflowDispatchPolicyMode[];
export declare const VALID_MANAGED_DISPATCH_POLICIES: readonly WorkflowManagedDispatchPolicy[];
export declare const BUILTIN_EXEC_TARGETS: Readonly<Record<string, ExecTarget>>;
export declare function normalizeWorkflowPostImplementSequence(value: unknown): WorkflowPostImplementStructuredSequence | undefined;
export declare function isWorkflowPostImplementStructuredSequence(value: unknown): value is WorkflowPostImplementStructuredSequence;
export type OatToolsConfig = Partial<Record<'core' | 'ideas' | 'docs' | 'workflows' | 'utility' | 'project-management' | 'research' | 'brainstorm', boolean>>;
export interface OatConfig {
    version: number;
    worktrees?: {
        root: string;
    };
    projects?: {
        root: string;
    };
    git?: OatGitConfig;
    archive?: OatArchiveConfig;
    tools?: OatToolsConfig;
    documentation?: OatDocumentationConfig;
    localPaths?: string[];
    autoReviewAtCheckpoints?: boolean;
    workflow?: OatWorkflowConfig;
}
export interface OatLocalConfig {
    version: number;
    activeProject?: string | null;
    lastPausedProject?: string | null;
    activeIdea?: string | null;
    workflow?: OatWorkflowConfig;
}
export interface UserConfig {
    version: number;
    activeIdea?: string | null;
    updateNotifications?: boolean;
    workflow?: OatWorkflowConfig;
}
export interface ActiveProjectResolution {
    name: string | null;
    path: string | null;
    status: 'active' | 'missing' | 'unset';
}
export declare function normalizeProjectPath(repoRoot: string, pathValue: string | null | undefined): string | null;
export declare function resolveLocalPaths(config: OatConfig): string[];
export declare function readOatConfig(repoRoot: string): Promise<OatConfig>;
export declare function readOatLocalConfig(repoRoot: string): Promise<OatLocalConfig>;
export declare function writeOatConfig(repoRoot: string, config: OatConfig): Promise<void>;
export declare function writeOatLocalConfig(repoRoot: string, config: OatLocalConfig): Promise<void>;
export declare function resolveActiveProject(repoRoot: string): Promise<ActiveProjectResolution>;
export declare function setActiveProject(repoRoot: string, projectRelativePath: string): Promise<void>;
export declare function clearActiveProject(repoRoot: string, options?: {
    lastPaused?: string;
}): Promise<void>;
export declare function readUserConfig(userConfigDir: string): Promise<UserConfig>;
export declare function writeUserConfig(userConfigDir: string, config: UserConfig): Promise<void>;
export declare function resolveActiveIdea(repoRoot: string, userConfigDir: string): Promise<string | null>;
export declare function setActiveIdea(repoRoot: string, ideaPath: string): Promise<void>;
export declare function clearActiveIdea(repoRoot: string): Promise<void>;
export declare function detectDefaultBranch(repoRoot: string): string;
//# sourceMappingURL=oat-config.d.ts.map