import { RandomSeed } from 'random-seed'; import { Markov } from './markov'; interface ExpansionModifierCall { name: string; args: any[]; } interface Expansion { name: string; isDecorator: boolean; modifierCalls: ExpansionModifierCall[]; } interface Lexeme { originalString: string; formatString: string; expansions: Expansion[]; variables: Map | undefined; } interface WeightedLexeme { lexeme: Lexeme; weight: number; } interface Variable { name: string; lexeme: Lexeme; } interface Rule { name: string; weightedLexemes: WeightedLexeme[]; totalWeight: number; } interface MarkovSymbol { name: string; markov: Markov; } interface Grammar { random: RandomSeed; rules: Map; variables: Map; modifiers: Map; markovSymbols: Map; } export { Grammar, Rule, Variable, Expansion, ExpansionModifierCall, Lexeme, WeightedLexeme, MarkovSymbol, };