import type { OneOfSchema, ProjectSchemaJSON, PropertySchema, ShapeJSON, ShapeMap } from './project-schema/index.ts';
import { type RefItem, type ServicesShapesContext } from './refs.ts';
export declare function isInterfaceShape(shape?: ShapeJSON): shape is ShapeJSON & {
    type: 'interface';
};
export type ImplementationShapeMap = Record<string, Set<ShapeJSON>>;
export type ImplementationShapeNameMap = Record<string, Set<string>>;
export declare function isInterfaceRef(context: ServicesShapesContext, propertySchema: PropertySchema): boolean;
export declare function getImplementationShapeMap(shapeMap: ShapeMap): ImplementationShapeMap;
export declare function getImplementationShapeNameMap(shapeMap: ShapeMap): ImplementationShapeNameMap;
export declare function pruneUnusedInterfaces(projectSchema: ProjectSchemaJSON, shapeMap: ShapeMap): ShapeMap;
export declare function getImplementingShapes(context: Pick<ProjectSchemaJSON, 'services' | 'shapes'>, interfaceRef: RefItem): ShapeJSON[];
export declare function interfaceToUnion(context: Pick<ProjectSchemaJSON, 'shapes' | 'services'>, interfaceRef: RefItem): OneOfSchema;
export declare function getPossibleShapeNames(projectSchema: ProjectSchemaJSON, shape: ShapeJSON): string[];
