type BaseCondition = {
    type: 'country';
    countryCodes: string[];
};
type Condition = BaseCondition | {
    type: 'all';
    conditions: Condition[];
} | {
    type: 'any';
    conditions: Condition[];
};
interface Variant<T> {
    condition?: Condition;
    value: T;
}
interface VariantConfig<T> {
    variants: Variant<T>[];
    value: T;
}
interface EvaluationContext {
    countryCode?: string;
}
/**
 * Type guard to check if a value is a VariantConfig
 * (used to distinguish from simple static configs)
 */
export declare function isVariantConfig<T>(value: unknown): value is VariantConfig<T>;
/**
 * Resolves the appropriate value from a VariantConfig based on runtime context.
 * Evaluates variants in order and returns the first matching variant's value.
 * Falls back to default value if no variants match.
 */
export declare function resolveValue<T>(config: VariantConfig<T>, ctx: EvaluationContext): T;
export {};
