import { Fraction } from 'xen-dev-utils';
import { MosInfo, ScaleInfo } from './info';
/**
 * An array of fractions that convey information about a MOS scale.
 * @param generatorPerPeriod Generator divided by period.
 * @param maxSize Maximum size of a MOS pattern.
 * @param maxLength Maximum length of the result.
 * @returns An array of MOS forms.
 */
export declare function mosForms(generatorPerPeriod: number | Fraction, maxSize?: number, maxLength?: number): Fraction[];
/**
 * An array of sizes of MOS patterns.
 * @param generatorPerPeriod Generator divided by period.
 * @param maxSize Maximum size of a MOS pattern.
 * @param maxLength Maximum length of the result.
 * @returns An array of MOS sizes.
 */
export declare function mosSizes(generatorPerPeriod: number | Fraction, maxSize?: number, maxLength?: number): number[];
/**
 * Determine if a generator / period ratio is bright.
 * @param generatorPerPeriod Generator divided by period.
 * @param size Size of the scale.
 * @returns `true` if the generator creates large intervals when stacked.
 */
export declare function isBright(generatorPerPeriod: number | Fraction, size: number): boolean;
/**
 * Flip a generator / period ratio to a bright version if necessary.
 * @param generatorPerPeriod Generator divided by period.
 * @param size Size of the scale.
 * @returns The first parameter. Flipped if it was dark.
 */
export declare function toBrightGeneratorPerPeriod(generatorPerPeriod: number, size: number): number;
export declare function toBrightGeneratorPerPeriod(generatorPerPeriod: Fraction, size: number): Fraction;
/**
 * An array of information about the MOS patterns generated from a generator / period ratio.
 * @param generatorPerPeriod Generator divided by period.
 * @param numberOfPeriods Number of periods per octave.
 * @param maxSize Maximum size of a MOS pattern.
 * @param maxLength Maximum length of the result.
 * @returns An array of MOS information.
 */
export declare function mosPatterns(generatorPerPeriod: number | Fraction, numberOfPeriods?: number, maxSize?: number, maxLength?: number): MosInfo[];
/**
 * Information about the scale generated from a generator / period ratio of a given size.
 * @param generatorPerPeriod Generator divided by period.
 * @param numberOfPeriods Number of periods per octave.
 * @param size Size of the scale.
 * @param generatorsDown How many generators to go downwards.
 * @returns Information about the scale.
 */
export declare function scaleInfo(generatorPerPeriod: number | Fraction, size: number, generatorsDown: number, numberOfPeriods?: number): ScaleInfo;
