import type { ShapeDefinition, NodeShapeDefinition } from './definitions'; import type { ModelInfo } from './model-info'; export type ShapeInheritance = { [shapeId: string]: InheritanceDefinition; }; export interface InheritanceDefinition { shapeId: string; shapeName: string; discriminatorPropertyName: string; } interface ShapeDiscriminatorDefinitionIntermediate { shapeId: string; shapeName: string; discriminatorPropertyName: string; references: { [key: string]: ShapeDefinition; }; type: 'string' | 'number'; } export type ShapeDiscriminatorTypesIntermediate = { [shapeId: string]: ShapeDiscriminatorDefinitionIntermediate; }; export declare function isDiscriminatorShape(shape: ShapeDefinition, modelInfo: ModelInfo): boolean; export declare function hasInheritance(shape: ShapeDefinition, modelInfo: ModelInfo): shape is NodeShapeDefinition; export declare function getParentShape(shape: ShapeDefinition, modelInfo: ModelInfo): InheritanceDefinition; export declare function getDiscriminatorShape(shape: ShapeDefinition, modelInfo: ModelInfo): ShapeDiscriminatorDefinitionIntermediate; export {};