import { builtin } from "./builtin"; import { ActionDefinition, AspectDefinition, AssociationDefinition, CSN, ElementDefinition, EntityDefinition, EventDefinition, FunctionDefinition, Kind, ServiceDefinition, TypeDefinition, VarDefinition } from "./csn"; import { expr } from "./cxn"; export { CQN } from "./cqn"; export { CSN }; export type Linked = T & { name: string; }; export type LinkedEntityDefinition = Linked & { keys?: LinkedDefs; actions?: LinkedDefs; associations?: LinkedDefs; compositions?: LinkedDefs; }; export type Defs = { [defName: string]: T; }; export type LinkedDefs = { [defName: string]: Linked; }; export type CXN = expr; export type VarLinkedDefinitions = LinkedEntityDefinition | Linked | Linked | Linked | Linked | Linked | Linked; type FilterFunction = (def: Linked) => boolean; type FilterValue = Kind | FilterFunction | builtin["classes"][keyof builtin["classes"]]; export declare class LinkedCSN extends CSN { kind: "type"; definitions: Defs; /** * This is a getter property providing convenient and cached access to all service definitions in a model. */ get services(): LinkedDefs; exports?(ns: string): any; entities(ns?: string): Defs; events(ns?: string): LinkedDefs; operations(ns?: string): Defs; each(x?: "entity", defs?: Defs): IterableIterator; each(x?: "service", defs?: Defs): IterableIterator>; each(x?: FilterValue, defs?: Defs): IterableIterator; all(x?: FilterValue, defs?: Defs): Array; find(x: FilterValue, defs?: Defs): VarLinkedDefinitions | undefined; foreach(x: FilterValue, visitor: (def: VarLinkedDefinitions) => void, defs?: Defs): void; forall(x: FilterValue, visitor: (def: VarLinkedDefinitions) => void, defs?: Defs): void; forall(visitor: (def: VarLinkedDefinitions) => void, defs?: Defs): void; } export type LinkedModel = LinkedCSN;