import type { ProjectSchemaJSON, PropertySchema, ShapeJSON } from './project-schema/index.ts';
import type { ContentTransform, KeyTransform, PropertyTransform, PropertyTransformMap, SchemaType, SourceKeyTransform } from './types/index.ts';
export declare function getType(schema: Pick<PropertySchema, 'type'>): SchemaType;
export declare function preferKey(name: string, schema: PropertySchema): string;
/**
 * A key transform to select the field name
 */
export declare const preferName: KeyTransform;
export declare function preferSourceKey(name: string, schema: PropertySchema): string[];
export declare function findTransforms(pluginMap: PropertyTransformMap | undefined, schema: PropertySchema, name: string, shape?: ShapeJSON): PropertyTransform | undefined;
export type Accumulator<T = unknown> = {
    accumulate(value: unknown, schema: PropertySchema, name: string): void;
    getResults(): T;
};
export type ContentTransformParams = {
    transforms?: PropertyTransformMap;
    accumulators?: Accumulator[];
    projectSchema: ProjectSchemaJSON;
    keyTransform?: KeyTransform;
    sourceKeyTransform?: SourceKeyTransform;
    passThrough?: boolean;
    allowNullObjects?: boolean;
};
export declare function getContentTransform({ transforms, accumulators, keyTransform, sourceKeyTransform, passThrough, allowNullObjects, projectSchema }: ContentTransformParams): ContentTransform;
export type PropertyInfo = {
    schema: PropertySchema;
    key: string;
    isRequired: boolean;
};
export type GetPropertyInfoContext = {
    projectSchema: ProjectSchemaJSON;
    transforms?: PropertyTransformMap;
    keyTransform?: KeyTransform;
};
export declare function getPropertyInfo(context: GetPropertyInfoContext, schema: PropertySchema, path: string): PropertyInfo[];
