declare const __money: unique symbol;
type Money = number & {
    readonly [__money]: true;
};
declare function money(value: string | number): Money;
declare function moneyFromNumber(value: number): Money;
declare const ZERO: Money;
type CurrencyCode = "USD" | "EUR" | "GBP" | "JPY" | "CNY" | "CHF" | "CAD" | "AUD" | "GHS" | "NGN" | "KES" | "ZAR" | "XOF" | "XAF" | "EGP" | "TZS" | "UGX" | "RWF" | "ETB" | "ZMW" | "BWP" | "MUR" | "NAD" | "MWK" | "AOA" | "CDF" | "GMD" | "GNF" | "LRD" | "SLL" | "MZN" | "BIF" | "INR" | "BRL" | "MXN" | "KRW" | "TRY" | "THB" | "MYR" | "PHP" | "IDR" | "VND" | "SGD" | "HKD" | "TWD" | "AED" | "SAR" | "ILS";
declare function isSupportedCurrency(code: string): code is CurrencyCode;
declare function currencyCode(value: string): CurrencyCode;
interface PaginationParams {
    page?: number;
    limit?: number;
    offset?: number;
}
interface Pagination {
    total_count: number;
    current_page: number;
    page_size: number;
    total_pages: number;
    has_more: boolean;
    next_cursor?: string;
}
declare const ErrorCode: {
    readonly UNKNOWN_ERROR: "UNKNOWN_ERROR";
    readonly NETWORK_ERROR: "NETWORK_ERROR";
    readonly TIMEOUT: "TIMEOUT";
    readonly UNAUTHORIZED: "UNAUTHORIZED";
    readonly FORBIDDEN: "FORBIDDEN";
    readonly NOT_FOUND: "NOT_FOUND";
    readonly VALIDATION_ERROR: "VALIDATION_ERROR";
    readonly CART_EMPTY: "CART_EMPTY";
    readonly CART_EXPIRED: "CART_EXPIRED";
    readonly CART_NOT_FOUND: "CART_NOT_FOUND";
    readonly ITEM_UNAVAILABLE: "ITEM_UNAVAILABLE";
    readonly VARIANT_NOT_FOUND: "VARIANT_NOT_FOUND";
    readonly VARIANT_OUT_OF_STOCK: "VARIANT_OUT_OF_STOCK";
    readonly ADDON_REQUIRED: "ADDON_REQUIRED";
    readonly ADDON_MAX_EXCEEDED: "ADDON_MAX_EXCEEDED";
    readonly CHECKOUT_VALIDATION_FAILED: "CHECKOUT_VALIDATION_FAILED";
    readonly DELIVERY_ADDRESS_REQUIRED: "DELIVERY_ADDRESS_REQUIRED";
    readonly CUSTOMER_INFO_REQUIRED: "CUSTOMER_INFO_REQUIRED";
    readonly QUOTE_NOT_FOUND: "QUOTE_NOT_FOUND";
    readonly QUOTE_EXPIRED: "QUOTE_EXPIRED";
    readonly QUOTE_CONSUMED: "QUOTE_CONSUMED";
    readonly QUOTE_STORAGE_UNAVAILABLE: "QUOTE_STORAGE_UNAVAILABLE";
    readonly QUOTE_VALIDATION_FAILED: "QUOTE_VALIDATION_FAILED";
    readonly PRICE_CHANGED: "PRICE_CHANGED";
    readonly PAYMENT_FAILED: "PAYMENT_FAILED";
    readonly PAYMENT_CANCELLED: "PAYMENT_CANCELLED";
    readonly INSUFFICIENT_FUNDS: "INSUFFICIENT_FUNDS";
    readonly CARD_DECLINED: "CARD_DECLINED";
    readonly INVALID_OTP: "INVALID_OTP";
    readonly OTP_EXPIRED: "OTP_EXPIRED";
    readonly AUTHORIZATION_FAILED: "AUTHORIZATION_FAILED";
    readonly PAYMENT_ACTION_NOT_COMPLETED: "PAYMENT_ACTION_NOT_COMPLETED";
    readonly SLOT_UNAVAILABLE: "SLOT_UNAVAILABLE";
    readonly BOOKING_CONFLICT: "BOOKING_CONFLICT";
    readonly SERVICE_NOT_FOUND: "SERVICE_NOT_FOUND";
    readonly OUT_OF_STOCK: "OUT_OF_STOCK";
    readonly INSUFFICIENT_QUANTITY: "INSUFFICIENT_QUANTITY";
};
type ErrorCodeType = (typeof ErrorCode)[keyof typeof ErrorCode];
interface ApiError {
    code: string;
    message: string;
    retryable: boolean;
}
interface ErrorHint {
    docs_url: string;
    suggestion: string;
}
declare const ERROR_HINTS: Record<string, ErrorHint>;
declare class CimplifyError extends Error {
    code: string;
    retryable: boolean;
    docs_url?: string | undefined;
    suggestion?: string | undefined;
    constructor(code: string, message: string, retryable?: boolean, docs_url?: string | undefined, suggestion?: string | undefined);
    get userMessage(): string;
}
declare class IdempotencyMismatchError extends CimplifyError {
    originalCreatedAt: string;
    constructor(message: string, originalCreatedAt: string);
}
declare function isCimplifyError(error: unknown): error is CimplifyError;
/**
 * True for any quote-class error: cache miss, expiry, consumption, validation
 * mismatch, or a price change since the quote was locked. Use this to route
 * checkout failures into a quote-refresh + user-consent UX path.
 */
declare function isQuoteError(error: unknown): boolean;
/**
 * True for the quote errors where re-quoting + asking the shopper to confirm
 * is the correct next step — there is real disagreement between the cart and
 * the locked quote (different cart contents or a price change). Cache-miss
 * errors are now self-healed at the backend and never surface here.
 */
declare function isQuoteConflictRequiringConsent(error: unknown): boolean;
declare function isIdempotencyMismatchError(error: unknown): error is IdempotencyMismatchError;
declare function getErrorHint(code: string): ErrorHint | undefined;
declare function enrichError(error: CimplifyError, options?: {
    isTestMode?: boolean;
}): CimplifyError;
declare function isRetryableError(error: unknown): boolean;

type CartStatus = "active" | "converting" | "converted" | "expired" | "abandoned";
type CartChannel = "qr" | "taker" | "staff" | "web" | "dashboard" | "tap" | "chat";
type PriceSource = "default_item" | "custom" | {
    location_specific: string;
} | {
    variant: string;
} | {
    composite: string;
} | {
    bundle: string;
};
type AdjustmentType = "time_based" | {
    location_based: string;
} | {
    variant_based: string;
} | {
    customer_segment: string;
} | {
    customer_loyalty: string;
} | {
    channel_markup: string;
} | {
    discount: string;
} | {
    bundle: string;
} | {
    manual: string;
} | {
    time_limited_promotion: {
        promotion_id: string;
        valid_until: string;
    };
};
interface PriceAdjustment {
    adjustment_type: AdjustmentType;
    amount: Money;
    percentage?: Money;
    reason: string;
    applied_at: string;
}
interface TaxPathComponent {
    name: string;
    rate: Money;
}
interface PricePathTaxInfo {
    tax_rate: Money;
    tax_amount: Money;
    is_inclusive: boolean;
    components: TaxPathComponent[];
}
interface PriceDecisionPath {
    base_price_source: PriceSource;
    adjustments: PriceAdjustment[];
    context?: Record<string, unknown>;
}
interface ChosenPrice {
    base_price: Money;
    final_price: Money;
    markup_percentage: Money;
    markup_amount: Money;
    markup_discount_percentage: Money;
    markup_discount_amount: Money;
    currency?: CurrencyCode;
    custom_fields?: Record<string, unknown>;
    decision_path?: PriceDecisionPath;
    tax_info?: PricePathTaxInfo;
    pre_tax_price?: Money;
}
type BenefitType = "percentage" | "fixed" | "points" | "free_item" | "buy_x_get_y_free";
interface AppliedDiscount {
    discount_id: string;
    discount_code?: string;
    discount_type: BenefitType;
    discount_value: Money;
    discount_amount: Money;
    applied_at: string;
    targeted_item_ids?: string[];
}
interface DiscountBreakdown {
    item_discounts: Record<string, AppliedDiscount[]>;
    order_discounts: AppliedDiscount[];
}
interface DiscountDetails {
    discounts: AppliedDiscount[];
    total_discount_amount: Money;
    breakdown: DiscountBreakdown;
}
interface SelectedAddOnOption {
    option_id: string;
    add_on_id: string;
    name: string;
    price: Money;
    quantity: number;
    is_required: boolean;
    selected_at: string;
    price_info?: ChosenPrice;
}
interface AddOnDetails {
    selected_options: SelectedAddOnOption[];
    total_add_on_price: Money;
    add_ons: CartAddOn[];
}
interface CartAddOn {
    add_on_id: string;
    name: string;
    min_selections: number;
    max_selections: number;
    selected_options: string[];
    is_required: boolean;
}
interface VariantDetails {
    variant_id: string;
    sku?: string;
    properties: Record<string, string>;
}
interface BundleSelectionInput {
    component_id: string;
    variant_id?: string;
    quantity: number;
    scheduled_start?: string;
    scheduled_end?: string;
}
interface ComponentSchedulingData {
    scheduled_start?: string;
    scheduled_end?: string;
    service_status: string;
    confirmation_code?: string;
    booking_id?: string;
    primary_resource_id?: string;
}
interface BundleStoredSelection {
    component_id: string;
    product_id: string;
    product_name: string;
    variant_id?: string;
    variant_name?: string;
    quantity: number;
    unit_price: Money;
    product_type?: ProductType;
    scheduling?: ComponentSchedulingData;
}
interface BundleSelectionData {
    bundle_id: string;
    selections: BundleStoredSelection[];
}
interface CompositeStoredSelection {
    component_id: string;
    component_name: string;
    quantity: number;
    group_id: string;
    source_type: "product" | "stock" | "add_on" | "standalone";
    source_product_id?: string;
    source_stock_id?: string;
    unit_price: Money;
    product_type?: ProductType;
    scheduling?: ComponentSchedulingData;
}
interface CompositePriceBreakdown {
    base_price: Money;
    components_total: Money;
    tier_applied?: string;
    final_price: Money;
}
interface CompositeSelectionData {
    composite_id: string;
    selections: CompositeStoredSelection[];
    breakdown: CompositePriceBreakdown;
}

type LineConfiguration = {
    type: "simple";
    variant?: VariantDetails;
    add_ons?: AddOnDetails;
    customer_inputs?: CustomerInputValue[];
} | {
    type: "service";
    variant?: VariantDetails;
    add_ons?: AddOnDetails;
    customer_inputs?: CustomerInputValue[];
    scheduled_start?: string;
    scheduled_end?: string;
    confirmation_code?: string;
    service_status?: string;
    primary_staff_id?: string;
    primary_resource_id?: string;
    scheduling_metadata?: Record<string, unknown>;
} | {
    type: "bundle";
    variant?: VariantDetails;
    input: BundleSelectionInput[];
    resolved?: BundleSelectionData;
    add_ons?: AddOnDetails;
    customer_inputs?: CustomerInputValue[];
} | {
    type: "composite";
    variant?: VariantDetails;
    input: ComponentSelectionInput[];
    resolved?: CompositeSelectionData;
    add_ons?: AddOnDetails;
    customer_inputs?: CustomerInputValue[];
} | {
    type: "digital";
    variant?: VariantDetails;
    add_ons?: AddOnDetails;
    customer_inputs?: CustomerInputValue[];
    digital_type?: string;
    fulfillment_id?: string;
};
interface Cart {
    id: string;
    business_id: string;
    customer_id?: string;
    session_id?: string;
    location_id?: string;
    created_at: string;
    updated_at: string;
    expires_at: string;
    subtotal: Money;
    tax_amount: Money;
    service_charge: Money;
    total_discounts: Money;
    total_price: Money;
    delivery_fee: Money;
    total_items: number;
    tax_rate?: Money;
    service_charge_rate?: Money;
    price_info: ChosenPrice;
    applied_discount_ids: string[];
    applied_discount_codes: string[];
    discount_details?: DiscountDetails;
    currency: CurrencyCode;
    customer_name?: string;
    customer_email?: string;
    customer_phone?: string;
    customer_address?: string;
    source: string;
    status: CartStatus;
    channel: string;
    order_id?: string;
    metadata?: Record<string, unknown>;
    items: CartItem[];
}
interface CartItem {
    id: string;
    cart_id: string;
    item_id: string;
    quantity: number;
    line_key: string;
    configuration: LineConfiguration;
    price: Money;
    add_ons_price: Money;
    price_info: ChosenPrice;
    applied_discount_ids: string[];
    item_discount_amount: Money;
    discount_details?: DiscountDetails;
    created_at: string;
    updated_at: string;
    metadata?: Record<string, unknown>;
}
interface CartTotals {
    subtotal: Money;
    tax_amount: Money;
    service_charge: Money;
    total_discounts: Money;
    total_price: Money;
    tax_rate?: Money;
    service_charge_rate?: Money;
    applied_discount_ids: string[];
    applied_discount_codes: string[];
    discount_details?: DiscountDetails;
}
interface DisplayCart {
    id: string;
    business_id: string;
    customer_id?: string;
    session_id?: string;
    location_id?: string;
    subtotal: Money;
    tax_amount: Money;
    service_charge: Money;
    total_discounts: Money;
    total_price: Money;
    delivery_fee: Money;
    total_items: number;
    tax_rate?: Money;
    service_charge_rate?: Money;
    currency: CurrencyCode;
    channel: string;
    status: string;
    business_name: string;
    business_logo?: string;
    location_name?: string;
    customer_name?: string;
    customer_email?: string;
    customer_phone?: string;
    customer_address?: string;
    items: DisplayCartItem[];
    applied_discount_codes: string[];
    discount_details?: DiscountDetails;
}
interface DisplayCartItem {
    id: string;
    cart_id: string;
    item_id: string;
    quantity: number;
    name: string;
    description?: string;
    image_url?: string;
    category_name?: string;
    is_available: boolean;
    preparation_time?: number;
    unit_price: Money;
    total_price: Money;
    add_ons_price: Money;
    price_info: ChosenPrice;
    item_discount_amount: Money;
    discount_details?: DiscountDetails;
    add_ons: DisplayAddOn[];
    special_instructions?: string;
}
interface DisplayAddOn {
    id: string;
    name: string;
    min_selections: number;
    max_selections: number;
    is_required: boolean;
    selected_options: DisplayAddOnOption[];
}
interface DisplayAddOnOption {
    id: string;
    name: string;
    price: Money;
    quantity: number;
    image_url?: string;
    description?: string;
}
interface UICartBusiness {
    name: string;
    logo_url?: string;
    contact_email?: string;
    contact_phone?: string;
}
interface UICartLocation {
    id?: string;
    name?: string;
}
interface UICartCustomer {
    id?: string;
    name?: string;
    email?: string;
    phone?: string;
    address?: string;
}
interface UICartPricing {
    subtotal: Money;
    tax_amount: Money;
    service_charge: Money;
    total_discounts: Money;
    total_price: Money;
    tax_rate?: Money;
    service_charge_rate?: Money;
    currency: CurrencyCode;
    /** Tax is baked into the prices (e.g. Ghana VAT), so `tax_amount` is the
     *  portion already inside `subtotal`/`total_price`, not an addition. */
    tax_inclusive: boolean;
    /** Deposit computed from the catalogue when the cart has deposit-eligible
     *  service items; lets checkout offer "pay deposit now, balance later". */
    deposit_required?: boolean;
    deposit_amount?: Money;
}
interface AddOnOptionDetails {
    id: string;
    name: string;
    price?: Money;
    is_required: boolean;
    description?: string;
    image_url?: string;
}
interface AddOnGroupDetails {
    id: string;
    name: string;
    is_multiple_allowed: boolean;
    min_selections: number;
    max_selections: number;
    required: boolean;
    options: AddOnOptionDetails[];
}
interface VariantDetailsDTO {
    id: string;
    name: string;
    price: Money;
    price_adjustment: Money;
    is_default: boolean;
}
interface CartItemDetails {
    id: string;
    cart_id: string;
    item_id: string;
    quantity: number;
    line_key: string;
    line_type: "simple" | "service" | "bundle" | "composite" | "digital";
    name: string;
    description?: string;
    image_url?: string;
    category_id?: string;
    category_name?: string;
    is_available: boolean;
    variant_id?: string;
    variant_details?: VariantDetails;
    variant_name?: string;
    variant_info?: VariantDetailsDTO;
    base_price: Money;
    add_ons_price: Money;
    total_price: Money;
    item_discount_amount: Money;
    price_info: ChosenPrice;
    add_on_option_ids: string[];
    add_on_ids: string[];
    add_on_details: AddOnDetails;
    add_on_options: AddOnOptionDetails[];
    add_ons: AddOnGroupDetails[];
    special_instructions?: string;
    scheduled_start?: string;
    scheduled_end?: string;
    confirmation_code?: string;
    service_status?: string;
    staff_id?: string;
    scheduling_metadata?: Record<string, unknown>;
    bundle_selections?: BundleSelectionInput[];
    bundle_resolved?: BundleSelectionData;
    composite_selections?: ComponentSelectionInput[];
    composite_resolved?: CompositeSelectionData;
    customer_inputs?: Array<{
        field_id: string;
        field_name: string;
        field_type: string;
        value: unknown;
    }>;
    applied_discount_ids: string[];
    discount_details?: DiscountDetails;
    created_at: string;
    updated_at: string;
    metadata?: Record<string, unknown>;
}
interface UICart {
    id: string;
    business_id: string;
    session_id?: string;
    customer_id?: string;
    location_id?: string;
    created_at: string;
    updated_at: string;
    expires_at: string;
    status: string;
    source: string;
    channel: string;
    business_details?: UICartBusiness;
    location_details?: UICartLocation;
    customer_info: UICartCustomer;
    items: CartItemDetails[];
    pricing: UICartPricing;
    requires_delivery?: boolean;
    metadata?: Record<string, unknown>;
}
interface CartNotice {
    kind: "info" | "warning";
    text: string;
}
interface CartMutationResult {
    cart: UICart;
    notice?: CartNotice;
}
interface AddToCartInput {
    item_id: string;
    quantity?: number;
    variant_id?: string;
    quote_id?: string;
    add_on_options?: string[];
    special_instructions?: string;
    bundle_selections?: BundleSelectionInput[];
    composite_selections?: ComponentSelectionInput[];
    scheduled_start?: string;
    scheduled_end?: string;
    staff_id?: string;
    resource_id?: string;
    billing_plan_id?: string;
    customer_inputs?: Array<{
        field_id: string;
        value: unknown;
    }>;
}
interface UpdateCartItemInput {
    quantity?: number;
    special_instructions?: string;
}
interface CartSummary {
    item_count: number;
    total_items: number;
    subtotal: Money;
    discount_amount: Money;
    tax_amount: Money;
    total: Money;
    currency: CurrencyCode;
}

type BillingFrequency = "weekly" | "biweekly" | "monthly" | "quarterly" | "annually";
type BillingPlanType = "subscription" | "installment";
type BillingMarkupType = "fixed" | "percentage";
interface ProductBillingPlan {
    id: string;
    product_id: string;
    business_id: string;
    frequency: BillingFrequency;
    fulfillment_frequency?: BillingFrequency | null;
    plan_type: BillingPlanType;
    installment_periods?: number | null;
    trial_days: number;
    setup_fee: number;
    markup_type?: BillingMarkupType | null;
    markup_amount?: number | null;
    customer_group_id?: string | null;
    min_quantity?: number | null;
    min_order_value?: number | null;
    max_cycles?: number | null;
    is_active: boolean;
    created_at: string;
    updated_at: string;
    metadata?: Record<string, unknown>;
}
interface EligiblePlansQuery {
    customer_id?: string;
    quantity?: number;
    order_value?: number;
}
interface FormattedPlanOption {
    plan: ProductBillingPlan;
    label: string;
    pricePerPeriod: number;
    totalPrice?: number;
}
type SubscriptionStatus = "incomplete" | "incomplete_expired" | "trialing" | "active" | "past_due" | "canceled" | "unpaid" | "paused";
interface Subscription {
    id: string;
    customer_id: string;
    billing_plan_id?: string;
    business_id?: string;
    price_id?: string;
    status: SubscriptionStatus;
    current_period_start: string;
    current_period_end: string;
    next_billing_date?: string;
    trial_start?: string;
    trial_end?: string;
    canceled_at?: string;
    cancel_at_period_end: boolean;
    location_id?: string;
    installment_total?: number;
    installment_per_period?: number;
    installment_periods_remaining?: number;
    origin_order_id?: string;
    skip_next_renewal: boolean;
    cycles_completed: number;
    source?: string;
    created_at: string;
    updated_at: string;
    metadata?: Record<string, unknown>;
}
interface SubscriptionItem {
    id: string;
    subscription_id: string;
    product_id: string;
    quantity: number;
    added_at: string;
    removed_at?: string;
    metadata?: Record<string, unknown>;
}
interface SubscriptionInvoice {
    id: string;
    subscription_id: string;
    amount_due: number;
    amount_paid: number;
    currency: string;
    status: string;
    period_start: string;
    period_end: string;
    created_at: string;
}
interface SubscriptionWithDetails {
    subscription: Subscription;
    plan?: ProductBillingPlan;
    product?: Product;
    items: SubscriptionItem[];
    latest_invoice?: SubscriptionInvoice;
}

type ProductType = "product" | "service" | "digital" | "bundle" | "composite";
declare const PRODUCT_TYPE: {
    Product: "product";
    Service: "service";
    Digital: "digital";
    Bundle: "bundle";
    Composite: "composite";
};
type ProductRenderHint = "food" | "physical" | "general";
declare const RENDER_HINT: {
    Food: "food";
    Physical: "physical";
    General: "general";
};
type DisplayMode = "card" | "page";
type InventoryType = "one_to_one" | "composition" | "none";
type VariantStrategy = "fetch_all" | "use_axes";
type DigitalProductType = "download" | "license" | "event_ticket" | "access_pass" | "gift_code";
type DepositType = "none" | "fixed" | "percentage";
type SchedulingMode = "intraday" | "multi_day";
type DurationUnit = "minutes" | "hours" | "days" | "nights" | "weeks" | "months" | "years";
declare const DURATION_UNIT: {
    Minutes: "minutes";
    Hours: "hours";
    Days: "days";
    Nights: "nights";
    Weeks: "weeks";
    Months: "months";
    Years: "years";
};
type SalesChannel = "pos" | "online" | "marketplace" | "partners";
type AttributeType = "text" | "textarea" | "number" | "currency" | "boolean" | "single_select" | "multi_select" | "radio" | "date" | "url" | "color" | "image" | "file" | "product_reference" | "category_reference" | "collection_reference" | "variant_reference" | "list_text" | "list_number" | "list_date" | "dimension" | "weight" | "volume";
type AttributeAppliesTo = "product" | "variant" | "both" | "category" | "collection" | "all";
type AttributeVisibility = "admin_only" | "storefront_read" | "public";
type MeasurementValue = {
    value: number;
    unit: string;
};
interface AttributeValidationRules {
    min_length?: number;
    max_length?: number;
    regex?: string;
    min?: number | string;
    max?: number | string;
    max_precision?: number;
    min_selections?: number;
    max_selections?: number;
}
interface CustomAttributeDefinition {
    id: string;
    business_id: string;
    namespace: string;
    name: string;
    slug: string;
    description?: string;
    attribute_type: AttributeType;
    options?: string[];
    unit?: string;
    validation?: AttributeValidationRules | null;
    is_required: boolean;
    is_filterable: boolean;
    visibility: AttributeVisibility;
    display_order: number;
    group_name?: string;
    applies_to: AttributeAppliesTo;
    created_at: string;
    updated_at: string;
}
interface CustomAttributeValue {
    definition_id: string;
    namespace: string;
    name: string;
    slug: string;
    attribute_type: AttributeType;
    group_name?: string;
    unit?: string;
    value: string | number | boolean | string[] | MeasurementValue | null;
    is_filterable: boolean;
    visibility: AttributeVisibility;
}
type PropertySource = "attribute" | "variant";
interface ProductProperty {
    name: string;
    slug: string;
    source: PropertySource;
    value_type: string;
    values: (string | number | boolean | null)[];
    group_name?: string;
    unit?: string;
    is_filterable: boolean;
}
interface PropertyFacet {
    name: string;
    slug: string;
    source: string;
    values: FacetValue[];
}
interface FacetValue {
    value: string;
    count: number;
}
interface TaxonomyAttributeTemplate {
    id: string;
    taxonomy_id: string;
    name: string;
    slug: string;
    attribute_type: "boolean" | "single_select";
    options?: string[];
    is_required: boolean;
    display_order: number;
    gpc_attribute_code?: number;
    created_at: string;
}
interface KnowledgeArticle {
    id: string;
    title: string;
    slug: string;
    content: string;
    category?: string;
    tags: string[];
    created_at: string;
    updated_at: string;
}
interface Product {
    id: string;
    business_id: string;
    category_id?: string;
    name: string;
    slug: string;
    description?: string;
    image_url?: string;
    default_price: Money;
    type: ProductType;
    render_hint?: ProductRenderHint;
    display_mode?: DisplayMode;
    inventory_type: InventoryType;
    variant_strategy: VariantStrategy;
    inventory_status?: {
        in_stock: boolean;
        stock_level?: number;
        low_stock: boolean;
    };
    is_active: boolean;
    created_at: string;
    updated_at: string;
    metadata?: Record<string, unknown>;
    tags?: string[];
    images?: string[];
    calories?: number;
    allergies?: string[];
    recipe?: Record<string, unknown>;
    sku?: string;
    barcode?: string;
    ean?: string;
    upc?: string;
    is_trackable?: boolean;
    is_tracked?: boolean;
    is_tracked_in_store?: boolean;
    is_tracked_in_warehouse?: boolean;
    inventory_threshold?: number;
    external_id?: string;
    external_source?: string;
    download_url?: string;
    digital_type?: DigitalProductType;
    max_downloads?: number;
    license_key_required?: boolean;
    file_size_mb?: number;
    file_hash?: string;
    file_type?: string;
    version?: string;
    download_expires_days?: number;
    license_key_format?: string;
    max_activations?: number;
    validity_days?: number;
    event_id?: string;
    event_date?: string;
    venue?: string;
    ticket_type?: string;
    seat_info?: Record<string, unknown>;
    access_type?: string;
    access_level?: string;
    access_duration_days?: number;
    code_type?: string;
    code_value?: Money;
    code_currency?: CurrencyCode;
    scheduling_mode?: SchedulingMode;
    duration_value?: number;
    duration_minutes?: number;
    duration_unit?: DurationUnit;
    preparation_time_minutes?: number;
    staff_required_count?: number;
    buffer_before_minutes?: number;
    buffer_after_minutes?: number;
    general_service_capacity?: number;
    deposit_type?: DepositType;
    deposit_amount?: Money;
    cancellation_window_minutes?: number;
    no_show_fee?: Money;
    partial_refund_percentage?: number;
    max_free_reschedules?: number;
    reschedule_fee?: Money;
    no_show_deadline_minutes?: number;
    cancellation_notice_days?: number;
    early_termination_fee?: Money;
    pro_rata_refund?: boolean;
    requires_specific_staff?: boolean;
    requires_specific_resource?: boolean;
    hs_code?: string;
    mid_code?: string;
    material?: string;
    allow_backorder?: boolean;
    item_condition?: string;
    vendor?: string;
    length_mm?: number;
    width_mm?: number;
    height_mm?: number;
    channels?: SalesChannel[];
    meta_title?: string;
    meta_description?: string;
    is_discountable?: boolean;
    taxonomy_id?: string;
    bundle_price?: Money;
    discount_value?: Money;
    pricing_type?: BundlePriceType;
    components?: BundleComponentView[];
    composite_id?: string;
    groups?: CompositeGroupView[];
    custom_attributes?: CustomAttributeValue[];
    properties?: ProductProperty[];
    billing_plans?: ProductBillingPlan[];
    quantity_pricing?: QuantityPricingTier[];
    min_order_quantity?: number;
    input_fields?: ProductInputField[];
    upsells?: RelatedProductView[];
    cross_sells?: RelatedProductView[];
}
type InputFieldType = "text" | "textarea" | "number" | "select" | "radio" | "checkbox" | "color" | "date" | "file" | "image" | "url" | "address" | "phone" | "email" | "date_time" | "time" | "signature" | "multi_select" | "date_range" | "location";
declare const INPUT_FIELD_TYPE: {
    Text: "text";
    Textarea: "textarea";
    Number: "number";
    Select: "select";
    Radio: "radio";
    Checkbox: "checkbox";
    Color: "color";
    Date: "date";
    File: "file";
    Image: "image";
    Url: "url";
    Address: "address";
    Phone: "phone";
    Email: "email";
    DateTime: "date_time";
    Time: "time";
    Signature: "signature";
    MultiSelect: "multi_select";
    DateRange: "date_range";
    Location: "location";
};
interface AddressValue {
    formatted_address: string;
    street_address?: string;
    apartment?: string;
    city?: string;
    region?: string;
    postal_code?: string;
    country?: string;
    latitude: number;
    longitude: number;
    place_id?: string;
}
interface PhoneValue {
    country_code: string;
    number: string;
    formatted: string;
}
interface DateRangeValue {
    start: string;
    end: string;
}
interface LocationValue {
    latitude: number;
    longitude: number;
    label?: string;
}
interface SignatureValue {
    data_url: string;
    signer_name?: string;
}
interface InputFieldValidation {
    max_length?: number;
    min_length?: number;
    min_value?: number;
    max_value?: number;
    accepted_formats?: string[];
    max_size_mb?: number;
    pattern?: string;
    allowed_countries?: string[];
    max_selections?: number;
}
type SemanticKind = "allergen" | "dietary_preference" | "sensitivity" | "consent";
interface ProductInputField {
    id: string;
    product_id: string;
    name: string;
    slug: string;
    field_type: InputFieldType;
    is_required: boolean;
    display_order: number;
    placeholder?: string;
    help_text?: string;
    validation?: InputFieldValidation;
    options?: string[];
    price_adjustment?: Money;
    semantic_kind?: SemanticKind;
}
interface CustomerInputValue {
    field_id: string;
    field_name: string;
    field_type: string;
    value: unknown;
    semantic_kind?: SemanticKind;
}
interface QuantityPricingTier {
    min_quantity: number;
    max_quantity?: number;
    unit_price: Money;
}
interface RelatedProductView {
    product_id: string;
    name: string;
    slug: string;
    image_url?: string;
    price: Money;
    source: string;
}
interface ProductWithDetails extends Product {
    category?: Category;
    variants?: VariantView[];
    add_ons?: AddOnWithOptions[];
    variant_axes?: VariantAxisWithValues[];
    location_prices?: LocationProductPrice[];
    location_availability?: ProductAvailability[];
    time_profiles?: ProductTimeProfile[];
}
interface VariantView {
    id: string;
    name: string;
    is_default: boolean;
    sku?: string;
    barcode?: string;
    price_adjustment: Money;
    location_prices?: Record<string, ChosenPrice>;
    axis_selections?: Record<string, string>;
    display_attributes?: VariantDisplayAttribute[];
    images?: string[];
    scheduling_mode?: SchedulingMode;
    duration_value?: number;
    duration_minutes?: number;
    duration_unit?: DurationUnit;
    skill_level_required?: string;
    staff_count_override?: number;
    capacity_override?: number;
}
interface ProductVariant {
    id: string;
    name?: string;
    business_id: string;
    product_id: string;
    component_multiplier: Money;
    price_adjustment: Money;
    is_default: boolean;
    created_at: string;
    updated_at: string;
    is_active?: boolean;
    is_archived?: boolean;
    is_deleted?: boolean;
    inventory_threshold?: number;
    images?: string[];
    external_id?: string;
    external_source?: string;
    ean?: string;
    upc?: string;
    is_trackable?: boolean;
    is_tracked?: boolean;
    is_tracked_in_store?: boolean;
    is_tracked_in_warehouse?: boolean;
    sku?: string;
    barcode?: string;
    download_url?: string;
    metadata?: Record<string, unknown>;
    scheduling_mode?: SchedulingMode;
    duration_value?: number;
    duration_minutes?: number;
    duration_unit?: DurationUnit;
    max_downloads?: number;
    license_key?: string;
    display_attributes?: VariantDisplayAttribute[];
}
interface VariantDisplayAttribute {
    axis_id: string;
    axis_name: string;
    value_id: string;
    value_name: string;
}
interface VariantAxis {
    id: string;
    business_id: string;
    product_id: string;
    name: string;
    display_order: number;
    affects_recipe: boolean;
    created_at: string;
    updated_at: string;
    metadata?: Record<string, unknown>;
}
interface VariantAxisWithValues extends VariantAxis {
    values: VariantAxisValue[];
}
interface VariantAxisValue {
    id: string;
    business_id: string;
    axis_id: string;
    name: string;
    display_order: number;
    color_hex?: string;
    image_url?: string;
    created_at: string;
    updated_at: string;
    metadata?: Record<string, unknown>;
}
interface ProductVariantValue {
    variant_id: string;
    axis_value_id: string;
    business_id: string;
    created_at: string;
    updated_at: string;
    metadata?: Record<string, unknown>;
}
interface VariantLocationAvailability {
    id: string;
    variant_id: string;
    location_id: string;
    business_id: string;
    is_available: boolean;
    is_in_stock: boolean;
    created_at: string;
    updated_at: string;
    metadata?: Record<string, unknown>;
}
interface VariantAxisSelection {
    [axisName: string]: string;
}
interface AddOn {
    id: string;
    business_id: string;
    name: string;
    is_multiple_allowed: boolean;
    is_required: boolean;
    is_mutually_exclusive: boolean;
    min_selections?: number;
    max_selections?: number;
    created_at: string;
    updated_at: string;
    metadata?: Record<string, unknown>;
}
interface AddOnWithOptions extends AddOn {
    options: AddOnOption[];
}
interface AddOnOption {
    id: string;
    add_on_id: string;
    business_id: string;
    name: string;
    option_sku?: string;
    default_price?: Money;
    description?: string;
    is_required: boolean;
    is_mutually_exclusive: boolean;
    created_at: string;
    updated_at: string;
    metadata?: Record<string, unknown>;
}
interface AddOnOptionPrice {
    id: string;
    add_on_option_id: string;
    location_id: string;
    business_id: string;
    price: Money;
    created_at: string;
    updated_at: string;
    metadata?: Record<string, unknown>;
}
interface ProductAddOn {
    id: string;
    business_id: string;
    product_id: string;
    add_on_id: string;
    created_at: string;
    updated_at: string;
    metadata?: Record<string, unknown>;
}
interface Category {
    id: string;
    business_id: string;
    name: string;
    slug: string;
    description?: string;
    product_count?: number;
    created_at: string;
    updated_at: string;
    metadata?: Record<string, unknown>;
}
interface CategorySummary extends Category {
    product_count: number;
}
interface Collection {
    id: string;
    business_id: string;
    name: string;
    slug: string;
    description?: string;
    tags?: string[];
    image_url?: string;
    channels?: SalesChannel[];
    product_count?: number;
    created_at: string;
    updated_at: string;
    metadata?: Record<string, unknown>;
}
interface CollectionSummary extends Collection {
    product_count: number;
}
interface CollectionProduct {
    id: string;
    collection_id: string;
    product_id: string;
    display_order?: number;
    created_at: string;
    updated_at: string;
    metadata?: Record<string, unknown>;
}
type BundlePriceType = "fixed" | "percentage_discount" | "fixed_discount";
interface Bundle {
    id: string;
    business_id: string;
    product_id: string;
    name: string;
    slug: string;
    description?: string;
    image_url?: string;
    pricing_type: BundlePriceType;
    bundle_price?: Money;
    discount_value?: Money;
    product_count?: number;
    created_at: string;
    updated_at: string;
    metadata?: Record<string, unknown>;
}
interface BundleSummary extends Bundle {
    product_count: number;
}
interface BundleProduct {
    id: string;
    bundle_id: string;
    product_id: string;
    variant_id?: string;
    allow_variant_choice: boolean;
    quantity: number;
    created_at: string;
    updated_at: string;
    metadata?: Record<string, unknown>;
}
interface BundleWithDetails extends Bundle {
    product: Product;
    components: BundleComponentData[];
    schedules?: ProductTimeProfile[];
    availability?: Record<string, ProductAvailability>;
}
interface BundleComponentData {
    component: BundleProduct;
    product: Product;
    variants: ProductVariant[];
    variant_axes: VariantAxis[];
    variant_axis_values: VariantAxisValue[];
    product_variant_values: ProductVariantValue[];
}
interface BundleComponentInfo {
    id: string;
    product_id: string;
    variant_id?: string;
    quantity: number;
}
interface BundleComponentView {
    id: string;
    product_id: string;
    product_name: string;
    product_description?: string;
    product_image_url?: string;
    product_type?: ProductType;
    effective_price: Money;
    quantity: number;
    variant_id?: string;
    allow_variant_choice: boolean;
    available_variants: BundleComponentVariantView[];
    variant_axes?: VariantAxisView[];
    duration_minutes?: number;
    duration_unit?: DurationUnit;
}
interface BundleComponentVariantView {
    id: string;
    is_default: boolean;
    display_name: string;
    price_adjustment: Money;
}
interface VariantAxisView {
    id: string;
    name: string;
    values: VariantAxisValueView[];
}
interface VariantAxisValueView {
    id: string;
    value: string;
}
type CompositePricingMode = "additive" | "highest_per_group" | "highest_overall" | "tiered";
type GroupPricingBehavior = "additive" | "first_n_free" | "flat_fee" | "highest_only";
type ComponentSourceType = "product" | "stock" | "add_on" | "standalone";
interface Composite {
    id: string;
    business_id: string;
    product_id: string;
    base_price: Money;
    pricing_mode: CompositePricingMode;
    min_order_quantity?: number;
    max_order_quantity?: number;
    created_at: string;
    updated_at: string;
    metadata?: Record<string, unknown>;
}
interface CompositeWithDetails extends Composite {
    product: Product;
    groups: ComponentGroupWithComponents[];
}
interface ComponentGroup {
    id: string;
    composite_id: string;
    name: string;
    description?: string;
    display_order: number;
    min_selections: number;
    max_selections?: number;
    allow_quantity: boolean;
    max_quantity_per_component?: number;
    pricing_behavior: GroupPricingBehavior;
    pricing_behavior_config?: Record<string, unknown>;
    icon?: string;
    color?: string;
    created_at: string;
    updated_at: string;
}
interface ComponentGroupWithComponents extends ComponentGroup {
    components: CompositeComponent[];
}
interface CompositeGroupView {
    id: string;
    name: string;
    description?: string;
    min_selections: number;
    max_selections: number;
    allow_quantity: boolean;
    max_quantity_per_component?: number;
    display_order: number;
    components: CompositeComponentView[];
}
interface CompositeComponentView {
    id: string;
    display_name?: string;
    display_description?: string;
    display_image_url?: string;
    price: Money;
    calories?: number;
    display_order: number;
    is_popular: boolean;
    is_premium: boolean;
    is_available: boolean;
    is_archived: boolean;
    product_type?: ProductType;
    source_type?: ComponentSourceType;
}
interface CompositeComponent {
    id: string;
    group_id: string;
    product_id?: string;
    variant_id?: string;
    stock_id?: string;
    add_on_id?: string;
    add_on_option_id?: string;
    display_name?: string;
    display_description?: string;
    display_image_url?: string;
    price: Money;
    price_per_additional?: Money;
    quantity_per_selection?: Money;
    waste_percentage?: Money;
    calories?: number;
    allergens?: string[];
    display_order: number;
    is_popular: boolean;
    is_premium: boolean;
    is_available: boolean;
    is_archived: boolean;
    created_at: string;
    updated_at: string;
}
interface ComponentSelectionInput {
    component_id: string;
    quantity: number;
    variant_id?: string;
    add_on_option_id?: string;
    scheduled_start?: string;
    scheduled_end?: string;
}
interface CompositePriceResult {
    base_price: Money;
    components_total: Money;
    tier_applied?: string;
    final_price: Money;
    breakdown: ComponentPriceBreakdown[];
}
interface ComponentPriceBreakdown {
    component_id: string;
    component_name: string;
    quantity: number;
    unit_price: Money;
    total_price: Money;
    group_id: string;
    source_type: ComponentSourceType;
    source_product_id?: string;
    source_stock_id?: string;
}
type PriceEntryType = "base" | "location" | "time" | "channel";
interface Price {
    id: string;
    product_id: string;
    location_id: string;
    business_id: string;
    price: Money;
    entry_type: PriceEntryType;
    created_at: string;
    updated_at: string;
    metadata?: Record<string, unknown>;
}
type LocationProductPrice = Price;
interface ProductAvailability {
    id: string;
    business_id: string;
    location_id: string;
    product_id: string;
    is_available: boolean;
    is_in_stock: boolean;
    created_at: string;
    updated_at: string;
    metadata?: Record<string, unknown>;
}
interface ProductTimeProfile {
    id: string;
    business_id: string;
    product_id: string;
    day_of_week: number;
    start_time: string;
    end_time: string;
    created_at: string;
    updated_at: string;
    metadata?: Record<string, unknown>;
}
interface ProductTaxonomy {
    id: string;
    code: string;
    name: string;
    description?: string;
    parent_id?: string;
    level: number;
    is_active: boolean;
    created_at: string;
    updated_at: string;
}
interface TaxonomyWithChildren extends ProductTaxonomy {
    children: ProductTaxonomy[];
}
interface ProductAvailabilityNow {
    is_available: boolean;
    schedules_today: ProductTimeProfile[];
}
type DealBenefitType = "percentage" | "fixed" | "free_item" | "buy_x_get_y_free" | "points";
interface Deal {
    id: string;
    description: string;
    benefit_type: DealBenefitType;
    value: Money;
    min_order_value?: Money;
    buy_quantity?: number;
    get_quantity?: number;
    stackable: boolean;
    starts_at: string;
    ends_at: string;
    product_ids: string[];
    category_ids: string[];
    collection_ids: string[];
}
interface ProductDealInfo {
    product_id: string;
    deal_id: string;
    deal_name: string;
    benefit_type: DealBenefitType;
    value: Money;
    label: string;
}
interface DiscountValidation {
    is_eligible: boolean;
    discount_amount?: Money;
    deal?: Deal;
    ineligibility_reason?: string;
}
interface Tag {
    id: string;
    name: string;
    slug: string;
    color?: string;
    icon?: string;
    description?: string;
    tag_group?: string;
    sort_order: number;
    usage_count: number;
    created_at: string;
    updated_at: string;
}
interface TagsResponse {
    items: Tag[];
    total: number;
    limit: number;
    offset: number;
}

export { type ComponentSelectionInput as $, type AddOn as A, type BenefitType as B, type BundleSelectionInput as C, type BundleStoredSelection as D, type BundleSummary as E, type BundleWithDetails as F, type Cart as G, type CartAddOn as H, type CartChannel as I, type CartItem as J, type CartItemDetails as K, type CartMutationResult as L, type CartNotice as M, type CartStatus as N, type CartSummary as O, type CartTotals as P, type Category as Q, type CategorySummary as R, type ChosenPrice as S, CimplifyError as T, type Collection as U, type CollectionProduct as V, type CollectionSummary as W, type ComponentGroup as X, type ComponentGroupWithComponents as Y, type ComponentPriceBreakdown as Z, type ComponentSchedulingData as _, type AddOnDetails as a, type ProductBillingPlan as a$, type ComponentSourceType as a0, type Composite as a1, type CompositeComponent as a2, type CompositeComponentView as a3, type CompositeGroupView as a4, type CompositePriceBreakdown as a5, type CompositePriceResult as a6, type CompositePricingMode as a7, type CompositeSelectionData as a8, type CompositeStoredSelection as a9, type FormattedPlanOption as aA, type GroupPricingBehavior as aB, INPUT_FIELD_TYPE as aC, IdempotencyMismatchError as aD, type InputFieldType as aE, type InputFieldValidation as aF, type InventoryType as aG, type KnowledgeArticle as aH, type LineConfiguration as aI, type LocationProductPrice as aJ, type LocationValue as aK, type MeasurementValue as aL, type Money as aM, PRODUCT_TYPE as aN, type Pagination as aO, type PaginationParams as aP, type PhoneValue as aQ, type Price as aR, type PriceAdjustment as aS, type PriceDecisionPath as aT, type PriceEntryType as aU, type PricePathTaxInfo as aV, type PriceSource as aW, type Product as aX, type ProductAddOn as aY, type ProductAvailability as aZ, type ProductAvailabilityNow as a_, type CompositeWithDetails as aa, type CurrencyCode as ab, type CustomAttributeDefinition as ac, type CustomAttributeValue as ad, type CustomerInputValue as ae, DURATION_UNIT as af, type DateRangeValue as ag, type Deal as ah, type DealBenefitType as ai, type DepositType as aj, type DigitalProductType as ak, type DiscountBreakdown as al, type DiscountDetails as am, type DiscountValidation as an, type DisplayAddOn as ao, type DisplayAddOnOption as ap, type DisplayCart as aq, type DisplayCartItem as ar, type DisplayMode as as, type DurationUnit as at, ERROR_HINTS as au, type EligiblePlansQuery as av, ErrorCode as aw, type ErrorCodeType as ax, type ErrorHint as ay, type FacetValue as az, type AddOnGroupDetails as b, type ProductDealInfo as b0, type ProductInputField as b1, type ProductProperty as b2, type ProductRenderHint as b3, type ProductTaxonomy as b4, type ProductTimeProfile as b5, type ProductType as b6, type ProductVariant as b7, type ProductVariantValue as b8, type ProductWithDetails as b9, type VariantAxis as bA, type VariantAxisSelection as bB, type VariantAxisValue as bC, type VariantAxisValueView as bD, type VariantAxisView as bE, type VariantAxisWithValues as bF, type VariantDetails as bG, type VariantDetailsDTO as bH, type VariantDisplayAttribute as bI, type VariantLocationAvailability as bJ, type VariantStrategy as bK, type VariantView as bL, ZERO as bM, currencyCode as bN, enrichError as bO, getErrorHint as bP, isCimplifyError as bQ, isIdempotencyMismatchError as bR, isQuoteConflictRequiringConsent as bS, isQuoteError as bT, isRetryableError as bU, isSupportedCurrency as bV, money as bW, moneyFromNumber as bX, type PropertyFacet as ba, type PropertySource as bb, type QuantityPricingTier as bc, RENDER_HINT as bd, type RelatedProductView as be, type SalesChannel as bf, type SchedulingMode as bg, type SelectedAddOnOption as bh, type SemanticKind as bi, type SignatureValue as bj, type Subscription as bk, type SubscriptionInvoice as bl, type SubscriptionItem as bm, type SubscriptionStatus as bn, type SubscriptionWithDetails as bo, type Tag as bp, type TagsResponse as bq, type TaxPathComponent as br, type TaxonomyAttributeTemplate as bs, type TaxonomyWithChildren as bt, type UICart as bu, type UICartBusiness as bv, type UICartCustomer as bw, type UICartLocation as bx, type UICartPricing as by, type UpdateCartItemInput as bz, type AddOnOption as c, type AddOnOptionDetails as d, type AddOnOptionPrice as e, type AddOnWithOptions as f, type AddToCartInput as g, type AddressValue as h, type AdjustmentType as i, type ApiError as j, type AppliedDiscount as k, type AttributeAppliesTo as l, type AttributeType as m, type AttributeValidationRules as n, type AttributeVisibility as o, type BillingFrequency as p, type BillingMarkupType as q, type BillingPlanType as r, type Bundle as s, type BundleComponentData as t, type BundleComponentInfo as u, type BundleComponentVariantView as v, type BundleComponentView as w, type BundlePriceType as x, type BundleProduct as y, type BundleSelectionData as z };
