import { Accidental } from '../accidental'; import { ChordQuality } from '../chord/chord-quality'; import { Scale } from '../scale'; import { RomanNumeral } from './roman-numeral'; import { ScaleDegree } from './scale-degree'; export interface MatchingRule { scaleDegree: ScaleDegree; chordQuality: ChordQuality; inversions: number[]; hasSeventh: boolean; matchingQuality: boolean; applied?: ScaleDegree; fullyDiminishedSeventh?: boolean; accidental?: Accidental; flags: { [key: string]: boolean; }; } type MatchParams = Partial>; export declare function match(scaleDegree: ScaleDegree, { chordQuality, inversions, hasSeventh, applied, fullyDiminishedSeventh, accidental, flags, matchingQuality }?: MatchParams & { matchingQuality?: boolean; }): MatchingRule; export declare function matchAsIs(scaleDegree: ScaleDegree, { chordQuality, inversions, hasSeventh, applied, fullyDiminishedSeventh, accidental, flags }?: MatchParams): MatchingRule; export declare function checkAgainstRule(chord: RomanNumeral, rule: MatchingRule): boolean; export declare function yieldChordsFromRule(rule: MatchingRule, scale: Scale): Generator; export type Rule = { source?: MatchingRule; target?: MatchingRule; }; export {};