import { Universe } from "./universe"; export declare type InterfaceType = 'named' | 'primitive' | 'list' | 'map' | 'generic' | 'reference'; export declare type PrimitiveType = 'id' | 'string' | 'integer' | 'float' | 'boolean' | 'void'; export declare type TemplateType = 'primitive' | 'list'; export declare type GenericValues = { [_: string]: Interface; }; export declare type TemplateValues = { [_: string]: TemplateValue; }; export interface TemplateValue { type: TemplateType; value?: string | string[]; source?: string; } export interface Interface { [_: string]: any; type?: InterfaceType; named?: NamedInterface; primitive?: PrimitiveInterface; list?: ListInterface; map?: MapInterface; generic?: GenericInterface; reference?: ReferenceInterface; } export interface TemplateInterfaceSlot { name: string; type: TemplateType; description: string; } export interface GenericInterfaceSlot { name: string; description: string; } export interface NamedInterface { [_: string]: any; name: string; template?: TemplateInterfaceSlot[]; generics?: GenericInterfaceSlot[]; schema: Interface; } export interface PrimitiveInterface { model?: string; value?: PrimitiveType; } export interface ListInterface { entry: Interface; } export interface TemplateExpansion { source: string; target: string; } export interface MapInterfaceEntry { key: string; expansion?: TemplateExpansion; schema: Interface; } export interface MapInterface { entries: MapInterfaceEntry[]; } export interface GenericInterface { name?: string; } export interface ReferenceInterface { generics?: GenericValues; template?: TemplateValues; name?: string; } export declare function interfaceComplexity(i: Interface): number; export declare function subInterface(sub: Interface, sup: Interface, universe?: Universe, genericMap?: Map): boolean; export declare function newValue(i: Interface, u?: Universe): any; //# sourceMappingURL=interface.d.ts.map