import { readdir as defaultReaddir, readFile as defaultReadFile } from 'node:fs/promises';
import { type ProjectStateKind, type ProjectStatePhase } from '../commands/shared/frontmatter.js';
export interface NormalizedProjectState {
    oat_kind: ProjectStateKind;
    oat_phase?: ProjectStatePhase;
    oat_phase_status?: string;
    oat_parent?: string;
    oat_siblings: string[];
    oat_depends_on: string[];
    oat_children: string[];
}
export interface ProjectStateValidationError {
    code: string;
    message: string;
}
export interface ProjectStateValidationInput {
    slug?: string;
    frontmatter: Record<string, unknown>;
    relatedProjects?: ProjectStateSnapshot[];
}
export interface ProjectStateSnapshot {
    slug: string;
    frontmatter: Record<string, unknown>;
}
export interface ProjectStateValidationResult {
    ok: boolean;
    state: NormalizedProjectState;
    errors: ProjectStateValidationError[];
}
export interface AssertProjectStateContentOptions {
    filePath?: string;
    slug?: string;
    relatedProjects?: ProjectStateSnapshot[];
}
export interface AssertProjectStateFilesystemContentOptions extends Omit<AssertProjectStateContentOptions, 'relatedProjects'> {
    projectPath: string;
    projectsRoot?: string;
    readdir?: typeof defaultReaddir;
    readFile?: typeof defaultReadFile;
}
export declare function validateProjectState(input: ProjectStateValidationInput): ProjectStateValidationResult;
export declare function assertValidProjectStateContent(content: string, options?: AssertProjectStateContentOptions): void;
export declare function readRelatedProjectStateSnapshots(options: {
    projectsRoot: string;
    currentProjectSlug: string;
    readdir?: typeof defaultReaddir;
    readFile?: typeof defaultReadFile;
}): Promise<ProjectStateSnapshot[]>;
export declare function assertValidProjectStateFilesystemContent(content: string, options: AssertProjectStateFilesystemContentOptions): Promise<void>;
//# sourceMappingURL=project-state.d.ts.map