import { ID } from '@vendure/common/lib/shared-types';
import { LocaleString, Translatable, Translation } from '../../common/types/locale-types';
import { HasCustomFields } from '../../config/custom-field/custom-field-types';
import { VendureEntity } from '../base/base.entity';
import { CustomRegionFields } from '../custom-entity-fields';
export type RegionType = 'country' | 'province' | string;
/**
 * @description
 * A Region represents a geographical administrative unit, such as a Country, Province, State, Prefecture etc.
 * This is an abstract class which is extended by the {@link Country} and {@link Province} entities.
 * Regions can be grouped into {@link Zone}s which are in turn used to determine applicable shipping and taxes for an {@link Order}.
 *
 * @docsCategory entities
 */
export declare abstract class Region extends VendureEntity implements Translatable, HasCustomFields {
    /**
     * @description
     * A code representing the region. The code format will depend on the type of region. For
     * example, a Country code will be a 2-letter ISO code, whereas a Province code could use
     * a format relevant to the type of province, e.g. a US state code like "CA".
     */
    code: string;
    readonly type: RegionType;
    name: LocaleString;
    parent?: Region;
    parentId?: ID;
    enabled: boolean;
    translations: Array<Translation<Region>>;
    customFields: CustomRegionFields;
}
