/**
 *
 * @param {string} type
 * @param {scalar[]} [initialDomain]
 */
export default function createDomain(type: string, initialDomain?: scalar[]): DomainArray;
/**
 * For unit tests
 *
 * @param {DomainArray | any[]} domainArray
 */
export function toRegularArray(domainArray: DomainArray | any[]): any[];
/**
 * @typedef {boolean | number | string} scalar
 */
export class DomainArray extends Array<any> {
    constructor();
    /** @type {string} */
    type: string;
    /**
     *
     * @param {scalar} value
     * @returns {DomainArray}
     */
    extend(value: scalar): DomainArray;
    /**
     *
     * @param {Iterable<scalar>} values
     * @returns {DomainArray}
     */
    extendAll(values: Iterable<scalar>): DomainArray;
    /**
     * @param {Iterable<T>} values
     * @param {function(T):scalar} [accessor]
     * @returns {DomainArray}
     * @template T
     */
    extendAllWithAccessor<T>(values: Iterable<T>, accessor?: (arg0: T) => scalar): DomainArray;
}
export class QuantitativeDomain extends DomainArray {
    0: number;
    1: number;
}
/**
 * Builder that tries to preserve the order
 */
export class OrdinalDomain extends DomainArray {
    /** @type {Set<scalar>} */
    uniqueValues: Set<scalar>;
}
export class NominalDomain extends OrdinalDomain {
}
export class PiecewiseDomain extends DomainArray {
    /**
     *
     * @param {number[]} initialDomain
     */
    constructor(initialDomain: number[]);
}
export type scalar = boolean | number | string;
//# sourceMappingURL=domainArray.d.ts.map