/**
 * @copyright Sister Software
 * @license AGPL-3.0
 * @author Teffen Ellis, et al.
 */
/**
 * Placetype roles in a hierarchy.
 */
export declare const PlacetypeRoles: readonly ["optional", "common", "common_optional"];
/**
 * A placetype's role in representing a full hierarchy.
 */
export type PlacetypeRole = (typeof PlacetypeRoles)[number];
/**
 * The order of placetype roles in a hierarchy.
 */
export declare const PlacetypeRoleOrder: Record<PlacetypeRole, number>;
/**
 * WhosOnFirst placetypes are a hierarchical classification system for geographic features.
 *
 * @see {@link https://github.com/whosonfirst/whosonfirst-placetypes/blob/main/data/placetypes-spec-latest.json | WhosOnFirst Placetypes}
 */
export type WhosOnFirstPlacetype = "address" | "arcade" | "borough" | "building" | "campus" | "concourse" | "continent" | "country" | "county" | "custom" | "dependency" | "disputed" | "empire" | "enclosure" | "installation" | "intersection" | "localadmin" | "locality" | "macrocounty" | "macrohood" | "macroregion" | "marinearea" | "marketarea" | "metroarea" | "microhood" | "nation" | "neighbourhood" | "ocean" | "planet" | "postalcode" | "postalregion" | "region" | "timezone" | "venue" | "wing";
export type PlacetypeLocalizationRecord = {
    [languageCode: string]: string | undefined;
};
export interface PlacetypeDefinition {
    /**
     * The id of the placetype, typically generated by Brooklyn Integers.
     *
     * @see {@link https://brooklynintegers.com/ Brooklyn Integers}
     */
    id: number;
    /**
     * The name of the placetype, e.g. "country", "city", "neighborhood"
     */
    name: string;
    /**
     * The localized names of the placetype.
     */
    names: PlacetypeLocalizationRecord;
    /**
     * The role of the placetype.
     */
    role: PlacetypeRole;
    /**
     * The possible parent placetypes of this placetype.
     *
     * The parent placetypes are typically Brooklyn Integers.
     */
    parent?: string[];
}
export declare const WOFPrefix = "wof:";
export type WOFPrefix = typeof WOFPrefix;
/**
 * A raw JSON representation of a placetype definition.
 *
 * This identical to the {@linkcode PlacetypeDefinition} however, each key is prefixed with "wof:"
 */
export type PlacetypeDefinitionInit = {
    [K in keyof PlacetypeDefinition as `${WOFPrefix}${K}`]: PlacetypeDefinition[K];
};
/**
 * Convert a prefixed placetype definition to a standard placetype definition.
 */
export declare function normalizePlacetypeDefinition(initLike: PlacetypeDefinition | PlacetypeDefinitionInit): PlacetypeDefinition;
/**
 * A record of placetype definitions, keyed by Placetype id.
 */
export type PlacetypeDefinitionRecord = {
    [id: number]: Omit<PlacetypeDefinition, "id"> | undefined;
};
//# sourceMappingURL=definition.d.ts.map