import { PcsetChroma, PcsetNum, Pcset } from '@tonaljs/pcset';

/**
 * Properties for a scale in the scale dictionary. It's a pitch class set
 * properties with the following additional information:
 * - name: the scale name
 * - aliases: alternative list of names
 * - intervals: an array of interval names
 */
interface ScaleType extends Pcset {
    readonly name: string;
    readonly aliases: string[];
}
declare const NoScaleType: ScaleType;
type ScaleTypeName = string | PcsetChroma | PcsetNum;
declare function names(): string[];
/**
 * Given a scale name or chroma, return the scale properties
 *
 * @param {string} type - scale name or pitch class set chroma
 * @example
 * import { get } from 'tonaljs/scale-type'
 * get('major') // => { name: 'major', ... }
 */
declare function get(type: ScaleTypeName): ScaleType;
/**
 * @deprecated
 * @use ScaleType.get
 */
declare const scaleType: typeof get;
/**
 * Return a list of all scale types
 */
declare function all(): ScaleType[];
/**
 * @deprecated
 * @use ScaleType.all
 */
declare const entries: typeof all;
/**
 * Keys used to reference scale types
 */
declare function keys(): string[];
/**
 * Clear the dictionary
 */
declare function removeAll(): void;
/**
 * Add a scale into dictionary
 * @param intervals
 * @param name
 * @param aliases
 */
declare function add(intervals: string[], name: string, aliases?: string[]): ScaleType;
declare function addAlias(scale: ScaleType, alias: string): void;
/** @deprecated */
declare const _default: {
    names: typeof names;
    get: typeof get;
    all: typeof all;
    add: typeof add;
    removeAll: typeof removeAll;
    keys: typeof keys;
    entries: typeof all;
    scaleType: typeof get;
};

export { NoScaleType, type ScaleType, add, addAlias, all, _default as default, entries, get, keys, names, removeAll, scaleType };
