import type { AppliedDataSemantic } from '../Semantics.js';
import { SemanticType } from '../Semantics.js';
export type CountryFormat = 'ISO_3166_Alpha_2' | 'ISO_3166_Alpha_3' | 'Name';
export interface CountryConfig {
    /**
     * The format of the country code.
     *
     * @default 'ISO_3166_Alpha_2'
     */
    format?: CountryFormat;
    /**
     * The list of allowed countries.
     */
    allowedCountries?: string[];
    /**
     * The list of disallowed countries.
     */
    disallowedCountries?: string[];
    /**
     * Custom metadata for the country field.
     */
    metadata?: Record<string, unknown>;
    /**
     * Index signature to allow additional properties.
     */
    [key: string]: unknown;
}
/**
 * Type-safe configuration for Country semantic.
 */
export interface AppliedCountrySemantic extends AppliedDataSemantic {
    id: SemanticType.Country;
    config?: CountryConfig;
}
export declare const isCountrySemantic: (semantic: AppliedDataSemantic) => semantic is AppliedCountrySemantic;
export declare const createCountrySemantic: (config?: CountryConfig) => AppliedCountrySemantic;
export declare const DEFAULT_COUNTRY_CONFIG: CountryConfig;
//# sourceMappingURL=Country.d.ts.map