export type TodosJsonSurface = "cli" | "api" | "mcp" | "sdk";
export type TodosJsonStability = "stable" | "experimental";
export type TodosJsonFieldType = "array" | "boolean" | "integer" | "null" | "number" | "object" | "string";
export interface CreateJsonContractsManifestOptions {
    version?: string;
    generatedAt?: string;
}
export interface TodosJsonContractPackageSource {
    packageName: "@hasna/todos";
    repository: "hasna/todos";
    version: string;
}
export interface TodosJsonFieldContract {
    type: TodosJsonFieldType | readonly TodosJsonFieldType[];
    description: string;
    nullable?: boolean;
}
export interface TodosJsonObjectContract {
    id: string;
    name: string;
    description: string;
    surfaces: TodosJsonSurface[];
    stability: TodosJsonStability;
    required: Record<string, TodosJsonFieldContract>;
    optional: Record<string, TodosJsonFieldContract>;
    additionalProperties: true;
    evolution: {
        additionalFields: "allowed";
        removingRequiredFields: "breaking";
        changingRequiredFieldTypes: "breaking";
        nullableToNonNullable: "breaking";
    };
}
export interface TodosJsonContractsManifest {
    schemaVersion: 1;
    generatedAt: string;
    package: TodosJsonContractPackageSource;
    contracts: TodosJsonObjectContract[];
}
export interface JsonContractValidationIssue {
    field: string;
    expected: readonly TodosJsonFieldType[];
    actual: string;
}
export interface JsonContractValidationResult {
    ok: boolean;
    contractId: string;
    missingRequired: string[];
    typeMismatches: JsonContractValidationIssue[];
}
export declare const TODOS_JSON_CONTRACTS: TodosJsonObjectContract[];
export declare function getJsonContract(contractId: string): TodosJsonObjectContract | null;
export declare function validateJsonContract(contractId: string, value: unknown): JsonContractValidationResult;
export declare function createJsonContractsManifest(options?: CreateJsonContractsManifestOptions): TodosJsonContractsManifest;
export declare const TODOS_JSON_CONTRACTS_MANIFEST: TodosJsonContractsManifest;
//# sourceMappingURL=json-contracts.d.ts.map