import { type ProjectSchemaUpdate } from '../migration/types.ts';
import type { ProjectSchemaJSON } from '../project-schema/index.ts';
/**
 * Apply a schema update to a schema. This can operate on a schema with frozen properties,
 * such as one produced by immer. Resulting schema is not assumed to be valid and should
 * be validated if appropriate.
 */
export declare function patchSchema<T extends ProjectSchemaJSON>(projectSchema: T, schemaUpdate: ProjectSchemaUpdate): T;
export type ApplyToProjectSchemaOptions = {
    mode?: 'replace' | 'preserve' | 'fail';
    servicesMode?: 'replace' | 'preserve' | 'fail';
};
export declare function getSchemaUpdateFromPattern(currentSchema: ProjectSchemaJSON, patternSchema: ProjectSchemaJSON, options: ApplyToProjectSchemaOptions): ProjectSchemaUpdate | undefined;
