import { ChildProduct, Product } from '../../../api/commerce/common/product.js';
import { ProductTemplateCondition } from './product-templates-manager.js';
/**
 * Extracts a property from a product object.
 * @param product (Product) - The target product.
 * @param property (string) - The property to extract.
 * @returns (unknown) The value of the specified property in the specified product, or null if the property does not exist.
 */
export declare const getProductProperty: (product: Product | ChildProduct, property: string) => {} | null;
/**
 * Creates a condition that verifies if the specified fields are defined.
 * @param fieldNames (string[]) - A list of fields that must be defined.
 * @returns (ProductTemplateCondition) A function that takes a product and checks if every field in the specified list is defined.
 */
export declare const fieldsMustBeDefined: (fieldNames: string[]) => ProductTemplateCondition;
/**
 * Creates a condition that verifies if the specified fields are not defined.
 * @param fieldNames (string[]) - A list of fields that must not be defined.
 * @returns (ProductTemplateCondition) A function that takes a product and checks if every field in the specified list is not defined.
 */
export declare const fieldsMustNotBeDefined: (fieldNames: string[]) => ProductTemplateCondition;
/**
 * Creates a condition that verifies whether the value of a field is equal to any of the specified values (casing insensitive).
 * @param fieldName (string) - The name of the field to evaluate the condition against.
 * @param allowedValues (string[]) - The list of values that the field value can be equal to in order for the condition to evaluate to "true" (case insensitive).
 * @returns (ProductTemplateCondition) - A function that takes a Product as an argument and returns "true" if the value for the specified field is equal to any of the values in the specified list (case insensitive), and "false" otherwise.
 */
export declare const fieldMustMatch: (fieldName: string, valuesToMatch: string[]) => ProductTemplateCondition;
/**
 * Creates a condition that verifies whether the value of a field is not equal to any of the specified values (case insensitive).
 * @param fieldName (string) - The name of the field to evaluate the condition against.
 * @param disallowedValues (string[]) - The list of values that the field value must not be equal to in order for the condition to evaluate to "true" (case insensitive).
 * @returns (ProductTemplateCondition) A function that takes a Product as an argument and returns "true" if the value for the specified field is not equal to any of the values in the given list (case insensitive), or "false" otherwise.
 */
export declare const fieldMustNotMatch: (fieldName: string, disallowedValues: string[]) => ProductTemplateCondition;
export declare const ProductTemplatesHelpers: {
    getProductProperty: (product: Product | ChildProduct, property: string) => {} | null;
    fieldsMustBeDefined: (fieldNames: string[]) => ProductTemplateCondition;
    fieldsMustNotBeDefined: (fieldNames: string[]) => ProductTemplateCondition;
    fieldMustMatch: (fieldName: string, valuesToMatch: string[]) => ProductTemplateCondition;
    fieldMustNotMatch: (fieldName: string, disallowedValues: string[]) => ProductTemplateCondition;
};
