arky-sdk 0.10.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types/index.ts","../src/utils/orderItems.ts","../src/api/storefront.ts","../src/cartController.ts","../src/utils/queryParams.ts","../src/services/createHttpClient.ts","../src/api/account.ts","../src/api/auth.ts","../src/api/store.ts","../src/api/media.ts","../src/api/notification.ts","../src/api/promoCode.ts","../src/api/cms.ts","../src/api/eshop.ts","../src/api/location.ts","../src/api/market.ts","../src/api/crm.ts","../src/api/support.ts","../src/api/leadResearch.ts","../src/api/social.ts","../src/api/workflow.ts","../src/api/platform.ts","../src/api/shipping.ts","../src/api/paymentProvider.ts","../src/api/emailTemplate.ts","../src/api/form.ts","../src/api/taxonomy.ts","../src/api/analytics.ts","../src/api/experiments.ts","../src/utils/blocks.ts","../src/utils/price.ts","../src/utils/validation.ts","../src/utils/timezone.ts","../src/utils/text.ts","../src/utils/svg.ts","../src/utils/keyValidation.ts","../src/utils/inventory.ts","../src/payments/stripe.ts","../src/storefrontStore/utils.ts","../src/storefrontStore/initialize.ts","../src/index.ts"],"names":["PaymentMethodType","url","isRecord","isBlock","findBlock","atom","computed","map","publishableKey","entry","locale"],"mappings":"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","file":"index.cjs","sourcesContent":["export * from \"./api\";\n\nexport type Currency =\n | \"usd\"\n | \"eur\"\n | \"gbp\"\n | \"jpy\"\n | \"cny\"\n | \"chf\"\n | \"aud\"\n | \"cad\"\n | \"hkd\"\n | \"sgd\"\n | \"nzd\"\n | \"krw\"\n | \"sek\"\n | \"nok\"\n | \"dkk\"\n | \"inr\"\n | \"mxn\"\n | \"brl\"\n | \"zar\"\n | \"rub\"\n | \"try\"\n | \"pln\"\n | \"thb\"\n | \"idr\"\n | \"myr\"\n | \"php\"\n | \"czk\"\n | \"ils\"\n | \"aed\"\n | \"sar\"\n | \"huf\"\n | \"ron\"\n | \"bgn\"\n | \"hrk\"\n | \"bam\"\n | \"rsd\"\n | \"mkd\"\n | \"all\";\n\nexport enum PaymentMethodType {\n Cash = \"cash\",\n CreditCard = \"credit_card\",\n}\n\nexport interface OrderPaymentTax {\n amount: number;\n mode_snapshot?: string;\n rate_bps: number;\n lines: OrderPaymentTaxLine[];\n}\n\nexport interface OrderPaymentTaxLine {\n rate_bps: number;\n amount: number;\n label?: string;\n scope?: string;\n}\n\nexport interface OrderPaymentPromoCode {\n id: string;\n code: string;\n type: string;\n value: number;\n}\n\nexport type PaymentTransactionProvider = \"manual\" | \"stripe\";\nexport type PaymentTransactionType =\n | \"create\"\n | \"authorize\"\n | \"capture\"\n | \"sale\"\n | \"cancel\"\n | \"refund\"\n | \"mark_paid\";\nexport type PaymentTransactionRequestType =\n \"create_payment\" | \"confirm_payment\" | \"cancel_payment\";\nexport type PaymentTransactionStatus =\n | \"requested\"\n | \"requires_action\"\n | \"processing\"\n | \"succeeded\"\n | \"rejected\"\n | \"failed\"\n | \"unknown\"\n | \"cancelled\";\n\nexport interface PaymentTransaction {\n id: string;\n store_id: string;\n payment_id: string;\n order_id: string;\n parent_transaction_id?: string | null;\n type: PaymentTransactionType;\n request?: PaymentTransactionRequestType | null;\n status: PaymentTransactionStatus;\n revision: number;\n attempt_count: number;\n amount: number;\n currency: Currency;\n provider: PaymentTransactionProvider;\n requested_at?: number | null;\n processing_started_at?: number | null;\n processing_deadline_at?: number | null;\n completed_at?: number | null;\n created_at: number;\n updated_at: number;\n safe_error?: string | null;\n}\n\nexport interface OrderRefund {\n id: string;\n store_id: string;\n order_id: string;\n attempt_count: number;\n total: number;\n currency: Currency;\n provider: PaymentTransactionProvider;\n status: import(\"./api\").RefundStatus;\n safe_error?: string | null;\n requested_at: number;\n processing_started_at?: number | null;\n processing_deadline_at?: number | null;\n completed_at?: number | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface OrderPayment {\n id: string;\n store_id: string;\n order_id: string;\n status: OrderPaymentStatus;\n amount: number;\n currency: Currency;\n paid: number;\n authorized_amount: number;\n captured_amount: number;\n refunded_amount: number;\n voided_amount: number;\n method_type: PaymentMethodType;\n latest_transaction_id?: string | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface OrderMoney {\n currency: Currency;\n market: string;\n subtotal: number;\n shipping: number;\n discount: number;\n total: number;\n tax?: OrderPaymentTax | null;\n promo_code?: OrderPaymentPromoCode | null;\n zone_id?: string | null;\n payment_method_key?: string | null;\n shipping_method_id?: string | null;\n method_type: PaymentMethodType;\n}\n\nexport interface OrderFinancialSummary {\n status: OrderPaymentSummaryStatus;\n paid: number;\n authorized_amount: number;\n captured_amount: number;\n refunded_amount: number;\n voided_amount: number;\n updated_at: number;\n}\n\nexport interface PromoCodeValidation {\n promo_code_id: string;\n code: string;\n discounts: import(\"./api\").Discount[];\n conditions: import(\"./api\").Condition[];\n}\n\nexport interface OrderQuote {\n id?: string;\n expires_at?: number;\n market: string;\n zone: Zone | null;\n items: QuoteLine[];\n shipping_lines: ShippingLine[];\n subtotal: number;\n shipping: number;\n discount: number;\n tax: number;\n total: number;\n shipping_method: ShippingMethod | null;\n payment_method: PaymentMethod | null;\n payment_methods: PaymentMethod[];\n promo_code: PromoCodeValidation | null;\n money: OrderMoney;\n charge_amount: number;\n}\n\nexport interface Price {\n currency: Currency;\n market: string;\n amount: number;\n compare_at?: number;\n contact_list_id?: string;\n}\n\nexport type IntervalPeriod = \"month\" | \"year\";\n\nexport interface SubscriptionInterval {\n period: IntervalPeriod;\n count: number;\n}\n\nexport interface PriceProvider {\n type: \"stripe\";\n id: string;\n}\n\nexport interface SubscriptionPrice {\n currency: Currency;\n amount: number;\n compare_at?: number;\n interval?: SubscriptionInterval;\n providers: PriceProvider[];\n}\n\nexport interface Address {\n name?: string | null;\n company?: string | null;\n street1?: string | null;\n street2?: string | null;\n city?: string | null;\n state?: string | null;\n postal_code?: string | null;\n country?: string | null;\n phone?: string | null;\n email?: string | null;\n}\n\nexport interface Coordinates {\n lat: number;\n lon: number;\n}\n\nexport interface GeoLocation {\n coordinates?: Coordinates | null;\n label?: string | null;\n}\n\nexport interface ZoneLocation {\n country?: string | null;\n state?: string | null;\n city?: string | null;\n postal_code?: string | null;\n}\n\nexport interface EshopCartItem {\n id: string;\n product_id: string;\n variant_id: string;\n product_name: string;\n product_slug: string;\n variant_attributes: Record<string, any>;\n requires_shipping: boolean;\n price: Price;\n quantity: number;\n added_at: number;\n max_stock?: number;\n}\n\nexport type CartStatus = \"active\" | \"abandoned\" | \"converted\" | \"expired\";\nexport type CartOrigin = \"storefront\" | \"admin\";\n\nexport interface Cart {\n id: string;\n store_id: string;\n contact_id: string;\n token: string;\n status: CartStatus;\n origin: CartOrigin;\n created_by_account_id?: string | null;\n market: string;\n items: import(\"./api\").OrderCheckoutItemInput[];\n shipping_address?: Address | null;\n billing_address?: Address | null;\n forms: FormEntry[];\n promo_code?: string | null;\n payment_method_key?: string | null;\n shipping_method_id?: string | null;\n quote_snapshot?: OrderQuote | null;\n converted_order_id?: string | null;\n item_count: number;\n last_action_at: number;\n abandoned_at?: number | null;\n recovery_sent_at?: number | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface SocialConnectionCredential {\n expires_at: number | null;\n scopes: string[];\n}\n\nexport interface SocialDestinationMetadata {\n external_account_id: string;\n external_account_name: string;\n handle: string | null;\n avatar_url: string | null;\n}\n\nexport type SocialConnectionType =\n | \"facebook_page\"\n | \"instagram_business\"\n | \"youtube_channel\"\n | \"tiktok_account\"\n | \"x_account\";\n\nexport interface SocialConnectionProviderData {\n credential: SocialConnectionCredential;\n destination: SocialDestinationMetadata;\n}\n\nexport type SocialConnectionData = SocialConnectionProviderData;\n\nexport type SocialPublicationStatus =\n | \"draft\"\n | \"scheduled\"\n | \"publishing\"\n | \"published\"\n | \"failed\"\n | \"unknown\"\n | \"cancelled\";\n\nexport type YoutubePrivacy = \"public\" | \"unlisted\" | \"private\";\nexport type TiktokPrivacy = \"public\" | \"friends\" | \"private\";\nexport type InstagramPlacement = \"feed\" | \"reel\" | \"story\";\n\nexport interface FacebookPageContent {\n type: \"facebook_page\";\n text?: string | null;\n media_ids: string[];\n link_url?: string | null;\n}\n\nexport interface InstagramBusinessContent {\n type: \"instagram_business\";\n placement?: InstagramPlacement | null;\n share_to_feed?: boolean | null;\n caption?: string | null;\n media_ids: string[];\n}\n\nexport interface YoutubeChannelContent {\n type: \"youtube_channel\";\n title: string;\n description?: string | null;\n video_media_id: string;\n privacy: YoutubePrivacy;\n}\n\nexport interface TiktokAccountContent {\n type: \"tiktok_account\";\n caption?: string | null;\n video_media_id: string;\n privacy: TiktokPrivacy;\n}\n\nexport interface XAccountContent {\n type: \"x_account\";\n text?: string | null;\n media_ids: string[];\n}\n\nexport type SocialPublicationContent =\n | FacebookPageContent\n | InstagramBusinessContent\n | YoutubeChannelContent\n | TiktokAccountContent\n | XAccountContent;\n\nexport interface ValidationError {\n field: string;\n error: string;\n}\n\nexport interface SocialPublicationValidation {\n valid: boolean;\n errors: ValidationError[];\n warnings: ValidationError[];\n}\n\nexport interface SocialPublication {\n id: string;\n store_id: string;\n social_connection_id: string;\n key: string;\n status: SocialPublicationStatus;\n content: SocialPublicationContent;\n scheduled_at: number;\n published_at?: number | null;\n provider_post_id?: string | null;\n provider_post_url?: string | null;\n error_code?: string | null;\n error_message?: string | null;\n attempt_count: number;\n last_attempt_at?: number | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface SocialPublicationMutationResponse {\n publication: SocialPublication;\n validation: SocialPublicationValidation;\n publish_requested: boolean;\n}\n\nexport type SocialPublicationCommentStatus =\n \"open\" | \"replied\" | \"hidden\" | \"deleted\";\n\nexport type SocialPublicationCommentIntent =\n \"lead\" | \"support\" | \"complaint\" | \"question\" | \"praise\" | \"spam\" | \"general\";\n\nexport type SocialPublicationCommentPriority =\n \"urgent\" | \"high\" | \"normal\" | \"low\";\n\nexport interface SocialPublicationComment {\n id: string;\n store_id: string;\n publication_id: string;\n social_connection_id: string;\n type: SocialConnectionType;\n provider_post_id?: string | null;\n provider_comment_id: string;\n provider_parent_comment_id?: string | null;\n parent_comment_id?: string | null;\n root_comment_id?: string | null;\n depth: number;\n provider_reply_count?: number | null;\n synced_reply_count: number;\n has_more_replies: boolean;\n thread_last_synced_at?: number | null;\n author_is_channel: boolean;\n contact_id?: string | null;\n action_id?: string | null;\n opportunity_action_id?: string | null;\n author_name?: string | null;\n author_handle?: string | null;\n author_provider_user_id?: string | null;\n text: string;\n status: SocialPublicationCommentStatus;\n provider_created_at?: number | null;\n last_synced_at: number;\n replied_at?: number | null;\n classification_intent?: SocialPublicationCommentIntent | null;\n classification_priority?: SocialPublicationCommentPriority | null;\n classification_confidence?: number | null;\n classification_summary?: string | null;\n classification_reason?: string | null;\n suggested_reply?: string | null;\n classified_at?: number | null;\n classification_model?: string | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface SocialPublicationMetricSnapshot {\n id: string;\n store_id: string;\n publication_id: string;\n social_connection_id: string;\n type: SocialConnectionType;\n provider_post_id?: string | null;\n metrics: Record<string, number>;\n collected_at: number;\n created_at: number;\n updated_at: number;\n}\n\nexport type SocialCommentReplyStatus =\n \"requested\" | \"processing\" | \"succeeded\" | \"rejected\" | \"failed\" | \"unknown\";\n\nexport type SocialCommentReplyError =\n | { type: \"provider_call_not_started\"; message: string; at: number }\n | {\n type: \"provider_rejected\";\n message: string;\n provider_code?: string | null;\n provider_status?: number | null;\n at: number;\n }\n | { type: \"unknown_outcome\"; message: string; at: number };\n\nexport interface SocialCommentReplyEvidence {\n provider_comment_id: string;\n provider_comment_url?: string | null;\n}\n\nexport interface SocialCommentReply {\n id: string;\n store_id: string;\n publication_id: string;\n comment_id: string;\n social_connection_id: string;\n text: string;\n status: SocialCommentReplyStatus;\n requested_at: number;\n processing_started_at?: number | null;\n processing_deadline_at?: number | null;\n completed_at?: number | null;\n evidence?: SocialCommentReplyEvidence | null;\n error?: SocialCommentReplyError | null;\n}\n\nexport interface SocialPublicationCommentReplyResponse {\n comment: SocialPublicationComment;\n reply: SocialCommentReply;\n}\n\nexport type SocialPublicationEffectStatus =\n \"requested\" | \"processing\" | \"succeeded\" | \"rejected\" | \"failed\" | \"unknown\";\n\nexport type SocialPublicationEffectError =\n | { type: \"provider_call_not_started\"; message: string; at: number }\n | {\n type: \"provider_rejected\";\n message: string;\n provider_code?: string | null;\n provider_status?: number | null;\n at: number;\n }\n | { type: \"unknown_outcome\"; message: string; at: number };\n\nexport type SocialPublicationEffectRequest =\n | {\n type: \"x_upload_media\";\n media_id: string;\n uploaded_media_ids: string[];\n }\n | { type: \"x_publish_post\"; uploaded_media_ids: string[] }\n | {\n type: \"facebook_create_unpublished_photo\";\n media_id: string;\n unpublished_photo_ids: string[];\n }\n | {\n type: \"facebook_publish_post\";\n unpublished_photo_ids: string[];\n }\n | {\n type: \"instagram_create_media_container\";\n media_id: string;\n placement: InstagramPlacement;\n carousel_item: boolean;\n child_container_ids: string[];\n }\n | {\n type: \"instagram_create_carousel_container\";\n child_container_ids: string[];\n }\n | {\n type: \"instagram_publish_container\";\n container_id: string;\n container_media_id?: string | null;\n }\n | { type: \"youtube_initialize_upload\"; media_id: string }\n | {\n type: \"youtube_upload\";\n media_id: string;\n total_bytes: number;\n has_upload_session: boolean;\n }\n | { type: \"tiktok_initialize_upload\"; media_id: string }\n | {\n type: \"tiktok_upload\";\n media_id: string;\n publish_id: string;\n total_bytes: number;\n has_upload_session: boolean;\n };\n\nexport interface SocialPublicationEffectEvidence {\n provider_object_id?: string | null;\n provider_object_url?: string | null;\n has_upload_session: boolean;\n upload_total_bytes?: number | null;\n}\n\nexport interface SocialPublicationEffect {\n id: string;\n store_id: string;\n publication_id: string;\n social_connection_id: string;\n publication_revision: number;\n sequence: number;\n request: SocialPublicationEffectRequest;\n status: SocialPublicationEffectStatus;\n requested_at: number;\n processing_started_at?: number | null;\n processing_deadline_at?: number | null;\n completed_at?: number | null;\n evidence?: SocialPublicationEffectEvidence | null;\n error?: SocialPublicationEffectError | null;\n}\n\nexport interface SocialPublicationEngagementSyncResult {\n publications_scanned: number;\n comment_pages_scanned: number;\n comments_synced: number;\n metrics_synced: number;\n comments: SocialPublicationComment[];\n metrics: SocialPublicationMetricSnapshot[];\n skipped_publication_ids: string[];\n errors: string[];\n}\n\nexport interface SocialPublicationCommentClassificationResult {\n comments_scanned: number;\n comments_classified: number;\n comments_skipped: number;\n comments: SocialPublicationComment[];\n skipped_comment_ids: string[];\n errors: string[];\n}\n\nexport interface SocialEngagementCapabilities {\n read_comments: boolean;\n reply_to_comments: boolean;\n}\n\nexport interface SocialAnalyticsCapabilities {\n read_post_metrics: boolean;\n}\n\nexport interface SocialProviderCapability {\n type: SocialConnectionType;\n display_name: string;\n icon_key: string;\n publishing_supported: boolean;\n required_scopes: string[];\n media_requirements: string[];\n engagement: SocialEngagementCapabilities;\n analytics: SocialAnalyticsCapabilities;\n}\n\nexport interface SocialConnectResponse {\n authorization_url: string;\n state: string;\n}\n\nexport type SocialOAuthCallbackStatus = \"connected\" | \"selection_required\";\n\nexport interface SocialOAuthDestinationOption extends SocialDestinationMetadata {\n candidate_id: string;\n}\n\nexport interface SocialOAuthCallbackResponse {\n status: SocialOAuthCallbackStatus;\n store_id: string;\n type: SocialConnectionType;\n account_id: string;\n attempt_id?: string | null;\n social_connection_id?: string | null;\n destination?: SocialDestinationMetadata | null;\n options: SocialOAuthDestinationOption[];\n message: string;\n}\n\nexport type BuildHookType = \"vercel\" | \"netlify\" | \"cloudflare\" | \"custom\";\n\nexport interface BuildHook {\n id: string;\n store_id: string;\n key: string;\n type: BuildHookType;\n url: string;\n headers: Record<string, string>;\n active: boolean;\n created_at: number;\n updated_at: number;\n}\n\nexport interface SocialConnection {\n id: string;\n store_id: string;\n type: SocialConnectionType;\n data: SocialConnectionData;\n created_at: number;\n updated_at: number;\n}\n\nexport type PaymentProviderConnectionStatus =\n \"requested\" | \"processing\" | \"succeeded\" | \"rejected\" | \"failed\" | \"unknown\";\n\nexport type PaymentProviderConnectionError =\n | { type: \"provider_rejected\"; message: string; at: number }\n | { type: \"provider_call_not_started\"; message: string; at: number }\n | { type: \"unknown_outcome\"; message: string; at: number };\n\nexport interface PaymentProviderConnection {\n status: PaymentProviderConnectionStatus;\n revision: number;\n attempts: number;\n requested_at: number;\n processing_started_at?: number | null;\n completed_at?: number | null;\n error?: PaymentProviderConnectionError | null;\n}\n\nexport interface PaymentProvider {\n id: string;\n store_id: string;\n key: string;\n provider: {\n type: \"stripe\";\n onboarding_status: \"pending\" | \"submitted\" | \"complete\";\n charges_enabled: boolean;\n payouts_enabled: boolean;\n details_submitted: boolean;\n };\n connection: PaymentProviderConnection;\n created_at: number;\n updated_at: number;\n}\n\nexport interface PaymentStoreConfig {\n provider: \"stripe\";\n publishable_key: string;\n connected_account_id: string;\n}\n\nexport interface StripePaymentProviderConnectResponse {\n provider: PaymentProvider;\n onboarding_url: string;\n}\n\nexport interface ShippingWeightTier {\n up_to_grams: number;\n amount: number;\n}\n\nexport type PaymentMethod =\n | {\n type: \"cash\";\n id: string;\n key: string;\n }\n | {\n type: \"credit_card\";\n id: string;\n key: string;\n payment_provider_id: string;\n };\n\nexport interface ShippingMethod {\n id: string;\n taxable: boolean;\n eta_text: string;\n location_id?: string;\n amount: number;\n free_above?: number;\n weight_tiers?: ShippingWeightTier[];\n}\n\nexport interface Location {\n id: string;\n store_id: string;\n key: string;\n address: Address;\n is_pickup_location: boolean;\n created_at: number;\n updated_at: number;\n}\n\nexport interface InventoryLevel {\n location_id: string;\n available: number;\n reserved: number;\n}\n\nexport interface ProductInventory {\n id: string;\n store_id: string;\n product_id: string;\n variant_id: string;\n location_id: string;\n available: number;\n reserved: number;\n updated_at: number;\n}\n\nexport type DigitalAssetType = \"file\" | \"external_link\";\nexport type DigitalAssetStatus = \"active\" | \"archived\";\nexport type DigitalDeliveryPolicy = \"automatic_after_payment\" | \"manual\";\n\nexport interface DigitalAsset {\n id: string;\n name: string;\n type: DigitalAssetType;\n storage_ref?: string | null;\n external_url?: string | null;\n status: DigitalAssetStatus;\n}\n\nexport interface ProductVariant {\n id: string;\n sku?: string;\n prices: Price[];\n inventory: ProductInventory[];\n attributes: Block[];\n requires_shipping: boolean;\n digital_delivery_policy: DigitalDeliveryPolicy;\n digital_assets: DigitalAsset[];\n download_limit?: number | null;\n access_expires_after_days?: number | null;\n tax_category_id?: string | null;\n weight?: number;\n}\n\nexport interface Product {\n id: string;\n store_id: string;\n key: string;\n slug: Record<string, string>;\n blocks: Block[];\n taxonomies: TaxonomyEntry[];\n variants: ProductVariant[];\n status: ProductStatus;\n created_at: number;\n updated_at: number;\n}\n\nexport interface GalleryItem {\n id: string;\n url: string;\n alt?: string;\n caption?: string;\n}\n\nexport interface ProductLineItemSnapshot {\n product_key: string;\n variant_sku?: string;\n variant_attributes: Block[];\n requires_shipping: boolean;\n tax_category_id?: string | null;\n price: Price;\n}\n\nexport interface ServiceLineItemSnapshot {\n service_key: string;\n provider_key: string;\n tax_category_id?: string | null;\n price: Price;\n}\n\nexport interface DiscountAllocation {\n discount_application_id?: string | null;\n amount: number;\n}\n\nexport interface TaxLine {\n id: string;\n title: string;\n rate_bps: number;\n amount: number;\n taxable_base: number;\n included_in_price: boolean;\n jurisdiction_country?: string | null;\n jurisdiction_region?: string | null;\n jurisdiction_city?: string | null;\n jurisdiction_postal_code?: string | null;\n tax_category_id?: string | null;\n tax_rate_id?: string | null;\n source: string;\n provider_tax_id?: string | null;\n provider_tax_line_id?: string | null;\n}\n\nexport interface LineMoneySnapshot {\n unit_price: number;\n subtotal: number;\n discount_allocations: DiscountAllocation[];\n discount_total: number;\n taxable_base: number;\n tax_lines: TaxLine[];\n tax_total: number;\n total: number;\n}\n\nexport type OrderItemFulfillmentStatus =\n \"unfulfilled\" | \"partially_fulfilled\" | \"fulfilled\" | \"not_required\";\n\nexport type BookingOrderItemStatus =\n \"scheduled\" | \"completed\" | \"no_show\" | \"cancelled\";\n\nexport type OrderItemSnapshot =\n ProductLineItemSnapshot | ServiceLineItemSnapshot;\n\nexport type ProductQuoteLineAvailability =\n { ok: true; available?: number } | { ok: false; reason: string };\n\nexport type ServiceQuoteLineAvailability =\n { ok: true; spots: number } | { ok: false; reason: string };\n\nexport interface ProductQuoteLine {\n type: \"product\";\n line_id: string;\n product_id: string;\n variant_id: string;\n quantity: number;\n unit_price: number;\n subtotal: number;\n discount: number;\n tax: number;\n total: number;\n money: LineMoneySnapshot;\n snapshot: ProductLineItemSnapshot;\n availability: ProductQuoteLineAvailability;\n}\n\nexport interface ServiceQuoteLine {\n type: \"service\";\n line_id: string;\n service_id: string;\n provider_id: string;\n from: number;\n to: number;\n quantity: 1;\n unit_price: number;\n subtotal: number;\n discount: number;\n tax: number;\n total: number;\n money: LineMoneySnapshot;\n snapshot: ServiceLineItemSnapshot;\n availability: ServiceQuoteLineAvailability;\n}\n\nexport type QuoteLine = ProductQuoteLine | ServiceQuoteLine;\n\nexport interface ProductLineItem {\n type: \"product\";\n id: string;\n product_id: string;\n variant_id: string;\n quantity: number;\n cancelled_quantity: number;\n allocated_quantity: number;\n fulfilled_quantity: number;\n location_id?: string;\n snapshot: ProductLineItemSnapshot;\n status: OrderItemStatus;\n fulfillment_status: OrderItemFulfillmentStatus;\n money: LineMoneySnapshot;\n}\n\nexport interface ServiceLineItem {\n type: \"service\";\n id: string;\n service_id: string;\n provider_id: string;\n from: number;\n to: number;\n quantity: number;\n cancelled_quantity: number;\n fulfilled_quantity: number;\n forms: FormEntry[];\n snapshot: ServiceLineItemSnapshot;\n status: OrderItemStatus;\n booking_status: BookingOrderItemStatus;\n fulfillment_status: OrderItemFulfillmentStatus;\n money: LineMoneySnapshot;\n}\n\nexport type OrderItem = ProductLineItem | ServiceLineItem;\n\nexport type OrderPaymentSummaryStatus =\n | \"unpaid\"\n | \"pending\"\n | \"authorized\"\n | \"partially_paid\"\n | \"paid\"\n | \"partially_refunded\"\n | \"refunded\"\n | \"failed\"\n | \"voided\"\n | \"expired\";\n\nexport type OrderFulfillmentStatus =\n | \"unfulfilled\"\n | \"scheduled\"\n | \"on_hold\"\n | \"in_progress\"\n | \"partially_fulfilled\"\n | \"fulfilled\"\n | \"incomplete\"\n | \"not_required\";\n\nexport interface OrderFulfillmentSummary {\n status: OrderFulfillmentStatus;\n required_quantity: number;\n allocated_quantity: number;\n fulfilled_quantity: number;\n open_order_count: number;\n updated_at: number;\n}\n\nexport interface HistoryEntry {\n action: string;\n reason?: string;\n timestamp: number;\n}\n\nexport type DigitalAccessGrantStatus =\n \"pending\" | \"active\" | \"exhausted\" | \"revoked\" | \"expired\";\n\nexport interface DigitalAccessGrant {\n id: string;\n store_id: string;\n order_id: string;\n order_item_id: string;\n product_id: string;\n variant_id: string;\n contact_id: string;\n asset_id: string;\n asset_name_snapshot: string;\n type: DigitalAssetType;\n status: DigitalAccessGrantStatus;\n delivery_policy_snapshot: DigitalDeliveryPolicy;\n download_limit?: number | null;\n access_expires_after_days_snapshot?: number | null;\n download_count: number;\n expires_at?: number | null;\n granted_at?: number | null;\n revoked_at?: number | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface DigitalAccessDownloadResponse {\n url: string;\n url_expires_at?: number | null;\n grant: DigitalAccessGrant;\n}\n\nexport interface ShippingLine {\n id: string;\n shipping_method_id?: string | null;\n title: string;\n code?: string | null;\n source: string;\n carrier_identifier?: string | null;\n money: LineMoneySnapshot;\n created_at: number;\n updated_at: number;\n}\n\nexport type FulfillmentOrderStatus =\n | \"open\"\n | \"in_progress\"\n | \"closed\"\n | \"incomplete\"\n | \"on_hold\"\n | \"scheduled\"\n | \"cancelled\";\n\nexport type FulfillmentOrderRequestStatus =\n | \"unsubmitted\"\n | \"submitted\"\n | \"accepted\"\n | \"rejected\"\n | \"cancellation_requested\"\n | \"cancellation_accepted\";\n\nexport interface FulfillmentOrderLine {\n id: string;\n order_item_id: string;\n quantity: number;\n allocated_quantity: number;\n fulfilled_quantity: number;\n remaining_quantity: number;\n}\n\nexport interface FulfillmentOrder {\n id: string;\n store_id: string;\n order_id: string;\n assigned_location_id: string;\n status: FulfillmentOrderStatus;\n request_status: FulfillmentOrderRequestStatus;\n fulfill_at?: number | null;\n fulfill_by?: number | null;\n destination?: Address | null;\n lines: FulfillmentOrderLine[];\n created_at: number;\n updated_at: number;\n}\n\nexport interface Order {\n id: string;\n revision: number;\n number: string;\n store_id: string;\n source_cart_id: string;\n contact_id: string;\n status: OrderStatus;\n payment_status: OrderPaymentSummaryStatus;\n fulfillment_status: OrderFulfillmentStatus;\n verified: boolean;\n items: OrderItem[];\n payment_id: string;\n money: OrderMoney;\n financial_summary: OrderFinancialSummary;\n fulfillment_summary: OrderFulfillmentSummary;\n shipping_lines: ShippingLine[];\n shipping_address?: Address;\n billing_address?: Address;\n forms: FormEntry[];\n history: HistoryEntry[];\n contact_list_id?: string;\n fired_reminders: number[];\n created_at: number;\n updated_at: number;\n}\n\nexport type CheckoutPaymentAction =\n { type: \"none\" } | { type: \"handle_next_action\"; client_secret: string };\n\nexport interface OrderCheckoutResult {\n order_id: string;\n number: string;\n payment_action: CheckoutPaymentAction;\n payment: OrderPayment;\n}\n\nexport interface Zone {\n id: string;\n store_id: string;\n market_id: string;\n countries: string[];\n states: string[];\n postal_codes: string[];\n tax_bps: number;\n shipping_methods: ShippingMethod[];\n}\n\nexport interface Market {\n id: string;\n store_id: string;\n key: string;\n currency: Currency;\n tax_mode: \"exclusive\" | \"inclusive\";\n payment_methods: PaymentMethod[];\n zones: Zone[];\n created_at: number;\n updated_at: number;\n}\n\nexport interface Language {\n id: string;\n}\n\nexport interface StoreEmails {\n billing: string;\n support: string;\n}\n\nexport type WebhookEventSubscription =\n | { event: \"collection.created\"; key?: string }\n | { event: \"collection.updated\"; key?: string }\n | { event: \"collection.deleted\"; key?: string }\n | { event: \"entry.created\"; collection_id?: string; key?: string }\n | { event: \"entry.updated\"; collection_id?: string; key?: string }\n | { event: \"entry.deleted\"; collection_id?: string; key?: string }\n | { event: \"order.created\" }\n | { event: \"order.updated\" }\n | { event: \"order.confirmed\" }\n | { event: \"order.payment_received\" }\n | { event: \"order.payment_failed\" }\n | { event: \"order.refunded\" }\n | { event: \"order.digital_access_activated\" }\n | { event: \"order.digital_access_downloaded\" }\n | { event: \"order.digital_access_revoked\" }\n | { event: \"order.cancelled\" }\n | { event: \"order.reminder\" }\n | { event: \"order.shipment_created\" }\n | { event: \"order.shipment_in_transit\" }\n | { event: \"order.shipment_out_for_delivery\" }\n | { event: \"order.shipment_delivered\" }\n | { event: \"order.shipment_failed\" }\n | { event: \"order.shipment_returned\" }\n | { event: \"order.shipment_status_changed\" }\n | { event: \"cart.created\" }\n | { event: \"cart.updated\" }\n | { event: \"cart.abandoned\" }\n | { event: \"cart.converted\" }\n | { event: \"product.created\" }\n | { event: \"product.updated\" }\n | { event: \"product.deleted\" }\n | { event: \"provider.created\" }\n | { event: \"provider.updated\" }\n | { event: \"provider.deleted\" }\n | { event: \"service.created\" }\n | { event: \"service.updated\" }\n | { event: \"service.deleted\" }\n | { event: \"media.created\" }\n | { event: \"media.deleted\" }\n | { event: \"store.created\" }\n | { event: \"store.updated\" }\n | { event: \"contact_list.created\" }\n | { event: \"contact_list.updated\" }\n | { event: \"contact_list.contact_added\" }\n | { event: \"contact_list.contact_pending\" }\n | { event: \"contact_list.contact_confirmed\" }\n | { event: \"contact_list.contact_cancelled\" }\n | { event: \"contact.created\" }\n | { event: \"contact.updated\" }\n | { event: \"form_submission.created\"; form_id?: string }\n | { event: \"account.updated\" };\n\nexport interface Webhook {\n id: string;\n store_id: string;\n key: string;\n url: string;\n events: WebhookEventSubscription[];\n headers: Record<string, string>;\n secret: string;\n enabled: boolean;\n created_at: number;\n updated_at: number;\n}\n\nexport type StoreSubscriptionStatus =\n \"pending\" | \"active\" | \"cancellation_scheduled\" | \"cancelled\" | \"expired\";\n\nexport type StoreSubscriptionActionStatus =\n \"requested\" | \"processing\" | \"succeeded\" | \"rejected\" | \"failed\" | \"unknown\";\n\nexport type StoreSubscriptionActionRequest =\n | { type: \"select_plan\"; data: { plan_id: string } }\n | { type: \"cancel_at_period_end\" }\n | { type: \"reactivate\" };\n\nexport type StoreSubscriptionActionError =\n | {\n type: \"provider_rejected\";\n data: { effect_id: string; message: string };\n }\n | {\n type: \"unknown_outcome\";\n data: { effect_id: string; message: string };\n }\n | {\n type: \"provider_call_not_started\";\n data: { effect_id: string; message: string };\n };\n\nexport type StoreSubscriptionActionResult = {\n type: \"checkout\";\n data: {\n session_id: string;\n checkout_url: string;\n expires_at: number;\n };\n};\n\nexport interface StoreSubscriptionAction {\n id: string;\n subscription_id: string;\n store_id: string;\n request: StoreSubscriptionActionRequest;\n status: StoreSubscriptionActionStatus;\n error?: StoreSubscriptionActionError | null;\n result?: StoreSubscriptionActionResult | null;\n requested_at: number;\n completed_at?: number | null;\n updated_at: number;\n}\n\nexport type StoreSubscriptionEffectType =\n | \"create_checkout\"\n | \"cancel_at_period_end\"\n | \"cancel_immediately\"\n | \"reactivate\"\n | \"update_plan\"\n | \"create_schedule\"\n | \"update_schedule\";\n\nexport type StoreSubscriptionEffectStatus = StoreSubscriptionActionStatus;\n\nexport type StoreSubscriptionEffectError =\n | { type: \"provider_rejected\"; data: { message: string } }\n | { type: \"unknown_outcome\"; data: { message: string } }\n | { type: \"provider_call_not_started\"; data: { message: string } };\n\nexport interface StoreSubscriptionEffect {\n id: string;\n action_id: string;\n subscription_id: string;\n store_id: string;\n sequence: number;\n type: StoreSubscriptionEffectType;\n status: StoreSubscriptionEffectStatus;\n error?: StoreSubscriptionEffectError | null;\n requested_at: number;\n processing_started_at?: number | null;\n completed_at?: number | null;\n updated_at: number;\n}\n\nexport interface StoreSubscriptionPayment {\n currency: Currency;\n market: string;\n}\n\nexport interface StoreSubscription {\n id: string;\n store_id: string;\n plan_id: string;\n pending_plan_id: string | null;\n payment: StoreSubscriptionPayment;\n status: StoreSubscriptionStatus;\n start_date: number;\n end_date: number;\n created_at: number;\n updated_at: number;\n}\n\nexport type ContactListMembershipPaymentAttemptStatus =\n | \"pending\"\n | \"confirming\"\n | \"requires_action\"\n | \"processing\"\n | \"declined\"\n | \"failed\"\n | \"rejected\"\n | \"succeeded\"\n | \"expired\"\n | \"unknown\";\n\nexport type ContactListMembershipPaymentAttemptType =\n | \"create_customer\"\n | \"create_payment_intent\"\n | \"create_subscription\"\n | \"confirm_payment_intent\";\n\nexport type ContactListMembershipPaymentAttemptSafeError =\n \"payment_rejected\" | \"invalid_payment_state\" | \"unknown_outcome\";\n\nexport interface ContactListMembershipPaymentAttempt {\n id: string;\n store_id: string;\n contact_list_id: string;\n membership_id: string;\n contact_id: string;\n generation: number;\n stage: number;\n type: ContactListMembershipPaymentAttemptType;\n status: ContactListMembershipPaymentAttemptStatus;\n plan_id: string;\n amount: number;\n currency: Currency;\n interval?: SubscriptionInterval | null;\n safe_error?: ContactListMembershipPaymentAttemptSafeError | null;\n started_at: number;\n updated_at: number;\n}\n\nexport type ContactListMembershipRefundStatus =\n \"requested\" | \"processing\" | \"succeeded\" | \"failed\" | \"rejected\" | \"unknown\";\n\nexport type ContactListMembershipRefundType = \"partial\" | \"full\";\n\nexport type ContactListMembershipRefundSafeError =\n \"provider_rejected\" | \"invalid_refund_state\" | \"unknown_outcome\";\n\nexport interface ContactListMembershipRefund {\n id: string;\n store_id: string;\n contact_list_id: string;\n membership_id: string;\n payment_attempt_id: string;\n revision: number;\n type: ContactListMembershipRefundType;\n amount: number;\n currency: Currency;\n status: ContactListMembershipRefundStatus;\n safe_error?: ContactListMembershipRefundSafeError | null;\n created_at: number;\n updated_at: number;\n}\n\nexport type ContactListMembershipCancellationStatus =\n \"requested\" | \"processing\" | \"succeeded\" | \"failed\" | \"rejected\" | \"unknown\";\n\nexport type ContactListMembershipCancellationType =\n \"at_period_end\" | \"immediate\";\n\nexport type ContactListMembershipCancellationSafeError =\n \"provider_rejected\" | \"invalid_cancellation_state\" | \"unknown_outcome\";\n\nexport interface ContactListMembershipCancellation {\n id: string;\n store_id: string;\n contact_list_id: string;\n membership_id: string;\n payment_attempt_id: string;\n refund_id?: string | null;\n revision: number;\n type: ContactListMembershipCancellationType;\n status: ContactListMembershipCancellationStatus;\n safe_error?: ContactListMembershipCancellationSafeError | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface Store {\n id: string;\n key: string;\n publishable_key: string;\n default_market_id: string | null;\n timezone: string;\n languages?: Language[];\n emails?: StoreEmails;\n payment?: PaymentStoreConfig | null;\n}\n\nexport interface EshopStoreState {\n store_id: string;\n selected_shipping_method_id: string | null;\n user_token: string | null;\n processing_checkout: boolean;\n loading: boolean;\n error: string | null;\n}\n\nexport interface Block {\n id: string;\n key: string;\n type: string;\n properties?: any;\n value?: any;\n}\n\nexport type TaxonomySchemaType = \"text\" | \"number\" | \"boolean\" | \"geo_location\";\n\nexport interface TaxonomySchema {\n id: string;\n key: string;\n type: TaxonomySchemaType;\n value?: string[];\n min?: number | null;\n max?: number | null;\n}\n\nexport interface TaxonomyField {\n id: string;\n key: string;\n type: TaxonomySchemaType;\n value: any;\n}\n\nexport interface TaxonomyFieldQuery {\n key: string;\n type: TaxonomySchemaType;\n operation?: string;\n value: any;\n center?: { lat: number; lon: number };\n radius?: number;\n}\n\nexport interface TaxonomyEntry {\n taxonomy_id: string;\n fields: TaxonomyField[];\n}\n\nexport interface TaxonomyQuery {\n taxonomy_id: string;\n query: TaxonomyFieldQuery[];\n}\n\nexport type FormSchemaType =\n \"text\" | \"number\" | \"boolean\" | \"date\" | \"geo_location\" | \"select\";\n\ninterface FormSchemaBase {\n id: string;\n key: string;\n required: boolean;\n}\n\nexport type FormSchema =\n | (FormSchemaBase & { type: \"text\" })\n | (FormSchemaBase & {\n type: \"number\";\n min?: number | null;\n max?: number | null;\n })\n | (FormSchemaBase & { type: \"boolean\" })\n | (FormSchemaBase & { type: \"date\" })\n | (FormSchemaBase & { type: \"geo_location\" })\n | (FormSchemaBase & { type: \"select\"; options: string[] });\n\nexport type FormFieldType =\n \"text\" | \"number\" | \"boolean\" | \"date\" | \"geo_location\" | \"select\";\n\ninterface FormFieldBase {\n id: string;\n key: string;\n}\n\nexport type FormField =\n | (FormFieldBase & { type: \"text\"; value: string })\n | (FormFieldBase & { type: \"number\"; value: number })\n | (FormFieldBase & { type: \"boolean\"; value: boolean })\n | (FormFieldBase & { type: \"date\"; value: number })\n | (FormFieldBase & { type: \"geo_location\"; value: GeoLocation })\n | (FormFieldBase & { type: \"select\"; value: string[] });\n\nexport type FormValue = FormField[\"value\"];\nexport type FormValues = Record<string, FormValue | undefined>;\n\nexport interface FormEntry {\n form_id: string;\n fields: FormField[];\n}\n\nexport type BlockType =\n | \"text\"\n | \"localized_text\"\n | \"number\"\n | \"boolean\"\n | \"date\"\n | \"array\"\n | \"object\"\n | \"media\"\n | \"entry\"\n | \"markdown\"\n | \"geo_location\";\n\nexport interface GeoLocationBlockProperties {}\n\nexport interface GeoLocationBlock extends Block {\n type: \"geo_location\";\n properties: GeoLocationBlockProperties;\n value: GeoLocation | null;\n}\n\nexport type Access = \"public\" | \"private\";\n\nexport type MediaSize = \"original\" | \"thumbnail\" | \"small\" | \"medium\" | \"large\";\n\nexport interface MediaResolution {\n id: string;\n size: MediaSize;\n url: string;\n}\n\nexport interface Media {\n id: string;\n resolutions: Partial<Record<MediaSize, MediaResolution>>;\n mime_type: string;\n title?: string | null;\n description?: string | null;\n alt?: string | null;\n store_id: string;\n metadata?: string | null;\n created_at: number;\n slug: Record<string, string>;\n}\n\nexport type SubscriptionPlanFeatureType =\n | \"collections\"\n | \"entries\"\n | \"services\"\n | \"products\"\n | \"providers\"\n | \"workflows\"\n | \"contact_lists\"\n | \"crm_contacts\"\n | \"media\"\n | \"members\"\n | \"taxonomies\"\n | \"email_templates\"\n | \"forms\"\n | \"mailboxes\"\n | \"social_connections\"\n | \"webhooks\"\n | \"support_agents\"\n | \"lead_research_runs\"\n | \"outreach_campaigns\";\n\nexport interface SubscriptionPlanFeature {\n limit: number | null;\n reset: \"never\" | \"monthly\";\n}\n\nexport interface SubscriptionPlan {\n id: string;\n provider_price_id: string | null;\n name: string;\n tier: number;\n amount: number;\n currency: Currency;\n interval: \"lifetime\" | \"month\" | \"year\";\n interval_count: number;\n features: Record<SubscriptionPlanFeatureType, SubscriptionPlanFeature>;\n}\n\nexport type AccountApiTokenStatus = \"active\" | \"revoked\" | \"expired\";\n\nexport interface AccountApiToken {\n id: string;\n token_hint: string;\n name: string;\n status: AccountApiTokenStatus;\n created_at: number;\n expires_at?: number | null;\n revoked_at?: number | null;\n}\n\nexport interface StoreMembership {\n id: string;\n store_id: string;\n account_id: string;\n role: import(\"./api\").StoreRole;\n status: \"invited\" | \"active\";\n invited_by_account_id?: string | null;\n invited_at?: number | null;\n joined_at?: number | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface StoreMember {\n account: Account;\n membership: StoreMembership;\n}\n\nexport interface AccountLifecycle {\n last_login_at?: number | null;\n onboarding_completed: boolean;\n}\n\nexport interface Account {\n id: string;\n email: string;\n lifecycle: AccountLifecycle;\n}\n\nexport interface AccountUpdateResponse {\n success: boolean;\n}\n\nexport interface AccountApiTokenCreated {\n token: AccountApiToken;\n value: string;\n}\n\nexport interface AccountSession {\n id: string;\n status: \"active\" | \"revoked\" | \"expired\";\n access_expires_at: number;\n refresh_expires_at: number;\n is_verified: boolean;\n created_at: number;\n revoked_at?: number | null;\n}\n\nexport interface PaginatedResponse<T> {\n items: T[];\n cursor: string | null;\n}\n\nexport type ServiceStatus = \"active\" | \"draft\" | \"archived\";\nexport type ProviderStatus = \"active\" | \"draft\" | \"archived\";\n\nexport type ProductStatus = \"active\" | \"draft\" | \"archived\";\nexport type ContactStatus = \"active\" | \"archived\";\nexport type ContactListStatus = \"active\" | \"draft\" | \"archived\";\nexport type ContactListSource =\n \"manual\" | \"import\" | \"signup\" | \"admin\" | \"system\" | \"lead_research\";\nexport type ContactListMembershipStatus =\n | \"pending\"\n | \"active\"\n | \"cancellation_scheduled\"\n | \"cancelled\"\n | \"expired\"\n | \"archived\";\nexport type ContactListPlanStatus = \"active\" | \"archived\";\nexport type ContactListContentAccessStatus = \"active\" | \"archived\";\nexport type MailboxStatus = \"active\" | \"draft\" | \"archived\";\nexport type MailboxPreset = \"gmail\" | \"zoho\" | \"microsoft\" | \"custom\";\nexport type MailboxConnectionSecurity = \"tls\" | \"start_tls\";\nexport type MailboxSyncStatus = \"not_ready\" | \"ready\" | \"failed\";\nexport type SmtpImapMailboxProviderInput = {\n type: \"smtp_imap\";\n preset: MailboxPreset;\n smtp_host: string;\n smtp_port: number;\n smtp_security: MailboxConnectionSecurity;\n imap_host: string;\n imap_port: number;\n imap_security: MailboxConnectionSecurity;\n username: string;\n sync_enabled: boolean;\n sync_interval_seconds: number;\n};\nexport type SmtpImapMailboxProvider = SmtpImapMailboxProviderInput & {\n password_configured: boolean;\n sync_status?: MailboxSyncStatus;\n sync_error?: string | null;\n sync_ready_at?: number | null;\n last_synced_at?: number | null;\n last_seen_uid?: number | null;\n};\nexport interface GoogleMailboxProfile {\n external_account_id: string;\n email: string;\n display_name: string;\n avatar_url?: string | null;\n}\nexport type GoogleMailboxProvider = {\n type: \"google\";\n profile: GoogleMailboxProfile;\n access_configured: boolean;\n refresh_configured: boolean;\n token_expires_at?: number | null;\n token_type?: string | null;\n scopes: string[];\n sync_enabled: boolean;\n sync_interval_seconds: number;\n sync_status?: MailboxSyncStatus;\n sync_error?: string | null;\n sync_ready_at?: number | null;\n last_synced_at?: number | null;\n last_history_id?: string | null;\n};\nexport type CampaignStatus =\n \"draft\" | \"active\" | \"paused\" | \"completed\" | \"archived\";\nexport type CampaignLaunchStatus =\n \"idle\" | \"requested\" | \"processing\" | \"succeeded\" | \"failed\";\nexport type CampaignEnrollmentStatus =\n | \"pending\"\n | \"active\"\n | \"action_required\"\n | \"replied\"\n | \"completed\"\n | \"suppressed\"\n | \"failed\"\n | \"stopped\";\nexport type CampaignEnrollmentImportSource =\n \"contact_list\" | \"contact\" | \"manual\";\nexport type CampaignMessageStatus =\n | \"draft\"\n | \"scheduled\"\n | \"pending\"\n | \"sending\"\n | \"sent\"\n | \"received\"\n | \"action_required\"\n | \"completed\"\n | \"bounced\"\n | \"failed\"\n | \"unknown\"\n | \"skipped\"\n | \"stopped\"\n | \"superseded\";\nexport type CampaignMessageType =\n | \"campaign_step_email\"\n | \"manual_task\"\n | \"manual_reply\"\n | \"inbound_reply\"\n | \"delivery_failure\"\n | \"action\";\nexport type CampaignMessageDirection = \"outbound\" | \"inbound\" | \"action\";\nexport type CampaignMessageCopySource = \"template\" | \"generated\" | \"edited\";\nexport type OutreachThreadMode = \"new_thread\" | \"same_thread\";\nexport type ManualTaskContinueBehavior =\n \"continue_after_delay\" | \"wait_until_completed\";\nexport type OutreachStepType =\n | {\n type: \"email\";\n template_id: string;\n template_vars?: Record<string, unknown>;\n body?: string | null;\n thread_mode?: OutreachThreadMode;\n attachments?: string[];\n }\n | {\n type: \"manual_task\";\n target_channel_type?: ChannelType | null;\n title: string;\n instructions: string;\n suggested_message?: string | null;\n external_url?: string | null;\n continue_behavior: ManualTaskContinueBehavior;\n };\nexport type CampaignManualTaskOutcome =\n \"done\" | \"skipped\" | \"got_reply\" | \"do_not_contact\";\nexport type OutreachPersonalizationStatus =\n \"idle\" | \"running\" | \"completed\" | \"failed\";\nexport type SuppressionStatus = \"active\" | \"archived\";\nexport type SuppressionTargetType = \"email\" | \"domain\" | \"contact\" | \"phone\";\nexport type SuppressionScopeType = \"store\" | \"campaign\";\nexport type SuppressionReason =\n \"manual\" | \"unsubscribed\" | \"bounced\" | \"complained\" | \"replied\";\nexport type SuppressionSource = \"admin\" | \"import\" | \"reply\" | \"system\";\nexport type WorkflowStatus = \"active\" | \"draft\" | \"archived\" | \"deleting\";\nexport type MutableWorkflowStatus = Exclude<WorkflowStatus, \"deleting\">;\nexport type PromoCodeStatus = \"active\" | \"draft\" | \"archived\";\nexport type CollectionStatus = \"active\" | \"draft\" | \"archived\";\nexport type EntryStatus = \"active\" | \"draft\" | \"archived\";\nexport type EmailTemplateStatus = \"active\" | \"draft\" | \"archived\";\nexport type EmailTemplateType =\n | \"order_store_notification\"\n | \"order_contact_notification\"\n | \"order_reminder_contact\"\n | \"digital_access_ready_contact\"\n | \"contact_store_notification\"\n | \"subscription_confirmation\"\n | \"campaign_email\"\n | \"newsletter_email\";\n\nexport type FormStatus = \"active\" | \"draft\" | \"archived\";\nexport type TaxonomyStatus = \"active\" | \"draft\" | \"archived\";\n\nexport type OrderCancellationReason =\n | \"admin_rejected\"\n | \"contact_cancelled\"\n | \"payment_failed\"\n | \"expired\"\n | \"other\";\n\nexport type OrderItemStatus =\n | { status: \"pending\"; expires_at: number }\n | { status: \"confirmed\" }\n | { status: \"cancelled\"; reason: OrderCancellationReason };\n\nexport type OrderStatus =\n | \"pending\"\n | \"partially_confirmed\"\n | \"confirmed\"\n | \"partially_cancelled\"\n | \"cancelled\"\n | \"completed\";\n\nexport type OrderPaymentStatus =\n | { status: \"pending\"; at: number }\n | { status: \"requires_action\"; at: number; reason?: string | null }\n | { status: \"processing\"; at: number }\n | { status: \"authorized\"; at: number; amount: number }\n | { status: \"partially_captured\"; at: number; amount: number }\n | { status: \"captured\"; at: number; amount: number }\n | { status: \"partially_refunded\"; at: number; amount: number }\n | { status: \"refunded\"; at: number; amount: number }\n | { status: \"voided\"; at: number; amount: number }\n | { status: \"cancelled\"; at: number; reason?: string | null }\n | { status: \"expired\"; at: number }\n | { status: \"failed\"; at: number; reason?: string | null };\n\nexport interface TimeRange {\n from: number;\n to: number;\n}\n\nexport type BlockSchemaType =\n | \"text\"\n | \"localized_text\"\n | \"number\"\n | \"boolean\"\n | \"date\"\n | \"geo_location\"\n | \"markdown\"\n | \"media\"\n | \"entry\"\n | \"array\"\n | \"object\";\n\nexport interface BlockSchemaProperties {\n min_values?: number | null;\n max_values?: number | null;\n min_length?: number | null;\n max_length?: number | null;\n pattern?: string | null;\n min?: number | null;\n max?: number | null;\n collection_id?: string | null;\n on_delete?: \"restrict\" | \"set_null\" | null;\n}\n\nexport interface BlockSchema {\n id: string;\n key: string;\n type: BlockSchemaType;\n required: boolean;\n properties: BlockSchemaProperties;\n children: BlockSchema[];\n}\n\nexport interface Collection {\n id: string;\n store_id: string;\n key: string;\n schema: BlockSchema[];\n blocks: Block[];\n status: CollectionStatus;\n created_at: number;\n updated_at: number;\n}\n\nexport interface MediaRef {\n media_id: string;\n url?: string | null;\n mime_type?: string | null;\n alt?: string | null;\n}\n\nexport type FieldOperation =\n | \"equals\"\n | \"not_equals\"\n | \"contains\"\n | \"in\"\n | \"greater_than\"\n | \"greater_than_or_equal\"\n | \"less_than\"\n | \"less_than_or_equal\";\n\nexport type EntryBlockQuery =\n | { type: \"text\"; key: string; values: string[] }\n | { type: \"number\"; key: string; operation: FieldOperation; value: number }\n | { type: \"boolean\"; key: string; value: boolean }\n | { type: \"date\"; key: string; operation: FieldOperation; value: number };\n\nexport interface CollectionEntry {\n id: string;\n store_id: string;\n collection_id: string;\n key: string;\n slug: Record<string, string>;\n blocks: Block[];\n status: EntryStatus;\n created_at: number;\n updated_at: number;\n}\n\nexport interface EmailTemplate {\n id: string;\n key: string;\n store_id: string;\n type: EmailTemplateType;\n subject: Record<string, string>;\n body: string;\n preheader?: string;\n variables: EmailTemplateVariable[];\n sample_data: Record<string, unknown>;\n status: EmailTemplateStatus;\n created_at: number;\n updated_at: number;\n}\n\nexport type EmailTemplateVariableSource = \"template\" | \"system\";\n\nexport interface EmailTemplateVariable {\n key: string;\n required: boolean;\n source: EmailTemplateVariableSource;\n}\n\nexport interface Form {\n id: string;\n key: string;\n store_id: string;\n schema: FormSchema[];\n status: FormStatus;\n created_at: number;\n updated_at: number;\n}\n\nexport interface FormSubmission {\n id: string;\n form_id: string;\n store_id: string;\n contact_id: string;\n fields: FormField[];\n created_at: number;\n}\n\nexport interface Taxonomy {\n id: string;\n key: string;\n store_id: string;\n parent_id?: string | null;\n schema?: TaxonomySchema[];\n status: TaxonomyStatus;\n created_at: number;\n updated_at: number;\n}\n\nexport interface ServiceDuration {\n duration: number;\n is_pause: boolean;\n}\n\nexport interface WorkingHour {\n from: number;\n to: number;\n}\n\nexport interface WorkingDay {\n day: string;\n working_hours: WorkingHour[];\n}\n\nexport interface SpecificDate {\n date: number;\n working_hours: WorkingHour[];\n}\n\nexport interface ServiceProvider {\n id: string;\n service_id: string;\n provider_id: string;\n store_id: string;\n working_days: WorkingDay[];\n specific_dates: SpecificDate[];\n prices: Price[];\n durations: ServiceDuration[];\n slot_interval: number;\n forms: FormEntry[];\n reminders: number[];\n min_advance: number;\n max_advance: number;\n created_at: number;\n updated_at: number;\n}\n\nexport interface Service {\n id: string;\n key: string;\n slug: Record<string, string>;\n store_id: string;\n blocks: Block[];\n taxonomies: TaxonomyEntry[];\n created_at: number;\n updated_at: number;\n status: ServiceStatus;\n}\n\nexport interface ProviderTimelinePoint {\n timestamp: number;\n booked: number;\n}\n\nexport interface Provider {\n id: string;\n key: string;\n slug: Record<string, string>;\n store_id: string;\n status: ProviderStatus;\n blocks: Block[];\n taxonomies: TaxonomyEntry[];\n timeline: ProviderTimelinePoint[];\n created_at: number;\n updated_at: number;\n}\n\nexport interface WorkflowEdge {\n source: string;\n target: string;\n output: string;\n back_edge: boolean;\n}\n\nexport interface Workflow {\n id: string;\n key: string;\n store_id: string;\n secret: string;\n trigger_url: string;\n status: WorkflowStatus;\n nodes: Record<string, WorkflowNode>;\n edges: WorkflowEdge[];\n\n schedule?: string;\n created_at: number;\n updated_at: number;\n}\n\nexport type WorkflowNode =\n | WorkflowTriggerNode\n | WorkflowHttpNode\n | WorkflowSendEmailNode\n | WorkflowDeployWebhookNode\n | WorkflowGoogleDriveUploadNode\n | WorkflowSwitchNode\n | WorkflowTransformNode\n | WorkflowLoopNode;\n\nexport interface WorkflowTriggerNode {\n type: \"trigger\";\n delay_ms?: number;\n schema?: Block[];\n}\n\ninterface WorkflowHttpNodeBase {\n type: \"http\";\n url: string;\n headers: Record<string, string>;\n body?: unknown;\n timeout_ms: number;\n delay_ms: number;\n}\n\nexport type WorkflowHttpNode = WorkflowHttpNodeBase &\n (\n | {\n method: \"get\";\n retries: number;\n retry_delay_ms: number;\n }\n | {\n method: Exclude<WorkflowHttpMethod, \"get\">;\n retries: 0;\n retry_delay_ms: 0;\n }\n );\n\nexport type EmailRecipients = string | string[];\n\nexport interface EmailSendTemplateData {\n store_id: string;\n mailbox_id: string;\n template_id: string;\n recipients: EmailRecipients;\n vars?: Record<string, unknown>;\n}\n\nexport type EmailSend =\n | { type: \"order_store_notification\"; data: EmailSendTemplateData }\n | { type: \"order_contact_notification\"; data: EmailSendTemplateData }\n | { type: \"order_reminder_contact\"; data: EmailSendTemplateData }\n | { type: \"digital_access_ready_contact\"; data: EmailSendTemplateData }\n | { type: \"contact_store_notification\"; data: EmailSendTemplateData }\n | { type: \"subscription_confirmation\"; data: EmailSendTemplateData };\n\nexport interface EmailSendRequest {\n send_id: string;\n send: EmailSend;\n}\n\nexport type EmailDeliveryErrorKind =\n \"provider_call_not_started\" | \"provider_rejected\" | \"unknown_outcome\";\n\nexport type EmailDeliveryStatus =\n | \"pending\"\n | \"sending\"\n | \"sent\"\n | \"rejected\"\n | \"failed\"\n | \"unknown\"\n | \"skipped\";\n\nexport type EmailDeliveryType =\n | {\n type: \"platform_auth_code\";\n data: { account_id: string; challenge_id: string };\n }\n | {\n type: \"store_auth_code\";\n data: { store_id: string; account_id: string; challenge_id: string };\n }\n | {\n type: \"contact_verification\";\n data: { store_id: string; contact_id: string; challenge_id: string };\n }\n | {\n type: \"tenant_mailbox\";\n data: {\n send_id: string;\n store_id: string;\n mailbox_id: string;\n template_id: string;\n };\n }\n | {\n type: \"campaign_message\";\n data: {\n store_id: string;\n campaign_message_id: string;\n mailbox_id: string;\n };\n }\n | {\n type: \"support_message\";\n data: {\n store_id: string;\n support_message_id: string;\n mailbox_id: string;\n };\n };\n\nexport interface EmailDeliveryError {\n type: EmailDeliveryErrorKind;\n message: string;\n}\n\nexport interface EmailDelivery {\n id: string;\n revision: number;\n attempts: number;\n type: EmailDeliveryType;\n status: EmailDeliveryStatus;\n error?: EmailDeliveryError | null;\n requested_at: number;\n processing_started_at?: number | null;\n completed_at?: number | null;\n sent_at?: number | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface GetEmailDeliveryParams {\n delivery_id: string;\n}\n\nexport interface RetryEmailDeliveryParams {\n delivery_id: string;\n revision: number;\n}\n\nexport interface EmailSendDeliveryResult {\n delivery_id: string;\n revision: number;\n recipient: string;\n mailbox_id: string;\n template_id: string;\n status: EmailDeliveryStatus;\n error?: EmailDeliveryError | null;\n provider_message_id?: string | null;\n provider_thread_id?: string | null;\n}\n\nexport interface EmailSendResult {\n sent: number;\n deliveries: EmailSendDeliveryResult[];\n}\n\nexport interface WorkflowSendEmailNode {\n type: \"send_email\";\n send: EmailSend;\n delay_ms?: number;\n}\n\nexport interface WorkflowDeployWebhookNode {\n type: \"deploy_webhook\";\n build_hook_id: string;\n timeout_ms?: number;\n delay_ms?: number;\n}\n\nexport type WorkflowConnectionType = \"google_drive\";\n\nexport interface GoogleDriveWorkflowProfile {\n external_account_id: string;\n display_name: string;\n email?: string | null;\n}\n\nexport interface GoogleDriveWorkflowConnectionData {\n type: \"google_drive\";\n connected: boolean;\n profile: GoogleDriveWorkflowProfile | null;\n}\n\nexport type WorkflowConnectionData = GoogleDriveWorkflowConnectionData;\n\nexport interface WorkflowConnection {\n id: string;\n store_id: string;\n type: WorkflowConnectionType;\n data: WorkflowConnectionData;\n created_at: number;\n updated_at: number;\n}\n\nexport interface WorkflowConnectionConnectUrl {\n authorization_url: string;\n state: string;\n}\n\nexport interface WorkflowGoogleDriveUploadNode {\n type: \"google_drive_upload\";\n workflow_connection_id: string;\n name: string;\n mime_type?: string;\n content?: unknown;\n parent_folder_id?: string | null;\n timeout_ms?: number;\n delay_ms?: number;\n}\n\nexport interface WorkflowSwitchRule {\n condition: string;\n}\n\nexport interface WorkflowSwitchNode {\n type: \"switch\";\n rules: WorkflowSwitchRule[];\n delay_ms?: number;\n}\n\nexport interface WorkflowTransformNode {\n type: \"transform\";\n code: string;\n delay_ms?: number;\n}\n\nexport interface WorkflowLoopNode {\n type: \"loop\";\n expression: string;\n delay_ms?: number;\n}\n\nexport type WorkflowHttpMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\n\nexport type ExecutionStatus =\n \"pending\" | \"running\" | \"completed\" | \"failed\" | \"cancelled\";\n\nexport interface NodeResult {\n output: any;\n route: string;\n started_at: number;\n completed_at: number;\n duration_ms: number;\n error?: string;\n}\n\nexport type WorkflowExecutionInput =\n | { type: \"webhook\"; payload: unknown }\n | { type: \"schedule\"; schedule: string };\n\nexport interface WorkflowExecution {\n id: string;\n workflow_id: string;\n store_id: string;\n status: ExecutionStatus;\n input: WorkflowExecutionInput;\n results: Record<string, NodeResult>;\n error?: string;\n scheduled_at: number;\n started_at: number;\n completed_at?: number;\n created_at: number;\n updated_at: number;\n}\n\nexport type WorkflowEffectType =\n \"http_mutation\" | \"deploy_webhook\" | \"google_drive_upload\";\n\nexport type WorkflowEffectStatus =\n \"requested\" | \"processing\" | \"succeeded\" | \"rejected\" | \"failed\" | \"unknown\";\n\nexport interface WorkflowEffectError {\n type: \"provider_call_not_started\" | \"provider_rejected\" | \"unknown_outcome\";\n message: string;\n at: number;\n}\n\nexport interface WorkflowEffectEvidence {\n output: unknown;\n}\n\nexport interface WorkflowEffect {\n id: string;\n store_id: string;\n workflow_id: string;\n execution_id: string;\n node_id: string;\n type: WorkflowEffectType;\n status: WorkflowEffectStatus;\n requested_at: number;\n processing_started_at?: number | null;\n completed_at?: number | null;\n evidence?: WorkflowEffectEvidence | null;\n error?: WorkflowEffectError | null;\n updated_at: number;\n}\n\nexport type ContactListType =\n | { type: \"standard\" }\n | { type: \"confirmation\"; confirm_template_id?: string | null }\n | { type: \"paid\" };\n\nexport type ContactListPlanCatalogStatus =\n \"requested\" | \"processing\" | \"succeeded\" | \"failed\" | \"unknown\";\n\nexport type ContactListPlanCatalogType =\n { type: \"create_product\" } | { type: \"create_price\"; price_index: number };\n\nexport type ContactListPlanCatalogSafeError =\n \"provider_rejected\" | \"invalid_catalog_state\" | \"unknown_outcome\";\n\nexport interface ContactListPlan {\n id: string;\n store_id: string;\n contact_list_id: string;\n key: string;\n name: string;\n description?: string | null;\n status: ContactListPlanStatus;\n prices: SubscriptionPrice[];\n payment_provider_id?: string | null;\n catalog_revision: number;\n catalog_type: ContactListPlanCatalogType;\n catalog_status: ContactListPlanCatalogStatus;\n catalog_safe_error?: ContactListPlanCatalogSafeError | null;\n created_at: number;\n updated_at: number;\n}\n\nexport type ContactListContentAccessTarget =\n | { type: \"cms_entry\"; entry_id: string }\n | { type: \"cms_collection\"; collection_id: string };\n\nexport interface ContactListContentAccess {\n id: string;\n target: ContactListContentAccessTarget;\n status: ContactListContentAccessStatus;\n created_at: number;\n updated_at: number;\n}\n\nexport type ContactSessionStatus = \"active\" | \"revoked\" | \"expired\";\n\nexport interface ContactSessionRecord {\n id: string;\n store_id: string;\n contact_id: string;\n status: ContactSessionStatus;\n created_at: number;\n expires_at: number;\n revoked_at: number | null;\n last_seen_at: number | null;\n}\n\nexport interface ContactSessionIssued {\n id: string;\n token: string;\n status: ContactSessionStatus;\n created_at: number;\n expires_at: number;\n}\n\nexport interface PromoUsage {\n promo_code_id: string;\n uses: number;\n}\n\nexport type ChannelType =\n | \"email\"\n | \"phone\"\n | \"whatsapp\"\n | \"instagram\"\n | \"facebook\"\n | \"messenger\"\n | \"linkedin_company\"\n | \"linkedin_person\"\n | \"contact_form\"\n | \"booking_link\"\n | \"telegram\"\n | \"tiktok\"\n | \"youtube\"\n | \"other\";\n\nexport interface ContactChannel {\n type: ChannelType;\n label?: string | null;\n value: string;\n normalized_value?: string | null;\n provider?: string | null;\n provider_user_id?: string | null;\n verified_at?: number | null;\n is_primary?: boolean;\n consent_status?: ContactChannelConsentStatus;\n subscribed_at?: number | null;\n unsubscribed_at?: number | null;\n source_url?: string | null;\n confidence?: number | null;\n notes?: string | null;\n created_at: number;\n updated_at: number;\n}\n\nexport type ContactChannelConsentStatus =\n \"unknown\" | \"subscribed\" | \"unsubscribed\" | \"bounced\" | \"blocked\";\n\nexport interface Contact {\n id: string;\n store_id: string;\n email: string | null;\n verified: boolean;\n status: ContactStatus;\n channels: ContactChannel[];\n promo_usage: PromoUsage[];\n taxonomies: TaxonomyEntry[];\n created_at: number;\n updated_at: number;\n}\n\nexport interface ContactListAccessResponse {\n has_access: boolean;\n membership?: ContactListMembership | null;\n}\n\nexport interface ContactListContentAccessResponse {\n has_access: boolean;\n contact_list?: ContactList | null;\n membership?: ContactListMembership | null;\n}\n\nexport interface ContactListManagementContactList {\n id: string;\n key: string;\n name: string;\n description?: string | null;\n type: ContactListType;\n content_access: ContactListContentAccess[];\n}\n\nexport interface ContactListManagementMembership {\n id: string;\n status: ContactListMembershipStatus;\n current_payment_attempt_id?: string | null;\n source: ContactListSource;\n start_date: number;\n end_date: number;\n created_at: number;\n updated_at: number;\n}\n\nexport interface ContactListManagementResponse {\n has_access: boolean;\n contact_list: ContactListManagementContactList;\n membership: ContactListManagementMembership;\n}\n\nexport interface ContactListSubscribeResponse {\n payment_action: CheckoutPaymentAction;\n payment_attempt?: StorefrontContactListPaymentAttemptSummary | null;\n membership?: ContactListMembership | null;\n}\n\nexport interface ContactList {\n id: string;\n store_id: string;\n key: string;\n name: string;\n description?: string | null;\n status: ContactListStatus;\n type: ContactListType;\n content_access: ContactListContentAccess[];\n source: ContactListSource;\n member_count: number;\n created_at: number;\n updated_at: number;\n}\n\nexport interface ContactListMembership {\n id: string;\n store_id: string;\n contact_id: string;\n contact_list_id: string;\n source: ContactListSource;\n fields: Record<string, unknown>;\n lead_description?: string | null;\n lead?: LeadInsight | null;\n status: ContactListMembershipStatus;\n current_payment_attempt_id?: string | null;\n start_date: number;\n end_date: number;\n created_at: number;\n updated_at: number;\n}\n\nexport type StorefrontContactListType =\n \"standard\" | \"confirmation\" | \"paid\";\n\nexport interface StorefrontContactList {\n id: string;\n key: string;\n name: string;\n description?: string | null;\n type: StorefrontContactListType;\n}\n\nexport interface StorefrontContactListPlan {\n id: string;\n key: string;\n name: string;\n description?: string | null;\n prices: SubscriptionPrice[];\n}\n\nexport interface StorefrontContactListPaymentAttemptSummary {\n plan_id: string;\n amount: number;\n currency: Currency;\n interval?: SubscriptionInterval | null;\n status: ContactListMembershipPaymentAttemptStatus;\n}\n\nexport interface StorefrontContactListMembership {\n id: string;\n status: ContactListMembershipStatus;\n contact_list: StorefrontContactList;\n payment_attempt?: StorefrontContactListPaymentAttemptSummary | null;\n start_date: number;\n end_date: number;\n created_at: number;\n updated_at: number;\n}\n\nexport interface ContactListMember {\n contact: Contact;\n membership: ContactListMembership;\n}\n\nexport interface ActionLocation {\n country_code?: string | null;\n city?: string | null;\n region?: string | null;\n timezone?: string | null;\n}\n\nexport interface ActionDevice {\n device_type?: string | null;\n browser?: string | null;\n os?: string | null;\n language?: string | null;\n}\n\nexport interface ActionSession {\n idx?: number | null;\n}\n\nexport interface ActionContext {\n location?: ActionLocation | null;\n device?: ActionDevice | null;\n session?: ActionSession | null;\n}\n\nexport interface SocialActionAuthor {\n provider_user_id?: string | null;\n name?: string | null;\n handle?: string | null;\n}\n\nexport type OpportunityType =\n | \"lead\"\n | \"support\"\n | \"complaint\"\n | \"question\"\n | \"upsell\"\n | \"partnership\"\n | \"engagement\";\n\nexport type OpportunityStage =\n \"new\" | \"reviewing\" | \"contacted\" | \"won\" | \"lost\" | \"dismissed\";\n\nexport type OpportunitySource =\n | {\n type: \"social_comment\";\n publication_id: string;\n comment_id: string;\n action_id?: string | null;\n }\n | {\n type: \"form_submission\";\n form_id: string;\n submission_id: string;\n }\n | {\n type: \"tracked\";\n key: string;\n action_id?: string | null;\n }\n | { type: \"manual\" };\n\nexport type ActionData =\n | {\n type: \"tracked\";\n value: {\n key: string;\n payload: Record<string, unknown>;\n context?: ActionContext | null;\n };\n }\n | {\n type: \"form_submission\";\n value: {\n form_id: string;\n form_key: string;\n submission_id: string;\n field_keys: string[];\n context?: ActionContext | null;\n };\n }\n | {\n type: \"social_comment\";\n value: {\n social_connection_id: string;\n type: SocialConnectionType;\n publication_id: string;\n comment_id: string;\n provider_comment_id: string;\n provider_parent_comment_id?: string | null;\n author: SocialActionAuthor;\n text: string;\n };\n }\n | {\n type: \"social_reply\";\n value: {\n social_connection_id: string;\n type: SocialConnectionType;\n publication_id: string;\n comment_id: string;\n provider_comment_id?: string | null;\n provider_comment_url?: string | null;\n text: string;\n };\n }\n | {\n type: \"order\";\n value: {\n order_id: string;\n status: string;\n total?: number | null;\n };\n }\n | {\n type: \"campaign_reply\";\n value: {\n campaign_id: string;\n enrollment_id: string;\n message_id: string;\n text: string;\n };\n }\n | {\n type: \"direct_message\";\n value: {\n social_connection_id: string;\n type: SocialConnectionType;\n thread_id: string;\n message_id: string;\n text: string;\n };\n }\n | {\n type: \"manual\";\n value: {\n text: string;\n account_id?: string | null;\n };\n }\n | {\n type: \"opportunity\";\n value: {\n type: OpportunityType;\n stage: OpportunityStage;\n score?: number | null;\n reason?: string | null;\n suggested_next_action?: string | null;\n source: OpportunitySource;\n lead?: LeadInsight | null;\n };\n };\n\nexport interface Action {\n id: string;\n store_id: string;\n contact_id: string;\n key: string;\n type: ActionData[\"type\"];\n preview_text?: string | null;\n occurred_at: number;\n created_at: number;\n updated_at: number;\n data: ActionData;\n}\n\nexport interface Mailbox {\n id: string;\n store_id: string;\n key: string;\n email: string;\n from_name: string;\n reply_to_email?: string | null;\n provider: SmtpImapMailboxProvider | GoogleMailboxProvider;\n status: MailboxStatus;\n daily_limit: number;\n sent_today: number;\n last_sent_at?: number | null;\n sync_revision: number;\n next_sync_at?: number | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface OutreachStep {\n id?: string;\n position?: number;\n delay_seconds?: number;\n type?: OutreachStepType;\n}\n\nexport interface OutreachPersonalizationCounters {\n total_profiles: number;\n draft_messages: number;\n generated_messages: number;\n template_messages: number;\n failed_messages: number;\n}\n\nexport interface OutreachPersonalizationState {\n run_id: string;\n status: OutreachPersonalizationStatus;\n step_position?: number | null;\n contact_ids: string[];\n overwrite: boolean;\n instructions?: string | null;\n error?: string | null;\n counters: OutreachPersonalizationCounters;\n started_at?: number | null;\n completed_at?: number | null;\n}\n\nexport interface CampaignLaunchState {\n revision: number;\n status: CampaignLaunchStatus;\n requested_at: number | null;\n processing_started_at: number | null;\n completed_at: number | null;\n error: string | null;\n}\n\nexport interface Campaign {\n id: string;\n store_id: string;\n key: string;\n name: string;\n mailbox_ids: string[];\n status: CampaignStatus;\n launch: CampaignLaunchState;\n steps: OutreachStep[];\n personalization: OutreachPersonalizationState;\n launched_at?: number | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface CampaignLaunchReadiness {\n ready: boolean;\n blockers: string[];\n warnings: string[];\n contact_count: number;\n sender_count: number;\n step_count: number;\n daily_capacity: number;\n expected_drafts: number;\n draft_count: number;\n pending_drafts: number;\n generated_drafts: number;\n template_drafts: number;\n edited_drafts: number;\n personalization_errors: number;\n stale_drafts: number;\n suppression_count: number;\n}\n\nexport interface CampaignEnrollmentImportResult {\n imported_count: number;\n existing_count: number;\n skipped_count: number;\n draft_count: number;\n}\n\nexport interface CampaignEnrollment {\n id: string;\n store_id: string;\n campaign_id: string;\n contact_id: string;\n contact_list_membership_id?: string | null;\n import_source: CampaignEnrollmentImportSource;\n import_source_id?: string | null;\n imported_at?: number | null;\n mailbox_id?: string | null;\n lead_description?: string | null;\n fields: Record<string, unknown>;\n status: CampaignEnrollmentStatus;\n current_step_position: number;\n next_action_at?: number | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface CampaignMessage {\n id: string;\n store_id: string;\n campaign_id: string;\n campaign_enrollment_id: string;\n contact_id: string;\n mailbox_id: string;\n direction: CampaignMessageDirection;\n type: CampaignMessageType;\n step_id?: string | null;\n step_position?: number | null;\n template_copy_hash?: string | null;\n copy_source: CampaignMessageCopySource;\n personalized_at?: number | null;\n edited_at?: number | null;\n personalization_error?: string | null;\n in_reply_to_message_id?: string | null;\n status: CampaignMessageStatus;\n to_email: string;\n from_email: string;\n subject: string;\n body: string;\n body_html?: string | null;\n template_id?: string | null;\n template_vars: Record<string, unknown>;\n rendered_subject?: string | null;\n rendered_html?: string | null;\n rendered_text?: string | null;\n attachments: string[];\n target_channel_type?: ChannelType | null;\n resolved_channel?: ContactChannel | null;\n title?: string | null;\n instructions?: string | null;\n suggested_message?: string | null;\n external_url?: string | null;\n continue_behavior?: ManualTaskContinueBehavior | null;\n outcome?: CampaignManualTaskOutcome | null;\n note?: string | null;\n provider_message_id?: string | null;\n provider_thread_id?: string | null;\n error?: string | null;\n due_at?: number | null;\n completed_at?: number | null;\n sent_at?: number | null;\n received_at?: number | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface CampaignEnrollmentConversationResponse {\n enrollment: CampaignEnrollment;\n messages: CampaignMessage[];\n}\n\nexport interface Suppression {\n id: string;\n store_id: string;\n campaign_id?: string | null;\n contact_id?: string | null;\n email?: string | null;\n domain?: string | null;\n target_type: SuppressionTargetType;\n target_key: string;\n scope_type: SuppressionScopeType;\n scope_key: string;\n reason: SuppressionReason;\n status: SuppressionStatus;\n source: SuppressionSource;\n created_at: number;\n updated_at: number;\n}\n\nexport type LeadResearchRunStatus =\n \"draft\" | \"running\" | \"completed\" | \"failed\" | \"cancelled\";\n\nexport type LeadEmailClassification =\n | \"official_domain\"\n | \"role_official\"\n | \"personal_official\"\n | \"free_mail\"\n | \"unusable\"\n | \"unknown\";\n\nexport type LeadValidationCheckStatus =\n \"passed\" | \"warning\" | \"failed\" | \"unknown\";\n\nexport type CampaignRoute =\n \"email_only\" | \"email_manual_followup\" | \"manual_only\" | \"needs_review\";\n\nexport interface LeadScores {\n fit: number;\n problem: number;\n channel: number;\n intent: number;\n data_quality: number;\n}\n\nexport interface ChannelMessage {\n type: ChannelType;\n subject?: string | null;\n body: string;\n}\n\nexport interface LeadInsight {\n company?: string | null;\n contact_name?: string | null;\n website?: string | null;\n industry?: string | null;\n location?: string | null;\n description?: string | null;\n pain_points: string[];\n fit_reason?: string | null;\n scores: LeadScores;\n best_channel?: ChannelType | null;\n backup_channel?: ChannelType | null;\n route: CampaignRoute;\n first_messages: ChannelMessage[];\n run_id?: string | null;\n source_url?: string | null;\n source_excerpt?: string | null;\n reasoning_summary?: string | null;\n}\n\nexport interface LeadResearchRun {\n id: string;\n store_id: string;\n contact_list_id: string;\n title?: string | null;\n status: LeadResearchRunStatus;\n error?: string | null;\n started_at?: number | null;\n completed_at?: number | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface LeadValidationCheck {\n key: string;\n status: LeadValidationCheckStatus;\n message: string;\n}\n\nexport interface LeadEmailValidationResult {\n email: string;\n normalized_email?: string | null;\n domain?: string | null;\n classification: LeadEmailClassification;\n confidence: number;\n importable: boolean;\n hard_blockers: string[];\n checks: LeadValidationCheck[];\n}\n\nexport type LeadResearchMessageRole =\n \"system\" | \"user\" | \"assistant\" | \"action\";\n\nexport interface LeadResearchMessage {\n id: string;\n store_id: string;\n run_id: string;\n role: LeadResearchMessageRole;\n content: string;\n metadata?: Record<string, unknown> | null;\n created_at: number;\n}\n\nexport interface ResearchContactListMember {\n contact: Contact;\n membership: ContactListMembership;\n}\n\nexport interface SendLeadResearchMessageResult {\n response: string;\n run: LeadResearchRun;\n contact_list_members: ResearchContactListMember[];\n}\n\nexport type EventAction =\n | { action: \"order_created\" }\n | { action: \"order_updated\" }\n | { action: \"order_confirmed\" }\n | {\n action: \"order_payment_received\";\n data: { amount: number; currency: Currency };\n }\n | { action: \"order_payment_failed\"; data: { reason?: string } }\n | {\n action: \"order_refunded\";\n data: { amount: number; currency: Currency; reason?: string };\n }\n | { action: \"order_cancelled\"; data: { reason?: string } }\n | { action: \"order_shipment_created\"; data: { shipment_id: string } }\n | { action: \"order_shipment_in_transit\"; data: { shipment_id: string } }\n | { action: \"order_shipment_out_for_delivery\"; data: { shipment_id: string } }\n | { action: \"order_shipment_delivered\"; data: { shipment_id: string } }\n | {\n action: \"order_shipment_failed\";\n data: { shipment_id: string; reason?: string };\n }\n | { action: \"order_shipment_returned\"; data: { shipment_id: string } }\n | {\n action: \"order_shipment_status_changed\";\n data: { shipment_id: string; from: string; to: string };\n }\n | { action: \"product_created\" }\n | { action: \"product_updated\" }\n | { action: \"product_deleted\" }\n | { action: \"collection_created\" }\n | { action: \"collection_updated\" }\n | { action: \"collection_deleted\" }\n | { action: \"entry_created\" }\n | { action: \"entry_updated\" }\n | { action: \"entry_deleted\" }\n | { action: \"provider_created\" }\n | { action: \"provider_updated\" }\n | { action: \"provider_deleted\" }\n | { action: \"service_created\" }\n | { action: \"service_updated\" }\n | { action: \"service_deleted\" }\n | { action: \"account_created\" }\n | { action: \"account_updated\" }\n | { action: \"account_deleted\" }\n | { action: \"media_created\" }\n | { action: \"media_deleted\" }\n | { action: \"store_created\" }\n | { action: \"store_updated\" }\n | { action: \"contact_list_created\" }\n | { action: \"contact_list_updated\" }\n | { action: \"contact_list_contact_added\" }\n | { action: \"contact_list_contact_removed\" }\n | { action: \"contact_list_contact_pending\" }\n | { action: \"contact_list_contact_confirmed\" }\n | { action: \"contact_list_contact_cancelled\" };\n\nexport interface Event {\n id: string;\n entity: string;\n event: EventAction;\n actor: string;\n created_at: number;\n}\n\nexport type ShippingStatus =\n | \"pending\"\n | \"label_created\"\n | \"in_transit\"\n | \"out_for_delivery\"\n | \"delivered\"\n | \"failed\"\n | \"returned\"\n | \"cancelled\";\n\nexport type ShippingProvider = \"shippo\";\n\nexport interface ShippingRateLine {\n order_item_id: string;\n quantity: number;\n}\n\nexport interface ShipmentLine {\n order_item_id: string;\n fulfillment_order_line_id?: string | null;\n quantity: number;\n}\n\nexport type ShippingLabelStatus =\n \"requested\" | \"processing\" | \"succeeded\" | \"rejected\" | \"failed\" | \"unknown\";\n\nexport type ShippingLabelRefundStatus =\n \"requested\" | \"processing\" | \"succeeded\" | \"rejected\" | \"failed\" | \"unknown\";\n\nexport type ShippingLabelRefundReconciliationStatus =\n \"not_started\" | \"succeeded\" | \"conflict\";\n\nexport interface ShippingLabelRefund {\n id: string;\n shipment_id: string;\n amount: number;\n currency: Currency;\n status: ShippingLabelRefundStatus;\n revision: number;\n attempt_count: number;\n provider_refund_id?: string | null;\n provider_status?: string | null;\n credit_settlement_id?: string | null;\n allocation_reconciliation_status: ShippingLabelRefundReconciliationStatus;\n allocation_reconciliation_completed_at?: number | null;\n safe_allocation_reconciliation_error?: string | null;\n safe_error?: string | null;\n requested_at: number;\n completed_at?: number | null;\n created_at: number;\n updated_at: number;\n}\n\nexport type ShippingLabelAdjustmentStatus =\n \"requested\" | \"processing\" | \"succeeded\" | \"rejected\" | \"failed\" | \"unknown\";\n\nexport interface ShippingLabelAdjustment {\n id: string;\n shipment_id: string;\n provider_adjustment_id: string;\n amount: number;\n currency: Currency;\n reason: string;\n status: ShippingLabelAdjustmentStatus;\n settlement_id: string;\n safe_error?: string | null;\n created_at: number;\n updated_at: number;\n}\n\nexport type ShippingLabelSettlementDirection = \"debit\" | \"credit\";\n\nexport type ShippingLabelSettlementStatus =\n \"requested\" | \"processing\" | \"succeeded\" | \"rejected\" | \"failed\" | \"unknown\";\n\nexport type ShipmentAllocationStatus = \"reserved\" | \"fulfilled\" | \"released\";\n\nexport type ShippingLabelSettlementType =\n | { type: \"purchase_debit\" }\n | { type: \"purchase_compensation_credit\" }\n | { type: \"refund_credit\"; refund_id: string }\n | { type: \"adjustment_debit\"; adjustment_id: string }\n | { type: \"adjustment_credit\"; adjustment_id: string };\n\nexport interface ShippingLabelSettlement {\n id: string;\n shipment_id: string;\n type: ShippingLabelSettlementType;\n direction: ShippingLabelSettlementDirection;\n amount: number;\n currency: Currency;\n status: ShippingLabelSettlementStatus;\n revision: number;\n attempt_count: number;\n provider_object_id?: string | null;\n provider_status?: string | null;\n safe_error?: string | null;\n requested_at: number;\n completed_at?: number | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface Shipment {\n id: string;\n store_id: string;\n order_id: string;\n provider: ShippingProvider;\n fulfillment_order_id?: string | null;\n location_id: string;\n rate_id: string;\n lines: ShipmentLine[];\n allocation_status: ShipmentAllocationStatus;\n carrier: string;\n service: string;\n postage_amount: number;\n fee_amount: number;\n total_amount: number;\n currency: Currency;\n tracking_number?: string | null;\n tracking_url?: string | null;\n label_url?: string | null;\n status: ShippingStatus;\n tracking_status_at_ms: number | null;\n revision: number;\n label_status: ShippingLabelStatus;\n label_revision: number;\n label_attempt_count: number;\n provider_transaction_id?: string | null;\n provider_status?: string | null;\n safe_label_error?: string | null;\n label_requested_at: number;\n label_completed_at?: number | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface ShippingRate {\n id: string;\n carrier: string;\n service: string;\n display_name: string;\n amount: number;\n currency: Currency;\n estimated_days?: number | null;\n}\n\nexport interface Parcel {\n length: number;\n width: number;\n height: number;\n weight: number;\n distance_unit: \"cm\" | \"in\" | \"ft\" | \"mm\" | \"m\" | \"yd\";\n mass_unit: \"oz\" | \"lb\" | \"g\" | \"kg\";\n}\n\nexport interface CreateShipmentResponse {\n shipment_id: string;\n shipment: Shipment;\n}\n\nexport interface CustomsItem {\n description: string;\n quantity: number;\n net_weight: string;\n mass_unit: string;\n value_amount: string;\n value_currency: Currency;\n origin_country: string;\n tariff_number?: string | null;\n}\n\nexport interface CustomsDeclaration {\n contents_type: string;\n contents_explanation?: string | null;\n non_delivery_option: string;\n certify: boolean;\n certify_signer: string;\n items: CustomsItem[];\n}\n\nexport interface PromoCode {\n id: string;\n store_id: string;\n code: string;\n discounts: import(\"./api\").Discount[];\n conditions: import(\"./api\").Condition[];\n status: PromoCodeStatus;\n uses: number;\n created_at: number;\n updated_at: number;\n}\n","import type { OrderCheckoutItemInput } from \"../types/api\";\n\nexport function sanitizePublicCheckoutItems(\n items: OrderCheckoutItemInput[],\n): OrderCheckoutItemInput[] {\n return items.map((item) => {\n if (item.type === \"product\") {\n return {\n type: \"product\",\n ...(item.id ? { id: item.id } : {}),\n product_id: item.product_id,\n variant_id: item.variant_id,\n quantity: item.quantity,\n };\n }\n return {\n type: \"service\",\n ...(item.id ? { id: item.id } : {}),\n service_id: item.service_id,\n provider_id: item.provider_id,\n slots: item.slots,\n ...(item.forms ? { forms: item.forms } : {}),\n };\n });\n}\n","import type { ContactSessionUpdater, StorefrontApiConfig } from \"../index\";\nimport type {\n AddCartItemParams,\n AvailabilityResponse,\n CheckoutCartParams,\n ClearCartParams,\n ContactListAccessParams,\n ContactListContentAccessParams,\n DownloadDigitalAccessParams,\n FindDigitalAccessGrantsParams,\n FindServiceProvidersParams,\n FindStorefrontContactListMembershipsParams,\n FindStorefrontContactListPlansParams,\n FindStorefrontContactListsParams,\n GetAvailabilityParams,\n GetCartParams,\n GetCollectionParams,\n GetContactListParams,\n GetDigitalAccessGrantParams,\n GetEntriesParams,\n GetEntryParams,\n GetFormParams,\n GetOrderParams,\n GetOrdersParams,\n GetProductParams,\n GetProductsParams,\n GetProviderParams,\n GetProvidersParams,\n GetServiceParams,\n GetServicesParams,\n GetTaxonomyChildrenParams,\n GetTaxonomyParams,\n QuoteCartParams,\n RemoveCartItemParams,\n RequestOptions,\n SubmitFormParams,\n SubscribeContactListParams,\n UpdateCartParams,\n VerificationChallengeResponse,\n} from \"../types/api\";\nimport type {\n Cart,\n Collection,\n CollectionEntry,\n Contact,\n ContactListAccessResponse,\n ContactListContentAccessResponse,\n ContactListSubscribeResponse,\n ContactSessionIssued,\n DigitalAccessDownloadResponse,\n DigitalAccessGrant,\n Form,\n FormSubmission,\n Location,\n Market,\n Order,\n OrderCheckoutResult,\n OrderQuote,\n PaginatedResponse,\n PaymentStoreConfig,\n Product,\n Provider,\n Service,\n ServiceProvider,\n StorefrontContactList,\n StorefrontContactListMembership,\n StorefrontContactListPlan,\n Taxonomy,\n Zone,\n} from \"../types\";\nimport { sanitizePublicCheckoutItems } from \"../utils/orderItems\";\n\ntype StorefrontParams<T> = T extends unknown\n ? Omit<T, \"store_id\" | \"market\">\n : never;\n\ntype StorefrontOpaqueKey =\n | \"attributes\"\n | \"blocks\"\n | \"context\"\n | \"data\"\n | \"fields\"\n | \"metadata\"\n | \"payload\"\n | \"properties\"\n | \"schema\"\n | \"value\";\n\n/**\n * The public Storefront wire shape of an Admin/domain DTO.\n *\n * Store ownership is resolved from the publishable key and is intentionally\n * absent from Storefront responses. User-authored JSON containers stay opaque\n * so a legitimate content key named `store_id` is not erased from its type.\n */\nexport type StorefrontDto<T> = T extends readonly (infer Item)[]\n ? StorefrontDto<Item>[]\n : T extends object\n ? {\n [Key in keyof T as Key extends \"store_id\" ? never : Key]:\n Key extends StorefrontOpaqueKey ? T[Key] : StorefrontDto<T[Key]>;\n }\n : T;\n\nexport type StorefrontContact = StorefrontDto<Contact>;\nexport type StorefrontLocation = StorefrontDto<Location>;\nexport type StorefrontZone = Omit<Zone, \"store_id\" | \"market_id\">;\nexport type StorefrontMarket = Omit<\n Market,\n \"store_id\" | \"created_at\" | \"updated_at\" | \"zones\"\n> & {\n zones: StorefrontZone[];\n};\n\nexport interface StorefrontSetup {\n timezone: string;\n languages: {\n default: string;\n available: string[];\n };\n markets: {\n default: string | null;\n available: StorefrontMarket[];\n };\n support: {\n email: string | null;\n };\n payment: PaymentStoreConfig | null;\n readiness: {\n market: boolean;\n payment: boolean;\n commerce: boolean;\n };\n}\n\nexport type IdentifyResponse = {\n contact: StorefrontContact;\n token: ContactSessionIssued | null;\n verification_challenge: VerificationChallengeResponse | null;\n};\n\nexport type VerifyResponse = {\n contact: StorefrontContact;\n token: ContactSessionIssued;\n};\n\ntype Country = {\n code: string;\n name: string;\n states: { code: string; name: string }[];\n};\n\ntype CountriesResponse = { items: Country[]; cursor: string | null };\n\nexport interface StorefrontAction {\n contact_id: string;\n key: string;\n payload: Record<string, unknown>;\n created_at: number;\n}\n\nexport interface TrackActionParams {\n key: string;\n payload?: Record<string, unknown>;\n}\n\nexport const COMMON_ACTION_KEYS = [\n \"page.view\",\n \"product.view\",\n \"service.view\",\n \"provider.view\",\n \"cart.added\",\n \"cart.removed\",\n \"checkout.started\",\n \"order.created\",\n \"signin\",\n \"signup\",\n \"verified.email\",\n \"search\",\n \"share\",\n \"wishlist.added\",\n] as const;\n\nexport type CommonActionKey = (typeof COMMON_ACTION_KEYS)[number];\n\nexport interface UseExperimentParams {\n key: string;\n}\n\nexport interface ExperimentUseResponse {\n experiment_key: string;\n experiment_version: number;\n variant_key: string;\n goal_action_key: string;\n}\n\nexport interface StorefrontLifecycle {\n ensureVisitorSession(): Promise<void>;\n getSetup(options?: RequestOptions): Promise<StorefrontSetup>;\n}\n\nexport const createActionApi = (\n apiConfig: StorefrontApiConfig,\n lifecycle: StorefrontLifecycle,\n) => ({\n COMMON_ACTION_KEYS,\n async track(params: TrackActionParams): Promise<void> {\n await lifecycle.ensureVisitorSession();\n try {\n await apiConfig.httpClient.post<void>(\"/v1/storefront/actions/track\", {\n key: params.key,\n payload: params.payload,\n });\n } catch {}\n },\n});\n\nexport const createStorefrontApi = (\n apiConfig: StorefrontApiConfig,\n updateContactSession: ContactSessionUpdater,\n lifecycle: StorefrontLifecycle,\n) => {\n const base = \"/v1/storefront\";\n\n function persistIdentification(result: IdentifyResponse): IdentifyResponse {\n const sessionToken = result.token?.token;\n if (sessionToken) {\n updateContactSession(() => ({\n sessionToken,\n contact: result.contact,\n }));\n } else {\n updateContactSession((current) =>\n current ? { ...current, contact: result.contact } : null,\n );\n }\n return result;\n }\n\n async function submitIdentification(\n path: \"identify\" | \"code\",\n params?: { email?: string },\n options?: RequestOptions,\n ): Promise<IdentifyResponse> {\n const result = await apiConfig.httpClient.post<IdentifyResponse>(\n `${base}/account/${path}`,\n { email: params?.email },\n options,\n );\n return persistIdentification(result);\n }\n\n return {\n store: {\n getSetup: lifecycle.getSetup,\n location: {\n getCountries(options?: RequestOptions): Promise<CountriesResponse> {\n return apiConfig.httpClient.get<CountriesResponse>(\n \"/v1/platform/countries\",\n options,\n );\n },\n getCountry(\n countryCode: string,\n options?: RequestOptions,\n ): Promise<Country> {\n return apiConfig.httpClient.get<Country>(\n `/v1/platform/countries/${countryCode}`,\n options,\n );\n },\n list(options?: RequestOptions): Promise<StorefrontLocation[]> {\n return apiConfig.httpClient.get<StorefrontLocation[]>(\n `${base}/locations`,\n options,\n );\n },\n get(id: string, options?: RequestOptions): Promise<StorefrontLocation> {\n return apiConfig.httpClient.get<StorefrontLocation>(\n `${base}/locations/${id}`,\n options,\n );\n },\n },\n market: {\n list(options?: RequestOptions): Promise<StorefrontMarket[]> {\n return apiConfig.httpClient.get<StorefrontMarket[]>(\n `${base}/markets`,\n options,\n );\n },\n get(id: string, options?: RequestOptions): Promise<StorefrontMarket> {\n return apiConfig.httpClient.get<StorefrontMarket>(\n `${base}/markets/${id}`,\n options,\n );\n },\n },\n },\n cms: {\n collection: {\n get(\n params: StorefrontParams<GetCollectionParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<Collection>> {\n const identifier = params.id ?? params.key;\n return apiConfig.httpClient.get<StorefrontDto<Collection>>(\n `${base}/collections/${identifier}`,\n options,\n );\n },\n },\n entry: {\n get(\n params: StorefrontParams<GetEntryParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<CollectionEntry>> {\n return apiConfig.httpClient.get<StorefrontDto<CollectionEntry>>(\n `${base}/entries/${params.id}`,\n options,\n );\n },\n find(\n params: StorefrontParams<GetEntriesParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<PaginatedResponse<CollectionEntry>>> {\n return apiConfig.httpClient.get<\n StorefrontDto<PaginatedResponse<CollectionEntry>>\n >(\n `${base}/entries`,\n { ...options, params },\n );\n },\n },\n form: {\n get(\n params: StorefrontParams<GetFormParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<Form>> {\n const identifier = params.id ?? params.key;\n if (!identifier) throw new Error(\"GetFormParams requires id or key\");\n return apiConfig.httpClient.get<StorefrontDto<Form>>(\n `${base}/forms/${identifier}`,\n options,\n );\n },\n async submit(\n params: StorefrontParams<SubmitFormParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<FormSubmission>> {\n await lifecycle.ensureVisitorSession();\n const { form_id, ...payload } = params;\n if (!form_id) throw new Error(\"SubmitFormParams requires form_id\");\n return apiConfig.httpClient.post<StorefrontDto<FormSubmission>>(\n `${base}/forms/${form_id}/submissions`,\n { ...payload, form_id },\n options,\n );\n },\n },\n taxonomy: {\n get(\n params: StorefrontParams<GetTaxonomyParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<Taxonomy>> {\n const identifier = params.id ?? params.key;\n if (!identifier) throw new Error(\"GetTaxonomyParams requires id or key\");\n return apiConfig.httpClient.get<StorefrontDto<Taxonomy>>(\n `${base}/taxonomies/${identifier}`,\n options,\n );\n },\n getChildren(\n params: StorefrontParams<GetTaxonomyChildrenParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<PaginatedResponse<Taxonomy>>> {\n return apiConfig.httpClient.get<StorefrontDto<PaginatedResponse<Taxonomy>>>(\n `${base}/taxonomies/${params.id}/children`,\n options,\n );\n },\n },\n },\n eshop: {\n product: {\n get(\n params: StorefrontParams<GetProductParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<Product>> {\n const identifier = params.id ?? params.slug;\n if (!identifier) throw new Error(\"GetProductParams requires id or slug\");\n return apiConfig.httpClient.get<StorefrontDto<Product>>(\n `${base}/products/${identifier}`,\n options,\n );\n },\n find(\n params: StorefrontParams<GetProductsParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<PaginatedResponse<Product>>> {\n return apiConfig.httpClient.get<StorefrontDto<PaginatedResponse<Product>>>(\n `${base}/products`,\n { ...options, params },\n );\n },\n },\n cart: {\n async current(\n options?: RequestOptions,\n ): Promise<StorefrontDto<Cart>> {\n await lifecycle.ensureVisitorSession();\n return apiConfig.httpClient.post<StorefrontDto<Cart>>(\n `${base}/carts/current`,\n {},\n options,\n );\n },\n async get(\n params: StorefrontParams<GetCartParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<Cart>> {\n await lifecycle.ensureVisitorSession();\n return apiConfig.httpClient.get<StorefrontDto<Cart>>(\n `${base}/carts/${params.id}`,\n {\n ...options,\n params: params.token ? { token: params.token } : options?.params,\n },\n );\n },\n async update(\n params: StorefrontParams<UpdateCartParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<Cart>> {\n await lifecycle.ensureVisitorSession();\n const { items, ...payload } = params;\n return apiConfig.httpClient.put<StorefrontDto<Cart>>(\n `${base}/carts/${params.id}`,\n {\n ...payload,\n ...(items ? { items: sanitizePublicCheckoutItems(items) } : {}),\n },\n options,\n );\n },\n async addItem(\n params: StorefrontParams<AddCartItemParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<Cart>> {\n await lifecycle.ensureVisitorSession();\n const { item, ...payload } = params;\n return apiConfig.httpClient.post<StorefrontDto<Cart>>(\n `${base}/carts/${params.id}/items`,\n { ...payload, item: sanitizePublicCheckoutItems([item])[0] },\n options,\n );\n },\n async removeItem(\n params: StorefrontParams<RemoveCartItemParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<Cart>> {\n await lifecycle.ensureVisitorSession();\n return apiConfig.httpClient.post<StorefrontDto<Cart>>(\n `${base}/carts/${params.id}/items/remove`,\n params,\n options,\n );\n },\n async clear(\n params: StorefrontParams<ClearCartParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<Cart>> {\n await lifecycle.ensureVisitorSession();\n return apiConfig.httpClient.post<StorefrontDto<Cart>>(\n `${base}/carts/${params.id}/clear`,\n { id: params.id },\n options,\n );\n },\n async quote(\n params: StorefrontParams<QuoteCartParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<OrderQuote>> {\n await lifecycle.ensureVisitorSession();\n return apiConfig.httpClient.post<StorefrontDto<OrderQuote>>(\n `${base}/carts/${params.id}/quote`,\n { id: params.id },\n options,\n );\n },\n async checkout(\n params: StorefrontParams<CheckoutCartParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<OrderCheckoutResult>> {\n await lifecycle.ensureVisitorSession();\n return apiConfig.httpClient.post<StorefrontDto<OrderCheckoutResult>>(\n `${base}/carts/${params.id}/checkout`,\n {\n id: params.id,\n payment_method_key: params.payment_method_key,\n confirmation_token_id: params.confirmation_token_id,\n return_url: params.return_url,\n },\n options,\n );\n },\n },\n order: {\n async get(\n params: StorefrontParams<GetOrderParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<Order>> {\n await lifecycle.ensureVisitorSession();\n return apiConfig.httpClient.get<StorefrontDto<Order>>(\n `${base}/orders/${params.id}`,\n options,\n );\n },\n async find(\n params: StorefrontParams<GetOrdersParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<PaginatedResponse<Order>>> {\n await lifecycle.ensureVisitorSession();\n return apiConfig.httpClient.get<StorefrontDto<PaginatedResponse<Order>>>(\n `${base}/orders`,\n { ...options, params },\n );\n },\n async downloadDigitalAccess(\n params: StorefrontParams<DownloadDigitalAccessParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<DigitalAccessDownloadResponse>> {\n await lifecycle.ensureVisitorSession();\n return apiConfig.httpClient.post<\n StorefrontDto<DigitalAccessDownloadResponse>\n >(\n `${base}/orders/${params.order_id}/digital-access/${params.grant_id}/download`,\n {},\n options,\n );\n },\n async findDigitalAccess(\n params: StorefrontParams<FindDigitalAccessGrantsParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<PaginatedResponse<DigitalAccessGrant>>> {\n await lifecycle.ensureVisitorSession();\n const { order_id, ...queryParams } = params;\n return apiConfig.httpClient.get<\n StorefrontDto<PaginatedResponse<DigitalAccessGrant>>\n >(\n `${base}/orders/${order_id}/digital-access`,\n { ...options, params: queryParams },\n );\n },\n async getDigitalAccess(\n params: StorefrontParams<GetDigitalAccessGrantParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<DigitalAccessGrant>> {\n await lifecycle.ensureVisitorSession();\n return apiConfig.httpClient.get<StorefrontDto<DigitalAccessGrant>>(\n `${base}/orders/${params.order_id}/digital-access/${params.grant_id}`,\n options,\n );\n },\n },\n service: {\n get(\n params: StorefrontParams<GetServiceParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<Service>> {\n const identifier = params.id ?? params.slug;\n if (!identifier) throw new Error(\"GetServiceParams requires id or slug\");\n return apiConfig.httpClient.get<StorefrontDto<Service>>(\n `${base}/services/${identifier}`,\n options,\n );\n },\n find(\n params: StorefrontParams<GetServicesParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<PaginatedResponse<Service>>> {\n return apiConfig.httpClient.get<StorefrontDto<PaginatedResponse<Service>>>(\n `${base}/services`,\n { ...options, params },\n );\n },\n findProviders(\n params: StorefrontParams<FindServiceProvidersParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<ServiceProvider[]>> {\n return apiConfig.httpClient.get<StorefrontDto<ServiceProvider[]>>(\n `${base}/service-providers`,\n { ...options, params },\n );\n },\n getAvailability(\n params: StorefrontParams<GetAvailabilityParams>,\n options?: RequestOptions,\n ): Promise<AvailabilityResponse> {\n return apiConfig.httpClient.get<AvailabilityResponse>(\n `${base}/services/availability`,\n { ...options, params },\n );\n },\n },\n provider: {\n get(\n params: StorefrontParams<GetProviderParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<Provider>> {\n const identifier = params.id ?? params.slug;\n if (!identifier) throw new Error(\"GetProviderParams requires id or slug\");\n return apiConfig.httpClient.get<StorefrontDto<Provider>>(\n `${base}/providers/${identifier}`,\n options,\n );\n },\n find(\n params: StorefrontParams<GetProvidersParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<PaginatedResponse<Provider>>> {\n return apiConfig.httpClient.get<StorefrontDto<PaginatedResponse<Provider>>>(\n `${base}/providers`,\n { ...options, params },\n );\n },\n },\n },\n crm: {\n contact: {\n identify(\n params?: { email?: string },\n options?: RequestOptions,\n ): Promise<IdentifyResponse> {\n return submitIdentification(\"identify\", params, options);\n },\n requestCode(\n params?: { email?: string },\n options?: RequestOptions,\n ): Promise<IdentifyResponse> {\n return submitIdentification(\"code\", params, options);\n },\n async verify(\n params: { challenge_id: string; code: string },\n options?: RequestOptions,\n ): Promise<VerifyResponse> {\n const result = await apiConfig.httpClient.post<VerifyResponse>(\n `${base}/account/verify`,\n params,\n options,\n );\n if (result.token?.token) {\n updateContactSession(() => ({\n sessionToken: result.token.token,\n contact: result.contact,\n }));\n }\n return result;\n },\n async logout(options?: RequestOptions): Promise<void> {\n try {\n await apiConfig.httpClient.post<void>(\n `${base}/account/logout`,\n {},\n options,\n );\n } finally {\n updateContactSession(() => null);\n }\n },\n getMe(options?: RequestOptions): Promise<StorefrontContact> {\n return apiConfig.httpClient.get<StorefrontContact>(\n `${base}/account/me`,\n options,\n );\n },\n },\n contactList: {\n get(\n params: StorefrontParams<GetContactListParams>,\n options?: RequestOptions,\n ): Promise<StorefrontContactList> {\n return apiConfig.httpClient.get<StorefrontContactList>(\n `${base}/contact-lists/${params.id}`,\n options,\n );\n },\n find(\n params: StorefrontParams<FindStorefrontContactListsParams> = {},\n options?: RequestOptions,\n ): Promise<PaginatedResponse<StorefrontContactList>> {\n return apiConfig.httpClient.get<PaginatedResponse<StorefrontContactList>>(\n `${base}/contact-lists`,\n { ...options, params },\n );\n },\n plans: {\n find(\n params: StorefrontParams<FindStorefrontContactListPlansParams>,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<StorefrontContactListPlan>> {\n const { contact_list_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<StorefrontContactListPlan>>(\n `${base}/contact-lists/${contact_list_id}/plans`,\n { ...options, params: queryParams },\n );\n },\n },\n memberships: {\n async find(\n params: StorefrontParams<FindStorefrontContactListMembershipsParams> = {},\n options?: RequestOptions,\n ): Promise<StorefrontDto<PaginatedResponse<StorefrontContactListMembership>>> {\n await lifecycle.ensureVisitorSession();\n return apiConfig.httpClient.get<\n StorefrontDto<PaginatedResponse<StorefrontContactListMembership>>\n >(`${base}/contact-lists/memberships`, {\n ...options,\n params,\n });\n },\n },\n async subscribe(\n params: StorefrontParams<SubscribeContactListParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<ContactListSubscribeResponse>> {\n await lifecycle.ensureVisitorSession();\n const { id, ...payload } = params;\n return apiConfig.httpClient.post<StorefrontDto<ContactListSubscribeResponse>>(\n `${base}/contact-lists/${id}/subscribe`,\n payload,\n options,\n );\n },\n async checkAccess(\n params: StorefrontParams<ContactListAccessParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<ContactListAccessResponse>> {\n await lifecycle.ensureVisitorSession();\n return apiConfig.httpClient.get<StorefrontDto<ContactListAccessResponse>>(\n `${base}/contact-lists/${params.id}/access`,\n options,\n );\n },\n async checkContentAccess(\n params: StorefrontParams<ContactListContentAccessParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<ContactListContentAccessResponse>> {\n await lifecycle.ensureVisitorSession();\n return apiConfig.httpClient.post<\n StorefrontDto<ContactListContentAccessResponse>\n >(\n `${base}/contact-lists/access`,\n params,\n options,\n );\n },\n },\n },\n action: createActionApi(apiConfig, lifecycle),\n experiments: {\n async use(\n params: UseExperimentParams,\n options?: RequestOptions,\n ): Promise<ExperimentUseResponse> {\n await lifecycle.ensureVisitorSession();\n return apiConfig.httpClient.post<ExperimentUseResponse>(\n `${base}/experiments/use`,\n { key: params.key },\n options,\n );\n },\n },\n };\n};\n","import type {\n AddCartItemParams,\n CheckoutCartParams,\n ClearCartParams,\n GetCartParams,\n GetCurrentCartParams,\n QuoteCartParams,\n RemoveCartItemParams,\n RequestOptions,\n UpdateCartParams,\n} from \"./types/api\";\nimport type { Cart, OrderCheckoutResult, OrderQuote } from \"./types\";\n\nexport interface CartApi {\n current(params?: GetCurrentCartParams, options?: RequestOptions): Promise<Cart>;\n get(params: GetCartParams, options?: RequestOptions): Promise<Cart>;\n update(params: UpdateCartParams, options?: RequestOptions): Promise<Cart>;\n addItem(params: AddCartItemParams, options?: RequestOptions): Promise<Cart>;\n removeItem(params: RemoveCartItemParams, options?: RequestOptions): Promise<Cart>;\n clear(params: ClearCartParams, options?: RequestOptions): Promise<Cart>;\n quote(params: QuoteCartParams, options?: RequestOptions): Promise<OrderQuote>;\n checkout(params: CheckoutCartParams, options?: RequestOptions): Promise<OrderCheckoutResult>;\n}\n\nexport interface CartControllerState {\n cart: Cart | null;\n quote: OrderQuote | null;\n checkoutResult: OrderCheckoutResult | null;\n loading: boolean;\n initialized: boolean;\n error: unknown;\n}\n\nexport type CartControllerListener = (state: CartControllerState) => void;\n\nexport type CartControllerInitParams = GetCurrentCartParams | GetCartParams;\nexport type CartControllerRefreshParams = GetCurrentCartParams | GetCartParams;\nexport type CartControllerUpdateParams = Omit<UpdateCartParams, \"id\"> & { id?: string };\nexport type CartControllerAddItemParams = Omit<AddCartItemParams, \"id\"> & { id?: string };\nexport type CartControllerRemoveItemParams = RemoveCartItemParams extends infer Params\n ? Params extends { id: string }\n ? Omit<Params, \"id\"> & { id?: string }\n : never\n : never;\nexport type CartControllerClearParams = Omit<ClearCartParams, \"id\"> & { id?: string };\nexport type CartControllerQuoteParams = Omit<QuoteCartParams, \"id\"> & { id?: string };\nexport type CartControllerCheckoutParams = Omit<CheckoutCartParams, \"id\"> & { id?: string };\n\nexport interface CartController {\n subscribe(listener: CartControllerListener): () => void;\n getState(): CartControllerState;\n init(params?: CartControllerInitParams, options?: RequestOptions): Promise<Cart>;\n refresh(params?: CartControllerRefreshParams, options?: RequestOptions): Promise<Cart>;\n addItem(params: CartControllerAddItemParams, options?: RequestOptions): Promise<Cart>;\n update(params: CartControllerUpdateParams, options?: RequestOptions): Promise<Cart>;\n removeItem(params: CartControllerRemoveItemParams, options?: RequestOptions): Promise<Cart>;\n clear(params?: CartControllerClearParams, options?: RequestOptions): Promise<Cart>;\n quote(params?: CartControllerQuoteParams, options?: RequestOptions): Promise<OrderQuote>;\n checkout(params?: CartControllerCheckoutParams, options?: RequestOptions): Promise<OrderCheckoutResult>;\n}\n\nfunction hasCartId(params: CartControllerInitParams): params is GetCartParams {\n return \"id\" in params && typeof params.id === \"string\" && params.id.length > 0;\n}\n\nexport function createCartController(cartApi: CartApi): CartController {\n const listeners = new Set<CartControllerListener>();\n let state: CartControllerState = {\n cart: null,\n quote: null,\n checkoutResult: null,\n loading: false,\n initialized: false,\n error: null,\n };\n\n function emit(): void {\n for (const listener of listeners) {\n Promise.resolve()\n .then(() => listener(state))\n .catch(() => {});\n }\n }\n\n function setState(patch: Partial<CartControllerState>): CartControllerState {\n state = { ...state, ...patch };\n emit();\n return state;\n }\n\n function currentCartId(id?: string): string {\n const cartId = id || state.cart?.id;\n if (!cartId) {\n throw new Error(\"Cart has not been initialized and no cart id was provided\");\n }\n return cartId;\n }\n\n async function runCartMutation(operation: () => Promise<Cart>): Promise<Cart> {\n setState({ loading: true, error: null });\n try {\n const cart = await operation();\n setState({\n cart,\n quote: null,\n checkoutResult: null,\n loading: false,\n initialized: true,\n error: null,\n });\n return cart;\n } catch (error) {\n setState({ loading: false, error });\n throw error;\n }\n }\n\n return {\n subscribe(listener) {\n listeners.add(listener);\n Promise.resolve()\n .then(() => listener(state))\n .catch(() => {});\n return () => {\n listeners.delete(listener);\n };\n },\n\n getState() {\n return state;\n },\n\n init(params = {}, options) {\n if (state.initialized && state.cart) {\n return Promise.resolve(state.cart);\n }\n return this.refresh(params, options);\n },\n\n refresh(params = {}, options) {\n return runCartMutation(() =>\n hasCartId(params)\n ? cartApi.get(params, options)\n : cartApi.current(params, options),\n );\n },\n\n addItem(params, options) {\n return runCartMutation(() =>\n cartApi.addItem({ ...params, id: currentCartId(params.id) }, options),\n );\n },\n\n update(params, options) {\n return runCartMutation(() =>\n cartApi.update({ ...params, id: currentCartId(params.id) }, options),\n );\n },\n\n removeItem(params, options) {\n return runCartMutation(() =>\n cartApi.removeItem({ ...params, id: currentCartId(params.id) }, options),\n );\n },\n\n clear(params = {}, options) {\n return runCartMutation(() =>\n cartApi.clear({ ...params, id: currentCartId(params.id) }, options),\n );\n },\n\n async quote(params = {}, options) {\n setState({ loading: true, error: null });\n try {\n const quote = await cartApi.quote(\n { ...params, id: currentCartId(params.id) },\n options,\n );\n setState({ quote, loading: false, error: null });\n return quote;\n } catch (error) {\n setState({ loading: false, error });\n throw error;\n }\n },\n\n async checkout(params = {}, options) {\n setState({ loading: true, error: null });\n try {\n const checkoutResult = await cartApi.checkout(\n { ...params, id: currentCartId(params.id) },\n options,\n );\n setState({ checkoutResult, loading: false, error: null });\n return checkoutResult;\n } catch (error) {\n setState({ loading: false, error });\n throw error;\n }\n },\n };\n}\n","export type QueryParams = object;\n\nexport function buildQueryString(params: QueryParams): string {\n const queryParts = Object.entries(params as Record<string, unknown>).flatMap(\n ([key, value]) => {\n if (value === null || value === undefined) return [];\n if (typeof value === \"string\") {\n return [`${key}=${encodeURIComponent(value)}`];\n }\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return [`${key}=${value}`];\n }\n if (Array.isArray(value) || typeof value === \"object\") {\n return [`${key}=${encodeURIComponent(JSON.stringify(value))}`];\n }\n return [];\n },\n );\n\n return queryParts.length > 0 ? `?${queryParts.join(\"&\")}` : \"\";\n}\n\nexport function appendQueryString(url: string, params: QueryParams): string {\n const queryString = buildQueryString(params);\n return queryString ? `${url}${queryString}` : url;\n}\n","import { buildQueryString, type QueryParams } from \"../utils/queryParams\";\n\nexport interface TokenSet {\n access_token: string;\n refresh_token?: string;\n access_expires_at?: number;\n}\n\nexport interface AuthStorage {\n getTokens(): TokenSet | null;\n onTokensRefreshed(tokens: TokenSet): void;\n onForcedLogout(): void;\n}\n\nexport interface RequestSuccessContext<T = unknown> {\n data: T;\n method: string;\n url: string;\n status: number;\n request?: unknown;\n duration_ms?: number;\n request_id?: string | null;\n}\n\nexport interface RequestErrorContext {\n error: unknown;\n method: string;\n url: string;\n status?: number;\n request?: unknown;\n response?: unknown;\n duration_ms?: number;\n request_id?: string | null;\n aborted?: boolean;\n}\n\nexport interface RequestOptions<T = unknown> {\n headers?: Record<string, string>;\n params?: QueryParams;\n signal?: AbortSignal;\n transformRequest?: (data: unknown) => unknown;\n onSuccess?: (ctx: RequestSuccessContext<T>) => void | Promise<void>;\n onError?: (ctx: RequestErrorContext) => void | Promise<void>;\n}\n\nexport interface HttpClient {\n get<T>(path: string, opts?: RequestOptions<T>): Promise<T>;\n post<T>(path: string, body: unknown, opts?: RequestOptions<T>): Promise<T>;\n put<T>(path: string, body: unknown, opts?: RequestOptions<T>): Promise<T>;\n patch<T>(path: string, body: unknown, opts?: RequestOptions<T>): Promise<T>;\n delete<T>(path: string, opts?: RequestOptions<T>): Promise<T>;\n}\n\nexport interface HttpClientConfig {\n baseUrl: string;\n storeId?: string;\n authStorage: AuthStorage;\n storefrontMode?: boolean;\n forcedHeaders?: Record<string, string> | (() => Record<string, string>);\n onUnauthorized?: (context: {\n hadAuthorization: boolean;\n authorizationToken: string | null;\n path: string;\n }) => boolean | Promise<boolean>;\n refreshPath?: string | (() => string);\n navigate?: (path: string) => void;\n loginFallbackPath?: string;\n}\n\ninterface ServerError {\n message: string;\n error: string;\n statusCode: number;\n validationErrors: Array<{ field: string; error: string }>;\n}\n\ninterface HttpRequestErrorDetails {\n statusCode?: number;\n validationErrors?: ServerError[\"validationErrors\"];\n method?: string;\n url?: string;\n requestId?: string;\n aborted?: boolean;\n}\n\nfunction requestError(\n name: \"ApiError\" | \"NetworkError\" | \"ParseError\" | \"AbortError\",\n message: string,\n details: HttpRequestErrorDetails = {},\n): Error & HttpRequestErrorDetails {\n return Object.assign(new Error(message), { name }, details);\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction omitStorefrontRouting(value: unknown): unknown {\n if (!isRecord(value) || Array.isArray(value)) return value;\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) return value;\n const result = { ...value };\n delete result.store_id;\n delete result.market;\n return result;\n}\n\nfunction isTokenSet(value: unknown): value is TokenSet {\n return (\n isRecord(value) &&\n typeof value.access_token === \"string\" &&\n (value.refresh_token === undefined ||\n typeof value.refresh_token === \"string\") &&\n (value.access_expires_at === undefined ||\n typeof value.access_expires_at === \"number\")\n );\n}\n\nfunction isValidationError(\n value: unknown,\n): value is ServerError[\"validationErrors\"][number] {\n return (\n isRecord(value) &&\n typeof value.field === \"string\" &&\n typeof value.error === \"string\"\n );\n}\n\nfunction toServerError(value: unknown, statusCode: number): ServerError {\n const payload = isRecord(value) ? value : {};\n const validationErrors = Array.isArray(payload.validationErrors)\n ? payload.validationErrors.filter(isValidationError)\n : [];\n\n return {\n message:\n typeof payload.message === \"string\" ? payload.message : \"Request failed\",\n error: typeof payload.error === \"string\" ? payload.error : \"REQUEST_FAILED\",\n statusCode:\n typeof payload.statusCode === \"number\" ? payload.statusCode : statusCode,\n validationErrors,\n };\n}\n\nfunction normalizeValidationErrors(\n validationErrors: ServerError[\"validationErrors\"],\n): ServerError[\"validationErrors\"] {\n return validationErrors.map((validationError) => ({\n field: validationError.field,\n error: validationError.error || \"GENERAL.VALIDATION_ERROR\",\n }));\n}\n\nexport function createHttpClient(cfg: HttpClientConfig): HttpClient {\n const { authStorage } = cfg;\n let refreshPromise: Promise<void> | null = null;\n\n function getRefreshEndpoint() {\n const refreshPath =\n typeof cfg.refreshPath === \"function\"\n ? cfg.refreshPath()\n : cfg.refreshPath || \"/v1/auth/refresh\";\n return `${cfg.baseUrl}${refreshPath}`;\n }\n\n async function ensureFreshToken() {\n if (refreshPromise) {\n return refreshPromise;\n }\n\n refreshPromise = (async () => {\n const tokens = authStorage.getTokens();\n const refresh_token = tokens?.refresh_token;\n if (!refresh_token) {\n authStorage.onForcedLogout();\n throw requestError(\"ApiError\", \"No refresh token available\", {\n statusCode: 401,\n });\n }\n\n const refRes = await fetch(getRefreshEndpoint(), {\n method: \"POST\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ refresh_token }),\n });\n\n if (!refRes.ok) {\n authStorage.onForcedLogout();\n throw requestError(\"ApiError\", \"Token refresh failed\", {\n statusCode: 401,\n });\n }\n\n const data: unknown = await refRes.json();\n if (!isTokenSet(data)) {\n authStorage.onForcedLogout();\n throw requestError(\n \"ParseError\",\n \"Token refresh returned an invalid response\",\n { statusCode: refRes.status },\n );\n }\n authStorage.onTokensRefreshed(data);\n })().finally(() => {\n refreshPromise = null;\n });\n\n return refreshPromise;\n }\n\n async function request<T>(\n method: string,\n path: string,\n body?: unknown,\n options?: RequestOptions<T>,\n retried = false,\n ): Promise<T> {\n if (!retried && options?.transformRequest) {\n body = options.transformRequest(body);\n }\n\n if (cfg.storefrontMode) {\n body = omitStorefrontRouting(body);\n }\n\n const forcedHeaders =\n typeof cfg.forcedHeaders === \"function\"\n ? cfg.forcedHeaders()\n : cfg.forcedHeaders || {};\n const callerHeaders = { ...(options?.headers || {}) };\n const protectedHeaderNames = new Set(\n Object.keys(forcedHeaders).map((name) => name.toLowerCase()),\n );\n if (cfg.storefrontMode) protectedHeaderNames.add(\"authorization\");\n for (const name of Object.keys(callerHeaders)) {\n if (protectedHeaderNames.has(name.toLowerCase())) {\n delete callerHeaders[name];\n }\n }\n\n const headers: Record<string, string> = {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n ...callerHeaders,\n ...forcedHeaders,\n };\n\n let tokens = authStorage.getTokens();\n const nowSec = Date.now() / 1000;\n if (tokens?.access_expires_at && nowSec > tokens.access_expires_at) {\n await ensureFreshToken();\n tokens = authStorage.getTokens();\n }\n\n if (tokens?.access_token) {\n headers[\"Authorization\"] = `Bearer ${tokens.access_token}`;\n }\n\n const requestParams = cfg.storefrontMode\n ? (omitStorefrontRouting(options?.params) as QueryParams | undefined)\n : options?.params;\n const finalPath = requestParams\n ? path + buildQueryString(requestParams)\n : path;\n\n const fetchOptions: RequestInit = {\n method,\n headers,\n signal: options?.signal,\n };\n if (![\"GET\", \"DELETE\"].includes(method) && body !== undefined) {\n fetchOptions.body =\n body instanceof URLSearchParams\n ? body.toString()\n : JSON.stringify(body);\n }\n\n const fullUrl = `${cfg.baseUrl}${finalPath}`;\n let res: Response;\n let data: unknown;\n const startedAt = Date.now();\n\n try {\n res = await fetch(fullUrl, fetchOptions);\n } catch (error) {\n const aborted =\n options?.signal?.aborted ||\n (error instanceof Error && error.name === \"AbortError\");\n const err = requestError(\n aborted ? \"AbortError\" : \"NetworkError\",\n error instanceof Error ? error.message : \"Network request failed\",\n { method, url: fullUrl, aborted },\n );\n if (options?.onError && method !== \"GET\") {\n Promise.resolve(\n options.onError({ error: err, method, url: fullUrl, aborted }),\n ).catch(() => {});\n }\n throw err;\n }\n\n if (res.status === 401 && !retried) {\n if (cfg.onUnauthorized) {\n const recovered = await cfg.onUnauthorized({\n hadAuthorization: Boolean(tokens?.access_token),\n authorizationToken: tokens?.access_token || null,\n path,\n });\n if (recovered) {\n return request<T>(method, path, body, options, true);\n }\n } else {\n await ensureFreshToken();\n return request<T>(method, path, body, options, true);\n }\n }\n\n try {\n const contentLength = res.headers.get(\"content-length\");\n const contentType = res.headers.get(\"content-type\");\n if (\n res.status === 204 ||\n contentLength === \"0\" ||\n !contentType?.includes(\"application/json\")\n ) {\n data = {};\n } else {\n data = await res.json();\n }\n } catch (error) {\n const err = requestError(\"ParseError\", \"Failed to parse response\", {\n method,\n url: fullUrl,\n statusCode: res.status,\n });\n if (options?.onError && method !== \"GET\") {\n Promise.resolve(\n options.onError({\n error: err,\n method,\n url: fullUrl,\n status: res.status,\n }),\n ).catch(() => {});\n }\n throw err;\n }\n\n if (!res.ok) {\n const serverErr = toServerError(data, res.status);\n const requestId =\n res.headers.get(\"x-request-id\") || res.headers.get(\"request-id\");\n const err = requestError(\"ApiError\", serverErr.message, {\n statusCode: serverErr.statusCode,\n validationErrors: normalizeValidationErrors(serverErr.validationErrors),\n method,\n url: fullUrl,\n requestId: requestId || undefined,\n });\n if (options?.onError && method !== \"GET\") {\n Promise.resolve(\n options.onError({\n error: err,\n method,\n url: fullUrl,\n status: res.status,\n response: serverErr,\n request_id: requestId || null,\n duration_ms: Date.now() - startedAt,\n }),\n ).catch(() => {});\n }\n throw err;\n }\n\n if (options?.onSuccess && method !== \"GET\") {\n const requestId =\n res.headers.get(\"x-request-id\") || res.headers.get(\"request-id\");\n Promise.resolve(\n options.onSuccess({\n data: data as T,\n method,\n url: fullUrl,\n status: res.status,\n request_id: requestId || null,\n duration_ms: Date.now() - startedAt,\n }),\n ).catch(() => {});\n }\n return data as T;\n }\n\n return {\n get: <T>(path: string, opts?: RequestOptions<T>) =>\n request<T>(\"GET\", path, undefined, opts),\n post: <T>(path: string, body: unknown, opts?: RequestOptions<T>) =>\n request<T>(\"POST\", path, body, opts),\n put: <T>(path: string, body: unknown, opts?: RequestOptions<T>) =>\n request<T>(\"PUT\", path, body, opts),\n patch: <T>(path: string, body: unknown, opts?: RequestOptions<T>) =>\n request<T>(\"PATCH\", path, body, opts),\n delete: <T>(path: string, opts?: RequestOptions<T>) =>\n request<T>(\"DELETE\", path, undefined, opts),\n };\n}\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateAccountApiTokenParams,\n DeleteAccountParams,\n GetMeParams,\n RequestOptions,\n SearchAccountsParams,\n UpdateAccountApiTokenParams,\n UpdateAccountContactParams,\n} from \"../types/api\";\nimport type {\n Account,\n AccountApiToken,\n AccountApiTokenCreated,\n AccountSession,\n AccountUpdateResponse,\n PaginatedResponse,\n} from \"../types\";\n\nexport const createAccountApi = (apiConfig: ApiConfig) => ({\n async updateAccount(\n _params: UpdateAccountContactParams,\n options?: RequestOptions,\n ): Promise<AccountUpdateResponse> {\n return apiConfig.httpClient.put<AccountUpdateResponse>(\n \"/v1/accounts\",\n {},\n options,\n );\n },\n\n async deleteAccount(\n _params: DeleteAccountParams,\n options?: RequestOptions,\n ): Promise<{ success: boolean; message: string }> {\n return apiConfig.httpClient.delete<{ success: boolean; message: string }>(\n \"/v1/accounts\",\n options,\n );\n },\n\n async getMe(\n _params: GetMeParams,\n options?: RequestOptions,\n ): Promise<Account> {\n return apiConfig.httpClient.get<Account>(\"/v1/accounts/me\", options);\n },\n\n async searchAccounts(\n params: SearchAccountsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<Account>> {\n return apiConfig.httpClient.get<PaginatedResponse<Account>>(\n \"/v1/accounts/search\",\n { ...options, params },\n );\n },\n\n async listApiTokens(\n options?: RequestOptions,\n ): Promise<PaginatedResponse<AccountApiToken>> {\n return apiConfig.httpClient.get<PaginatedResponse<AccountApiToken>>(\n \"/v1/accounts/me/api-tokens\",\n options,\n );\n },\n\n async createApiToken(\n params: CreateAccountApiTokenParams,\n options?: RequestOptions,\n ): Promise<AccountApiTokenCreated> {\n return apiConfig.httpClient.post<AccountApiTokenCreated>(\n \"/v1/accounts/me/api-tokens\",\n params,\n options,\n );\n },\n\n async updateApiToken(\n params: UpdateAccountApiTokenParams,\n options?: RequestOptions,\n ): Promise<AccountApiToken> {\n const { id, ...payload } = params;\n return apiConfig.httpClient.put<AccountApiToken>(\n `/v1/accounts/me/api-tokens/${id}`,\n payload,\n options,\n );\n },\n\n async revokeApiToken(\n id: string,\n options?: RequestOptions,\n ): Promise<boolean> {\n return apiConfig.httpClient.delete<boolean>(\n `/v1/accounts/me/api-tokens/${id}`,\n options,\n );\n },\n\n async listSessions(\n options?: RequestOptions,\n ): Promise<PaginatedResponse<AccountSession>> {\n return apiConfig.httpClient.get<PaginatedResponse<AccountSession>>(\n \"/v1/accounts/me/sessions\",\n options,\n );\n },\n\n async revokeSession(\n id: string,\n options?: RequestOptions,\n ): Promise<boolean> {\n return apiConfig.httpClient.delete<boolean>(\n `/v1/accounts/me/sessions/${id}`,\n options,\n );\n },\n});\n","import type { ApiConfig, AdminSessionInternal, AdminSessionUpdater } from '../index';\nimport type {\n AuthCodeVerifyParams,\n AuthToken,\n RequestOptions,\n VerificationChallengeResponse,\n} from '../types/api';\n\nexport const createAuthApi = (apiConfig: ApiConfig, updateSession: AdminSessionUpdater) => {\n const pendingEmails = new Map<string, string>();\n\n function applyAuthToken(result: AuthToken, email?: string) {\n const next: AdminSessionInternal = {\n access_token: result.access_token,\n refresh_token: result.refresh_token,\n access_expires_at: result.access_expires_at,\n email,\n };\n updateSession(() => next);\n }\n\n return {\n\n async code(params: { email: string }, options?: RequestOptions): Promise<VerificationChallengeResponse> {\n const result = await apiConfig.httpClient.post<VerificationChallengeResponse>('/v1/auth/code', params, options);\n pendingEmails.set(result.challenge_id, params.email);\n return result;\n },\n\n async verify(params: AuthCodeVerifyParams, options?: RequestOptions): Promise<AuthToken> {\n const result = await apiConfig.httpClient.post<AuthToken>(\n '/v1/auth/verify',\n params,\n options,\n );\n if (result?.access_token) {\n applyAuthToken(result, pendingEmails.get(params.challenge_id));\n pendingEmails.delete(params.challenge_id);\n }\n return result;\n },\n\n async refresh(params: { refresh_token: string }, options?: RequestOptions): Promise<AuthToken> {\n return apiConfig.httpClient.post<AuthToken>('/v1/auth/refresh', params, options);\n },\n\n async storeCode(storeId: string, params: { email: string }, options?: RequestOptions): Promise<VerificationChallengeResponse> {\n const result = await apiConfig.httpClient.post<VerificationChallengeResponse>(`/v1/stores/${storeId}/auth/code`, params, options);\n pendingEmails.set(result.challenge_id, params.email);\n return result;\n },\n\n async storeVerify(storeId: string, params: AuthCodeVerifyParams, options?: RequestOptions): Promise<AuthToken> {\n const result = await apiConfig.httpClient.post<AuthToken>(\n `/v1/stores/${storeId}/auth/verify`,\n params,\n options,\n );\n if (result?.access_token) {\n applyAuthToken(result, pendingEmails.get(params.challenge_id));\n pendingEmails.delete(params.challenge_id);\n }\n return result;\n }\n };\n};\n","import type { ApiConfig, AdminSessionUpdater } from \"../index\";\nimport type {\n CreateStoreParams,\n UpdateStoreParams,\n GetStoreParams,\n GetStoresParams,\n GetSubscriptionPlansParams,\n GetStoreSubscriptionParams,\n CreateStoreSubscriptionActionParams,\n RetryStoreSubscriptionActionParams,\n GetStoreSubscriptionActionParams,\n FindStoreSubscriptionActionsParams,\n FindStoreSubscriptionActionEffectsParams,\n GetStoreSubscriptionActionEffectParams,\n CreatePortalSessionParams,\n AddMemberParams,\n RemoveMemberParams,\n FindStoreMembersParams,\n TestWebhookParams,\n TestWebhookResponse,\n ListBuildHooksParams,\n CreateBuildHookParams,\n UpdateBuildHookParams,\n DeleteBuildHookParams,\n ListWebhooksParams,\n CreateWebhookParams,\n UpdateWebhookParams,\n DeleteWebhookParams,\n RequestOptions,\n} from \"../types/api\";\nimport type {\n Store,\n Webhook,\n PaginatedResponse,\n SubscriptionPlan,\n PaymentStoreConfig,\n BuildHook,\n StoreSubscription,\n StoreSubscriptionAction,\n StoreSubscriptionEffect,\n StoreMember,\n StoreMembership,\n} from \"../types\";\n\nexport const createStoreApi = (apiConfig: ApiConfig, _updateSession: AdminSessionUpdater) => {\n return {\n async createStore(params: CreateStoreParams, options?: RequestOptions): Promise<Store> {\n return apiConfig.httpClient.post<Store>(`/v1/stores`, params, options);\n },\n\n async updateStore(params: UpdateStoreParams, options?: RequestOptions): Promise<Store> {\n return apiConfig.httpClient.put<Store>(`/v1/stores/${params.id}`, params, options);\n },\n\n async getStore(_params: GetStoreParams, options?: RequestOptions): Promise<Store> {\n return apiConfig.httpClient.get<Store>(`/v1/stores/${apiConfig.storeId}`, options);\n },\n\n async getStores(params?: GetStoresParams, options?: RequestOptions): Promise<PaginatedResponse<Store>> {\n return apiConfig.httpClient.get<PaginatedResponse<Store>>(`/v1/stores`, {\n ...options,\n params,\n });\n },\n\n async regeneratePublishableKey(\n params: { store_id?: string } = {},\n options?: RequestOptions,\n ): Promise<Store> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Store>(\n `/v1/stores/${store_id}/publishable-key/regenerate`,\n {},\n options,\n );\n },\n\n async getSubscriptionPlans(\n _params: GetSubscriptionPlansParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<SubscriptionPlan>> {\n return apiConfig.httpClient.get<PaginatedResponse<SubscriptionPlan>>(\"/v1/stores/plans\", options);\n },\n\n async createSubscriptionAction(\n params: CreateStoreSubscriptionActionParams,\n options?: RequestOptions,\n ): Promise<StoreSubscriptionAction> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n const response = await apiConfig.httpClient.post<StoreSubscriptionAction>(\n `/v1/stores/${target_store_id}/subscription/actions`,\n payload,\n options,\n );\n if (response.id !== params.action_id) {\n throw new Error(\"Subscription response did not match the requested action_id\");\n }\n return response;\n },\n\n async getSubscription(params: GetStoreSubscriptionParams = {}, options?: RequestOptions): Promise<StoreSubscription> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<StoreSubscription>(`/v1/stores/${store_id}/subscription`, options);\n },\n\n async retrySubscriptionAction(params: RetryStoreSubscriptionActionParams, options?: RequestOptions): Promise<StoreSubscriptionAction> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<StoreSubscriptionAction>(\n `/v1/stores/${store_id}/subscription/actions/${params.action_id}/retry`,\n {},\n options,\n );\n },\n\n async getSubscriptionAction(params: GetStoreSubscriptionActionParams, options?: RequestOptions): Promise<StoreSubscriptionAction> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<StoreSubscriptionAction>(`/v1/stores/${store_id}/subscription/actions/${params.action_id}`, options);\n },\n\n async findSubscriptionActionEffects(\n params: FindStoreSubscriptionActionEffectsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<StoreSubscriptionEffect>> {\n const { store_id, action_id, ...query } = params;\n return apiConfig.httpClient.get<PaginatedResponse<StoreSubscriptionEffect>>(\n `/v1/stores/${store_id || apiConfig.storeId}/subscription/actions/${action_id}/effects`,\n { ...options, params: query },\n );\n },\n\n async getSubscriptionActionEffect(\n params: GetStoreSubscriptionActionEffectParams,\n options?: RequestOptions,\n ): Promise<StoreSubscriptionEffect> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<StoreSubscriptionEffect>(\n `/v1/stores/${store_id}/subscription/actions/${params.action_id}/effects/${params.effect_id}`,\n options,\n );\n },\n\n async findSubscriptionActions(\n params: FindStoreSubscriptionActionsParams = {},\n options?: RequestOptions,\n ): Promise<PaginatedResponse<StoreSubscriptionAction>> {\n const { store_id, ...query } = params;\n return apiConfig.httpClient.get<PaginatedResponse<StoreSubscriptionAction>>(\n `/v1/stores/${store_id || apiConfig.storeId}/subscription/actions`,\n { ...options, params: query },\n );\n },\n\n async createPortalSession(params: CreatePortalSessionParams, options?: RequestOptions): Promise<{ portal_url: string }> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<{ portal_url: string }>(\n `/v1/stores/${store_id}/subscription/portal`,\n { return_url: params.return_url },\n options,\n );\n },\n\n async addMember(params: AddMemberParams, options?: RequestOptions): Promise<boolean> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<boolean>(`/v1/stores/${store_id || apiConfig.storeId}/members`, payload, options);\n },\n\n async inviteUser(params: AddMemberParams, options?: RequestOptions): Promise<boolean> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<boolean>(`/v1/stores/${store_id || apiConfig.storeId}/invitation`, payload, options);\n },\n\n async findMembers(params: FindStoreMembersParams = {}, options?: RequestOptions): Promise<PaginatedResponse<StoreMember>> {\n const { store_id, ...query } = params;\n return apiConfig.httpClient.get<PaginatedResponse<StoreMember>>(`/v1/stores/${store_id || apiConfig.storeId}/members`, {\n ...options,\n params: query,\n });\n },\n\n async findOwnMemberships(options?: RequestOptions): Promise<PaginatedResponse<StoreMembership>> {\n return apiConfig.httpClient.get<PaginatedResponse<StoreMembership>>(\"/v1/stores/memberships\", options);\n },\n\n async removeMember(params: RemoveMemberParams, options?: RequestOptions): Promise<boolean> {\n return apiConfig.httpClient.delete<boolean>(\n `/v1/stores/${params.store_id || apiConfig.storeId}/members/${params.account_id}`,\n options,\n );\n },\n\n async testWebhook(params: TestWebhookParams, options?: RequestOptions): Promise<TestWebhookResponse> {\n return apiConfig.httpClient.post<TestWebhookResponse>(`/v1/stores/${apiConfig.storeId}/webhooks/test`, params, options);\n },\n\n async listBuildHooks(params: ListBuildHooksParams, options?: RequestOptions): Promise<BuildHook[]> {\n return apiConfig.httpClient.get<BuildHook[]>(`/v1/stores/${params.store_id}/build-hooks`, options);\n },\n\n async createBuildHook(params: CreateBuildHookParams, options?: RequestOptions): Promise<BuildHook> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<BuildHook>(`/v1/stores/${store_id}/build-hooks`, payload, options);\n },\n\n async updateBuildHook(params: UpdateBuildHookParams, options?: RequestOptions): Promise<BuildHook> {\n const { store_id, id, ...payload } = params;\n return apiConfig.httpClient.put<BuildHook>(`/v1/stores/${store_id}/build-hooks/${id}`, payload, options);\n },\n\n async deleteBuildHook(params: DeleteBuildHookParams, options?: RequestOptions): Promise<{ deleted: boolean }> {\n return apiConfig.httpClient.delete<{ deleted: boolean }>(`/v1/stores/${params.store_id}/build-hooks/${params.id}`, options);\n },\n\n async getPaymentConfig(params: { store_id: string }, options?: RequestOptions): Promise<PaymentStoreConfig | null> {\n return apiConfig.httpClient.get<PaymentStoreConfig | null>(`/v1/stores/${params.store_id}/config/payment`, options);\n },\n\n async listWebhooks(params: ListWebhooksParams, options?: RequestOptions): Promise<Webhook[]> {\n return apiConfig.httpClient.get<Webhook[]>(`/v1/stores/${params.store_id}/webhooks`, options);\n },\n\n async createWebhook(params: CreateWebhookParams, options?: RequestOptions): Promise<Webhook> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<Webhook>(`/v1/stores/${store_id}/webhooks`, payload, options);\n },\n\n async updateWebhook(params: UpdateWebhookParams, options?: RequestOptions): Promise<Webhook> {\n const { store_id, id, ...payload } = params;\n return apiConfig.httpClient.put<Webhook>(`/v1/stores/${store_id}/webhooks/${id}`, payload, options);\n },\n\n async deleteWebhook(params: DeleteWebhookParams, options?: RequestOptions): Promise<{ deleted: boolean }> {\n return apiConfig.httpClient.delete<{ deleted: boolean }>(`/v1/stores/${params.store_id}/webhooks/${params.id}`, options);\n },\n };\n};\n","import type { ApiConfig } from '../index';\nimport type {\n UploadStoreMediaParams,\n DeleteStoreMediaParams,\n GetStoreMediaParams,\n GetMediaParams,\n UpdateMediaParams,\n RequestOptions\n} from '../types/api';\nimport type { Media, PaginatedResponse } from '../types';\n\nexport const createMediaApi = (apiConfig: ApiConfig) => {\n return {\n async getMedia(params: GetMediaParams, options?: RequestOptions): Promise<Media> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<Media>(\n `/v1/stores/${target_store_id}/media/${params.media_id}`,\n options\n );\n },\n\n async uploadStoreMedia(params: UploadStoreMediaParams, options?: RequestOptions): Promise<Media[]> {\n const { store_id, files = [], urls = [] } = params;\n const target_store_id = store_id || apiConfig.storeId;\n const url = `${apiConfig.baseUrl}/v1/stores/${target_store_id}/media`;\n\n const formData = new FormData();\n files.forEach((file) => formData.append('files', file));\n urls.forEach((url) => formData.append('urls', url));\n\n const tokens = apiConfig.authStorage.getTokens();\n const response = await fetch(url, {\n method: 'POST',\n body: formData,\n headers: {\n Authorization: `Bearer ${tokens?.access_token || ''}`\n },\n signal: options?.signal\n });\n\n if (!response.ok) {\n throw new Error('Upload failed, server said no');\n }\n\n return await response.json();\n },\n\n async deleteStoreMedia(params: DeleteStoreMediaParams, options?: RequestOptions): Promise<boolean> {\n const { store_id, media_id } = params;\n const target_store_id = store_id || apiConfig.storeId;\n\n return apiConfig.httpClient.delete<boolean>(\n `/v1/stores/${target_store_id}/media/${media_id}`,\n options\n );\n },\n\n async getStoreMedia(params: GetStoreMediaParams, options?: RequestOptions): Promise<PaginatedResponse<Media>> {\n const { store_id, cursor, limit, ids, query, mime_type, sort_field, sort_direction } = params;\n const target_store_id = store_id || apiConfig.storeId;\n const url = `${apiConfig.baseUrl}/v1/stores/${target_store_id}/media`;\n\n const queryParams: Record<string, string> = { limit: String(limit) };\n if (cursor) queryParams.cursor = cursor;\n if (ids && ids.length > 0) queryParams.ids = JSON.stringify(ids);\n if (query) queryParams.query = query;\n if (mime_type) queryParams.mime_type = mime_type;\n if (sort_field) queryParams.sort_field = sort_field;\n if (sort_direction) queryParams.sort_direction = sort_direction;\n\n const queryString = new URLSearchParams(queryParams).toString();\n\n const tokens = apiConfig.authStorage.getTokens();\n const response = await fetch(`${url}?${queryString}`, {\n headers: {\n Authorization: `Bearer ${tokens?.access_token || ''}`\n },\n signal: options?.signal\n });\n\n if (!response.ok) {\n const errorData = await response.json().catch(() => null);\n throw new Error(errorData?.message || 'Failed to fetch media');\n }\n\n return await response.json();\n },\n\n async updateMedia(params: UpdateMediaParams, options?: RequestOptions): Promise<Media> {\n const { media_id, store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n\n return apiConfig.httpClient.put<Media>(\n `/v1/stores/${target_store_id}/media/${media_id}`,\n payload,\n options\n );\n }\n };\n};\n","import type { ApiConfig } from '../index';\nimport type {\n\tEmailDelivery,\n\tEmailSendRequest,\n\tEmailSendResult,\n\tGetEmailDeliveryParams,\n\tRetryEmailDeliveryParams\n} from '../types';\nimport type { RequestOptions } from '../types/api';\n\nexport const createNotificationApi = (apiConfig: ApiConfig) => {\n\treturn {\n\t\tasync sendEmail(request: EmailSendRequest, options?: RequestOptions): Promise<EmailSendResult> {\n\t\t\treturn apiConfig.httpClient.post<EmailSendResult>(\n\t\t\t\t'/v1/notifications/email',\n\t\t\t\trequest,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync getEmailDelivery(\n\t\t\tparams: GetEmailDeliveryParams,\n\t\t\toptions?: RequestOptions\n\t\t): Promise<EmailDelivery> {\n\t\t\treturn apiConfig.httpClient.get<EmailDelivery>(\n\t\t\t\t`/v1/notifications/email-deliveries/${params.delivery_id}`,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync retryEmailDelivery(\n\t\t\tparams: RetryEmailDeliveryParams,\n\t\t\toptions?: RequestOptions\n\t\t): Promise<EmailDelivery> {\n\t\t\treturn apiConfig.httpClient.post<EmailDelivery>(\n\t\t\t\t`/v1/notifications/email-deliveries/${params.delivery_id}/retry`,\n\t\t\t\t{ revision: params.revision },\n\t\t\t\toptions\n\t\t\t);\n\t\t}\n\t};\n};\n","import type { ApiConfig } from '../index';\nimport type {\n\tCreatePromoCodeParams,\n\tUpdatePromoCodeParams,\n\tDeletePromoCodeParams,\n\tGetPromoCodeParams,\n\tGetPromoCodesParams,\n\tRequestOptions\n} from '../types/api';\nimport type { PaginatedResponse, PromoCode } from '../types';\n\nexport const createPromoCodeApi = (apiConfig: ApiConfig) => {\n\treturn {\n\t\tasync createPromoCode(params: CreatePromoCodeParams, options?: RequestOptions): Promise<PromoCode> {\n\t\t\tconst { store_id, ...payload } = params;\n\t\t\tconst target_store_id = store_id || apiConfig.storeId;\n\t\t\treturn apiConfig.httpClient.post<PromoCode>(\n\t\t\t\t`/v1/stores/${target_store_id}/promo-codes`,\n\t\t\t\tpayload,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync updatePromoCode(params: UpdatePromoCodeParams, options?: RequestOptions): Promise<PromoCode> {\n\t\t\tconst { store_id, ...payload } = params;\n\t\t\tconst target_store_id = store_id || apiConfig.storeId;\n\t\t\treturn apiConfig.httpClient.put<PromoCode>(\n\t\t\t\t`/v1/stores/${target_store_id}/promo-codes/${params.id}`,\n\t\t\t\tpayload,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync deletePromoCode(params: DeletePromoCodeParams, options?: RequestOptions): Promise<{ deleted: boolean }> {\n\t\t\tconst target_store_id = params.store_id || apiConfig.storeId;\n\t\t\treturn apiConfig.httpClient.delete<{ deleted: boolean }>(\n\t\t\t\t`/v1/stores/${target_store_id}/promo-codes/${params.id}`,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync getPromoCode(params: GetPromoCodeParams, options?: RequestOptions): Promise<PromoCode> {\n\t\t\tconst target_store_id = params.store_id || apiConfig.storeId;\n\t\t\treturn apiConfig.httpClient.get<PromoCode>(\n\t\t\t\t`/v1/stores/${target_store_id}/promo-codes/${params.id}`,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync getPromoCodes(params: GetPromoCodesParams, options?: RequestOptions): Promise<PaginatedResponse<PromoCode>> {\n\t\t\tconst { store_id, ...queryParams } = params;\n\t\t\tconst target_store_id = store_id || apiConfig.storeId;\n\t\t\treturn apiConfig.httpClient.get<PaginatedResponse<PromoCode>>(`/v1/stores/${target_store_id}/promo-codes`, {\n\t\t\t\t...options,\n\t\t\t\tparams: queryParams\n\t\t\t});\n\t\t}\n\t};\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateCollectionParams,\n UpdateCollectionParams,\n DeleteCollectionParams,\n GetCollectionParams,\n GetCollectionsParams,\n CreateEntryParams,\n UpdateEntryParams,\n DeleteEntryParams,\n GetEntryParams,\n GetEntriesParams,\n RequestOptions,\n} from \"../types/api\";\nimport type { Collection, CollectionEntry, PaginatedResponse } from \"../types\";\n\nexport const createCmsApi = (apiConfig: ApiConfig) => {\n return {\n async createCollection(params: CreateCollectionParams, options?: RequestOptions): Promise<Collection> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Collection>(\n `/v1/stores/${target_store_id}/collections`,\n payload,\n options\n );\n },\n\n async updateCollection(params: UpdateCollectionParams, options?: RequestOptions): Promise<Collection> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<Collection>(\n `/v1/stores/${target_store_id}/collections/${params.id}`,\n payload,\n options\n );\n },\n\n async deleteCollection(params: DeleteCollectionParams, options?: RequestOptions): Promise<boolean> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<boolean>(\n `/v1/stores/${target_store_id}/collections/${params.id}`,\n options\n );\n },\n\n async getCollection(params: GetCollectionParams, options?: RequestOptions): Promise<Collection> {\n const target_store_id = params.store_id || apiConfig.storeId;\n const identifier = params.id !== undefined\n ? params.id\n : `${target_store_id}:${params.key}`;\n\n return apiConfig.httpClient.get<Collection>(\n `/v1/stores/${target_store_id}/collections/${identifier}`,\n options\n );\n },\n\n async getCollections(params: GetCollectionsParams = {}, options?: RequestOptions): Promise<PaginatedResponse<Collection>> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<Collection>>(\n `/v1/stores/${target_store_id}/collections`,\n {\n ...options,\n params: queryParams,\n }\n );\n },\n\n async createEntry(params: CreateEntryParams, options?: RequestOptions): Promise<CollectionEntry> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<CollectionEntry>(\n `/v1/stores/${target_store_id}/entries`,\n payload,\n options\n );\n },\n\n async updateEntry(params: UpdateEntryParams, options?: RequestOptions): Promise<CollectionEntry> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<CollectionEntry>(\n `/v1/stores/${target_store_id}/entries/${params.id}`,\n payload,\n options\n );\n },\n\n async deleteEntry(params: DeleteEntryParams, options?: RequestOptions): Promise<boolean> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<boolean>(\n `/v1/stores/${target_store_id}/entries/${params.id}`,\n options\n );\n },\n\n async getEntry(params: GetEntryParams, options?: RequestOptions): Promise<CollectionEntry> {\n const target_store_id = params.store_id || apiConfig.storeId;\n if (!params.id) {\n throw new Error(\"GetEntryParams requires id\");\n }\n return apiConfig.httpClient.get<CollectionEntry>(\n `/v1/stores/${target_store_id}/entries/${params.id}`,\n options\n );\n },\n\n async getEntries(params: GetEntriesParams, options?: RequestOptions): Promise<PaginatedResponse<CollectionEntry>> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<CollectionEntry>>(\n `/v1/stores/${target_store_id}/entries`,\n {\n ...options,\n params: queryParams,\n }\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateProviderParams,\n CreateProductParams,\n CreateServiceParams,\n CreateServiceProviderParams,\n DeleteProviderParams,\n UpdateProductParams,\n DeleteProductParams,\n DeleteServiceParams,\n DeleteServiceProviderParams,\n FindServiceProvidersParams,\n GetProviderParams,\n GetProductParams,\n GetProductsParams,\n GetProvidersParams,\n GetQuoteParams,\n GetAvailabilityParams,\n AvailabilityResponse,\n AddCartItemParams,\n CheckoutCartParams,\n ClearCartParams,\n CreateCartParams,\n FindCartsParams,\n GetCartParams,\n GetServiceParams,\n GetServicesParams,\n UpdateOrderParams,\n UpdateProviderParams,\n UpdateServiceParams,\n UpdateServiceProviderParams,\n GetOrderParams,\n GetOrdersParams,\n FindDigitalAccessGrantsParams,\n GetDigitalAccessGrantParams,\n DownloadDigitalAccessParams,\n ActivateDigitalAccessGrantParams,\n RevokeDigitalAccessGrantParams,\n CreateOrderRefundParams,\n CreateOrderRefundResponse,\n FindOrderRefundsParams,\n GetOrderRefundParams,\n GetOrderPaymentParams,\n RetryPaymentTransactionParams,\n FindPaymentTransactionsParams,\n GetPaymentTransactionParams,\n QuoteCartParams,\n RemoveCartItemParams,\n RequestOptions,\n UpdateCartParams,\n} from \"../types/api\";\nimport type {\n Order,\n DigitalAccessGrant,\n DigitalAccessDownloadResponse,\n Product,\n Provider,\n Service,\n ServiceProvider,\n OrderQuote,\n OrderRefund,\n OrderPayment,\n PaymentTransaction,\n Cart,\n PaginatedResponse,\n} from \"../types\";\n\nexport const createEshopApi = (apiConfig: ApiConfig) => {\n return {\n\n async createProduct(params: CreateProductParams, options?: RequestOptions): Promise<Product> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Product>(\n `/v1/stores/${target_store_id}/products`,\n payload,\n options,\n );\n },\n\n async updateProduct(params: UpdateProductParams, options?: RequestOptions): Promise<Product> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<Product>(\n `/v1/stores/${target_store_id}/products/${params.id}`,\n payload,\n options,\n );\n },\n\n async deleteProduct(params: DeleteProductParams, options?: RequestOptions): Promise<{ deleted: boolean }> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${target_store_id}/products/${params.id}`,\n options,\n );\n },\n\n async getProduct(params: GetProductParams, options?: RequestOptions): Promise<Product> {\n const target_store_id = params.store_id || apiConfig.storeId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.slug) {\n identifier = `${target_store_id}:${apiConfig.locale}:${params.slug}`;\n } else {\n throw new Error(\"GetProductParams requires id or slug\");\n }\n\n return apiConfig.httpClient.get<Product>(\n `/v1/stores/${target_store_id}/products/${identifier}`,\n options,\n );\n },\n\n async getProducts(params: GetProductsParams, options?: RequestOptions): Promise<PaginatedResponse<Product>> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<Product>>(\n `/v1/stores/${encodeURIComponent(target_store_id)}/products`,\n {\n ...options,\n params: queryParams,\n },\n );\n },\n\n async createService(\n params: CreateServiceParams,\n options?: RequestOptions,\n ): Promise<Service> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Service>(\n `/v1/stores/${target_store_id}/services`,\n payload,\n options,\n );\n },\n\n async updateService(\n params: UpdateServiceParams,\n options?: RequestOptions,\n ): Promise<Service> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<Service>(\n `/v1/stores/${target_store_id}/services/${params.id}`,\n payload,\n options,\n );\n },\n\n async deleteService(\n params: DeleteServiceParams,\n options?: RequestOptions,\n ): Promise<void> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<void>(\n `/v1/stores/${target_store_id}/services/${params.id}`,\n options,\n );\n },\n\n async getService(\n params: GetServiceParams,\n options?: RequestOptions,\n ): Promise<Service> {\n const store_id = params.store_id || apiConfig.storeId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.slug) {\n identifier = `${store_id}:${apiConfig.locale}:${params.slug}`;\n } else {\n throw new Error(\"GetServiceParams requires id or slug\");\n }\n\n return apiConfig.httpClient.get<Service>(\n `/v1/stores/${store_id}/services/${identifier}`,\n options,\n );\n },\n\n async getServices(\n params: GetServicesParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<Service>> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<Service>>(\n `/v1/stores/${target_store_id}/services`,\n {\n ...options,\n params: queryParams,\n },\n );\n },\n\n async getServiceAvailability(\n params: GetAvailabilityParams,\n options?: RequestOptions,\n ): Promise<AvailabilityResponse> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<AvailabilityResponse>(\n `/v1/stores/${target_store_id}/services/availability`,\n { ...options, params: queryParams },\n );\n },\n\n async createProvider(\n params: CreateProviderParams,\n options?: RequestOptions,\n ): Promise<Provider> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Provider>(\n `/v1/stores/${target_store_id}/providers`,\n payload,\n options,\n );\n },\n\n async updateProvider(\n params: UpdateProviderParams,\n options?: RequestOptions,\n ): Promise<Provider> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<Provider>(\n `/v1/stores/${target_store_id}/providers/${params.id}`,\n payload,\n options,\n );\n },\n\n async deleteProvider(\n params: DeleteProviderParams,\n options?: RequestOptions,\n ): Promise<void> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<void>(\n `/v1/stores/${target_store_id}/providers/${params.id}`,\n options,\n );\n },\n\n async getProvider(\n params: GetProviderParams,\n options?: RequestOptions,\n ): Promise<Provider> {\n const store_id = params.store_id || apiConfig.storeId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.slug) {\n identifier = `${store_id}:${apiConfig.locale}:${params.slug}`;\n } else {\n throw new Error(\"GetProviderParams requires id or slug\");\n }\n\n return apiConfig.httpClient.get<Provider>(\n `/v1/stores/${store_id}/providers/${identifier}`,\n options,\n );\n },\n\n async getProviders(\n params: GetProvidersParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<Provider>> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<Provider>>(\n `/v1/stores/${target_store_id}/providers`,\n {\n ...options,\n params: queryParams,\n },\n );\n },\n\n async findServiceProviders(\n params: FindServiceProvidersParams,\n options?: RequestOptions,\n ): Promise<ServiceProvider[]> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<ServiceProvider[]>(\n `/v1/stores/${target_store_id}/service-providers`,\n { ...options, params: queryParams },\n );\n },\n\n async createServiceProvider(\n params: CreateServiceProviderParams,\n options?: RequestOptions,\n ): Promise<ServiceProvider> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<ServiceProvider>(\n `/v1/stores/${target_store_id}/service-providers`,\n payload,\n options,\n );\n },\n\n async updateServiceProvider(\n params: UpdateServiceProviderParams,\n options?: RequestOptions,\n ): Promise<ServiceProvider> {\n const { store_id, id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<ServiceProvider>(\n `/v1/stores/${target_store_id}/service-providers/${id}`,\n payload,\n options,\n );\n },\n\n async deleteServiceProvider(\n params: DeleteServiceProviderParams,\n options?: RequestOptions,\n ): Promise<void> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<void>(\n `/v1/stores/${target_store_id}/service-providers/${params.id}`,\n options,\n );\n },\n\n async updateOrder(params: UpdateOrderParams, options?: RequestOptions): Promise<Order> {\n const { store_id, items, ...rest } = params;\n const target_store_id = store_id || apiConfig.storeId;\n const payload = {\n ...rest,\n ...(items ? { items } : {}),\n };\n\n return apiConfig.httpClient.put<Order>(\n `/v1/stores/${target_store_id}/orders/${params.id}`,\n payload,\n options,\n );\n },\n\n async getOrder(params: GetOrderParams, options?: RequestOptions): Promise<Order> {\n const target_store_id = params.store_id || apiConfig.storeId;\n\n return apiConfig.httpClient.get<Order>(\n `/v1/stores/${target_store_id}/orders/${params.id}`,\n options,\n );\n },\n\n async getOrders(params: GetOrdersParams, options?: RequestOptions): Promise<PaginatedResponse<Order>> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<Order>>(\n `/v1/stores/${target_store_id}/orders`,\n {\n ...options,\n params: queryParams,\n },\n );\n },\n\n async getCarts(params: FindCartsParams = {}, options?: RequestOptions): Promise<PaginatedResponse<Cart>> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<Cart>>(\n `/v1/stores/${target_store_id}/carts`,\n {\n ...options,\n params: queryParams,\n },\n );\n },\n\n async getCart(params: GetCartParams, options?: RequestOptions): Promise<Cart> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<Cart>(\n `/v1/stores/${target_store_id}/carts/${params.id}`,\n options,\n );\n },\n\n async createCart(params: CreateCartParams, options?: RequestOptions): Promise<Cart> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Cart>(\n `/v1/stores/${target_store_id}/carts`,\n {\n ...payload,\n items: payload.items || [],\n },\n options,\n );\n },\n\n async updateCart(params: UpdateCartParams, options?: RequestOptions): Promise<Cart> {\n const { id, store_id, items, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<Cart>(\n `/v1/stores/${target_store_id}/carts/${id}`,\n {\n ...payload,\n ...(items ? { items } : {}),\n },\n options,\n );\n },\n\n async addCartItem(params: AddCartItemParams, options?: RequestOptions): Promise<Cart> {\n const { id, store_id, item } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Cart>(\n `/v1/stores/${target_store_id}/carts/${id}/items`,\n { item },\n options,\n );\n },\n\n async removeCartItem(params: RemoveCartItemParams, options?: RequestOptions): Promise<Cart> {\n const { id, store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Cart>(\n `/v1/stores/${target_store_id}/carts/${id}/items/remove`,\n payload,\n options,\n );\n },\n\n async clearCart(params: ClearCartParams, options?: RequestOptions): Promise<Cart> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Cart>(\n `/v1/stores/${target_store_id}/carts/${params.id}/clear`,\n {},\n options,\n );\n },\n\n async quoteCart(params: QuoteCartParams, options?: RequestOptions): Promise<OrderQuote> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<OrderQuote>(\n `/v1/stores/${target_store_id}/carts/${params.id}/quote`,\n {},\n options,\n );\n },\n\n async checkoutCart(params: CheckoutCartParams, options?: RequestOptions): Promise<import(\"../types\").OrderCheckoutResult> {\n const { id, store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<import(\"../types\").OrderCheckoutResult>(\n `/v1/stores/${target_store_id}/carts/${id}/checkout`,\n payload,\n options,\n );\n },\n\n async getQuote(params: GetQuoteParams, options?: RequestOptions): Promise<OrderQuote> {\n const { location, store_id, items, ...rest } = params;\n const target_store_id = store_id || apiConfig.storeId;\n const shipping_address = location\n ? {\n country: location.country || \"\",\n state: location.state || \"\",\n city: location.city || \"\",\n postal_code: location.postal_code || \"\",\n name: \"\",\n street1: \"\",\n street2: null,\n }\n : rest.shipping_address;\n return apiConfig.httpClient.post<OrderQuote>(\n `/v1/stores/${target_store_id}/orders/quote`,\n {\n ...rest,\n items,\n shipping_address,\n market: rest.market || apiConfig.market,\n },\n options,\n );\n },\n\n async createRefund(\n params: CreateOrderRefundParams,\n options?: RequestOptions,\n ): Promise<CreateOrderRefundResponse> {\n const target_store_id = params.store_id || apiConfig.storeId;\n const response = await apiConfig.httpClient.post<CreateOrderRefundResponse>(\n `/v1/stores/${target_store_id}/orders/${params.order_id}/refunds`,\n {\n amount: params.amount,\n refund_id: params.refund_id,\n },\n options,\n );\n if (response.refund_id !== params.refund_id) {\n throw new Error(\n \"Refund response did not match the requested refund_id\",\n );\n }\n if (\n !Number.isSafeInteger(response.amount) ||\n response.amount !== params.amount\n ) {\n throw new Error(\"Refund response did not match the requested amount\");\n }\n if (\n ![\n \"requested\",\n \"processing\",\n \"succeeded\",\n \"rejected\",\n \"failed\",\n \"unknown\",\n ].includes(response.status)\n ) {\n throw new Error(\"Refund response contained an invalid status\");\n }\n return response;\n },\n\n async getPayment(\n params: GetOrderPaymentParams,\n options?: RequestOptions,\n ): Promise<OrderPayment> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<OrderPayment>(\n `/v1/stores/${target_store_id}/orders/${params.order_id}/payment`,\n options,\n );\n },\n\n async retryPaymentTransaction(\n params: RetryPaymentTransactionParams,\n options?: RequestOptions,\n ): Promise<PaymentTransaction> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<PaymentTransaction>(\n `/v1/stores/${target_store_id}/orders/${params.order_id}/payment/transactions/${params.transaction_id}/retry`,\n {},\n options,\n );\n },\n\n async getPaymentTransactions(\n params: FindPaymentTransactionsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<PaymentTransaction>> {\n const { order_id, store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<PaymentTransaction>>(\n `/v1/stores/${target_store_id}/orders/${order_id}/payment/transactions`,\n { ...options, params: queryParams },\n );\n },\n\n async getPaymentTransaction(\n params: GetPaymentTransactionParams,\n options?: RequestOptions,\n ): Promise<PaymentTransaction> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaymentTransaction>(\n `/v1/stores/${target_store_id}/orders/${params.order_id}/payment/transactions/${params.transaction_id}`,\n options,\n );\n },\n\n async getRefund(\n params: GetOrderRefundParams,\n options?: RequestOptions,\n ): Promise<OrderRefund> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<OrderRefund>(\n `/v1/stores/${target_store_id}/orders/${params.order_id}/refunds/${params.refund_id}`,\n options,\n );\n },\n\n async getRefunds(\n params: FindOrderRefundsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<OrderRefund>> {\n const { order_id, store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<OrderRefund>>(\n `/v1/stores/${target_store_id}/orders/${order_id}/refunds`,\n { ...options, params: queryParams },\n );\n },\n\n async downloadDigitalAccess(\n params: DownloadDigitalAccessParams,\n options?: RequestOptions,\n ): Promise<DigitalAccessDownloadResponse> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<DigitalAccessDownloadResponse>(\n `/v1/stores/${target_store_id}/orders/${params.order_id}/digital-access/${params.grant_id}/download`,\n {},\n options,\n );\n },\n\n async activateDigitalAccess(\n params: ActivateDigitalAccessGrantParams,\n options?: RequestOptions,\n ): Promise<DigitalAccessGrant> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<DigitalAccessGrant>(\n `/v1/stores/${target_store_id}/orders/${params.order_id}/digital-access/${params.grant_id}/activate`,\n {},\n options,\n );\n },\n\n async revokeDigitalAccess(\n params: RevokeDigitalAccessGrantParams,\n options?: RequestOptions,\n ): Promise<DigitalAccessGrant> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<DigitalAccessGrant>(\n `/v1/stores/${target_store_id}/orders/${params.order_id}/digital-access/${params.grant_id}/revoke`,\n {},\n options,\n );\n },\n\n async findDigitalAccess(\n params: FindDigitalAccessGrantsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<DigitalAccessGrant>> {\n const { order_id, store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<DigitalAccessGrant>>(\n `/v1/stores/${target_store_id}/orders/${order_id}/digital-access`,\n { ...options, params: queryParams },\n );\n },\n\n async getDigitalAccess(\n params: GetDigitalAccessGrantParams,\n options?: RequestOptions,\n ): Promise<DigitalAccessGrant> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<DigitalAccessGrant>(\n `/v1/stores/${target_store_id}/orders/${params.order_id}/digital-access/${params.grant_id}`,\n options,\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateLocationParams,\n DeleteLocationParams,\n RequestOptions,\n UpdateLocationParams,\n} from \"../types/api\";\nimport type { Location } from \"../types\";\n\nexport interface LocationState {\n code: string;\n name: string;\n}\n\nexport interface LocationCountry {\n code: string;\n name: string;\n states: LocationState[];\n}\n\nexport interface GetCountriesResponse {\n items: LocationCountry[];\n cursor: string | null;\n}\n\nexport const createLocationApi = (apiConfig: ApiConfig) => {\n return {\n async getCountries(options?: RequestOptions): Promise<GetCountriesResponse> {\n return apiConfig.httpClient.get<GetCountriesResponse>(`/v1/platform/countries`, options);\n },\n\n async getCountry(\n countryCode: string,\n options?: RequestOptions,\n ): Promise<LocationCountry> {\n return apiConfig.httpClient.get<LocationCountry>(\n `/v1/platform/countries/${countryCode}`,\n options,\n );\n },\n\n\n async list(options?: RequestOptions): Promise<Location[]> {\n return apiConfig.httpClient.get<Location[]>(\n `/v1/stores/${apiConfig.storeId}/locations`,\n options,\n );\n },\n\n async get(id: string, options?: RequestOptions): Promise<Location> {\n return apiConfig.httpClient.get<Location>(\n `/v1/stores/${apiConfig.storeId}/locations/${id}`,\n options,\n );\n },\n\n async create(\n params: CreateLocationParams,\n options?: RequestOptions,\n ): Promise<Location> {\n return apiConfig.httpClient.post<Location>(\n `/v1/stores/${apiConfig.storeId}/locations`,\n { ...params, store_id: apiConfig.storeId },\n options,\n );\n },\n\n async update(\n params: UpdateLocationParams,\n options?: RequestOptions,\n ): Promise<Location> {\n return apiConfig.httpClient.put<Location>(\n `/v1/stores/${apiConfig.storeId}/locations/${params.id}`,\n { ...params, store_id: apiConfig.storeId },\n options,\n );\n },\n\n async delete(\n params: DeleteLocationParams,\n options?: RequestOptions,\n ): Promise<{ deleted: boolean }> {\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${apiConfig.storeId}/locations/${params.id}`,\n options,\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateMarketParams,\n DeleteMarketParams,\n RequestOptions,\n UpdateMarketParams,\n} from \"../types/api\";\nimport type { Market } from \"../types\";\n\n\nexport const createMarketApi = (apiConfig: ApiConfig) => {\n return {\n async list(options?: RequestOptions): Promise<Market[]> {\n return apiConfig.httpClient.get<Market[]>(\n `/v1/stores/${apiConfig.storeId}/markets`,\n options,\n );\n },\n\n async get(id: string, options?: RequestOptions): Promise<Market> {\n return apiConfig.httpClient.get<Market>(\n `/v1/stores/${apiConfig.storeId}/markets/${id}`,\n options,\n );\n },\n\n async create(\n params: CreateMarketParams,\n options?: RequestOptions,\n ): Promise<Market> {\n return apiConfig.httpClient.post<Market>(\n `/v1/stores/${apiConfig.storeId}/markets`,\n { ...params, store_id: apiConfig.storeId },\n options,\n );\n },\n\n async update(\n params: UpdateMarketParams,\n options?: RequestOptions,\n ): Promise<Market> {\n return apiConfig.httpClient.put<Market>(\n `/v1/stores/${apiConfig.storeId}/markets/${params.id}`,\n { ...params, store_id: apiConfig.storeId },\n options,\n );\n },\n\n async delete(\n params: DeleteMarketParams,\n options?: RequestOptions,\n ): Promise<{ deleted: boolean }> {\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${apiConfig.storeId}/markets/${params.id}`,\n {\n ...options,\n params: params.replacement_default_market_id\n ? { replacement_default_market_id: params.replacement_default_market_id }\n : options?.params,\n },\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n RequestOptions,\n CreateContactParams,\n UpdateContactParams,\n GetContactParams,\n FindContactsParams,\n FindActionsParams,\n MergeContactsParams,\n ImportContactsParams,\n ImportContactsPreviewParams,\n ImportContactsPreviewResult,\n ImportContactsResult,\n Contact,\n ContactSessionRecord,\n FindContactSessionsParams,\n RevokeContactSessionParams,\n RevokeAllContactSessionsParams,\n CreateContactListParams,\n UpdateContactListParams,\n FindContactListsParams,\n GetContactListParams,\n CreateContactListPlanParams,\n UpdateContactListPlanParams,\n FindContactListPlansParams,\n GetContactListPlanParams,\n RetryContactListPlanCatalogParams,\n AddContactListContactParams,\n UpdateContactListContactParams,\n RemoveContactListContactParams,\n FindContactListContactsParams,\n RefundContactListMembershipParams,\n RefundContactListMembershipResult,\n FindContactListMembershipPaymentAttemptsParams,\n GetContactListMembershipPaymentAttemptParams,\n FindContactListMembershipRefundsParams,\n GetContactListMembershipRefundParams,\n RetryContactListMembershipRefundParams,\n FindContactListMembershipCancellationsParams,\n GetContactListMembershipCancellationParams,\n RetryContactListMembershipCancellationParams,\n ImportContactListPreviewParams,\n ImportContactsIntoContactListParams,\n ImportContactsIntoContactListResult,\n CreateMailboxParams,\n ConnectGoogleMailboxParams,\n GoogleMailboxConnectUrl,\n UpdateMailboxParams,\n FindMailboxesParams,\n GetMailboxParams,\n PrepareMailboxParams,\n TestMailboxParams,\n TestMailboxResult,\n CreateCampaignParams,\n UpdateCampaignParams,\n FindCampaignsParams,\n GetCampaignParams,\n LaunchCampaignParams,\n DuplicateCampaignParams,\n GetCampaignLaunchReadinessParams,\n ImportCampaignEnrollmentsParams,\n CampaignEnrollmentImportResult,\n GenerateOutreachPersonalizedDraftsParams,\n FindCampaignEnrollmentsParams,\n UpdateCampaignEnrollmentParams,\n UpdateCampaignEnrollmentDraftParams,\n UpdateCampaignEnrollmentStepExecutionParams,\n GetCampaignEnrollmentConversationParams,\n ReplyCampaignEnrollmentParams,\n StopCampaignEnrollmentParams,\n FindCampaignMessagesParams,\n UpdateCampaignMessageParams,\n CreateSuppressionParams,\n UpdateSuppressionParams,\n FindSuppressionsParams,\n GetSuppressionParams,\n} from \"../types/api\";\nimport type {\n Mailbox,\n Campaign,\n CampaignLaunchReadiness,\n CampaignEnrollment,\n CampaignMessage,\n CampaignEnrollmentConversationResponse,\n PaginatedResponse,\n ContactList,\n ContactListPlan,\n ContactListMembershipPaymentAttempt,\n ContactListMembershipRefund,\n ContactListMembershipCancellation,\n ContactListMember,\n Action,\n Suppression,\n} from \"../types\";\n\nexport interface TimelineParams {\n contact_id: string;\n store_id?: string;\n limit?: number;\n cursor?: string;\n}\n\nexport const createActionAdminApi = (apiConfig: ApiConfig) => ({\n async timeline(params: TimelineParams, options?: RequestOptions): Promise<{ items: Action[]; cursor: string | null }> {\n const store_id = params.store_id || apiConfig.storeId;\n const queryParams: Record<string, unknown> = { contact_id: params.contact_id };\n if (params.limit !== undefined) queryParams.limit = params.limit;\n if (params.cursor) queryParams.cursor = params.cursor;\n return apiConfig.httpClient.get<{ items: Action[]; cursor: string | null }>(\n `/v1/stores/${store_id}/contacts/${params.contact_id}/actions`,\n { ...options, params: queryParams },\n );\n },\n\n async find(params: FindActionsParams, options?: RequestOptions): Promise<{ items: Action[]; cursor: string | null }> {\n const store_id = params.store_id || apiConfig.storeId;\n const queryParams: Record<string, unknown> = {};\n if (params.contact_id) queryParams.contact_id = params.contact_id;\n if (params.limit !== undefined) queryParams.limit = params.limit;\n if (params.cursor) queryParams.cursor = params.cursor;\n return apiConfig.httpClient.get<{ items: Action[]; cursor: string | null }>(\n `/v1/stores/${store_id}/actions`,\n { ...options, params: queryParams }\n );\n },\n});\n\nexport const createContactApi = (apiConfig: ApiConfig) => {\n return {\n async create(params: CreateContactParams, options?: RequestOptions): Promise<Contact> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<Contact>(\n `/v1/stores/${store_id || apiConfig.storeId}/contacts`,\n payload,\n options\n );\n },\n\n async get(params: GetContactParams, options?: RequestOptions): Promise<Contact> {\n return apiConfig.httpClient.get<Contact>(\n `/v1/stores/${params.store_id || apiConfig.storeId}/contacts/${params.id}`,\n options\n );\n },\n\n async find(params?: FindContactsParams, options?: RequestOptions): Promise<{ items: Contact[]; cursor?: string }> {\n const store_id = params?.store_id || apiConfig.storeId;\n const queryParams: Record<string, unknown> = {};\n\n if (params?.ids && params.ids.length > 0) queryParams.ids = JSON.stringify(params.ids);\n if (params?.limit !== undefined) queryParams.limit = params.limit;\n if (params?.cursor) queryParams.cursor = params.cursor;\n if (params?.query) queryParams.query = params.query;\n if (params?.taxonomy_query) queryParams.taxonomy_query = params.taxonomy_query;\n if (params?.status) queryParams.status = params.status;\n if (params?.has_action !== undefined) queryParams.has_action = params.has_action;\n if (params?.has_cart !== undefined) queryParams.has_cart = params.has_cart;\n if (params?.sort_field) queryParams.sort_field = params.sort_field;\n if (params?.sort_direction) queryParams.sort_direction = params.sort_direction;\n\n return apiConfig.httpClient.get<{ items: Contact[]; cursor?: string }>(\n `/v1/stores/${store_id}/contacts`,\n {\n ...options,\n params: queryParams,\n }\n );\n },\n\n async update(params: UpdateContactParams, options?: RequestOptions): Promise<Contact> {\n const { id, store_id, ...body } = params;\n return apiConfig.httpClient.put<Contact>(\n `/v1/stores/${store_id || apiConfig.storeId}/contacts/${id}`,\n body,\n options\n );\n },\n\n async merge(params: MergeContactsParams, options?: RequestOptions): Promise<Contact> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Contact>(\n `/v1/stores/${store_id}/contacts/${params.target_id}/merge`,\n { source_id: params.source_id, store_id },\n options\n );\n },\n\n \"import\": async (params: ImportContactsParams, options?: RequestOptions): Promise<ImportContactsResult> => {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<ImportContactsResult>(\n `/v1/stores/${target_store_id}/contacts/import`,\n payload,\n options,\n );\n },\n\n previewImport: async (params: ImportContactsPreviewParams, options?: RequestOptions): Promise<ImportContactsPreviewResult> => {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<ImportContactsPreviewResult>(\n `/v1/stores/${target_store_id}/contacts/import/preview`,\n payload,\n options,\n );\n },\n\n async findSessions(\n params: FindContactSessionsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<ContactSessionRecord>> {\n const store_id = params.store_id || apiConfig.storeId;\n const queryParams: Record<string, unknown> = {};\n if (params.limit !== undefined) queryParams.limit = params.limit;\n if (params.cursor) queryParams.cursor = params.cursor;\n return apiConfig.httpClient.get<PaginatedResponse<ContactSessionRecord>>(\n `/v1/stores/${store_id}/contacts/${params.contact_id}/sessions`,\n { ...options, params: queryParams },\n );\n },\n\n async revokeSession(\n params: RevokeContactSessionParams,\n options?: RequestOptions,\n ): Promise<{ success: boolean }> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<{ success: boolean }>(\n `/v1/stores/${store_id}/contacts/${params.contact_id}/sessions/${params.session_id}`,\n options,\n );\n },\n\n async revokeAllSessions(\n params: RevokeAllContactSessionsParams,\n options?: RequestOptions,\n ): Promise<{ success: boolean }> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<{ success: boolean }>(\n `/v1/stores/${store_id}/contacts/${params.contact_id}/sessions`,\n options,\n );\n },\n\n contactList: {\n async create(params: CreateContactListParams, options?: RequestOptions): Promise<ContactList> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<ContactList>(\n `/v1/stores/${target_store_id}/contact-lists`,\n payload,\n options,\n );\n },\n\n async update(params: UpdateContactListParams, options?: RequestOptions): Promise<ContactList> {\n const { id, store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<ContactList>(\n `/v1/stores/${target_store_id}/contact-lists/${id}`,\n payload,\n options,\n );\n },\n\n async get(params: GetContactListParams, options?: RequestOptions): Promise<ContactList> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<ContactList>(\n `/v1/stores/${target_store_id}/contact-lists/${params.id}`,\n options,\n );\n },\n\n async find(params?: FindContactListsParams, options?: RequestOptions): Promise<PaginatedResponse<ContactList>> {\n const { store_id, ...queryParams } = params || {};\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<ContactList>>(\n `/v1/stores/${target_store_id}/contact-lists`,\n { ...options, params: queryParams },\n );\n },\n\n plans: {\n async create(\n params: CreateContactListPlanParams,\n options?: RequestOptions,\n ): Promise<ContactListPlan> {\n const { store_id, contact_list_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<ContactListPlan>(\n `/v1/stores/${target_store_id}/contact-lists/${contact_list_id}/plans`,\n payload,\n options,\n );\n },\n\n async update(\n params: UpdateContactListPlanParams,\n options?: RequestOptions,\n ): Promise<ContactListPlan> {\n const { id, store_id, contact_list_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<ContactListPlan>(\n `/v1/stores/${target_store_id}/contact-lists/${contact_list_id}/plans/${id}`,\n payload,\n options,\n );\n },\n\n async get(\n params: GetContactListPlanParams,\n options?: RequestOptions,\n ): Promise<ContactListPlan> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<ContactListPlan>(\n `/v1/stores/${target_store_id}/contact-lists/${params.contact_list_id}/plans/${params.id}`,\n options,\n );\n },\n\n async find(\n params: FindContactListPlansParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<ContactListPlan>> {\n const { store_id, contact_list_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<ContactListPlan>>(\n `/v1/stores/${target_store_id}/contact-lists/${contact_list_id}/plans`,\n { ...options, params: queryParams },\n );\n },\n\n async retryCatalog(\n params: RetryContactListPlanCatalogParams,\n options?: RequestOptions,\n ): Promise<ContactListPlan> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<ContactListPlan>(\n `/v1/stores/${target_store_id}/contact-lists/${params.contact_list_id}/plans/${params.plan_id}/catalog/retry`,\n {},\n options,\n );\n },\n },\n\n async importContacts(\n params: ImportContactsIntoContactListParams,\n options?: RequestOptions,\n ): Promise<ImportContactsIntoContactListResult> {\n const { store_id, contact_list_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<ImportContactsIntoContactListResult>(\n `/v1/stores/${target_store_id}/contact-lists/${contact_list_id}/contacts/import`,\n payload,\n options,\n );\n },\n\n async previewImportContacts(\n params: ImportContactListPreviewParams,\n options?: RequestOptions,\n ): Promise<ImportContactsPreviewResult> {\n const { store_id, contact_list_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<ImportContactsPreviewResult>(\n `/v1/stores/${target_store_id}/contact-lists/${contact_list_id}/contacts/import/preview`,\n payload,\n options,\n );\n },\n\n members: {\n async add(params: AddContactListContactParams, options?: RequestOptions): Promise<ContactListMember> {\n const { store_id, contact_list_id, contact_id, fields, lead_description } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<ContactListMember>(\n `/v1/stores/${target_store_id}/contact-lists/${contact_list_id}/contacts/${contact_id}`,\n { fields, lead_description },\n options,\n );\n },\n\n async update(params: UpdateContactListContactParams, options?: RequestOptions): Promise<ContactListMember> {\n const { store_id, contact_list_id, contact_id, status, fields, lead_description } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.patch<ContactListMember>(\n `/v1/stores/${target_store_id}/contact-lists/${contact_list_id}/contacts/${contact_id}`,\n { status, fields, lead_description },\n options,\n );\n },\n\n async remove(params: RemoveContactListContactParams, options?: RequestOptions): Promise<{ deleted: boolean }> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${target_store_id}/contact-lists/${params.contact_list_id}/contacts/${params.contact_id}`,\n options,\n );\n },\n\n async find(params: FindContactListContactsParams, options?: RequestOptions): Promise<PaginatedResponse<ContactListMember>> {\n const { store_id, contact_list_id, ...queryParams } = params;\n if (!contact_list_id && !queryParams.contact_id) {\n throw new Error(\"contact_list_id or contact_id is required\");\n }\n const target_store_id = store_id || apiConfig.storeId;\n const path = contact_list_id\n ? `/v1/stores/${target_store_id}/contact-lists/${contact_list_id}/contacts`\n : `/v1/stores/${target_store_id}/contact-lists/contacts`;\n return apiConfig.httpClient.get<PaginatedResponse<ContactListMember>>(\n path,\n { ...options, params: queryParams },\n );\n },\n },\n\n memberships: {\n async refund(\n params: RefundContactListMembershipParams,\n options?: RequestOptions,\n ): Promise<RefundContactListMembershipResult> {\n const { store_id, contact_list_id, membership_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n const response = await apiConfig.httpClient.post<RefundContactListMembershipResult>(\n `/v1/stores/${target_store_id}/contact-lists/${contact_list_id}/memberships/${membership_id}/refund`,\n payload,\n options,\n );\n if (response.refund_id !== params.refund_id) {\n throw new Error(\n \"Membership refund response did not match the requested refund_id\",\n );\n }\n return response;\n },\n\n paymentAttempts: {\n async find(\n params: FindContactListMembershipPaymentAttemptsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<ContactListMembershipPaymentAttempt>> {\n const { store_id, contact_list_id, membership_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<ContactListMembershipPaymentAttempt>>(\n `/v1/stores/${target_store_id}/contact-lists/${contact_list_id}/memberships/${membership_id}/payment-attempts`,\n { ...options, params: queryParams },\n );\n },\n\n async get(\n params: GetContactListMembershipPaymentAttemptParams,\n options?: RequestOptions,\n ): Promise<ContactListMembershipPaymentAttempt> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<ContactListMembershipPaymentAttempt>(\n `/v1/stores/${target_store_id}/contact-lists/${params.contact_list_id}/memberships/${params.membership_id}/payment-attempts/${params.id}`,\n options,\n );\n },\n },\n\n refunds: {\n async find(\n params: FindContactListMembershipRefundsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<ContactListMembershipRefund>> {\n const { store_id, contact_list_id, membership_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<ContactListMembershipRefund>>(\n `/v1/stores/${target_store_id}/contact-lists/${contact_list_id}/memberships/${membership_id}/refunds`,\n { ...options, params: queryParams },\n );\n },\n\n async get(\n params: GetContactListMembershipRefundParams,\n options?: RequestOptions,\n ): Promise<ContactListMembershipRefund> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<ContactListMembershipRefund>(\n `/v1/stores/${target_store_id}/contact-lists/${params.contact_list_id}/memberships/${params.membership_id}/refunds/${params.id}`,\n options,\n );\n },\n\n async retry(\n params: RetryContactListMembershipRefundParams,\n options?: RequestOptions,\n ): Promise<ContactListMembershipRefund> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<ContactListMembershipRefund>(\n `/v1/stores/${target_store_id}/contact-lists/${params.contact_list_id}/memberships/${params.membership_id}/refunds/${params.id}/retry`,\n {},\n options,\n );\n },\n },\n\n cancellations: {\n async find(\n params: FindContactListMembershipCancellationsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<ContactListMembershipCancellation>> {\n const { store_id, contact_list_id, membership_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<ContactListMembershipCancellation>>(\n `/v1/stores/${target_store_id}/contact-lists/${contact_list_id}/memberships/${membership_id}/cancellations`,\n { ...options, params: queryParams },\n );\n },\n\n async get(\n params: GetContactListMembershipCancellationParams,\n options?: RequestOptions,\n ): Promise<ContactListMembershipCancellation> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<ContactListMembershipCancellation>(\n `/v1/stores/${target_store_id}/contact-lists/${params.contact_list_id}/memberships/${params.membership_id}/cancellations/${params.id}`,\n options,\n );\n },\n\n async retry(\n params: RetryContactListMembershipCancellationParams,\n options?: RequestOptions,\n ): Promise<ContactListMembershipCancellation> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<ContactListMembershipCancellation>(\n `/v1/stores/${target_store_id}/contact-lists/${params.contact_list_id}/memberships/${params.membership_id}/cancellations/${params.id}/retry`,\n {},\n options,\n );\n },\n },\n },\n },\n\n mailbox: {\n async connectGoogle(params: ConnectGoogleMailboxParams, options?: RequestOptions): Promise<GoogleMailboxConnectUrl> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<GoogleMailboxConnectUrl>(\n `/v1/stores/${target_store_id}/mailboxes/google/connect-url`,\n payload,\n options,\n );\n },\n\n async create(params: CreateMailboxParams, options?: RequestOptions): Promise<Mailbox> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Mailbox>(\n `/v1/stores/${target_store_id}/mailboxes`,\n payload,\n options,\n );\n },\n\n async update(params: UpdateMailboxParams, options?: RequestOptions): Promise<Mailbox> {\n const { id, store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<Mailbox>(\n `/v1/stores/${target_store_id}/mailboxes/${id}`,\n payload,\n options,\n );\n },\n\n async get(params: GetMailboxParams, options?: RequestOptions): Promise<Mailbox> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<Mailbox>(\n `/v1/stores/${target_store_id}/mailboxes/${params.id}`,\n options,\n );\n },\n\n async test(params: TestMailboxParams, options?: RequestOptions): Promise<TestMailboxResult> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<TestMailboxResult>(\n `/v1/stores/${target_store_id}/mailboxes/${params.id}/test`,\n {},\n options,\n );\n },\n\n async prepare(params: PrepareMailboxParams, options?: RequestOptions): Promise<Mailbox> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Mailbox>(\n `/v1/stores/${target_store_id}/mailboxes/${params.id}/prepare`,\n {},\n options,\n );\n },\n\n async find(params?: FindMailboxesParams, options?: RequestOptions): Promise<PaginatedResponse<Mailbox>> {\n const { store_id, ...queryParams } = params || {};\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<Mailbox>>(\n `/v1/stores/${target_store_id}/mailboxes`,\n { ...options, params: queryParams },\n );\n },\n },\n\n campaign: {\n async create(params: CreateCampaignParams, options?: RequestOptions): Promise<Campaign> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Campaign>(\n `/v1/stores/${target_store_id}/campaigns`,\n payload,\n options,\n );\n },\n\n async update(params: UpdateCampaignParams, options?: RequestOptions): Promise<Campaign> {\n const { id, store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<Campaign>(\n `/v1/stores/${target_store_id}/campaigns/${id}`,\n payload,\n options,\n );\n },\n\n async get(params: GetCampaignParams, options?: RequestOptions): Promise<Campaign> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<Campaign>(\n `/v1/stores/${target_store_id}/campaigns/${params.id}`,\n options,\n );\n },\n\n async find(params?: FindCampaignsParams, options?: RequestOptions): Promise<PaginatedResponse<Campaign>> {\n const { store_id, ...queryParams } = params || {};\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<Campaign>>(\n `/v1/stores/${target_store_id}/campaigns`,\n { ...options, params: queryParams },\n );\n },\n\n async launch(params: LaunchCampaignParams, options?: RequestOptions): Promise<Campaign> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Campaign>(\n `/v1/stores/${target_store_id}/campaigns/${params.id}/launch`,\n {},\n options,\n );\n },\n\n async duplicate(params: DuplicateCampaignParams, options?: RequestOptions): Promise<Campaign> {\n const { id, store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Campaign>(\n `/v1/stores/${target_store_id}/campaigns/${id}/duplicate`,\n payload,\n options,\n );\n },\n\n async launchReadiness(\n params: GetCampaignLaunchReadinessParams,\n options?: RequestOptions,\n ): Promise<CampaignLaunchReadiness> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<CampaignLaunchReadiness>(\n `/v1/stores/${target_store_id}/campaigns/${params.id}/launch-readiness`,\n options,\n );\n },\n\n async importEnrollments(\n params: ImportCampaignEnrollmentsParams,\n options?: RequestOptions,\n ): Promise<CampaignEnrollmentImportResult> {\n const { id, store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<CampaignEnrollmentImportResult>(\n `/v1/stores/${target_store_id}/campaigns/${id}/enrollments/import`,\n payload,\n options,\n );\n },\n\n async generatePersonalizedDrafts(params: GenerateOutreachPersonalizedDraftsParams, options?: RequestOptions): Promise<Campaign> {\n const { id, store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Campaign>(\n `/v1/stores/${target_store_id}/campaigns/${id}/personalized-drafts`,\n payload,\n options,\n );\n },\n },\n\n campaignEnrollment: {\n async find(params?: FindCampaignEnrollmentsParams, options?: RequestOptions): Promise<PaginatedResponse<CampaignEnrollment>> {\n const { store_id, ...queryParams } = params || {};\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<CampaignEnrollment>>(\n `/v1/stores/${target_store_id}/campaign-enrollments`,\n { ...options, params: queryParams },\n );\n },\n\n async get(params: GetCampaignEnrollmentConversationParams, options?: RequestOptions): Promise<CampaignEnrollmentConversationResponse> {\n const { store_id, id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<CampaignEnrollmentConversationResponse>(\n `/v1/stores/${target_store_id}/campaign-enrollments/${id}`,\n { ...options, params: { ...queryParams, store_id: target_store_id } },\n );\n },\n\n async update(params: UpdateCampaignEnrollmentParams, options?: RequestOptions): Promise<CampaignEnrollment> {\n const { store_id, id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<CampaignEnrollment>(\n `/v1/stores/${target_store_id}/campaign-enrollments/${id}`,\n payload,\n options,\n );\n },\n\n async updateDraft(params: UpdateCampaignEnrollmentDraftParams, options?: RequestOptions): Promise<CampaignEnrollment> {\n const { store_id, id, draft_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<CampaignEnrollment>(\n `/v1/stores/${target_store_id}/campaign-enrollments/${id}/drafts/${draft_id}`,\n payload,\n options,\n );\n },\n\n async updateStepExecution(params: UpdateCampaignEnrollmentStepExecutionParams, options?: RequestOptions): Promise<CampaignEnrollmentConversationResponse> {\n const { store_id, id, execution_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<CampaignEnrollmentConversationResponse>(\n `/v1/stores/${target_store_id}/campaign-enrollments/${id}/step-executions/${execution_id}`,\n payload,\n options,\n );\n },\n\n async reply(params: ReplyCampaignEnrollmentParams, options?: RequestOptions): Promise<CampaignEnrollmentConversationResponse> {\n const { store_id, id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<CampaignEnrollmentConversationResponse>(\n `/v1/stores/${target_store_id}/campaign-enrollments/${id}/reply`,\n payload,\n options,\n );\n },\n\n async stop(params: StopCampaignEnrollmentParams, options?: RequestOptions): Promise<CampaignEnrollmentConversationResponse> {\n const { store_id, id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<CampaignEnrollmentConversationResponse>(\n `/v1/stores/${target_store_id}/campaign-enrollments/${id}/stop`,\n payload,\n options,\n );\n },\n },\n\n campaignMessage: {\n async find(params?: FindCampaignMessagesParams, options?: RequestOptions): Promise<PaginatedResponse<CampaignMessage>> {\n const { store_id, ...queryParams } = params || {};\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<CampaignMessage>>(\n `/v1/stores/${target_store_id}/campaign-messages`,\n { ...options, params: queryParams },\n );\n },\n\n async update(params: UpdateCampaignMessageParams, options?: RequestOptions): Promise<CampaignMessage> {\n const { id, store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<CampaignMessage>(\n `/v1/stores/${target_store_id}/campaign-messages/${id}`,\n payload,\n options,\n );\n },\n },\n\n suppression: {\n async create(params: CreateSuppressionParams, options?: RequestOptions): Promise<Suppression> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Suppression>(\n `/v1/stores/${target_store_id}/suppressions`,\n payload,\n options,\n );\n },\n\n async update(params: UpdateSuppressionParams, options?: RequestOptions): Promise<Suppression> {\n const { id, store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<Suppression>(\n `/v1/stores/${target_store_id}/suppressions/${id}`,\n payload,\n options,\n );\n },\n\n async get(params: GetSuppressionParams, options?: RequestOptions): Promise<Suppression> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<Suppression>(\n `/v1/stores/${target_store_id}/suppressions/${params.id}`,\n options,\n );\n },\n\n async find(params?: FindSuppressionsParams, options?: RequestOptions): Promise<PaginatedResponse<Suppression>> {\n const { store_id, ...queryParams } = params || {};\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<Suppression>>(\n `/v1/stores/${target_store_id}/suppressions`,\n { ...options, params: queryParams },\n );\n },\n },\n\n action: createActionAdminApi(apiConfig),\n };\n};\n","import type { ApiConfig, StorefrontApiConfig } from \"../index\";\nimport type { StorefrontDto } from \"./storefront\";\nimport type { RequestOptions } from \"../types/api\";\n\nexport type SupportAgentStatus = \"draft\" | \"active\" | \"archived\";\nexport type SupportChannelStatus = \"draft\" | \"active\" | \"disabled\" | \"archived\";\nexport type SupportChannelType = \"web\" | \"email\";\n\nexport interface SupportAgentNode {\n type: \"message\" | \"input\" | \"ai_handoff\" | \"action\";\n text?: string;\n buttons?: string[];\n prompt?: string;\n field?: string;\n input_type?: \"text\" | \"email\" | \"phone\";\n validation?: string;\n system_prompt_override?: string;\n tools?: string[];\n action?: SupportAction;\n}\n\nexport interface SupportAction {\n type: \"end_conversation\" | \"human_handoff\";\n message?: string;\n}\n\nexport interface SupportAgentEdge {\n source: string;\n target: string;\n trigger: EdgeTrigger;\n}\n\nexport type EdgeTrigger =\n | { type: \"button\"; label: string }\n | { type: \"input\"; field: string }\n | { type: \"default\" };\n\nexport interface SupportAgentAiConfig {\n system_prompt: string;\n tools: string[];\n max_context_messages: number;\n}\n\nexport interface SupportAgent {\n id: string;\n key: string;\n store_id: string;\n name: string;\n status: SupportAgentStatus;\n entry_node_id: string;\n nodes: Record<string, SupportAgentNode>;\n edges: SupportAgentEdge[];\n ai_config?: SupportAgentAiConfig;\n channel_ids: string[];\n notes?: string | null;\n created_at: number;\n updated_at: number;\n}\n\nexport type SupportChannelConfig =\n | {\n type: \"web\";\n widget_key: string;\n allowed_origins?: string[];\n }\n | {\n type: \"email\";\n mailbox_id: string;\n };\n\nexport interface SupportChannel {\n id: string;\n store_id: string;\n key: string;\n name: string;\n status: SupportChannelStatus;\n channel_type: SupportChannelType;\n config: SupportChannelConfig;\n created_at: number;\n updated_at: number;\n}\n\nexport type SupportConversationChannelContext =\n | {\n type: \"web\";\n visitor_id?: string | null;\n session_id?: string | null;\n }\n | {\n type: \"email\";\n thread_id: string;\n reply_to: string;\n message_id?: string | null;\n references: string[];\n };\n\nexport interface SupportConversation {\n id: string;\n store_id: string;\n agent_id?: string;\n channel_id?: string | null;\n channel_type: SupportChannelType;\n channel_context: SupportConversationChannelContext;\n current_node_id?: string;\n contact_id?: string;\n assigned_account_id?: string | null;\n status: \"active\" | \"ai_mode\" | \"escalated\" | \"resolved\";\n data: Record<string, unknown>;\n metadata: Record<string, unknown>;\n created_at: number;\n updated_at: number;\n}\n\nexport interface SupportMessage {\n id: string;\n store_id: string;\n conversation_id: string;\n role: \"system\" | \"user\" | \"assistant\" | \"staff\" | \"action\";\n content: string;\n buttons?: string[];\n metadata: Record<string, unknown>;\n created_at: number;\n}\n\nexport interface SupportConversationResponse {\n conversation: SupportConversation;\n messages: SupportMessage[];\n}\n\nexport interface SupportConversationStartResponse extends SupportConversationResponse {\n support_token: string;\n}\n\nexport type StorefrontSupportConversationResponse =\n StorefrontDto<SupportConversationResponse>;\nexport type StorefrontSupportConversationStartResponse =\n StorefrontDto<SupportConversationStartResponse>;\n\nexport interface StartSupportConversationParams {\n store_id: string;\n agent_key?: string;\n channel_id?: string;\n visitor_id?: string;\n session_id?: string;\n contact_id?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface SendSupportMessageParams {\n message_id: string;\n store_id: string;\n conversation_id: string;\n input: { type: \"button\"; label: string } | { type: \"text\"; content: string };\n}\n\nexport interface ReceiveSupportChannelMessageParams {\n store_id: string;\n channel_id: string;\n channel_context: SupportConversationChannelContext;\n external_message_id?: string;\n content: string;\n metadata?: Record<string, unknown>;\n received_at?: number;\n}\n\nexport interface ReplySupportConversationParams {\n message_id: string;\n store_id: string;\n conversation_id: string;\n content: string;\n resolve?: boolean;\n}\n\nexport interface ResolveSupportConversationParams {\n store_id: string;\n conversation_id: string;\n}\n\nexport interface AssignSupportConversationParams {\n store_id: string;\n conversation_id: string;\n account_id?: string | null;\n}\n\nexport interface GetSupportConversationParams {\n store_id: string;\n conversation_id: string;\n message_limit?: number;\n after_created_at?: number;\n after_id?: string;\n}\n\nexport type StorefrontSendSupportMessageParams = Omit<\n SendSupportMessageParams,\n \"store_id\"\n> & { support_token: string };\n\nexport type StorefrontGetSupportConversationParams = Omit<\n GetSupportConversationParams,\n \"store_id\"\n> & { support_token: string };\n\nexport interface FindSupportConversationsParams {\n store_id: string;\n status?: string;\n agent_id?: string;\n channel_id?: string;\n channel_type?: SupportChannelType;\n query?: string;\n limit?: number;\n cursor?: string;\n}\n\nfunction supportConversationQuery(params: GetSupportConversationParams): string {\n const qs = new URLSearchParams({ store_id: params.store_id });\n if (params.message_limit) qs.set(\"message_limit\", String(params.message_limit));\n if (typeof params.after_created_at === \"number\") qs.set(\"after_created_at\", String(params.after_created_at));\n if (params.after_id) qs.set(\"after_id\", params.after_id);\n return qs.toString();\n}\n\nfunction storefrontSupportOptions(\n supportToken: string,\n options?: RequestOptions,\n): RequestOptions {\n if (!/^[0-9a-f]{64}$/.test(supportToken)) {\n throw new Error(\"support_token must be a 64-character lowercase hexadecimal token\");\n }\n const headers = { ...options?.headers };\n for (const name of Object.keys(headers)) {\n if (name.toLowerCase() === \"x-arky-support-token\") delete headers[name];\n }\n return {\n ...options,\n headers: {\n ...headers,\n \"X-Arky-Support-Token\": supportToken,\n },\n };\n}\n\nexport function createStorefrontSupportApi(\n config: Pick<StorefrontApiConfig, \"httpClient\">,\n ensureVisitorSession: () => Promise<void>,\n) {\n const { httpClient } = config;\n\n return {\n async startConversation(\n params: Omit<StartSupportConversationParams, \"store_id\"> = {},\n opts?: RequestOptions\n ): Promise<StorefrontSupportConversationStartResponse> {\n await ensureVisitorSession();\n return httpClient.post<StorefrontSupportConversationStartResponse>(\n \"/v1/storefront/support/conversations\",\n params,\n opts\n );\n },\n\n async sendMessage(\n params: StorefrontSendSupportMessageParams,\n opts?: RequestOptions\n ): Promise<StorefrontSupportConversationResponse> {\n await ensureVisitorSession();\n const { support_token, ...request } = params;\n return httpClient.post<StorefrontSupportConversationResponse>(\n `/v1/storefront/support/conversations/${request.conversation_id}/messages`,\n request,\n storefrontSupportOptions(support_token, opts)\n );\n },\n\n async getConversation(\n params: StorefrontGetSupportConversationParams,\n opts?: RequestOptions\n ): Promise<StorefrontSupportConversationResponse> {\n await ensureVisitorSession();\n const { support_token, ...request } = params;\n const query = new URLSearchParams();\n if (request.message_limit) query.set(\"message_limit\", String(request.message_limit));\n if (typeof request.after_created_at === \"number\") {\n query.set(\"after_created_at\", String(request.after_created_at));\n }\n if (request.after_id) query.set(\"after_id\", request.after_id);\n const suffix = query.size ? `?${query}` : \"\";\n return httpClient.get<StorefrontSupportConversationResponse>(\n `/v1/storefront/support/conversations/${request.conversation_id}${suffix}`,\n storefrontSupportOptions(support_token, opts)\n );\n },\n };\n}\n\nexport interface CreateSupportAgentParams {\n store_id: string;\n key: string;\n name: string;\n status?: SupportAgentStatus;\n entry_node_id: string;\n nodes: Record<string, SupportAgentNode>;\n edges: SupportAgentEdge[];\n ai_config?: SupportAgentAiConfig;\n channel_ids?: string[];\n notes?: string | null;\n}\n\nexport interface UpdateSupportAgentParams {\n store_id: string;\n id: string;\n name?: string;\n status?: SupportAgentStatus;\n entry_node_id?: string;\n nodes?: Record<string, SupportAgentNode>;\n edges?: SupportAgentEdge[];\n ai_config?: SupportAgentAiConfig;\n channel_ids?: string[];\n notes?: string | null;\n}\n\nexport interface CreateSupportChannelParams {\n store_id: string;\n key: string;\n name: string;\n status?: SupportChannelStatus;\n channel_type: SupportChannelType;\n config: SupportChannelConfig;\n}\n\nexport interface UpdateSupportChannelParams {\n store_id: string;\n id: string;\n key?: string;\n name?: string;\n status?: SupportChannelStatus;\n channel_type?: SupportChannelType;\n config?: SupportChannelConfig;\n}\n\nexport interface FindSupportChannelsParams {\n store_id: string;\n status?: SupportChannelStatus;\n channel_type?: SupportChannelType;\n limit?: number;\n cursor?: string;\n}\n\nexport function createAdminSupportApi(config: ApiConfig) {\n const { httpClient } = config;\n\n return {\n channel: {\n async create(\n params: CreateSupportChannelParams,\n opts?: RequestOptions\n ): Promise<SupportChannel> {\n return httpClient.post<SupportChannel>(\n `/v1/stores/${params.store_id}/support/channels`,\n params,\n opts\n );\n },\n\n async get(\n params: { store_id: string; id: string },\n opts?: RequestOptions\n ): Promise<SupportChannel> {\n return httpClient.get<SupportChannel>(\n `/v1/stores/${params.store_id}/support/channels/${params.id}?store_id=${params.store_id}`,\n opts\n );\n },\n\n async find(\n params: FindSupportChannelsParams,\n opts?: RequestOptions\n ): Promise<{ items: SupportChannel[]; cursor?: string }> {\n const qs = new URLSearchParams({ store_id: params.store_id });\n if (params.status) qs.set(\"status\", params.status);\n if (params.channel_type) qs.set(\"channel_type\", params.channel_type);\n if (params.limit) qs.set(\"limit\", String(params.limit));\n if (params.cursor) qs.set(\"cursor\", params.cursor);\n return httpClient.get<{ items: SupportChannel[]; cursor?: string }>(\n `/v1/stores/${params.store_id}/support/channels?${qs}`,\n opts\n );\n },\n\n async update(\n params: UpdateSupportChannelParams,\n opts?: RequestOptions\n ): Promise<SupportChannel> {\n return httpClient.put<SupportChannel>(\n `/v1/stores/${params.store_id}/support/channels/${params.id}`,\n params,\n opts\n );\n },\n\n async delete(\n params: { store_id: string; id: string },\n opts?: RequestOptions\n ): Promise<void> {\n return httpClient.delete<void>(\n `/v1/stores/${params.store_id}/support/channels/${params.id}?store_id=${params.store_id}`,\n opts\n );\n },\n\n async receiveMessage(\n params: ReceiveSupportChannelMessageParams,\n opts?: RequestOptions\n ): Promise<SupportConversationResponse> {\n return httpClient.post<SupportConversationResponse>(\n `/v1/stores/${params.store_id}/support/channels/${params.channel_id}/messages`,\n params,\n opts\n );\n },\n },\n\n agent: {\n async create(\n params: CreateSupportAgentParams,\n opts?: RequestOptions\n ): Promise<SupportAgent> {\n return httpClient.post<SupportAgent>(\n `/v1/stores/${params.store_id}/support/agents`,\n params,\n opts\n );\n },\n\n async get(\n params: { store_id: string; id: string },\n opts?: RequestOptions\n ): Promise<SupportAgent> {\n return httpClient.get<SupportAgent>(\n `/v1/stores/${params.store_id}/support/agents/${params.id}?store_id=${params.store_id}`,\n opts\n );\n },\n\n async find(\n params: { store_id: string; status?: string; limit?: number; cursor?: string },\n opts?: RequestOptions\n ): Promise<{ items: SupportAgent[]; cursor?: string }> {\n const qs = new URLSearchParams({ store_id: params.store_id });\n if (params.status) qs.set(\"status\", params.status);\n if (params.limit) qs.set(\"limit\", String(params.limit));\n if (params.cursor) qs.set(\"cursor\", params.cursor);\n return httpClient.get<{ items: SupportAgent[]; cursor?: string }>(\n `/v1/stores/${params.store_id}/support/agents?${qs}`,\n opts\n );\n },\n\n async update(\n params: UpdateSupportAgentParams,\n opts?: RequestOptions\n ): Promise<SupportAgent> {\n return httpClient.put<SupportAgent>(\n `/v1/stores/${params.store_id}/support/agents/${params.id}`,\n params,\n opts\n );\n },\n\n async delete(\n params: { store_id: string; id: string },\n opts?: RequestOptions\n ): Promise<void> {\n return httpClient.delete<void>(\n `/v1/stores/${params.store_id}/support/agents/${params.id}?store_id=${params.store_id}`,\n opts\n );\n },\n },\n\n conversation: {\n async find(\n params: FindSupportConversationsParams,\n opts?: RequestOptions\n ): Promise<{ items: SupportConversation[]; cursor?: string }> {\n const qs = new URLSearchParams({ store_id: params.store_id });\n if (params.status) qs.set(\"status\", params.status);\n if (params.agent_id) qs.set(\"agent_id\", params.agent_id);\n if (params.channel_id) qs.set(\"channel_id\", params.channel_id);\n if (params.channel_type) qs.set(\"channel_type\", params.channel_type);\n if (params.query) qs.set(\"query\", params.query);\n if (params.limit) qs.set(\"limit\", String(params.limit));\n if (params.cursor) qs.set(\"cursor\", params.cursor);\n return httpClient.get<{ items: SupportConversation[]; cursor?: string }>(\n `/v1/stores/${params.store_id}/support/conversations?${qs}`,\n opts\n );\n },\n\n async get(\n params: GetSupportConversationParams,\n opts?: RequestOptions\n ): Promise<SupportConversationResponse> {\n const qs = supportConversationQuery(params);\n return httpClient.get<SupportConversationResponse>(\n `/v1/stores/${params.store_id}/support/conversations/${params.conversation_id}?${qs}`,\n opts\n );\n },\n\n async sendMessage(\n params: SendSupportMessageParams,\n opts?: RequestOptions\n ): Promise<SupportConversationResponse> {\n return httpClient.post<SupportConversationResponse>(\n `/v1/stores/${params.store_id}/support/conversations/${params.conversation_id}/messages`,\n params,\n opts\n );\n },\n\n async reply(\n params: ReplySupportConversationParams,\n opts?: RequestOptions\n ): Promise<SupportConversationResponse> {\n return httpClient.post<SupportConversationResponse>(\n `/v1/stores/${params.store_id}/support/conversations/${params.conversation_id}/reply`,\n params,\n opts\n );\n },\n\n async resolve(\n params: ResolveSupportConversationParams,\n opts?: RequestOptions\n ): Promise<SupportConversation> {\n return httpClient.post<SupportConversation>(\n `/v1/stores/${params.store_id}/support/conversations/${params.conversation_id}/resolve`,\n params,\n opts\n );\n },\n\n async assign(\n params: AssignSupportConversationParams,\n opts?: RequestOptions\n ): Promise<SupportConversation> {\n return httpClient.post<SupportConversation>(\n `/v1/stores/${params.store_id}/support/conversations/${params.conversation_id}/assign`,\n params,\n opts\n );\n },\n },\n };\n}\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateLeadResearchRunParams,\n CancelLeadResearchRunParams,\n FindLeadResearchRunsParams,\n GetLeadResearchRunParams,\n FindLeadResearchMessagesParams,\n RequestOptions,\n SendLeadResearchMessageParams,\n UpdateLeadResearchRunParams,\n ValidateLeadEmailParams,\n} from \"../types/api\";\nimport type {\n LeadEmailValidationResult,\n LeadResearchRun,\n LeadResearchMessage,\n PaginatedResponse,\n SendLeadResearchMessageResult,\n} from \"../types\";\n\nexport const createLeadResearchApi = (apiConfig: ApiConfig) => {\n const storeId = (store_id?: string) => store_id || apiConfig.storeId;\n\n return {\n async createRun(params: CreateLeadResearchRunParams, options?: RequestOptions): Promise<LeadResearchRun> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<LeadResearchRun>(\n `/v1/stores/${storeId(store_id)}/lead-research/runs`,\n payload,\n options,\n );\n },\n\n async findRuns(params?: FindLeadResearchRunsParams, options?: RequestOptions): Promise<PaginatedResponse<LeadResearchRun>> {\n const { store_id, ...queryParams } = params || {};\n return apiConfig.httpClient.get<PaginatedResponse<LeadResearchRun>>(\n `/v1/stores/${storeId(store_id)}/lead-research/runs`,\n { ...options, params: queryParams },\n );\n },\n\n async getRun(params: GetLeadResearchRunParams, options?: RequestOptions): Promise<LeadResearchRun> {\n return apiConfig.httpClient.get<LeadResearchRun>(\n `/v1/stores/${storeId(params.store_id)}/lead-research/runs/${params.id}`,\n options,\n );\n },\n\n async updateRun(params: UpdateLeadResearchRunParams, options?: RequestOptions): Promise<LeadResearchRun> {\n const { store_id, id, ...payload } = params;\n return apiConfig.httpClient.patch<LeadResearchRun>(\n `/v1/stores/${storeId(store_id)}/lead-research/runs/${id}`,\n payload,\n options,\n );\n },\n\n async cancelRun(params: CancelLeadResearchRunParams, options?: RequestOptions): Promise<LeadResearchRun> {\n return apiConfig.httpClient.post<LeadResearchRun>(\n `/v1/stores/${storeId(params.store_id)}/lead-research/runs/${params.id}/cancel`,\n {},\n options,\n );\n },\n\n async sendMessage(params: SendLeadResearchMessageParams, options?: RequestOptions): Promise<SendLeadResearchMessageResult> {\n const { store_id, run_id, ...payload } = params;\n return apiConfig.httpClient.post<SendLeadResearchMessageResult>(\n `/v1/stores/${storeId(store_id)}/lead-research/runs/${run_id}/messages`,\n payload,\n options,\n );\n },\n\n async findMessages(params: FindLeadResearchMessagesParams, options?: RequestOptions): Promise<LeadResearchMessage[]> {\n const { store_id, run_id, ...queryParams } = params;\n return apiConfig.httpClient.get<LeadResearchMessage[]>(\n `/v1/stores/${storeId(store_id)}/lead-research/runs/${run_id}/messages`,\n { ...options, params: queryParams },\n );\n },\n\n async validateEmail(params: ValidateLeadEmailParams, options?: RequestOptions): Promise<LeadEmailValidationResult> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<LeadEmailValidationResult>(\n `/v1/stores/${storeId(store_id)}/lead-research/validate-email`,\n payload,\n options,\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CancelSocialPublicationParams,\n ClassifySocialPublicationCommentsParams,\n ConnectSocialConnectionParams,\n CreateSocialCommentReplyParams,\n CreateSocialPublicationParams,\n DeleteSocialConnectionParams,\n FindSocialPublicationCommentsParams,\n FindSocialPublicationsParams,\n GetSocialCapabilitiesParams,\n GetSocialCommentReplyParams,\n GetSocialOAuthAttemptParams,\n GetSocialPublicationEffectParams,\n GetSocialPublicationCommentThreadParams,\n GetSocialPublicationCommentsParams,\n GetSocialPublicationMetricsParams,\n GetSocialPublicationParams,\n ListSocialCommentRepliesParams,\n ListSocialPublicationEffectsParams,\n RequestOptions,\n RetrySocialCommentReplyParams,\n ScheduleSocialPublicationParams,\n SelectSocialDestinationParams,\n ListSocialConnectionsParams,\n SyncSocialEngagementParams,\n SyncSocialPublicationCommentsParams,\n SyncSocialPublicationCommentThreadParams,\n SyncSocialPublicationMetricsParams,\n UpdateSocialPublicationParams,\n ValidateSocialPublicationParams,\n} from \"../types/api\";\nimport type {\n PaginatedResponse,\n SocialConnectResponse,\n SocialOAuthCallbackResponse,\n SocialProviderCapability,\n SocialConnection,\n SocialCommentReply,\n SocialPublication,\n SocialPublicationCommentClassificationResult,\n SocialPublicationComment,\n SocialPublicationEngagementSyncResult,\n SocialPublicationCommentReplyResponse,\n SocialPublicationEffect,\n SocialPublicationMetricSnapshot,\n SocialPublicationMutationResponse,\n SocialPublicationValidation,\n} from \"../types\";\n\nexport const createSocialApi = (apiConfig: ApiConfig) => {\n const storeId = (store_id?: string) => store_id || apiConfig.storeId;\n\n const api = {\n async findPublications(\n params?: FindSocialPublicationsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<SocialPublication>> {\n const { store_id, ...queryParams } = params || {};\n return apiConfig.httpClient.get<PaginatedResponse<SocialPublication>>(\n `/v1/stores/${storeId(store_id)}/social-publications`,\n {\n ...options,\n params: Object.keys(queryParams).length > 0 ? queryParams : undefined,\n },\n );\n },\n\n async getPublication(\n params: GetSocialPublicationParams,\n options?: RequestOptions,\n ): Promise<SocialPublication> {\n return apiConfig.httpClient.get<SocialPublication>(\n `/v1/stores/${storeId(params.store_id)}/social-publications/${params.id}`,\n options,\n );\n },\n\n async validatePublication(\n params: ValidateSocialPublicationParams,\n options?: RequestOptions,\n ): Promise<SocialPublicationValidation> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<SocialPublicationValidation>(\n `/v1/stores/${storeId(store_id)}/social-publications/validate`,\n payload,\n options,\n );\n },\n\n async createPublication(\n params: CreateSocialPublicationParams,\n options?: RequestOptions,\n ): Promise<SocialPublicationMutationResponse> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<SocialPublicationMutationResponse>(\n `/v1/stores/${storeId(store_id)}/social-publications`,\n payload,\n options,\n );\n },\n\n async updatePublication(\n params: UpdateSocialPublicationParams,\n options?: RequestOptions,\n ): Promise<SocialPublicationMutationResponse> {\n const { store_id, id, ...payload } = params;\n return apiConfig.httpClient.put<SocialPublicationMutationResponse>(\n `/v1/stores/${storeId(store_id)}/social-publications/${id}`,\n payload,\n options,\n );\n },\n\n async schedulePublication(\n params: ScheduleSocialPublicationParams,\n options?: RequestOptions,\n ): Promise<SocialPublicationMutationResponse> {\n const { store_id, id, ...payload } = params;\n return apiConfig.httpClient.post<SocialPublicationMutationResponse>(\n `/v1/stores/${storeId(store_id)}/social-publications/${id}/schedule`,\n payload,\n options,\n );\n },\n\n async cancelPublication(\n params: CancelSocialPublicationParams,\n options?: RequestOptions,\n ): Promise<SocialPublication> {\n return apiConfig.httpClient.post<SocialPublication>(\n `/v1/stores/${storeId(params.store_id)}/social-publications/${params.id}/cancel`,\n {},\n options,\n );\n },\n\n async getPublicationComments(\n params: GetSocialPublicationCommentsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<SocialPublicationComment>> {\n const { store_id, publication_id, ...queryParams } = params;\n return apiConfig.httpClient.get<\n PaginatedResponse<SocialPublicationComment>\n >(\n `/v1/stores/${storeId(store_id)}/social-publications/${publication_id}/comments`,\n {\n ...options,\n params: Object.keys(queryParams).length > 0 ? queryParams : undefined,\n },\n );\n },\n\n async syncPublicationComments(\n params: SyncSocialPublicationCommentsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<SocialPublicationComment>> {\n const { store_id, publication_id, ...payload } = params;\n return apiConfig.httpClient.post<\n PaginatedResponse<SocialPublicationComment>\n >(\n `/v1/stores/${storeId(store_id)}/social-publications/${publication_id}/comments/sync`,\n payload,\n options,\n );\n },\n\n async getPublicationCommentThread(\n params: GetSocialPublicationCommentThreadParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<SocialPublicationComment>> {\n const { store_id, publication_id, comment_id, ...queryParams } = params;\n return apiConfig.httpClient.get<\n PaginatedResponse<SocialPublicationComment>\n >(\n `/v1/stores/${storeId(store_id)}/social-publications/${publication_id}/comments/${comment_id}/thread`,\n {\n ...options,\n params: Object.keys(queryParams).length > 0 ? queryParams : undefined,\n },\n );\n },\n\n async syncPublicationCommentThread(\n params: SyncSocialPublicationCommentThreadParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<SocialPublicationComment>> {\n const { store_id, publication_id, comment_id, ...payload } = params;\n return apiConfig.httpClient.post<\n PaginatedResponse<SocialPublicationComment>\n >(\n `/v1/stores/${storeId(store_id)}/social-publications/${publication_id}/comments/${comment_id}/thread/sync`,\n payload,\n options,\n );\n },\n\n async findPublicationComments(\n params?: FindSocialPublicationCommentsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<SocialPublicationComment>> {\n const { store_id, ...queryParams } = params || {};\n return apiConfig.httpClient.get<\n PaginatedResponse<SocialPublicationComment>\n >(`/v1/stores/${storeId(store_id)}/social-publications/comments`, {\n ...options,\n params: Object.keys(queryParams).length > 0 ? queryParams : undefined,\n });\n },\n\n async classifyPublicationComments(\n params?: ClassifySocialPublicationCommentsParams,\n options?: RequestOptions,\n ): Promise<SocialPublicationCommentClassificationResult> {\n const { store_id, ...payload } = params || {};\n return apiConfig.httpClient.post<SocialPublicationCommentClassificationResult>(\n `/v1/stores/${storeId(store_id)}/social-publications/comments/classify`,\n payload,\n options,\n );\n },\n\n async createCommentReply(\n params: CreateSocialCommentReplyParams,\n options?: RequestOptions,\n ): Promise<SocialPublicationCommentReplyResponse> {\n const { store_id, publication_id, comment_id, ...payload } = params;\n return apiConfig.httpClient.post<SocialPublicationCommentReplyResponse>(\n `/v1/stores/${storeId(store_id)}/social-publications/${publication_id}/comments/${comment_id}/replies`,\n payload,\n options,\n );\n },\n\n async listCommentReplies(\n params: ListSocialCommentRepliesParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<SocialCommentReply>> {\n const { store_id, publication_id, comment_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<SocialCommentReply>>(\n `/v1/stores/${storeId(store_id)}/social-publications/${publication_id}/comments/${comment_id}/replies`,\n {\n ...options,\n params: Object.keys(queryParams).length > 0 ? queryParams : undefined,\n },\n );\n },\n\n async getCommentReply(\n params: GetSocialCommentReplyParams,\n options?: RequestOptions,\n ): Promise<SocialCommentReply> {\n return apiConfig.httpClient.get<SocialCommentReply>(\n `/v1/stores/${storeId(params.store_id)}/social-publications/${params.publication_id}/comments/${params.comment_id}/replies/${params.reply_id}`,\n options,\n );\n },\n\n async retryCommentReply(\n params: RetrySocialCommentReplyParams,\n options?: RequestOptions,\n ): Promise<SocialCommentReply> {\n return apiConfig.httpClient.post<SocialCommentReply>(\n `/v1/stores/${storeId(params.store_id)}/social-publications/${params.publication_id}/comments/${params.comment_id}/replies/${params.reply_id}/retry`,\n {},\n options,\n );\n },\n\n async listPublicationEffects(\n params: ListSocialPublicationEffectsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<SocialPublicationEffect>> {\n const { store_id, publication_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<SocialPublicationEffect>>(\n `/v1/stores/${storeId(store_id)}/social-publications/${publication_id}/effects`,\n {\n ...options,\n params: Object.keys(queryParams).length > 0 ? queryParams : undefined,\n },\n );\n },\n\n async getPublicationEffect(\n params: GetSocialPublicationEffectParams,\n options?: RequestOptions,\n ): Promise<SocialPublicationEffect> {\n return apiConfig.httpClient.get<SocialPublicationEffect>(\n `/v1/stores/${storeId(params.store_id)}/social-publications/${params.publication_id}/effects/${params.effect_id}`,\n options,\n );\n },\n\n async getPublicationMetrics(\n params: GetSocialPublicationMetricsParams,\n options?: RequestOptions,\n ): Promise<SocialPublicationMetricSnapshot> {\n return apiConfig.httpClient.get<SocialPublicationMetricSnapshot>(\n `/v1/stores/${storeId(params.store_id)}/social-publications/${params.publication_id}/metrics`,\n options,\n );\n },\n\n async syncPublicationMetrics(\n params: SyncSocialPublicationMetricsParams,\n options?: RequestOptions,\n ): Promise<SocialPublicationMetricSnapshot> {\n return apiConfig.httpClient.post<SocialPublicationMetricSnapshot>(\n `/v1/stores/${storeId(params.store_id)}/social-publications/${params.publication_id}/metrics/sync`,\n {},\n options,\n );\n },\n\n async syncEngagement(\n params?: SyncSocialEngagementParams,\n options?: RequestOptions,\n ): Promise<SocialPublicationEngagementSyncResult> {\n const { store_id, ...payload } = params || {};\n return apiConfig.httpClient.post<SocialPublicationEngagementSyncResult>(\n `/v1/stores/${storeId(store_id)}/social-publications/engagement/sync`,\n payload,\n options,\n );\n },\n\n async getCapabilities(\n params?: GetSocialCapabilitiesParams,\n options?: RequestOptions,\n ): Promise<SocialProviderCapability[]> {\n return apiConfig.httpClient.get<SocialProviderCapability[]>(\n `/v1/stores/${storeId(params?.store_id)}/social-connections/capabilities`,\n options,\n );\n },\n\n async listConnections(\n params?: ListSocialConnectionsParams,\n options?: RequestOptions,\n ): Promise<SocialConnection[]> {\n return apiConfig.httpClient.get<SocialConnection[]>(\n `/v1/stores/${storeId(params?.store_id)}/social-connections`,\n options,\n );\n },\n\n async connect(\n params: ConnectSocialConnectionParams,\n options?: RequestOptions,\n ): Promise<SocialConnectResponse> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<SocialConnectResponse>(\n `/v1/stores/${storeId(store_id)}/social-connections/oauth/connect`,\n payload,\n options,\n );\n },\n\n async getOAuthAttempt(\n params: GetSocialOAuthAttemptParams,\n options?: RequestOptions,\n ): Promise<SocialOAuthCallbackResponse> {\n return apiConfig.httpClient.get<SocialOAuthCallbackResponse>(\n `/v1/stores/${storeId(params.store_id)}/social-connections/oauth/attempts/${params.attempt_id}`,\n options,\n );\n },\n\n async selectDestination(\n params: SelectSocialDestinationParams,\n options?: RequestOptions,\n ): Promise<SocialOAuthCallbackResponse> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<SocialOAuthCallbackResponse>(\n `/v1/stores/${storeId(store_id)}/social-connections/oauth/select-destination`,\n payload,\n options,\n );\n },\n\n async deleteConnection(\n params: DeleteSocialConnectionParams,\n options?: RequestOptions,\n ): Promise<{ deleted: boolean }> {\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${storeId(params.store_id)}/social-connections/${params.id}`,\n options,\n );\n },\n\n validatePublications(\n params: ValidateSocialPublicationParams,\n options?: RequestOptions,\n ): Promise<SocialPublicationValidation> {\n return api.validatePublication(params, options);\n },\n\n createPublications(\n params: CreateSocialPublicationParams,\n options?: RequestOptions,\n ): Promise<SocialPublicationMutationResponse> {\n return api.createPublication(params, options);\n },\n };\n\n return api;\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateWorkflowParams,\n UpdateWorkflowParams,\n DeleteWorkflowParams,\n GetWorkflowParams,\n GetWorkflowsParams,\n TriggerWorkflowParams,\n GetWorkflowExecutionsParams,\n GetWorkflowExecutionParams,\n GetWorkflowEffectsParams,\n GetWorkflowEffectParams,\n GetWorkflowConnectionConnectUrlParams,\n GetWorkflowConnectionsParams,\n DeleteWorkflowConnectionParams,\n RequestOptions,\n} from \"../types/api\";\nimport type {\n Workflow,\n WorkflowConnection,\n WorkflowConnectionConnectUrl,\n WorkflowExecution,\n WorkflowEffect,\n PaginatedResponse,\n} from \"../types\";\n\nexport const createWorkflowApi = (apiConfig: ApiConfig) => {\n return {\n async createWorkflow(\n params: CreateWorkflowParams,\n options?: RequestOptions,\n ): Promise<Workflow> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Workflow>(\n `/v1/stores/${target_store_id}/workflows`,\n { ...payload, store_id: target_store_id },\n options,\n );\n },\n\n async updateWorkflow(\n params: UpdateWorkflowParams,\n options?: RequestOptions,\n ): Promise<Workflow> {\n const { store_id, id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<Workflow>(\n `/v1/stores/${target_store_id}/workflows/${id}`,\n payload,\n options,\n );\n },\n\n async deleteWorkflow(\n params: DeleteWorkflowParams,\n options?: RequestOptions,\n ): Promise<boolean> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<boolean>(\n `/v1/stores/${store_id}/workflows/${params.id}`,\n options,\n );\n },\n\n async getWorkflow(\n params: GetWorkflowParams,\n options?: RequestOptions,\n ): Promise<Workflow> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<Workflow>(\n `/v1/stores/${store_id}/workflows/${params.id}`,\n options,\n );\n },\n\n async getWorkflows(\n params?: GetWorkflowsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<Workflow>> {\n const store_id = params?.store_id || apiConfig.storeId;\n\n const { store_id: _, ...queryParams } = params || {};\n return apiConfig.httpClient.get<PaginatedResponse<Workflow>>(\n `/v1/stores/${store_id}/workflows`,\n {\n ...options,\n params: Object.keys(queryParams).length > 0 ? queryParams : undefined,\n },\n );\n },\n\n async triggerWorkflow(\n params: TriggerWorkflowParams,\n options?: RequestOptions,\n ): Promise<WorkflowExecution> {\n const { secret, ...payload } = params;\n return apiConfig.httpClient.post<WorkflowExecution>(\n `/v1/workflows/trigger/${secret}`,\n payload,\n options,\n );\n },\n\n async getWorkflowExecutions(\n params: GetWorkflowExecutionsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<WorkflowExecution>> {\n const store_id = params.store_id || apiConfig.storeId;\n const { store_id: _, workflow_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<WorkflowExecution>>(\n `/v1/stores/${store_id}/workflows/${workflow_id}/executions`,\n {\n ...options,\n params: Object.keys(queryParams).length > 0 ? queryParams : undefined,\n },\n );\n },\n\n async getWorkflowExecution(\n params: GetWorkflowExecutionParams,\n options?: RequestOptions,\n ): Promise<WorkflowExecution> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<WorkflowExecution>(\n `/v1/stores/${store_id}/workflows/${params.workflow_id}/executions/${params.execution_id}`,\n options,\n );\n },\n\n async getWorkflowEffects(\n params: GetWorkflowEffectsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<WorkflowEffect>> {\n const store_id = params.store_id || apiConfig.storeId;\n const { store_id: _, workflow_id, execution_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<WorkflowEffect>>(\n `/v1/stores/${store_id}/workflows/${workflow_id}/executions/${execution_id}/effects`,\n {\n ...options,\n params: Object.keys(queryParams).length > 0 ? queryParams : undefined,\n },\n );\n },\n\n async getWorkflowEffect(\n params: GetWorkflowEffectParams,\n options?: RequestOptions,\n ): Promise<WorkflowEffect> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<WorkflowEffect>(\n `/v1/stores/${store_id}/workflows/${params.workflow_id}/executions/${params.execution_id}/effects/${params.effect_id}`,\n options,\n );\n },\n\n async getWorkflowConnections(\n params?: GetWorkflowConnectionsParams,\n options?: RequestOptions,\n ): Promise<WorkflowConnection[]> {\n const store_id = params?.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<WorkflowConnection[]>(\n `/v1/stores/${store_id}/workflow-connections`,\n options,\n );\n },\n\n async getWorkflowConnectionConnectUrl(\n params: GetWorkflowConnectionConnectUrlParams,\n options?: RequestOptions,\n ): Promise<WorkflowConnectionConnectUrl> {\n const { store_id, type, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<WorkflowConnectionConnectUrl>(\n `/v1/stores/${target_store_id}/workflow-connections/connect-url`,\n { ...payload, type, store_id: target_store_id },\n options,\n );\n },\n\n async deleteWorkflowConnection(\n params: DeleteWorkflowConnectionParams,\n options?: RequestOptions,\n ): Promise<boolean> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<boolean>(\n `/v1/stores/${store_id}/workflow-connections/${params.id}`,\n options,\n );\n },\n };\n};\n","import type { ApiConfig } from '../index';\nimport type { RequestOptions } from '../types/api';\n\nexport interface WorkflowToolOperation {\n\tname: string;\n\tvalue: string;\n\tdescription?: string;\n\tmethod: 'get' | 'post' | 'put' | 'patch' | 'delete';\n\turl: string;\n\tbody?: Record<string, unknown> | string;\n\theaders?: Record<string, string>;\n}\n\nexport interface WorkflowToolResource {\n\tname: string;\n\tvalue: string;\n\tdescription: string;\n\toperations: WorkflowToolOperation[];\n}\n\nexport interface WorkflowTool {\n\tid: string;\n\tname: string;\n\tdescription: string;\n\ticon: string;\n\tcolor: string;\n\tcategory:\n\t\t| 'ai'\n\t\t| 'communication'\n\t\t| 'email'\n\t\t\t| 'productivity'\n\t\t\t| 'database'\n\t\t\t| 'payments'\n\t\t| 'crm'\n\t\t| 'ecommerce'\n\t\t| 'developer'\n\t\t| 'storage'\n\t\t\t| 'analytics'\n\t\t\t| 'core';\n\tconfiguration_required: boolean;\n\twebsite?: string;\n\turl_patterns: string[];\n\tresources: WorkflowToolResource[];\n\ttriggers?: Array<{\n\t\tname: string;\n\t\tvalue: string;\n\t\tdescription: string;\n\t\twebhook_type: 'incoming' | 'polling';\n\t}>;\n}\n\nexport interface EventScopeField {\n\tfield: string;\n\tlabel: string;\n\tplaceholder: string;\n}\n\nexport interface EventMetadata {\n\tevent: string;\n\tscopes: EventScopeField[];\n}\n\nexport const createPlatformApi = (apiConfig: ApiConfig) => {\n\treturn {\n\t\tasync getCurrencies(options?: RequestOptions): Promise<string[]> {\n\t\t\treturn apiConfig.httpClient.get<string[]>('/v1/platform/currencies', options);\n\t\t},\n\t\tasync getWorkflowTools(options?: RequestOptions): Promise<WorkflowTool[]> {\n\t\t\treturn apiConfig.httpClient.get<WorkflowTool[]>('/v1/platform/workflow-tools', options);\n\t\t},\n\t\tasync getWebhookEvents(options?: RequestOptions): Promise<EventMetadata[]> {\n\t\t\treturn apiConfig.httpClient.get<EventMetadata[]>('/v1/platform/events', options);\n\t\t},\n\t\tdata: {\n\t\t\tasync scan(params: { key: string; limit?: number }, options?: RequestOptions): Promise<{ value: Array<{ key: string; value: unknown }> }> {\n\t\t\t\treturn apiConfig.httpClient.get<{ value: Array<{ key: string; value: unknown }> }>('/v1/platform/data', {\n\t\t\t\t\t...options,\n\t\t\t\t\tparams: { key: params.key, limit: params.limit ?? 200 },\n\t\t\t\t});\n\t\t\t},\n\t\t\tasync put(params: { key: string; value: unknown; previous_key?: string }, options?: RequestOptions): Promise<{ ok: boolean }> {\n\t\t\t\treturn apiConfig.httpClient.post<{ ok: boolean }>('/v1/platform/data', params, options);\n\t\t\t},\n\t\t\tasync delete(params: { key: string }, options?: RequestOptions): Promise<{ ok: boolean }> {\n\t\t\t\treturn apiConfig.httpClient.delete<{ ok: boolean }>('/v1/platform/data', {\n\t\t\t\t\t...options,\n\t\t\t\t\tparams: { key: params.key },\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t\tasync runScript(\n\t\t\tparams: { name: string; value?: string; username?: string; password?: string },\n\t\t\toptions?: RequestOptions,\n\t\t): Promise<{ success: boolean; message: string }> {\n\t\t\treturn apiConfig.httpClient.post<{ success: boolean; message: string }>('/v1/platform/scripts', params, options);\n\t\t},\n\t};\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateShipmentParams,\n FindFulfillmentOrdersParams,\n FindShipmentsParams,\n FindShippingLabelAdjustmentsParams,\n FindShippingLabelRefundsParams,\n FindShippingLabelSettlementsParams,\n GetShipmentParams,\n GetFulfillmentOrderParams,\n GetShippingLabelRefundParams,\n GetShippingRatesParams,\n RequestOptions,\n RequestShippingLabelRefundParams,\n RetryShipmentParams,\n RetryShippingLabelRefundParams,\n RetryShippingLabelSettlementParams,\n} from \"../types/api\";\nimport type {\n CreateShipmentResponse,\n FulfillmentOrder,\n PaginatedResponse,\n Shipment,\n ShippingLabelAdjustment,\n ShippingLabelRefund,\n ShippingLabelSettlement,\n ShippingRate,\n} from \"../types\";\n\nexport const createShippingApi = (apiConfig: ApiConfig) => {\n const storeId = (value?: string) => value || apiConfig.storeId;\n\n return {\n async findFulfillmentOrders(\n params: FindFulfillmentOrdersParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<FulfillmentOrder>> {\n const { store_id, order_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<FulfillmentOrder>>(\n `/v1/stores/${storeId(store_id)}/orders/${order_id}/fulfillment-orders`,\n { ...options, params: queryParams },\n );\n },\n\n async getFulfillmentOrder(\n params: GetFulfillmentOrderParams,\n options?: RequestOptions,\n ): Promise<FulfillmentOrder> {\n return apiConfig.httpClient.get<FulfillmentOrder>(\n `/v1/stores/${storeId(params.store_id)}/orders/${params.order_id}/fulfillment-orders/${params.fulfillment_order_id}`,\n options,\n );\n },\n\n async getRates(\n params: GetShippingRatesParams,\n options?: RequestOptions,\n ): Promise<ShippingRate[]> {\n const { store_id, order_id, ...payload } = params;\n return apiConfig.httpClient.post<ShippingRate[]>(\n `/v1/stores/${storeId(store_id)}/orders/${order_id}/shipping/rates`,\n payload,\n options,\n );\n },\n\n async findShipments(\n params: FindShipmentsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<Shipment>> {\n const { store_id, order_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<Shipment>>(\n `/v1/stores/${storeId(store_id)}/orders/${order_id}/shipments`,\n { ...options, params: queryParams },\n );\n },\n\n async getShipment(\n params: GetShipmentParams,\n options?: RequestOptions,\n ): Promise<Shipment> {\n return apiConfig.httpClient.get<Shipment>(\n `/v1/stores/${storeId(params.store_id)}/orders/${params.order_id}/shipments/${params.shipment_id}`,\n options,\n );\n },\n\n async createShipment(\n params: CreateShipmentParams,\n options?: RequestOptions,\n ): Promise<CreateShipmentResponse> {\n const { store_id, order_id, ...payload } = params;\n const response = await apiConfig.httpClient.post<CreateShipmentResponse>(\n `/v1/stores/${storeId(store_id)}/orders/${order_id}/shipments`,\n payload,\n options,\n );\n if (\n response.shipment_id !== params.shipment_id ||\n response.shipment.id !== params.shipment_id\n ) {\n throw new Error(\"Shipping response did not match the requested shipment_id\");\n }\n return response;\n },\n\n async retryShipment(\n params: RetryShipmentParams,\n options?: RequestOptions,\n ): Promise<Shipment> {\n return apiConfig.httpClient.post<Shipment>(\n `/v1/stores/${storeId(params.store_id)}/orders/${params.order_id}/shipments/${params.shipment_id}/retry`,\n {},\n options,\n );\n },\n\n async requestRefund(\n params: RequestShippingLabelRefundParams,\n options?: RequestOptions,\n ): Promise<ShippingLabelRefund> {\n return apiConfig.httpClient.post<ShippingLabelRefund>(\n `/v1/stores/${storeId(params.store_id)}/orders/${params.order_id}/shipments/${params.shipment_id}/refunds`,\n {},\n options,\n );\n },\n\n async findRefunds(\n params: FindShippingLabelRefundsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<ShippingLabelRefund>> {\n const { store_id, order_id, shipment_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<ShippingLabelRefund>>(\n `/v1/stores/${storeId(store_id)}/orders/${order_id}/shipments/${shipment_id}/refunds`,\n { ...options, params: queryParams },\n );\n },\n\n async getRefund(\n params: GetShippingLabelRefundParams,\n options?: RequestOptions,\n ): Promise<ShippingLabelRefund> {\n return apiConfig.httpClient.get<ShippingLabelRefund>(\n `/v1/stores/${storeId(params.store_id)}/orders/${params.order_id}/shipments/${params.shipment_id}/refunds/${params.refund_id}`,\n options,\n );\n },\n\n async retryRefund(\n params: RetryShippingLabelRefundParams,\n options?: RequestOptions,\n ): Promise<ShippingLabelRefund> {\n return apiConfig.httpClient.post<ShippingLabelRefund>(\n `/v1/stores/${storeId(params.store_id)}/orders/${params.order_id}/shipments/${params.shipment_id}/refunds/${params.refund_id}/retry`,\n {},\n options,\n );\n },\n\n async findAdjustments(\n params: FindShippingLabelAdjustmentsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<ShippingLabelAdjustment>> {\n const { store_id, order_id, shipment_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<ShippingLabelAdjustment>>(\n `/v1/stores/${storeId(store_id)}/orders/${order_id}/shipments/${shipment_id}/adjustments`,\n { ...options, params: queryParams },\n );\n },\n\n async findSettlements(\n params: FindShippingLabelSettlementsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<ShippingLabelSettlement>> {\n const { store_id, order_id, shipment_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<ShippingLabelSettlement>>(\n `/v1/stores/${storeId(store_id)}/orders/${order_id}/shipments/${shipment_id}/settlements`,\n { ...options, params: queryParams },\n );\n },\n\n async retrySettlement(\n params: RetryShippingLabelSettlementParams,\n options?: RequestOptions,\n ): Promise<ShippingLabelSettlement> {\n return apiConfig.httpClient.post<ShippingLabelSettlement>(\n `/v1/stores/${storeId(params.store_id)}/orders/${params.order_id}/shipments/${params.shipment_id}/settlements/${params.settlement_id}/retry`,\n {},\n options,\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n ConnectStripePaymentProviderParams,\n DeletePaymentProviderParams,\n ListPaymentProvidersParams,\n RefreshPaymentProvidersParams,\n RequestOptions,\n} from \"../types/api\";\nimport type { PaymentProvider, StripePaymentProviderConnectResponse } from \"../types\";\n\nexport const createPaymentProviderApi = (apiConfig: ApiConfig) => {\n const storeId = (store_id?: string) => store_id || apiConfig.storeId;\n\n return {\n async list(\n params?: ListPaymentProvidersParams,\n options?: RequestOptions,\n ): Promise<PaymentProvider[]> {\n return apiConfig.httpClient.get<PaymentProvider[]>(\n `/v1/stores/${storeId(params?.store_id)}/payment-providers`,\n options,\n );\n },\n\n async refresh(\n params?: RefreshPaymentProvidersParams,\n options?: RequestOptions,\n ): Promise<PaymentProvider[]> {\n const targetStoreId = storeId(params?.store_id);\n return apiConfig.httpClient.post<PaymentProvider[]>(\n `/v1/stores/${targetStoreId}/payment-providers/refresh`,\n { store_id: targetStoreId },\n options,\n );\n },\n\n async connectStripe(\n params: ConnectStripePaymentProviderParams,\n options?: RequestOptions,\n ): Promise<StripePaymentProviderConnectResponse> {\n return apiConfig.httpClient.post<StripePaymentProviderConnectResponse>(\n `/v1/stores/${storeId(params.store_id)}/payment-providers/stripe/connect`,\n params,\n options,\n );\n },\n\n async delete(\n params: DeletePaymentProviderParams,\n options?: RequestOptions,\n ): Promise<{ deleted: boolean }> {\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${storeId(params.store_id)}/payment-providers/${params.id}`,\n options,\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateEmailTemplateParams,\n UpdateEmailTemplateParams,\n DeleteEmailTemplateParams,\n GetEmailTemplateParams,\n GetEmailTemplatesParams,\n PreviewEmailTemplateParams,\n PreviewEmailTemplateResponse,\n RequestOptions,\n} from \"../types/api\";\nimport type { EmailTemplate, PaginatedResponse } from \"../types\";\n\nexport const createEmailTemplateApi = (apiConfig: ApiConfig) => {\n return {\n async createEmailTemplate(params: CreateEmailTemplateParams, options?: RequestOptions): Promise<EmailTemplate> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<EmailTemplate>(\n `/v1/stores/${target_store_id}/email-templates`,\n payload,\n options\n );\n },\n\n async updateEmailTemplate(params: UpdateEmailTemplateParams, options?: RequestOptions): Promise<EmailTemplate> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<EmailTemplate>(\n `/v1/stores/${target_store_id}/email-templates/${params.id}`,\n payload,\n options\n );\n },\n\n async deleteEmailTemplate(params: DeleteEmailTemplateParams, options?: RequestOptions): Promise<{ deleted: boolean }> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${target_store_id}/email-templates/${params.id}`,\n options\n );\n },\n\n async getEmailTemplate(params: GetEmailTemplateParams, options?: RequestOptions): Promise<EmailTemplate> {\n const target_store_id = params.store_id || apiConfig.storeId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.key) {\n identifier = `${target_store_id}:${params.key}`;\n } else {\n throw new Error(\"GetEmailTemplateParams requires id or key\");\n }\n\n return apiConfig.httpClient.get<EmailTemplate>(\n `/v1/stores/${target_store_id}/email-templates/${identifier}`,\n options\n );\n },\n\n async getEmailTemplates(params: GetEmailTemplatesParams, options?: RequestOptions): Promise<PaginatedResponse<EmailTemplate>> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<EmailTemplate>>(\n `/v1/stores/${target_store_id}/email-templates`,\n {\n ...options,\n params: queryParams,\n }\n );\n },\n\n async previewEmailTemplate(params: PreviewEmailTemplateParams, options?: RequestOptions): Promise<PreviewEmailTemplateResponse> {\n const { store_id, id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<PreviewEmailTemplateResponse>(\n `/v1/stores/${target_store_id}/email-templates/${id}/preview`,\n payload,\n options\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateFormParams,\n UpdateFormParams,\n DeleteFormParams,\n GetFormParams,\n GetFormsParams,\n SubmitFormParams,\n GetFormSubmissionsParams,\n GetFormSubmissionParams,\n UpdateFormSubmissionParams,\n RequestOptions,\n} from \"../types/api\";\nimport type { Form, FormSubmission, PaginatedResponse } from \"../types\";\n\nexport const createFormApi = (apiConfig: ApiConfig) => {\n return {\n async createForm(params: CreateFormParams, options?: RequestOptions): Promise<Form> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Form>(\n `/v1/stores/${target_store_id}/forms`,\n payload,\n options\n );\n },\n\n async updateForm(params: UpdateFormParams, options?: RequestOptions): Promise<Form> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<Form>(\n `/v1/stores/${target_store_id}/forms/${params.id}`,\n payload,\n options\n );\n },\n\n async deleteForm(params: DeleteFormParams, options?: RequestOptions): Promise<{ deleted: boolean }> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${target_store_id}/forms/${params.id}`,\n options\n );\n },\n\n async getForm(params: GetFormParams, options?: RequestOptions): Promise<Form> {\n const target_store_id = params.store_id || apiConfig.storeId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.key) {\n identifier = `${target_store_id}:${params.key}`;\n } else {\n throw new Error(\"GetFormParams requires id or key\");\n }\n\n return apiConfig.httpClient.get<Form>(\n `/v1/stores/${target_store_id}/forms/${identifier}`,\n options\n );\n },\n\n async getForms(params: GetFormsParams, options?: RequestOptions): Promise<PaginatedResponse<Form>> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<Form>>(\n `/v1/stores/${target_store_id}/forms`,\n {\n ...options,\n params: queryParams,\n }\n );\n },\n\n async submit(params: SubmitFormParams, options?: RequestOptions): Promise<FormSubmission> {\n const { store_id, form_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<FormSubmission>(\n `/v1/stores/${target_store_id}/forms/${form_id}/submissions`,\n { ...payload, form_id, store_id: target_store_id },\n options\n );\n },\n\n async getSubmissions(params: GetFormSubmissionsParams, options?: RequestOptions): Promise<PaginatedResponse<FormSubmission>> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<FormSubmission>>(\n `/v1/stores/${target_store_id}/forms/submissions`,\n { ...options, params: queryParams }\n );\n },\n\n async getSubmission(params: GetFormSubmissionParams, options?: RequestOptions): Promise<FormSubmission> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<FormSubmission>(\n `/v1/stores/${target_store_id}/forms/${params.form_id}/submissions/${params.id}`,\n options\n );\n },\n\n async updateSubmission(params: UpdateFormSubmissionParams, options?: RequestOptions): Promise<FormSubmission> {\n const { store_id, form_id, id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<FormSubmission>(\n `/v1/stores/${target_store_id}/forms/${form_id}/submissions/${id}`,\n { ...payload, form_id, store_id: target_store_id, id },\n options\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateTaxonomyParams,\n UpdateTaxonomyParams,\n DeleteTaxonomyParams,\n GetTaxonomyParams,\n GetTaxonomiesParams,\n GetTaxonomyChildrenParams,\n RequestOptions,\n} from \"../types/api\";\nimport type { Taxonomy, PaginatedResponse } from \"../types\";\n\nexport const createTaxonomyApi = (apiConfig: ApiConfig) => {\n return {\n async createTaxonomy(params: CreateTaxonomyParams, options?: RequestOptions): Promise<Taxonomy> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Taxonomy>(\n `/v1/stores/${target_store_id}/taxonomies`,\n payload,\n options\n );\n },\n\n async updateTaxonomy(params: UpdateTaxonomyParams, options?: RequestOptions): Promise<Taxonomy> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<Taxonomy>(\n `/v1/stores/${target_store_id}/taxonomies/${params.id}`,\n payload,\n options\n );\n },\n\n async deleteTaxonomy(params: DeleteTaxonomyParams, options?: RequestOptions): Promise<{ deleted: boolean }> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${target_store_id}/taxonomies/${params.id}`,\n options\n );\n },\n\n async getTaxonomy(params: GetTaxonomyParams, options?: RequestOptions): Promise<Taxonomy> {\n const target_store_id = params.store_id || apiConfig.storeId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.key) {\n identifier = `${target_store_id}:${params.key}`;\n } else {\n throw new Error(\"GetTaxonomyParams requires id or key\");\n }\n\n return apiConfig.httpClient.get<Taxonomy>(\n `/v1/stores/${target_store_id}/taxonomies/${identifier}`,\n options\n );\n },\n\n async getTaxonomies(params: GetTaxonomiesParams, options?: RequestOptions): Promise<PaginatedResponse<Taxonomy>> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<Taxonomy>>(\n `/v1/stores/${target_store_id}/taxonomies`,\n {\n ...options,\n params: queryParams,\n }\n );\n },\n\n async getTaxonomyChildren(params: GetTaxonomyChildrenParams, options?: RequestOptions): Promise<PaginatedResponse<Taxonomy>> {\n const { id, store_id } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<Taxonomy>>(\n `/v1/stores/${target_store_id}/taxonomies/${id}/children`,\n options\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type { RequestOptions } from \"../types/api\";\n\nexport interface AnalyticsTimeRange {\n from: number;\n to: number;\n}\n\nexport type AnalyticsReportKey =\n | \"business_overview\"\n | \"contact_funnel\"\n | \"outreach_overview\"\n | \"outreach_funnel\"\n | \"action_by_country\"\n | \"top_action_pages\"\n | \"entity_status_overview\"\n | \"data_health\"\n | \"orders_created\"\n | \"contacts_created\"\n | \"form_submissions_created\"\n | \"carts_abandoned\"\n | \"campaign_messages_sent\"\n | \"campaign_messages_received\"\n | \"suppressions_created\"\n | \"media_count\"\n | \"products_by_status\"\n | \"services_by_status\"\n | \"providers_by_status\"\n | \"collections_by_status\"\n | \"entries_by_status\"\n | \"contacts_by_status\"\n | \"contact_lists_by_status\"\n | \"mailboxes_by_status\"\n | \"campaigns_by_status\"\n | \"campaign_enrollments_by_status\"\n | \"campaign_messages_by_status\"\n | \"support_conversations_by_status\"\n | \"lead_research_runs_by_status\"\n | \"suppressions_by_status\"\n\n | \"workflows_by_status\"\n | \"promo_codes_by_status\"\n | \"email_templates_by_status\"\n | \"forms_by_status\"\n | \"taxonomies_by_status\"\n | \"carts_by_status\"\n | \"orders_by_status\"\n | \"order_items_by_status\"\n | \"recent_action\";\n\nexport type ActionFeedCategory =\n | \"orders\"\n | \"carts\"\n | \"promo_codes\"\n | \"submissions\"\n | \"contacts\"\n | \"contact_lists\"\n | \"products\"\n | \"services\"\n | \"providers\"\n | \"cms\"\n | \"workflows\"\n | \"actions\";\n\nexport interface AnalyticsReportRequest {\n key: AnalyticsReportKey;\n limit?: number;\n category?: ActionFeedCategory;\n cursor_created_at?: number;\n cursor_id?: string;\n}\n\nexport interface AnalyticsRequest {\n time?: AnalyticsTimeRange;\n reports?: AnalyticsReportRequest[];\n blocks?: AnalyticsBlockRequest[];\n}\n\nexport interface AnalyticsBlockRequest {\n id: string;\n time: AnalyticsTimeRange;\n reports: AnalyticsReportRequest[];\n}\n\nexport interface AnalyticsMetricData {\n value: number;\n execution_ms?: number;\n}\n\nexport interface AnalyticsBreakdownItem {\n key: string;\n label: string;\n value: number;\n unique_contacts?: number;\n unique_visitors?: number;\n}\n\nexport interface AnalyticsBreakdownData {\n items: AnalyticsBreakdownItem[];\n}\n\nexport interface BusinessOverviewData {\n visitors: number;\n new_visitors: number;\n known_contacts: number;\n new_known_contacts: number;\n email_known_contacts: number;\n verified_contacts: number;\n new_verified_contacts: number;\n buyers: number;\n orders: number;\n revenue: number;\n revenue_by_currency: RevenueByCurrencyData[];\n average_order_value: number;\n carts: number;\n abandoned_carts: number;\n visitor_to_known_rate: number;\n visitor_to_buyer_rate: number;\n cart_abandonment_rate: number;\n}\n\nexport interface RevenueByCurrencyData {\n currency: string;\n orders: number;\n revenue: number;\n average_order_value: number;\n}\n\nexport interface ContactFunnelStage {\n key:\n | \"visitors\"\n | \"email_known_contacts\"\n | \"verified_contacts\"\n | \"buyers\"\n | string;\n label: string;\n value: number;\n}\n\nexport interface ContactFunnelData {\n stages: ContactFunnelStage[];\n visitor_to_known_rate?: number;\n visitor_to_buyer_rate?: number;\n}\n\nexport interface OutreachOverviewData {\n contact_lists: number;\n active_contact_lists: number;\n mailboxes: number;\n active_mailboxes: number;\n campaigns: number;\n active_campaigns: number;\n campaign_enrollments: number;\n new_campaign_enrollments: number;\n active_campaign_enrollments: number;\n completed_campaign_enrollments: number;\n replied_campaign_enrollments: number;\n suppressed_campaign_enrollments: number;\n failed_campaign_enrollments: number;\n campaign_messages_sent: number;\n outreach_bounces: number;\n campaign_messages_received: number;\n suppressions: number;\n active_suppressions: number;\n new_suppressions: number;\n reply_rate: number;\n bounce_rate: number;\n suppression_rate: number;\n}\n\nexport interface OutreachFunnelStage {\n key:\n | \"contact_lists\"\n | \"campaigns\"\n | \"campaign_enrollments\"\n | \"campaign_messages_sent\"\n | \"outreach_bounces\"\n | \"campaign_messages_received\"\n | string;\n label: string;\n value: number;\n}\n\nexport interface OutreachFunnelData {\n stages: OutreachFunnelStage[];\n reply_rate?: number;\n bounce_rate?: number;\n suppression_rate?: number;\n}\n\nexport interface EntityStatusOverviewData {\n entities: Record<string, AnalyticsBreakdownItem[]>;\n}\n\nexport interface DataHealthData {\n anonymous_contacts: number;\n known_contacts: number;\n duplicate_emails: number;\n unknown_country_events: number;\n unknown_device_events: number;\n}\n\nexport interface ActionFeedItem {\n id: string;\n entity: string;\n entity_id: string;\n action: string;\n event_type: string;\n status: string;\n contact_id: string;\n category: string;\n title: string;\n description: string;\n href?: string | null;\n data: unknown;\n payload: unknown;\n created_at: number;\n}\n\nexport interface ActionFeedSummary {\n total: number;\n orders: number;\n submissions: number;\n contacts: number;\n contact_lists: number;\n abandoned_carts: number;\n carts: number;\n promo_codes: number;\n products: number;\n services: number;\n providers: number;\n cms: number;\n workflows: number;\n actions: number;\n window_start: number;\n}\n\nexport interface ActionFeedCursor {\n created_at: number;\n id: string;\n}\n\nexport interface ActionFeedData {\n items: ActionFeedItem[];\n summary: ActionFeedSummary;\n next_cursor?: ActionFeedCursor | null;\n meta: {\n row_count: number;\n execution_ms: number;\n };\n}\n\nexport type AnalyticsMetricReportKey =\n | \"orders_created\"\n | \"contacts_created\"\n | \"form_submissions_created\"\n | \"carts_abandoned\"\n | \"campaign_messages_sent\"\n | \"campaign_messages_received\"\n | \"suppressions_created\"\n | \"media_count\";\n\nexport type AnalyticsBreakdownReportKey =\n | \"action_by_country\"\n | \"top_action_pages\"\n | \"products_by_status\"\n | \"services_by_status\"\n | \"providers_by_status\"\n | \"collections_by_status\"\n | \"entries_by_status\"\n | \"contacts_by_status\"\n | \"contact_lists_by_status\"\n | \"mailboxes_by_status\"\n | \"campaigns_by_status\"\n | \"campaign_enrollments_by_status\"\n | \"campaign_messages_by_status\"\n | \"support_conversations_by_status\"\n | \"lead_research_runs_by_status\"\n | \"suppressions_by_status\"\n\n | \"workflows_by_status\"\n | \"promo_codes_by_status\"\n | \"email_templates_by_status\"\n | \"forms_by_status\"\n | \"taxonomies_by_status\"\n | \"carts_by_status\"\n | \"orders_by_status\"\n | \"order_items_by_status\";\n\nexport type AnalyticsActionReportKey = \"recent_action\";\n\nexport type AnalyticsCompositeReportKey =\n | \"business_overview\"\n | \"contact_funnel\"\n | \"outreach_overview\"\n | \"outreach_funnel\"\n | \"entity_status_overview\"\n | \"data_health\";\n\nexport type AnalyticsReport =\n | { key: AnalyticsMetricReportKey; data: AnalyticsMetricData }\n | { key: AnalyticsBreakdownReportKey; data: AnalyticsBreakdownData }\n | { key: \"business_overview\"; data: BusinessOverviewData }\n | { key: \"contact_funnel\"; data: ContactFunnelData }\n | { key: \"outreach_overview\"; data: OutreachOverviewData }\n | { key: \"outreach_funnel\"; data: OutreachFunnelData }\n | { key: \"entity_status_overview\"; data: EntityStatusOverviewData }\n | { key: \"data_health\"; data: DataHealthData }\n | { key: AnalyticsActionReportKey; data: ActionFeedData };\n\nexport interface AnalyticsBlockResponse {\n id: string;\n time: AnalyticsTimeRange;\n reports: AnalyticsReport[];\n}\n\nexport interface AnalyticsResponse {\n time?: AnalyticsTimeRange;\n reports?: AnalyticsReport[];\n blocks?: AnalyticsBlockResponse[];\n}\n\nexport const createAnalyticsApi = (apiConfig: ApiConfig) => {\n return {\n async get(\n request: AnalyticsRequest,\n options?: RequestOptions & { store_id?: string },\n ): Promise<AnalyticsResponse> {\n const store_id = options?.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<AnalyticsResponse>(\n `/v1/stores/${store_id}/analytics`,\n request,\n options,\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type { PaginatedResponse } from \"../types\";\nimport type { RequestOptions } from \"../types/api\";\n\nexport type ExperimentStatus = \"draft\" | \"running\" | \"paused\" | \"completed\";\n\nexport interface ExperimentVariant {\n key: string;\n weight: number;\n}\n\nexport interface Experiment {\n id: string;\n store_id: string;\n key: string;\n status: ExperimentStatus;\n version: number;\n goal_action_key: string;\n variants: ExperimentVariant[];\n created_at: number;\n updated_at: number;\n}\n\nexport interface CreateExperimentParams {\n store_id?: string;\n key: string;\n goal_action_key: string;\n variants: ExperimentVariant[];\n status?: ExperimentStatus;\n}\n\nexport interface UpdateExperimentParams {\n store_id?: string;\n key: string;\n goal_action_key?: string;\n variants?: ExperimentVariant[];\n status?: ExperimentStatus;\n}\n\nexport interface GetExperimentParams {\n store_id?: string;\n key: string;\n}\n\nexport interface FindExperimentsParams {\n store_id?: string;\n limit?: number;\n cursor?: string;\n}\n\nexport interface ExperimentVariantResult {\n variant_key: string;\n weight: number;\n shown: number;\n wins: number;\n conversion_rate: number;\n}\n\nexport interface ExperimentResults {\n experiment: Experiment;\n variants: ExperimentVariantResult[];\n winning_variant_key?: string | null;\n}\n\nexport const createExperimentsApi = (apiConfig: ApiConfig) => {\n const base = (storeId = apiConfig.storeId) => `/v1/stores/${storeId}/experiments`;\n\n return {\n create(params: CreateExperimentParams, options?: RequestOptions): Promise<Experiment> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<Experiment>(base(store_id), payload, options);\n },\n\n update(params: UpdateExperimentParams, options?: RequestOptions): Promise<Experiment> {\n const { store_id, key, ...payload } = params;\n return apiConfig.httpClient.put<Experiment>(`${base(store_id)}/${key}`, payload, options);\n },\n\n get(params: GetExperimentParams, options?: RequestOptions): Promise<Experiment> {\n return apiConfig.httpClient.get<Experiment>(`${base(params.store_id)}/${params.key}`, options);\n },\n\n find(params: FindExperimentsParams = {}, options?: RequestOptions): Promise<PaginatedResponse<Experiment>> {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<Experiment>>(base(store_id), {\n ...options,\n params: queryParams,\n });\n },\n\n results(params: GetExperimentParams, options?: RequestOptions): Promise<ExperimentResults> {\n return apiConfig.httpClient.get<ExperimentResults>(\n `${base(params.store_id)}/${params.key}/results`,\n options,\n );\n },\n };\n};\n","import type { Block } from \"../types\";\n\ntype BlockContainer = { blocks?: readonly Block[] | null };\ntype UnknownRecord = Record<string, unknown>;\n\nfunction isRecord(value: unknown): value is UnknownRecord {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isBlock(value: unknown): value is Block {\n return isRecord(value) && typeof value.key === \"string\" && typeof value.type === \"string\";\n}\n\nfunction recordFromBlocks(values: readonly unknown[], locale: string): UnknownRecord {\n const result: UnknownRecord = {};\n for (const value of values) {\n if (!isBlock(value)) continue;\n result[value.key] = unwrapBlock(value, locale);\n }\n return result;\n}\n\nfunction localizedValue(value: unknown, locale: string): string {\n if (typeof value === \"string\") return value;\n if (!isRecord(value)) return \"\";\n const selected = value[locale] ?? value.en;\n return typeof selected === \"string\" ? selected : \"\";\n}\n\nfunction unwrapBlock(value: unknown, locale: string): unknown {\n if (!isBlock(value)) return value;\n if (value.type === \"localized_text\" || value.type === \"markdown\") {\n return localizedValue(value.value, locale);\n }\n if (value.type === \"array\") {\n if (!Array.isArray(value.value)) return [];\n return value.value.map((item) => {\n if (isBlock(item)) return unwrapBlock(item, locale);\n if (isRecord(item) && Array.isArray(item.value)) {\n return recordFromBlocks(item.value, locale);\n }\n if (!isRecord(item)) return item;\n return Object.fromEntries(\n Object.entries(item).map(([key, nested]) => [key, unwrapBlock(nested, locale)]),\n );\n });\n }\n if (value.type === \"object\") {\n if (Array.isArray(value.value)) return recordFromBlocks(value.value, locale);\n if (!isRecord(value.value)) return {};\n return Object.fromEntries(\n Object.entries(value.value).map(([key, nested]) => [key, unwrapBlock(nested, locale)]),\n );\n }\n return value.value;\n}\n\nfunction blockContentArray(values: readonly unknown[], locale: string): unknown {\n const blocks = values.filter(isBlock);\n if (blocks.length === 0) return [];\n if (blocks.every((block) => block.key === blocks[0].key)) {\n return blocks.map((block) => blockContentValue(block, locale));\n }\n return Object.fromEntries(\n blocks.map((block) => [block.key, blockContentValue(block, locale)]),\n );\n}\n\nfunction blockContentValue(block: Block, locale: string): unknown {\n if (block.type === \"localized_text\" || block.type === \"markdown\") {\n return localizedValue(block.value, locale);\n }\n if (block.type === \"media\") return block.value ?? null;\n if (block.type === \"array\") {\n return Array.isArray(block.value) ? blockContentArray(block.value, locale) : [];\n }\n if (block.type === \"object\") {\n if (Array.isArray(block.value)) return blockContentArray(block.value, locale);\n if (!isRecord(block.value)) return {};\n return Object.fromEntries(\n Object.entries(block.value).map(([key, value]) => [\n key,\n isBlock(value) ? blockContentValue(value, locale) : value,\n ]),\n );\n }\n return block.value;\n}\n\nexport function findBlock(entry: BlockContainer | null | undefined, key: string): Block | undefined {\n return entry?.blocks?.find((block) => block.key === key);\n}\n\nexport function getBlockLabel(block: Pick<Block, \"key\"> | null | undefined): string {\n return block?.key.replace(/_/g, \" \").replace(/\\b\\w/g, (letter) => letter.toUpperCase()) ?? \"\";\n}\n\nexport function formatBlockValue(block: Block | null | undefined): string {\n if (block?.value === null || block?.value === undefined) return \"\";\n if (block.type === \"boolean\") return block.value ? \"Yes\" : \"No\";\n if (block.type === \"date\") {\n return new Date(Number(block.value) * 1000).toLocaleDateString();\n }\n if (block.type === \"media\" && isRecord(block.value)) {\n const label = block.value.name ?? block.value.title ?? block.value.id;\n return typeof label === \"string\" ? label : \"\";\n }\n return String(block.value);\n}\n\nexport function prepareBlocksForSubmission(\n formData: Readonly<Record<string, unknown>>,\n blockTypes: Readonly<Record<string, string>> = {},\n): Array<{ key: string; value: unknown }> {\n return Object.entries(formData)\n .filter(([, value]) => value !== null && value !== undefined)\n .map(([key, value]) => ({\n key,\n value: blockTypes[key] === \"array\" && !Array.isArray(value) ? [value] : value,\n }));\n}\n\nexport function extractBlockValues(blocks: readonly Block[]): Record<string, unknown> {\n return Object.fromEntries(blocks.map((block) => [block.key, block.value ?? null]));\n}\n\nexport function getBlockValue<T = unknown>(\n entry: BlockContainer | null | undefined,\n key: string,\n): T | null {\n return (findBlock(entry, key)?.value as T | undefined) ?? null;\n}\n\nexport function getBlockTextValue(block: Block | null | undefined, locale = \"en\"): string {\n if (!block || block.value === null || block.value === undefined) return \"\";\n if (block.type === \"localized_text\" || block.type === \"markdown\") {\n return localizedValue(block.value, locale);\n }\n return typeof block.value === \"string\" ? block.value : String(block.value);\n}\n\nexport function getBlockContentValue(\n entry: BlockContainer | null | undefined,\n key: string,\n locale = \"en\",\n): unknown {\n const block = findBlock(entry, key);\n return block ? blockContentValue(block, locale) : null;\n}\n\nexport function getBlockValues<T = unknown>(\n entry: BlockContainer | null | undefined,\n key: string,\n): T[] {\n const block = findBlock(entry, key);\n return block?.type === \"array\" && Array.isArray(block.value) ? (block.value as T[]) : [];\n}\n\nexport function getBlockObjectValues(\n entry: BlockContainer | null | undefined,\n key: string,\n locale = \"en\",\n): UnknownRecord[] {\n return getBlockValues(entry, key).map((value) => {\n if (isRecord(value) && Array.isArray(value.value)) {\n return recordFromBlocks(value.value, locale);\n }\n return isRecord(value)\n ? Object.fromEntries(\n Object.entries(value).map(([field, nested]) => [field, unwrapBlock(nested, locale)]),\n )\n : {};\n });\n}\n\nexport function getBlockFromArray(\n entry: BlockContainer | null | undefined,\n key: string,\n locale = \"en\",\n): UnknownRecord {\n const block = findBlock(entry, key);\n if (!block) return {};\n const value = unwrapBlock(block, locale);\n if (isRecord(value)) return value;\n if (Array.isArray(block.value)) return recordFromBlocks(block.value, locale);\n return { [block.key]: value };\n}\n\nfunction nestedUrl(value: UnknownRecord): string | null {\n const resolutions = isRecord(value.resolutions) ? value.resolutions : null;\n const original = resolutions && isRecord(resolutions.original) ? resolutions.original : null;\n if (typeof original?.url === \"string\") return original.url;\n return typeof value.url === \"string\" ? value.url : null;\n}\n\nexport function getImageUrl(value: unknown, isBlock = true): string | null {\n if (typeof value === \"string\") return value;\n if (!isRecord(value)) return null;\n if (value.type === \"media\" && isRecord(value.value)) return nestedUrl(value.value);\n if (isBlock && typeof value.url === \"string\") return value.url;\n return nestedUrl(value);\n}\n","import type { OrderMoney, Price } from '../types';\n\ntype OrderTotal = Pick<OrderMoney, 'total' | 'currency'>;\n\nexport const SUPPORTED_STORE_CURRENCIES = Object.freeze([\n 'USD', 'EUR', 'GBP', 'JPY', 'CNY', 'CHF', 'AUD', 'CAD', 'HKD', 'SGD',\n 'NZD', 'KRW', 'SEK', 'NOK', 'DKK', 'INR', 'MXN', 'BRL', 'ZAR', 'RUB',\n 'TRY', 'PLN', 'THB', 'IDR', 'MYR', 'PHP', 'CZK', 'ILS', 'AED', 'SAR',\n 'HUF', 'RON', 'BGN', 'HRK', 'BAM', 'RSD', 'MKD', 'ALL',\n] as const);\n\nconst SUPPORTED_STORE_CURRENCY_SET: ReadonlySet<string> = Object.freeze(\n new Set<string>(SUPPORTED_STORE_CURRENCIES),\n);\n\nconst ZERO_MINOR_UNIT_STORE_CURRENCIES: ReadonlySet<string> = Object.freeze(\n new Set<string>(['JPY', 'KRW']),\n);\n\nfunction formatCurrency(amount: number, currencyCode: string, locale: string = 'en'): string {\n const normalized = currencyCode.trim().toUpperCase();\n if (!normalized) return '';\n const minorUnits = getCurrencyMinorUnits(normalized);\n return new Intl.NumberFormat(locale, {\n style: 'currency',\n currency: normalized,\n minimumFractionDigits: minorUnits,\n maximumFractionDigits: minorUnits,\n }).format(amount);\n}\n\nexport function getCurrencyMinorUnits(currency: string): number {\n const normalized = currency.trim().toUpperCase();\n if (!SUPPORTED_STORE_CURRENCY_SET.has(normalized)) {\n throw new RangeError(`Unsupported currency '${currency}'`);\n }\n return ZERO_MINOR_UNIT_STORE_CURRENCIES.has(normalized) ? 0 : 2;\n}\n\nexport function convertToMajor(minorAmount: number, currency: string): number {\n const units = getCurrencyMinorUnits(currency);\n return minorAmount / Math.pow(10, units);\n}\n\nexport function convertToMinor(majorAmount: number, currency: string): number {\n const units = getCurrencyMinorUnits(currency);\n return Math.round(majorAmount * Math.pow(10, units));\n}\n\nexport function getCurrencySymbol(currency: string): string {\n try {\n return new Intl.NumberFormat('en', {\n style: 'currency',\n currency: currency.toUpperCase(),\n currencyDisplay: 'narrowSymbol'\n }).formatToParts(0).find(p => p.type === 'currency')?.value || currency.toUpperCase();\n } catch {\n return currency.toUpperCase();\n }\n}\n\nexport function getCurrencyName(currency: string): string {\n try {\n return new Intl.DisplayNames(['en'], { type: 'currency' }).of(currency.toUpperCase()) || currency.toUpperCase();\n } catch {\n return currency.toUpperCase();\n }\n}\n\nexport function formatMinor(amountMinor: number, currency: string): string {\n if (!Number.isSafeInteger(amountMinor)) {\n throw new RangeError('Minor-unit amount must be a safe integer');\n }\n return formatCurrency(convertToMajor(amountMinor, currency), currency);\n}\n\nexport function formatPayment(payment: OrderTotal): string {\n return formatMinor(payment.total, payment.currency);\n}\n\nexport function formatPrice(prices: Price[], marketId?: string): string {\n if (!prices || prices.length === 0 || !marketId) return '';\n\n const price = prices.find(p => p.market === marketId);\n if (!price || !Number.isSafeInteger(price.amount) || price.amount < 0 || !price.currency) return '';\n\n return formatMinor(price.amount, price.currency);\n}\n\nexport function getPriceAmount(prices: Price[], marketId: string): number | null {\n if (!prices || prices.length === 0 || !marketId) return null;\n const price = prices.find(p => p.market === marketId);\n return price && Number.isSafeInteger(price.amount) && price.amount >= 0 ? price.amount : null;\n}\n","export interface ValidationResult {\n isValid: boolean;\n error?: string;\n}\n\nexport function validatePhoneNumber(phone: string): ValidationResult {\n if (!phone) {\n return { isValid: false, error: \"Phone number is required\" };\n }\n\n const cleaned = phone.replace(/\\D/g, \"\");\n\n if (cleaned.length < 8) {\n return { isValid: false, error: \"Phone number is too short\" };\n }\n\n if (cleaned.length > 15) {\n return { isValid: false, error: \"Phone number is too long\" };\n }\n\n return { isValid: true };\n}\n","\nexport const tzGroups = [\n {\n label: \"US\",\n zones: [\n { label: \"Eastern Time\", value: \"America/New_York\" },\n { label: \"Central Time\", value: \"America/Chicago\" },\n { label: \"Mountain Time\", value: \"America/Denver\" },\n { label: \"Pacific Time\", value: \"America/Los_Angeles\" },\n ],\n },\n {\n label: \"Europe\",\n zones: [\n { label: \"London\", value: \"Europe/London\" },\n { label: \"Paris\", value: \"Europe/Paris\" },\n { label: \"Berlin\", value: \"Europe/Berlin\" },\n { label: \"Rome\", value: \"Europe/Rome\" },\n ],\n },\n {\n label: \"Asia\",\n zones: [\n { label: \"Tokyo\", value: \"Asia/Tokyo\" },\n { label: \"Shanghai\", value: \"Asia/Shanghai\" },\n { label: \"Mumbai\", value: \"Asia/Kolkata\" },\n { label: \"Dubai\", value: \"Asia/Dubai\" },\n ],\n },\n];\n\nexport function findTimeZone(groups: typeof tzGroups): string {\n try {\n const detected = Intl.DateTimeFormat().resolvedOptions().timeZone;\n \n for (const group of groups) {\n for (const zone of group.zones) {\n if (zone.value === detected) {\n return detected;\n }\n }\n }\n \n return \"UTC\";\n } catch (e) {\n \n return \"UTC\";\n }\n}\n","\nconst locales = ['en', 'sr-latn'] as const;\nconst localeMap: Record<typeof locales[number], string> = {\n\t'en': 'en-US',\n\t'sr-latn': 'sr-RS'\n};\n\nexport function slugify(text: string): string {\n\treturn text\n\t\t.toString()\n\t\t.toLowerCase()\n\t\t.replace(/\\s+/g, \"-\")\n\t\t.replace(/[^\\w-]+/g, \"\")\n\t\t.replace(/--+/g, \"-\")\n\t\t.replace(/^-+/, \"\")\n\t\t.replace(/-+$/, \"\");\n}\n\nexport function humanize(text: string): string {\n\tconst slugifiedText = slugify(text);\n\treturn (\n\t\tslugifiedText\n\t\t\t.replace(/-/g, \" \")\n\t\t\t\n\t\t\t.replace(\n\t\t\t\t\n\t\t\t\t/\\w\\S*/g,\n\t\t\t\t(w) => w.charAt(0).toUpperCase() + w.slice(1).toLowerCase(),\n\t\t\t)\n\t);\n}\n\nexport function categorify(text: string): string {\n\tconst slugifiedText = slugify(text);\n\treturn slugifiedText\n\t\t.replace(/-/g, \" \")\n\t\t.toUpperCase();\n}\n\nexport function formatDate(date: string | number | Date, locale: (typeof locales)[number]): string {\n\tlet localeString = \"en-US\";\n\n\tif (locales.includes(locale)) {\n\t\tlocaleString = localeMap[locale];\n\t}\n\n\treturn new Date(date).toLocaleDateString(localeString, {\n\t\ttimeZone: \"UTC\",\n\t\tyear: \"numeric\",\n\t\tmonth: \"short\",\n\t\tday: \"numeric\",\n\t});\n}\n","import { getImageUrl } from \"./blocks\";\n\nexport async function fetchSvgContent(mediaObject: unknown): Promise<string | null> {\n\tif (!mediaObject) return null;\n\n\tconst svgUrl = getImageUrl(mediaObject, false);\n\tif (!svgUrl) return null;\n\n\ttry {\n\t\tconst response = await fetch(svgUrl);\n\n\t\tif (!response.ok) {\n\t\t\tconsole.error(`Failed to fetch SVG: ${response.status} ${response.statusText}`);\n\t\t\treturn null;\n\t\t}\n\n\t\tconst svgContent = await response.text();\n\t\treturn svgContent;\n\t} catch (error) {\n\t\tconsole.error(\"Error fetching SVG:\", error);\n\t\treturn null;\n\t}\n}\n\nexport async function getSvgContentForAstro(mediaObject: unknown): Promise<string> {\n\ttry {\n\t\tconst svgContent = await fetchSvgContent(mediaObject);\n\t\treturn svgContent || \"\";\n\t} catch (error) {\n\t\tconsole.error(\"Error getting SVG content for Astro:\", error);\n\t\treturn \"\";\n\t}\n}\n\nexport async function injectSvgIntoElement(\n\tmediaObject: unknown,\n\ttargetElement: HTMLElement,\n\tclassName?: string,\n): Promise<void> {\n\tif (!targetElement) return;\n\n\ttry {\n\t\tconst svgContent = await fetchSvgContent(mediaObject);\n\n\t\tif (svgContent) {\n\t\t\ttargetElement.innerHTML = svgContent;\n\n\t\t\tif (className) {\n\t\t\t\tconst svgElement = targetElement.querySelector(\"svg\");\n\t\t\t\tif (svgElement) {\n\t\t\t\t\tsvgElement.classList.add(...className.split(\" \"));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tconsole.error(\"Error injecting SVG:\", error);\n\t}\n}\n","\nconst KEY_PATTERN = /^[a-zA-Z0-9_-]+$/;\n\nexport function isValidKey(key: string): boolean {\n if (!key || key.length === 0) return false;\n return KEY_PATTERN.test(key);\n}\n\nexport function validateKey(key: string): { valid: boolean; error?: string } {\n if (!key || key.length === 0) {\n return { valid: false, error: \"Key is required\" };\n }\n\n if (key.length > 255) {\n return { valid: false, error: \"Key must be 255 characters or less\" };\n }\n\n if (!KEY_PATTERN.test(key)) {\n return {\n valid: false,\n error:\n \"Key can only contain letters, numbers, underscores (_) and hyphens (-)\",\n };\n }\n\n return { valid: true };\n}\n\nexport function toKey(input: string): string {\n if (!input) return \"\";\n\n return input\n .toLowerCase()\n .trim()\n .replace(/\\s+/g, \"_\")\n .replace(/[^a-z0-9_-]/g, \"\")\n .replace(/^[-_]+|[-_]+$/g, \"\")\n .replace(/[-_]{2,}/g, \"_\");\n}\n\nexport function nameToKey(name: string): string {\n return toKey(name);\n}\n","import type { InventoryLevel, Location } from '../types';\n\nexport interface VariantWithInventory {\n inventory: InventoryLevel[];\n}\n\n\nexport function getAvailableStock(variant: VariantWithInventory): number {\n if (!variant?.inventory) return 0;\n return variant.inventory.reduce((sum, inv) => sum + inv.available, 0);\n}\n\n\nexport function getReservedStock(variant: VariantWithInventory): number {\n if (!variant?.inventory) return 0;\n return variant.inventory.reduce((sum, inv) => sum + inv.reserved, 0);\n}\n\n\nexport function hasStock(variant: VariantWithInventory, quantity: number = 1): boolean {\n return getAvailableStock(variant) >= quantity;\n}\n\n\nexport function getInventoryAt(\n variant: VariantWithInventory,\n locationId: string\n): InventoryLevel | undefined {\n return variant?.inventory?.find(inv => inv.location_id === locationId);\n}\n\n\nexport function getFirstAvailableFCId(\n variant: VariantWithInventory,\n quantity: number = 1\n): string | undefined {\n const inv = variant?.inventory?.find(i => i.available >= quantity);\n return inv?.location_id;\n}\n","import type {\n Stripe,\n StripeElements,\n StripeElementsOptions,\n StripePaymentElement,\n} from \"@stripe/stripe-js\";\n\nexport interface StripeConfirmationTokenControllerConfig {\n publishableKey: string;\n connectedAccountId?: string;\n amount: number;\n currency: string;\n appearance?: StripeElementsOptions[\"appearance\"];\n}\n\nexport interface StripeConfirmationTokenOptions {\n return_url?: string;\n billing_details?: {\n name?: string | null;\n email?: string | null;\n phone?: string | null;\n };\n}\n\nexport interface StripeConfirmationTokenResult {\n confirmation_token_id: string;\n return_url?: string;\n}\n\nexport interface StripeConfirmationTokenController {\n mount(target: string | HTMLElement): void;\n update(input: { amount?: number; currency?: string }): void;\n createConfirmationToken(\n options?: StripeConfirmationTokenOptions,\n ): Promise<StripeConfirmationTokenResult>;\n handleNextAction(clientSecret: string): Promise<void>;\n destroy(): void;\n}\n\ntype StripeLoader = (\n publishableKey: string,\n options?: { stripeAccount: string },\n) => PromiseLike<Stripe | null>;\n\nasync function defaultStripeLoader(\n publishableKey: string,\n options?: { stripeAccount: string },\n): Promise<Stripe | null> {\n const { loadStripe } = await import(\"@stripe/stripe-js\");\n return loadStripe(publishableKey, options);\n}\n\nfunction normalizeCurrency(currency: string): string {\n return currency.trim().toLowerCase();\n}\n\nexport async function createStripeConfirmationTokenController(\n config: StripeConfirmationTokenControllerConfig,\n stripeLoader: StripeLoader = defaultStripeLoader,\n): Promise<StripeConfirmationTokenController> {\n const stripe = await stripeLoader(\n config.publishableKey,\n config.connectedAccountId\n ? { stripeAccount: config.connectedAccountId }\n : undefined,\n );\n if (!stripe) throw new Error(\"Stripe failed to initialize\");\n\n let elements = createElements(stripe, config);\n let paymentElement: StripePaymentElement | null = elements.create(\"payment\", {\n layout: \"tabs\",\n });\n\n return {\n mount(target) {\n if (!paymentElement) {\n paymentElement = elements.create(\"payment\", { layout: \"tabs\" });\n }\n paymentElement.mount(target);\n },\n\n update(input) {\n elements.update({\n ...(input.amount !== undefined ? { amount: input.amount } : {}),\n ...(input.currency ? { currency: normalizeCurrency(input.currency) } : {}),\n });\n },\n\n async createConfirmationToken(options = {}) {\n const submitResult = await elements.submit();\n if (submitResult.error) {\n throw new Error(submitResult.error.message || \"Payment details are incomplete\");\n }\n\n const tokenInput: Parameters<Stripe[\"createConfirmationToken\"]>[0] = {\n elements,\n params: {\n ...(options.return_url ? { return_url: options.return_url } : {}),\n ...(options.billing_details\n ? { payment_method_data: { billing_details: options.billing_details } }\n : {}),\n },\n };\n const result = await stripe.createConfirmationToken(tokenInput);\n if (result.error) {\n throw new Error(result.error.message || \"Payment confirmation token failed\");\n }\n if (!result.confirmationToken?.id) {\n throw new Error(\"Stripe did not return a confirmation token\");\n }\n return {\n confirmation_token_id: result.confirmationToken.id,\n return_url: options.return_url,\n };\n },\n\n async handleNextAction(clientSecret) {\n const result = await stripe.handleNextAction({ clientSecret });\n if (result.error) {\n throw new Error(result.error.message || \"Payment authentication failed\");\n }\n },\n\n destroy() {\n paymentElement?.destroy();\n paymentElement = null;\n },\n };\n}\n\nfunction createElements(\n stripe: Stripe,\n config: StripeConfirmationTokenControllerConfig,\n): StripeElements {\n return stripe.elements({\n mode: \"payment\",\n amount: config.amount,\n currency: normalizeCurrency(config.currency),\n paymentMethodCreation: \"manual\",\n ...(config.appearance ? { appearance: config.appearance } : {}),\n });\n}\n","import type {\n Address,\n Block,\n EshopCartItem,\n Form,\n FormEntry,\n FormField,\n FormSchema,\n FormValue,\n FormValues,\n GeoLocation,\n Price,\n Product,\n ProductVariant,\n Provider,\n Service,\n ZoneLocation,\n} from \"../types\";\nimport type {\n AvailabilityResponse,\n ProductCheckoutItemInput,\n ServiceCheckoutItemInput,\n} from \"../types/api\";\nimport type { StorefrontDto } from \"../api/storefront\";\nimport type { ArkyServiceCartItem, ArkyServiceState, ArkyStoreClient } from \"./types\";\n\ntype StorefrontProduct = StorefrontDto<Product>;\ntype StorefrontProductVariant = StorefrontDto<ProductVariant>;\ntype StorefrontProvider = StorefrontDto<Provider>;\ntype StorefrontService = StorefrontDto<Service>;\n\nexport function readErrorMessage(error: unknown, fallback: string): string {\n if (error instanceof Error && error.message) return error.message;\n if (typeof error === \"string\" && error.length > 0) return error;\n return fallback;\n}\n\nexport function createId(prefix: string): string {\n const cryptoValue = globalThis.crypto;\n if (cryptoValue && \"randomUUID\" in cryptoValue) return cryptoValue.randomUUID();\n return `${prefix}_${Date.now()}_${Math.random().toString(36).slice(2)}`;\n}\n\nexport function firstLocalized(value: unknown, locale: string): string {\n if (typeof value === \"string\") return value;\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return \"\";\n const record = value as Record<string, unknown>;\n const localeValue = record[locale];\n if (typeof localeValue === \"string\") return localeValue;\n const englishValue = record.en;\n if (typeof englishValue === \"string\") return englishValue;\n for (const entry of Object.values(record)) {\n if (typeof entry === \"string\") return entry;\n }\n return \"\";\n}\n\nexport function findBlock(blocks: Block[] | undefined, keys: string[]): Block | null {\n return (blocks || []).find((block) => keys.includes(block.key)) || null;\n}\n\nexport function blockText(blocks: Block[] | undefined, keys: string[], locale: string): string {\n const block = findBlock(blocks, keys);\n if (!block) return \"\";\n return firstLocalized(block.value, locale);\n}\n\nexport function productName(product: StorefrontProduct, locale: string): string {\n return blockText(product.blocks, [\"name\", \"title\"], locale) || product.key || product.id;\n}\n\nexport function serviceName(service: StorefrontService, locale: string): string {\n return blockText(service.blocks, [\"name\", \"title\"], locale) || service.key || service.id;\n}\n\nexport function providerName(provider: StorefrontProvider, locale: string): string {\n return blockText(provider.blocks, [\"name\", \"title\"], locale) || provider.key || provider.id;\n}\n\nexport function entitySlug(entity: { id: string; slug?: Record<string, string> }, locale: string): string {\n return entity.slug?.[locale] || entity.slug?.en || Object.values(entity.slug || {})[0] || entity.id;\n}\n\nexport function priceForMarket(\n prices: Price[],\n market: string,\n marketCurrency: string | null | undefined,\n): Price {\n const marketKey = market.trim();\n if (!marketKey) throw new Error(\"A market is required to select a product price\");\n const currency = marketCurrency?.trim().toUpperCase();\n if (!currency) throw new Error(`Market ${marketKey} does not have an authoritative currency`);\n\n const marketPrices = prices.filter((candidate) => candidate.market === marketKey);\n if (marketPrices.length === 0) {\n throw new Error(`Product is not priced for market ${marketKey}`);\n }\n if (\n marketPrices.some(\n (candidate) =>\n !Number.isSafeInteger(candidate.amount) ||\n candidate.amount < 0 ||\n candidate.currency.trim().toUpperCase() !== currency,\n )\n ) {\n throw new Error(`Product has an invalid price for market ${marketKey}`);\n }\n\n const authorizedPrices = marketPrices.filter((candidate) => candidate.contact_list_id);\n if (authorizedPrices.length > 0) {\n return authorizedPrices.reduce((lowest, candidate) =>\n candidate.amount < lowest.amount ? candidate : lowest,\n );\n }\n\n const basePrices = marketPrices.filter((candidate) => !candidate.contact_list_id);\n if (basePrices.length !== 1) {\n throw new Error(`Product does not have one base price for market ${marketKey}`);\n }\n const price = basePrices[0];\n return price;\n}\n\nexport function availableStock(\n client: ArkyStoreClient,\n variant: StorefrontProductVariant,\n): number | undefined {\n const fromUtility = client.utils.getAvailableStock(variant);\n if (Number.isFinite(fromUtility)) return fromUtility;\n const stock = (variant.inventory || []).reduce((total, row) => total + (row.available || 0), 0);\n return stock > 0 ? stock : undefined;\n}\n\nexport function locationToAddress(location: ZoneLocation): Address {\n return {\n country: location.country || \"\",\n state: location.state || \"\",\n city: location.city || \"\",\n postal_code: location.postal_code || \"\",\n name: \"\",\n street1: \"\",\n street2: null,\n };\n}\n\nexport function createFormEntry(formId: string, fields: FormField[]): FormEntry {\n if (!formId.trim()) throw new Error(\"formId is required\");\n return { form_id: formId, fields };\n}\n\nexport function toProductCheckoutItems(items: EshopCartItem[]): ProductCheckoutItemInput[] {\n return items.map((item) => ({\n type: \"product\",\n id: item.id,\n product_id: item.product_id,\n variant_id: item.variant_id,\n quantity: item.quantity,\n }));\n}\n\nexport function toServiceCheckoutItems(items: ArkyServiceCartItem[]): ServiceCheckoutItemInput[] {\n return items.map((item) => ({\n type: \"service\",\n id: item.id,\n service_id: item.service_id,\n provider_id: item.provider_id,\n slots: [...item.slots].sort((a, b) => a.from - b.from),\n forms: item.forms,\n }));\n}\n\nfunction formValueError(field: FormSchema, message: string): Error {\n return new Error(`Invalid value for form field '${field.key}': ${message}`);\n}\n\nfunction isValidGeoLocation(value: unknown): value is GeoLocation {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n const location = value as GeoLocation;\n if (location.label !== undefined && location.label !== null && typeof location.label !== \"string\") {\n return false;\n }\n const coordinates = location.coordinates;\n if (!coordinates || typeof coordinates !== \"object\") return false;\n return (\n Number.isFinite(coordinates.lat) &&\n Number.isFinite(coordinates.lon) &&\n coordinates.lat >= -90 &&\n coordinates.lat <= 90 &&\n coordinates.lon >= -180 &&\n coordinates.lon <= 180\n );\n}\n\nfunction buildFormField(field: FormSchema, value: FormValue): FormField {\n const common = { id: field.id, key: field.key };\n switch (field.type) {\n case \"text\":\n if (typeof value !== \"string\") throw formValueError(field, \"expected text\");\n if (field.required && value.trim().length === 0) throw formValueError(field, \"required text is blank\");\n return { ...common, type: \"text\", value };\n case \"number\":\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\n throw formValueError(field, \"expected a finite number\");\n }\n if (field.min !== null && field.min !== undefined && value < field.min) {\n throw formValueError(field, `must be at least ${field.min}`);\n }\n if (field.max !== null && field.max !== undefined && value > field.max) {\n throw formValueError(field, `must be at most ${field.max}`);\n }\n return { ...common, type: \"number\", value };\n case \"boolean\":\n if (typeof value !== \"boolean\") throw formValueError(field, \"expected a boolean\");\n return { ...common, type: \"boolean\", value };\n case \"date\":\n if (typeof value !== \"number\" || !Number.isSafeInteger(value)) {\n throw formValueError(field, \"expected an integer timestamp\");\n }\n return { ...common, type: \"date\", value };\n case \"geo_location\":\n if (!isValidGeoLocation(value)) throw formValueError(field, \"expected valid coordinates\");\n return { ...common, type: \"geo_location\", value };\n case \"select\": {\n if (!Array.isArray(value) || value.some((item) => typeof item !== \"string\")) {\n throw formValueError(field, \"expected a list of options\");\n }\n const selected = value as string[];\n if (field.required && selected.length === 0) throw formValueError(field, \"at least one option is required\");\n if (new Set(selected).size !== selected.length || selected.some((item) => !field.options.includes(item))) {\n throw formValueError(field, \"contains an unknown or duplicate option\");\n }\n return { ...common, type: \"select\", value: selected };\n }\n }\n}\n\nfunction isEmptyOptionalValue(field: FormSchema, value: FormValue): boolean {\n if (field.required) return false;\n if (field.type === \"text\") return value === \"\";\n if (field.type === \"select\") return Array.isArray(value) && value.length === 0;\n if (field.type === \"geo_location\") {\n return Boolean(value && typeof value === \"object\" && !Array.isArray(value) && Object.keys(value).length === 0);\n }\n return false;\n}\n\nexport function buildFormFields(schema: FormSchema[], values: FormValues): FormField[] {\n const knownKeys = new Set(schema.map((field) => field.key));\n const unknownKey = Object.keys(values).find((key) => !knownKeys.has(key));\n if (unknownKey) throw new Error(`Form field '${unknownKey}' is not defined by the form schema`);\n\n const fields: FormField[] = [];\n for (const field of schema) {\n const value = values[field.key];\n if (value === undefined) {\n if (field.required) throw formValueError(field, \"required value is missing\");\n continue;\n }\n if (isEmptyOptionalValue(field, value)) continue;\n fields.push(buildFormField(field, value));\n }\n return fields;\n}\n\nexport function createFormEntryFromValues(\n form: Pick<Form, \"id\" | \"schema\">,\n values: FormValues,\n): FormEntry {\n return createFormEntry(form.id, buildFormFields(form.schema, values));\n}\n\nexport function getFormBlockType(field: FormSchema): string {\n if (field.key === \"email\") return \"email\";\n if (field.key === \"phone\") return \"phone\";\n if (field.type === \"geo_location\") return \"address\";\n return field.type;\n}\n\nexport function getFormBlockValue(field: FormSchema): unknown {\n if (field.type === \"boolean\") return false;\n if (field.type === \"select\") return [];\n if (field.type === \"geo_location\") return {};\n if (field.type === \"number\" || field.type === \"date\") return undefined;\n return \"\";\n}\n\nexport function formSchemaToBlock(field: FormSchema): Block {\n const min = field.type === \"number\" ? field.min : undefined;\n const max = field.type === \"number\" ? field.max : undefined;\n const options = field.type === \"select\" ? field.options : undefined;\n return {\n id: field.id,\n key: field.key,\n type: getFormBlockType(field),\n properties: {\n isRequired: field.required,\n minValues: field.required ? 1 : 0,\n min,\n max,\n options,\n pattern: field.key === \"email\" ? \"^.+@.+\\\\..+$\" : field.key === \"phone\" ? \"^.{6,20}$\" : undefined,\n },\n value: getFormBlockValue(field),\n };\n}\n\nexport function formatServiceTime(ts: number, tz: string): string {\n return new Date(ts * 1000).toLocaleTimeString([], {\n hour: \"2-digit\",\n minute: \"2-digit\",\n timeZone: tz,\n });\n}\n\nexport function formatServiceSlotTime(from: number, to: number, tz: string): string {\n return `${formatServiceTime(from, tz)} - ${formatServiceTime(to, tz)}`;\n}\n\nexport function getSlotsForDate(\n availability: AvailabilityResponse | null,\n dateStr: string,\n providerId?: string | null,\n): { from: number; to: number; providerId: string }[] {\n if (!availability) return [];\n const slots: { from: number; to: number; providerId: string }[] = [];\n for (const provider of availability.providers) {\n if (providerId && provider.provider_id !== providerId) continue;\n const day = provider.days.find((candidate) => candidate.date === dateStr);\n if (!day) continue;\n for (const slot of day.slots) {\n if (slot.spots > 0) slots.push({ from: slot.from, to: slot.to, providerId: provider.provider_id });\n }\n }\n return slots.sort((a, b) => a.from - b.from);\n}\n\nexport function hasAvailableSlotsForDate(\n availability: AvailabilityResponse | null,\n dateStr: string,\n providerId?: string | null,\n): boolean {\n if (!availability) return false;\n return availability.providers.some((provider) => {\n if (providerId && provider.provider_id !== providerId) return false;\n const day = provider.days.find((candidate) => candidate.date === dateStr);\n return !!day?.slots.some((slot) => slot.spots > 0);\n });\n}\n\nexport const SERVICE_WEEKDAYS = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"];\n\nexport function createServiceInitialState(): ArkyServiceState {\n return {\n service: null,\n availability: null,\n providers: [],\n serviceProviders: [],\n selectedProviderId: null,\n currentMonth: new Date(new Date().getFullYear(), new Date().getMonth(), 1),\n calendar: [],\n selectedDate: null,\n slots: [],\n selectedSlot: null,\n timezone: typeof window !== \"undefined\" ? Intl.DateTimeFormat().resolvedOptions().timeZone : \"UTC\",\n tzGroups: {},\n loading: false,\n weekdays: SERVICE_WEEKDAYS,\n quote: null,\n fetchingQuote: false,\n quoteError: null,\n currency: null,\n dateTimeConfirmed: false,\n availablePaymentMethods: [],\n cartId: null,\n promoCode: null,\n };\n}\n\nexport function normalizeTimezoneGroups(\n groups: { label: string; zones: { label: string; value: string }[] }[],\n): Record<string, { zone: string; name: string }[]> {\n const normalized: Record<string, { zone: string; name: string }[]> = {};\n for (const group of groups) {\n normalized[group.label] = group.zones.map((zone) => ({\n zone: zone.value,\n name: zone.label,\n }));\n }\n return normalized;\n}\n","import { atom, computed, map } from \"nanostores\";\nimport { createStorefront, type ContactSession, type StorefrontIdentifyResult } from \"../index\";\nimport type {\n StorefrontDto,\n StorefrontMarket,\n StorefrontSetup,\n} from \"../api/storefront\";\nimport type {\n Address,\n Block,\n Cart,\n EshopCartItem,\n CollectionEntry,\n Form,\n FormEntry,\n FormSubmission,\n OrderCheckoutResult,\n OrderQuote,\n PaginatedResponse,\n PaymentMethod,\n Price,\n Product,\n ProductVariant,\n Provider,\n Service,\n ServiceProvider,\n ZoneLocation,\n} from \"../types\";\nimport type {\n AvailabilityResponse,\n OrderCheckoutItemInput,\n FindServiceProvidersParams,\n GetAvailabilityParams,\n GetCollectionParams,\n GetEntriesParams,\n GetEntryParams,\n GetFormParams,\n GetProductParams,\n GetProductsParams,\n GetProviderParams,\n GetProvidersParams,\n GetServiceParams,\n GetServicesParams,\n ProductCheckoutItemInput,\n RequestOptions,\n ServiceCheckoutItemInput,\n SlotRange,\n SubmitFormParams,\n} from \"../types/api\";\nimport type { ExperimentUseResponse, StorefrontAction, TrackActionParams, UseExperimentParams } from \"../api/storefront\";\nimport type {\n ArkyCalendarDay,\n ArkyCmsEntryParams,\n ArkyCartInput,\n ArkyCartStatus,\n ArkyCmsState,\n ArkyEshopState,\n ArkyLastOrder,\n ArkyServiceCartItem,\n ArkyServiceFormGroup,\n ArkyServiceFormState,\n ArkyServiceSlot,\n ArkyServiceState,\n ArkyStoreContext,\n ArkyStoreConfig,\n ArkyStripePaymentMountOptions,\n ArkySubmitFormByKeyParams,\n} from \"./types\";\nimport { createStripeConfirmationTokenController, type StripeConfirmationTokenController } from \"../payments/stripe\";\nimport {\n availableStock,\n createFormEntryFromValues,\n createFormEntry,\n createId,\n createServiceInitialState,\n entitySlug,\n formSchemaToBlock,\n formatServiceSlotTime,\n getSlotsForDate,\n hasAvailableSlotsForDate,\n locationToAddress,\n normalizeTimezoneGroups,\n priceForMarket,\n productName,\n providerName,\n readErrorMessage,\n serviceName,\n toProductCheckoutItems,\n toServiceCheckoutItems,\n} from \"./utils\";\n\ntype StorefrontParams<T> = T extends unknown\n ? Omit<T, \"store_id\" | \"market\">\n : never;\ntype StorefrontCart = StorefrontDto<Cart>;\ntype StorefrontCollectionEntry = StorefrontDto<CollectionEntry>;\ntype StorefrontForm = StorefrontDto<Form>;\ntype StorefrontFormSubmission = StorefrontDto<FormSubmission>;\ntype StorefrontOrderCheckoutResult = StorefrontDto<OrderCheckoutResult>;\ntype StorefrontOrderQuote = StorefrontDto<OrderQuote>;\ntype StorefrontProduct = StorefrontDto<Product>;\ntype StorefrontProductVariant = StorefrontDto<ProductVariant>;\ntype StorefrontProvider = StorefrontDto<Provider>;\ntype StorefrontService = StorefrontDto<Service>;\ntype StorefrontServiceProvider = StorefrontDto<ServiceProvider>;\ntype StorefrontPage<T> = StorefrontDto<PaginatedResponse<T>>;\n\nfunction firstFiniteNumber(...values: Array<number | null | undefined>): number | undefined {\n return values.find((value): value is number => typeof value === \"number\" && Number.isFinite(value));\n}\n\nfunction initializeStoreCore(\n publishableKey: string,\n config: ArkyStoreConfig,\n scopedClient?: ReturnType<typeof createStorefront>,\n) {\n const client = scopedClient || createStorefront(publishableKey, config);\n const session = atom<ContactSession | null>(client.session);\n const setup = atom<StorefrontSetup | null>(null);\n const locale = atom(config.locale || client.getLocale());\n const market_key = atom(config.market || client.getMarket());\n const market = computed([setup, market_key], (setupValue, marketKey) => {\n const resolvedKey = marketKey || setupValue?.markets.default;\n return setupValue?.markets.available.find((candidate) => candidate.key === resolvedKey) || null;\n });\n const currency = computed(market, (value) => value?.currency || null);\n const allowed_payment_methods = computed(market, (value) => value?.payment_methods || []);\n const payment_config = computed([setup, market], (setupValue, marketValue) => {\n const methods = marketValue?.payment_methods || [];\n const hasCreditCard = methods.some((method: PaymentMethod) => method.type === \"credit_card\");\n return {\n provider: setupValue?.payment || null,\n enabled: hasCreditCard && Boolean(setupValue?.readiness.payment),\n };\n });\n\n const cart = atom<StorefrontCart | null>(null);\n const product_items = atom<EshopCartItem[]>([]);\n const service_items = atom<ArkyServiceCartItem[]>([]);\n const quote = atom<StorefrontOrderQuote | null>(null);\n const promo_code = atom<string | null>(null);\n const last_order = atom<ArkyLastOrder | null>(null);\n const payment_controller = atom<StripeConfirmationTokenController | null>(null);\n const payment_ready = computed(payment_controller, (value) => value !== null);\n const cart_status = map<ArkyCartStatus>({\n loading: false,\n syncing: false,\n fetching_quote: false,\n processing_checkout: false,\n error: null,\n quote_error: null,\n selected_shipping_method_id: null,\n user_token: null,\n });\n\n function rawProductItemCount(value: StorefrontCart | null): number {\n return (value?.items || []).reduce((total, item) => {\n if (item.type !== \"product\") return total;\n return total + (item.quantity || 0);\n }, 0);\n }\n\n function rawServiceItemCount(value: StorefrontCart | null): number {\n return (value?.items || []).reduce((total, item) => {\n if (item.type !== \"service\") return total;\n return total + Math.max(1, item.slots?.length || 0);\n }, 0);\n }\n\n const product_item_count = computed([cart, product_items], (cartValue, items) =>\n Math.max(\n rawProductItemCount(cartValue),\n items.reduce((total, item) => total + (item.quantity || 0), 0),\n ),\n );\n const service_item_count = computed([cart, service_items], (cartValue, items) =>\n Math.max(\n rawServiceItemCount(cartValue),\n items.reduce((total, item) => total + Math.max(1, item.slots.length), 0),\n ),\n );\n const item_count = computed([cart, product_item_count, service_item_count], (cartValue, products, services) =>\n Math.max(cartValue?.item_count || 0, products + services),\n );\n const snapshot = computed([cart, product_items, service_items, item_count], (cartValue, products, services, count) => ({\n cart: cartValue,\n product_items: products,\n service_items: services,\n item_count: count,\n }));\n let cartWriteRevision = 0;\n let sessionRequest: Promise<ContactSession | null> | null = null;\n let cartRequest: Promise<StorefrontCart> | null = null;\n\n function nextCartWriteRevision(): number {\n cartWriteRevision += 1;\n return cartWriteRevision;\n }\n\n const cms_state = map<ArkyCmsState>({\n entries: {},\n forms: {},\n loading: false,\n error: null,\n });\n const eshop_state = map<ArkyEshopState>({\n products: [],\n services: [],\n providers: [],\n product_cursor: null,\n service_cursor: null,\n provider_cursor: null,\n availability: null,\n loading_products: false,\n loading_services: false,\n loading_providers: false,\n loading_availability: false,\n error: null,\n });\n const service_state = map<ArkyServiceState>(createServiceInitialState());\n const service_form_definitions = new Map<string, StorefrontForm>();\n const service_form_state = map<ArkyServiceFormState>({\n provider_id: null,\n groups: [],\n loading: false,\n error: null,\n });\n const service_form_groups = computed(service_form_state, (state) => state.groups);\n const service_form_blocks = computed(service_form_groups, (groups) => groups.flatMap((group) => group.blocks));\n\n client.onAuthStateChanged((value) => session.set(value));\n currency.subscribe((value) => service_state.setKey(\"currency\", value));\n market.subscribe((value) => {\n const methods = value?.payment_methods || [];\n if (methods.length && service_state.get().availablePaymentMethods.length === 0) {\n service_state.setKey(\"availablePaymentMethods\", methods);\n }\n });\n\n function currentMarketKey(): string {\n return market_key.get() || client.getMarket() || setup.get()?.markets.default || \"\";\n }\n\n function currentLocale(): string {\n return locale.get() || client.getLocale() || setup.get()?.languages.default || \"en\";\n }\n\n function currentStripePublishableKey(): string | null {\n const provider = payment_config.get()?.provider;\n return provider?.publishable_key || null;\n }\n\n function currentStripeConnectedAccountId(): string | null {\n const provider = payment_config.get()?.provider;\n return provider?.connected_account_id || null;\n }\n\n function currentPaymentAmount(): number {\n return Math.max(\n 0,\n firstFiniteNumber(quote.get()?.charge_amount, cart.get()?.quote_snapshot?.charge_amount, cart.get()?.quote_snapshot?.total) ?? 0,\n );\n }\n\n function currentPaymentCurrency(): string | null {\n return quote.get()?.money?.currency?.trim() || cart.get()?.quote_snapshot?.money?.currency?.trim() || null;\n }\n\n function setPaymentController(controller: StripeConfirmationTokenController | null): StripeConfirmationTokenController | null {\n const current = payment_controller.get();\n if (current && current !== controller) {\n current.destroy();\n }\n payment_controller.set(controller);\n return controller;\n }\n\n function destroyPaymentController(): void {\n setPaymentController(null);\n }\n\n async function loadSetup(): Promise<StorefrontSetup> {\n const current = setup.get();\n if (current) return current;\n const result = await client.getSetup();\n setup.set(result);\n if (!market_key.get() && result.markets.default) {\n market_key.set(result.markets.default);\n }\n if (!locale.get() && result.languages.default) {\n locale.set(result.languages.default);\n }\n return result;\n }\n\n async function mountStripePayment(\n target: string | HTMLElement,\n options: ArkyStripePaymentMountOptions = {},\n ): Promise<StripeConfirmationTokenController> {\n await loadSetup();\n const publishableKey = currentStripePublishableKey();\n if (!publishableKey) {\n throw new Error(\"Stripe card payment is not configured for this Store\");\n }\n const hasExplicitAmount = options.amount !== undefined;\n const hasExplicitCurrency = Boolean(options.currency?.trim());\n if (hasExplicitAmount !== hasExplicitCurrency) {\n throw new Error(\"Stripe amount and currency must be supplied together\");\n }\n const amount = hasExplicitAmount ? options.amount! : currentPaymentAmount();\n if (!Number.isSafeInteger(amount) || amount <= 0) {\n throw new Error(\"A positive minor-unit payment amount is required to mount card payment\");\n }\n const paymentCurrency = hasExplicitCurrency ? options.currency!.trim() : currentPaymentCurrency();\n if (!paymentCurrency || !/^[a-z]{3}$/i.test(paymentCurrency)) {\n throw new Error(\"An explicit three-letter payment currency is required to mount card payment\");\n }\n const controller = await createStripeConfirmationTokenController({\n publishableKey,\n connectedAccountId: currentStripeConnectedAccountId() || undefined,\n amount,\n currency: paymentCurrency,\n ...(options.appearance ? { appearance: options.appearance } : {}),\n });\n controller.mount(target);\n setPaymentController(controller);\n return controller;\n }\n\n function updatePaymentController(input: { amount?: number; currency?: string }): void {\n payment_controller.get()?.update(input);\n }\n\n async function ensureSession(): Promise<ContactSession | null> {\n const current = session.get();\n if (client.isAuthenticated) return current;\n if (!sessionRequest) {\n sessionRequest = identify().finally(() => {\n sessionRequest = null;\n });\n }\n return sessionRequest;\n }\n\n async function identify(params: { email?: string; verify?: boolean; market?: string } = {}): Promise<StorefrontIdentifyResult> {\n if (params.market) setMarket(params.market);\n const result = await client.identify({\n ...params,\n market: params.market || currentMarketKey(),\n });\n session.set({\n contact: result.contact,\n });\n return result;\n }\n\n async function identifyContactEmailIfMissing(email: string): Promise<ContactSession> {\n const normalizedEmail = email.trim().toLowerCase();\n if (!normalizedEmail) throw new Error(\"Contact email is required\");\n\n const current = session.get();\n if (current?.contact.email === normalizedEmail) return current;\n return identify({ email: normalizedEmail });\n }\n\n function setMarket(key: string): void {\n const next = key.trim();\n const current = currentMarketKey();\n if (\n next &&\n current &&\n next !== current &&\n (cart.get()?.item_count || item_count.get()) > 0\n ) {\n throw Object.assign(\n new Error(\"Market cannot change while the cart contains items\"),\n { code: \"CART_MARKET_LOCKED\" },\n );\n }\n market_key.set(next);\n client.setMarket(next);\n }\n\n function setLocale(value: string): void {\n locale.set(value);\n client.setLocale(value);\n }\n\n function setContext(context: ArkyStoreContext): void {\n if (context.market !== undefined) setMarket(context.market);\n if (context.locale !== undefined) setLocale(context.locale);\n }\n\n async function ensureCart(): Promise<StorefrontCart> {\n if (cartRequest) return cartRequest;\n\n cart_status.setKey(\"loading\", true);\n cart_status.setKey(\"error\", null);\n const refreshRevision = cartWriteRevision;\n cartRequest = (async () => {\n await ensureSession();\n const response = await client.eshop.cart.current();\n await applyCartResponse(response, { ifRevision: refreshRevision });\n return response;\n })();\n\n try {\n return await cartRequest;\n } catch (error) {\n cart_status.setKey(\"error\", readErrorMessage(error, \"Failed to load cart.\"));\n throw error;\n } finally {\n cartRequest = null;\n cart_status.setKey(\"loading\", false);\n }\n }\n\n async function buildProductCartItem(\n item: ProductCheckoutItemInput,\n source: StorefrontCart,\n productHint?: StorefrontProduct,\n ): Promise<EshopCartItem | null> {\n try {\n const product =\n productHint?.id === item.product_id\n ? productHint\n : await client.eshop.product.get({ id: item.product_id });\n const variant = product.variants.find((candidate) => candidate.id === item.variant_id);\n if (!variant) return null;\n return {\n id: item.id || createId(\"product\"),\n product_id: product.id,\n variant_id: variant.id,\n product_name: productName(product, currentLocale()),\n product_slug: entitySlug(product, currentLocale()),\n variant_attributes: variant.attributes as EshopCartItem[\"variant_attributes\"],\n requires_shipping: variant.requires_shipping !== false,\n price: priceForMarket(variant.prices, currentMarketKey(), market.get()?.currency),\n quantity: item.quantity,\n added_at: source.created_at ? source.created_at * 1000 : Date.now(),\n max_stock: availableStock(client, variant),\n };\n } catch {\n return null;\n }\n }\n\n async function buildServiceCartItems(items: ServiceCheckoutItemInput[]): Promise<ArkyServiceCartItem[]> {\n const rows: ArkyServiceCartItem[] = [];\n for (const item of items) {\n let service: StorefrontService | null = null;\n let provider: StorefrontProvider | null = null;\n try {\n service = await client.eshop.service.get({ id: item.service_id });\n } catch {}\n try {\n provider = await client.eshop.provider.get({ id: item.provider_id });\n } catch {}\n rows.push({\n id: item.id || createId(\"service\"),\n service_id: item.service_id,\n provider_id: item.provider_id,\n slots: item.slots,\n forms: item.forms || [],\n service_name: service ? serviceName(service, currentLocale()) : item.service_id,\n provider_name: provider ? providerName(provider, currentLocale()) : item.provider_id,\n });\n }\n return rows;\n }\n\n async function applyCartResponse(\n response: StorefrontCart,\n options: { ifRevision?: number; productHint?: StorefrontProduct } = {},\n ): Promise<StorefrontCart> {\n if (options.ifRevision !== undefined && options.ifRevision !== cartWriteRevision) {\n return cart.get() || response;\n }\n cart.set(response);\n cart_status.setKey(\"user_token\", response.token || null);\n cart_status.setKey(\"selected_shipping_method_id\", response.shipping_method_id || null);\n promo_code.set(response.promo_code || null);\n quote.set(response.quote_snapshot || null);\n\n const items = response.items || [];\n const products = await Promise.all(\n items\n .filter((item): item is ProductCheckoutItemInput => item.type === \"product\")\n .map((item) => buildProductCartItem(item, response, options.productHint)),\n );\n const services = await buildServiceCartItems(items.filter((item): item is ServiceCheckoutItemInput => item.type === \"service\"));\n product_items.set(products.filter((item): item is EshopCartItem => item !== null));\n service_items.set(services);\n return response;\n }\n\n function checkoutItems(input: ArkyCartInput = {}): OrderCheckoutItemInput[] {\n return [\n ...toProductCheckoutItems(input.product_items || product_items.get()),\n ...toServiceCheckoutItems(input.service_items || service_items.get()),\n ];\n }\n\n async function syncCart(\n input: ArkyCartInput = {},\n writeRevision = nextCartWriteRevision(),\n ): Promise<StorefrontCart> {\n cart_status.setKey(\"syncing\", true);\n cart_status.setKey(\"error\", null);\n try {\n const current = cart.get() || (await ensureCart());\n const response = await client.eshop.cart.update({\n id: current.id,\n items: checkoutItems(input),\n shipping_address: input.shipping_address,\n billing_address: input.billing_address,\n forms: input.forms,\n promo_code:\n input.promo_code === null\n ? \"\"\n : input.promo_code === undefined\n ? promo_code.get() || undefined\n : input.promo_code,\n payment_method_key: input.payment_method_key === null ? \"\" : input.payment_method_key,\n shipping_method_id:\n input.shipping_method_id === null\n ? \"\"\n : input.shipping_method_id === undefined\n ? cart_status.get().selected_shipping_method_id || undefined\n : input.shipping_method_id,\n });\n await applyCartResponse(response, { ifRevision: writeRevision });\n return response;\n } catch (error) {\n cart_status.setKey(\"error\", readErrorMessage(error, \"Failed to sync cart.\"));\n throw error;\n } finally {\n cart_status.setKey(\"syncing\", false);\n }\n }\n\n async function addProduct(\n product: StorefrontProduct,\n variant: StorefrontProductVariant,\n quantity = 1,\n ): Promise<StorefrontCart> {\n cart_status.setKey(\"error\", null);\n const writeRevision = nextCartWriteRevision();\n try {\n const current = cart.get() || (await ensureCart());\n const response = await client.eshop.cart.addItem({\n id: current.id,\n item: {\n type: \"product\",\n product_id: product.id,\n variant_id: variant.id,\n quantity,\n },\n });\n await applyCartResponse(response, { ifRevision: writeRevision, productHint: product });\n return response;\n } catch (error) {\n cart_status.setKey(\"error\", readErrorMessage(error, \"Failed to add product to cart.\"));\n throw error;\n }\n }\n\n async function setProductQuantity(itemId: string, quantity: number): Promise<StorefrontCart> {\n const writeRevision = nextCartWriteRevision();\n const next = product_items.get().map((item) => {\n if (item.id !== itemId) return item;\n const bounded = item.max_stock ? Math.min(Math.max(1, quantity), item.max_stock) : Math.max(1, quantity);\n return { ...item, quantity: bounded };\n });\n product_items.set(next);\n return syncCart({ product_items: next }, writeRevision);\n }\n\n async function removeProduct(itemId: string): Promise<StorefrontCart | null> {\n const writeRevision = nextCartWriteRevision();\n const item = product_items.get().find((candidate) => candidate.id === itemId);\n product_items.set(product_items.get().filter((candidate) => candidate.id !== itemId));\n const current = cart.get();\n if (!current || !item) return null;\n const response = await client.eshop.cart.removeItem({\n id: current.id,\n item_id: item.id,\n });\n await applyCartResponse(response, { ifRevision: writeRevision });\n return response;\n }\n\n async function addServiceItem(item: ArkyServiceCartItem): Promise<StorefrontCart> {\n const writeRevision = nextCartWriteRevision();\n const next = [...service_items.get(), item];\n service_items.set(next);\n return syncCart({ service_items: next }, writeRevision);\n }\n\n async function removeServiceItem(itemId: string): Promise<StorefrontCart> {\n const writeRevision = nextCartWriteRevision();\n const next = service_items.get().filter((item) => item.id !== itemId);\n service_items.set(next);\n return syncCart({ service_items: next }, writeRevision);\n }\n\n async function clearCart(): Promise<StorefrontCart | null> {\n const writeRevision = nextCartWriteRevision();\n const current = cart.get();\n clearLocalCart();\n if (!current) return null;\n const response = await client.eshop.cart.clear({ id: current.id });\n await applyCartResponse(response, { ifRevision: writeRevision });\n return response;\n }\n\n function clearLocalCart(): void {\n product_items.set([]);\n service_items.set([]);\n cart.set(null);\n quote.set(null);\n promo_code.set(null);\n cart_status.setKey(\"selected_shipping_method_id\", null);\n }\n\n async function fetchQuote(input: ArkyCartInput = {}): Promise<StorefrontOrderQuote | null> {\n if (checkoutItems(input).length === 0) {\n quote.set(null);\n return null;\n }\n cart_status.setKey(\"fetching_quote\", true);\n cart_status.setKey(\"quote_error\", null);\n try {\n const current = await syncCart(input);\n const response = await client.eshop.cart.quote({ id: current.id });\n quote.set(response);\n return response;\n } catch (error) {\n quote.set(null);\n cart_status.setKey(\"quote_error\", readErrorMessage(error, \"Failed to fetch quote.\"));\n throw error;\n } finally {\n cart_status.setKey(\"fetching_quote\", false);\n }\n }\n\n async function checkout(\n input: ArkyCartInput = {},\n ): Promise<StorefrontOrderCheckoutResult> {\n if (checkoutItems(input).length === 0) throw new Error(\"Cart is empty\");\n cart_status.setKey(\"processing_checkout\", true);\n cart_status.setKey(\"error\", null);\n try {\n const current = await syncCart(input);\n const quoteValue = quote.get();\n const paymentMethodKey = input.payment_method_key || current.payment_method_key || quoteValue?.money?.payment_method_key || undefined;\n let chargeAmount = firstFiniteNumber(quoteValue?.charge_amount, current.quote_snapshot?.charge_amount);\n if (paymentMethodKey === \"credit_card\" && chargeAmount === undefined) {\n const latestQuote = await client.eshop.cart.quote({ id: current.id });\n quote.set(latestQuote);\n chargeAmount = firstFiniteNumber(latestQuote.charge_amount, latestQuote.total);\n }\n if (\n paymentMethodKey === \"credit_card\" &&\n (typeof chargeAmount !== \"number\" || !Number.isSafeInteger(chargeAmount) || chargeAmount < 0)\n ) {\n throw new Error(\"Card checkout requires a non-negative integer charge amount in minor units\");\n }\n const needsConfirmationToken = paymentMethodKey === \"credit_card\" && typeof chargeAmount === \"number\" && chargeAmount > 0;\n let confirmationTokenId: string | undefined;\n let returnUrl = input.return_url;\n const paymentController = input.payment ?? payment_controller.get();\n\n if (needsConfirmationToken) {\n if (!paymentController) throw new Error(\"Payment controller is required for card checkout\");\n returnUrl = returnUrl || (typeof window !== \"undefined\" ? window.location.href : undefined);\n const token = await paymentController.createConfirmationToken({\n return_url: returnUrl,\n billing_details: input.billing_details,\n });\n confirmationTokenId = token.confirmation_token_id;\n returnUrl = token.return_url || returnUrl;\n }\n\n const response = await client.eshop.cart.checkout({\n id: current.id,\n payment_method_key: paymentMethodKey,\n confirmation_token_id: confirmationTokenId,\n return_url: returnUrl,\n });\n\n if (response.payment_action.type === \"handle_next_action\") {\n if (!paymentController) throw new Error(\"Payment controller is required for card authentication\");\n await paymentController.handleNextAction(response.payment_action.client_secret);\n }\n\n const stored: ArkyLastOrder = {\n order_id: response.order_id,\n number: response.number,\n payment_action: response.payment_action,\n payment: response.payment,\n product_items: input.product_items || product_items.get(),\n service_items: input.service_items || service_items.get(),\n shipping_address: input.shipping_address || null,\n billing_address: input.billing_address || null,\n total: response.payment.amount,\n currency: response.payment.currency,\n payment_method_key: paymentMethodKey || null,\n created_at: Date.now(),\n };\n last_order.set(stored);\n if (input.clear_after_checkout !== false) {\n clearLocalCart();\n }\n return response;\n } catch (error) {\n cart_status.setKey(\"error\", readErrorMessage(error, \"Checkout failed.\"));\n throw error;\n } finally {\n cart_status.setKey(\"processing_checkout\", false);\n }\n }\n\n function serviceCalendar(): ArkyCalendarDay[] {\n const state = service_state.get();\n const { currentMonth, selectedDate, availability, selectedProviderId } = state;\n const year = currentMonth.getFullYear();\n const monthIndex = currentMonth.getMonth();\n const first = new Date(year, monthIndex, 1);\n const last = new Date(year, monthIndex + 1, 0);\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n\n const cells: ArkyCalendarDay[] = [];\n const pad = (first.getDay() + 6) % 7;\n for (let i = 0; i < pad; i++) {\n cells.push({\n date: new Date(0),\n iso: \"\",\n available: false,\n isSelected: false,\n isInRange: false,\n isToday: false,\n blank: true,\n });\n }\n\n for (let day = 1; day <= last.getDate(); day++) {\n const date = new Date(year, monthIndex, day);\n const iso = `${year}-${String(monthIndex + 1).padStart(2, \"0\")}-${String(day).padStart(2, \"0\")}`;\n cells.push({\n date,\n iso,\n available: hasAvailableSlotsForDate(availability, iso, selectedProviderId),\n isSelected: iso === selectedDate,\n isInRange: false,\n isToday: date.getTime() === today.getTime(),\n blank: false,\n });\n }\n\n const suffix = (7 - (cells.length % 7)) % 7;\n for (let i = 0; i < suffix; i++) {\n cells.push({\n date: new Date(0),\n iso: \"\",\n available: false,\n isSelected: false,\n isInRange: false,\n isToday: false,\n blank: true,\n });\n }\n\n return cells;\n }\n\n function computeServiceSlots(dateStr: string): ArkyServiceSlot[] {\n const state = service_state.get();\n const { availability, selectedProviderId, timezone, service } = state;\n return getSlotsForDate(availability, dateStr, selectedProviderId).map((slot, index) => ({\n id: `${service?.id || \"service\"}-${slot.from}-${index}`,\n serviceId: service?.id || \"\",\n providerId: slot.providerId,\n from: slot.from,\n to: slot.to,\n timeText: formatServiceSlotTime(slot.from, slot.to, timezone),\n dateText: new Date(slot.from * 1000).toLocaleDateString([], {\n weekday: \"short\",\n month: \"short\",\n day: \"numeric\",\n timeZone: timezone,\n }),\n }));\n }\n\n function toServiceCartItem(slots: ArkyServiceSlot[], forms: FormEntry[] = []): ArkyServiceCartItem {\n const orderedSlots = [...slots].sort((left, right) => left.from - right.from || left.to - right.to);\n const [first] = orderedSlots;\n if (!first) throw new Error(\"At least one service slot is required\");\n if (orderedSlots.some((slot) => slot.serviceId !== first.serviceId || slot.providerId !== first.providerId)) {\n throw new Error(\"A booking can only contain slots for one service and provider\");\n }\n if (orderedSlots.some((slot) => !Number.isSafeInteger(slot.from) || !Number.isSafeInteger(slot.to) || slot.from >= slot.to)) {\n throw new Error(\"A booking contains an invalid service slot\");\n }\n for (let index = 1; index < orderedSlots.length; index += 1) {\n if (orderedSlots[index - 1].to !== orderedSlots[index].from) {\n throw new Error(\"A multi-slot booking must contain adjacent slots\");\n }\n }\n return {\n id: createId(\"booking\"),\n service_id: first.serviceId,\n provider_id: first.providerId,\n slots: orderedSlots.map(({ from, to }) => ({ from, to })),\n forms,\n service_name: first.serviceName,\n date_text: first.dateText,\n time_text: first.timeText,\n is_multi_day: orderedSlots.length > 1,\n };\n }\n\n async function syncServiceCart(items: ArkyServiceCartItem[]): Promise<StorefrontCart> {\n try {\n return await syncCart({\n product_items: product_items.get(),\n service_items: items,\n });\n } catch (error) {\n service_state.setKey(\"quoteError\", readErrorMessage(error, \"Failed to sync service cart.\"));\n throw error;\n }\n }\n\n function serviceCurrentStepName(): string {\n const state = service_state.get();\n if (!state.service) return \"\";\n if (!state.selectedSlot || !state.dateTimeConfirmed) return \"datetime\";\n return \"review\";\n }\n\n const service_current_step_name = computed(service_state, serviceCurrentStepName);\n const service_can_proceed = computed(service_state, (state) => {\n const step = serviceCurrentStepName();\n if (step === \"datetime\") {\n return !!(state.selectedDate && state.selectedSlot);\n }\n if (step === \"review\") return true;\n return false;\n });\n const service_month_year = computed(service_state, (state) =>\n state.currentMonth.toLocaleString(undefined, {\n month: \"long\",\n year: \"numeric\",\n }),\n );\n const service_chain_start = computed(service_items, (items) => {\n const slots = items.flatMap((item) => item.slots);\n if (!slots.length) return null;\n return Math.max(...slots.map((slot) => slot.to));\n });\n const service_total_steps = computed(service_state, (state) => (state.service ? 2 : 0));\n const service_steps = computed(service_state, () => ({\n 1: { name: \"datetime\" },\n 2: { name: \"review\" },\n }));\n const service_current_step = computed([service_current_step_name, service_steps], (name, steps) => {\n for (const [idx, step] of Object.entries(steps)) {\n if (step.name === name) return Number(idx);\n }\n return 1;\n });\n\n function formatServiceDateDisplay(value: string | null): string {\n if (!value) return \"\";\n return new Date(value).toLocaleDateString(undefined, {\n month: \"short\",\n day: \"numeric\",\n });\n }\n\n function configuredServiceFormIds(relationship: StorefrontServiceProvider): string[] {\n const formIds = relationship.forms.map((entry) => entry.form_id.trim());\n if (formIds.some((formId) => !formId) || new Set(formIds).size !== formIds.length) {\n throw new Error(`Service provider ${relationship.provider_id} has blank or duplicate configured form IDs`);\n }\n return formIds;\n }\n\n function resolveServiceProvider(\n state: ArkyServiceState,\n providerId?: string | null,\n ): StorefrontServiceProvider | null {\n const serviceId = state.service?.id;\n if (!serviceId) return null;\n const relationships = state.serviceProviders.filter((relationship) => relationship.service_id === serviceId);\n const targetProviderId = providerId ?? state.selectedSlot?.providerId ?? state.selectedProviderId;\n if (targetProviderId) {\n return relationships.find((relationship) => relationship.provider_id === targetProviderId) || null;\n }\n return relationships.length === 1 ? relationships[0] : null;\n }\n\n function clearServiceFormState(error: string | null = null, loading = false): void {\n service_form_state.set({\n provider_id: null,\n groups: [],\n loading,\n error,\n });\n }\n\n function activateServiceProviderForms(\n providerId?: string | null,\n reset = false,\n ): StorefrontServiceProvider | null {\n const relationship = resolveServiceProvider(service_state.get(), providerId);\n if (!relationship) {\n clearServiceFormState();\n return null;\n }\n\n const formIds = configuredServiceFormIds(relationship);\n const current = service_form_state.get();\n const currentFormIds = current.groups.map((group) => group.form.id);\n if (\n !reset &&\n current.provider_id === relationship.provider_id &&\n currentFormIds.length === formIds.length &&\n currentFormIds.every((formId, index) => formId === formIds[index])\n ) {\n if (current.error) service_form_state.setKey(\"error\", null);\n return relationship;\n }\n\n const groups: ArkyServiceFormGroup[] = formIds.map((formId) => {\n const form = service_form_definitions.get(formId);\n if (!form) throw new Error(`Configured booking form '${formId}' was not loaded`);\n return {\n form,\n blocks: form.schema.map(formSchemaToBlock),\n };\n });\n service_form_state.set({\n provider_id: relationship.provider_id,\n groups,\n loading: false,\n error: null,\n });\n return relationship;\n }\n\n async function loadServiceFormDefinitions(\n relationships: StorefrontServiceProvider[],\n ): Promise<void> {\n const formIds = [\n ...new Set(relationships.flatMap((relationship) => configuredServiceFormIds(relationship))),\n ];\n if (formIds.length === 0) return;\n\n const forms = await Promise.all(formIds.map((formId) => loadForm({ id: formId })));\n for (let index = 0; index < forms.length; index += 1) {\n const form = forms[index];\n const formId = formIds[index];\n if (form.id !== formId) {\n throw new Error(`Configured booking form '${formId}' resolved to '${form.id}'`);\n }\n }\n for (const form of forms) service_form_definitions.set(form.id, form);\n }\n\n function configuredServiceFormEntries(\n relationship: StorefrontServiceProvider,\n ): FormEntry[] {\n const formIds = configuredServiceFormIds(relationship);\n if (formIds.length === 0) return [];\n activateServiceProviderForms(relationship.provider_id);\n const state = service_form_state.get();\n if (\n state.provider_id !== relationship.provider_id ||\n state.groups.length !== formIds.length ||\n state.groups.some((group, index) => group.form.id !== formIds[index])\n ) {\n throw new Error(`Booking forms are not ready for provider ${relationship.provider_id}`);\n }\n return state.groups.map((group) =>\n createFormEntryFromValues(\n group.form,\n Object.fromEntries(group.blocks.map((block) => [block.key, block.value])),\n ),\n );\n }\n\n const service_controller = {\n async initialize(): Promise<void> {\n service_state.setKey(\"tzGroups\", normalizeTimezoneGroups(client.utils.tzGroups));\n await ensureCart();\n const methods = market.get()?.payment_methods || [];\n if (methods.length) service_state.setKey(\"availablePaymentMethods\", methods);\n },\n\n setTimezone(tz: string): void {\n service_state.setKey(\"timezone\", tz);\n service_state.setKey(\"calendar\", serviceCalendar());\n const state = service_state.get();\n if (state.selectedDate) {\n service_state.setKey(\"slots\", computeServiceSlots(state.selectedDate));\n service_state.setKey(\"selectedSlot\", null);\n service_state.setKey(\"quote\", null);\n service_state.setKey(\"quoteError\", null);\n activateServiceProviderForms();\n }\n },\n\n async select(service: StorefrontService): Promise<void> {\n service_form_definitions.clear();\n clearServiceFormState(null, true);\n service_state.set({\n ...service_state.get(),\n service: null,\n serviceProviders: [],\n providers: [],\n selectedProviderId: null,\n availability: null,\n selectedDate: null,\n slots: [],\n selectedSlot: null,\n dateTimeConfirmed: false,\n quote: null,\n quoteError: null,\n loading: true,\n });\n try {\n const [fullService, serviceProviders] = await Promise.all([\n client.eshop.service.get({ id: service.id }),\n client.eshop.service.findProviders({\n service_id: service.id,\n }),\n ]);\n const providerIds = [...new Set(serviceProviders.map((relationship) => relationship.provider_id))];\n const [providerResults] = await Promise.all([\n Promise.all(providerIds.map((id) => client.eshop.provider.get({ id }).catch(() => null))),\n loadServiceFormDefinitions(serviceProviders),\n ]);\n\n service_state.set({\n ...service_state.get(),\n service: fullService,\n serviceProviders,\n providers: providerResults.filter(\n (provider): provider is StorefrontProvider => provider !== null,\n ),\n selectedProviderId: null,\n availability: null,\n selectedDate: null,\n slots: [],\n selectedSlot: null,\n currentMonth: new Date(new Date().getFullYear(), new Date().getMonth(), 1),\n loading: false,\n dateTimeConfirmed: false,\n quote: null,\n quoteError: null,\n });\n activateServiceProviderForms();\n await service_controller.loadMonth();\n } catch (error) {\n service_form_definitions.clear();\n clearServiceFormState(readErrorMessage(error, \"Failed to load booking forms.\"));\n service_state.setKey(\"loading\", false);\n throw error;\n }\n },\n\n async loadMonth(): Promise<void> {\n const state = service_state.get();\n if (!state.service) return;\n service_state.setKey(\"loading\", true);\n try {\n const chainedStart = service_chain_start.get();\n let from: number;\n let to: number;\n if (chainedStart) {\n from = chainedStart;\n to = chainedStart;\n } else {\n const month = state.currentMonth;\n from = Math.floor(Date.UTC(month.getFullYear(), month.getMonth(), 1) / 1000);\n to = Math.floor(Date.UTC(month.getFullYear(), month.getMonth() + 1, 1) / 1000);\n }\n const availability = await loadAvailability({\n service_id: state.service.id,\n from,\n to,\n });\n service_state.setKey(\"availability\", availability);\n service_state.setKey(\"calendar\", serviceCalendar());\n } finally {\n service_state.setKey(\"loading\", false);\n }\n },\n\n prevMonth(): void {\n const { currentMonth } = service_state.get();\n service_state.setKey(\"currentMonth\", new Date(currentMonth.getFullYear(), currentMonth.getMonth() - 1, 1));\n void service_controller.loadMonth();\n },\n\n nextMonth(): void {\n const { currentMonth } = service_state.get();\n service_state.setKey(\"currentMonth\", new Date(currentMonth.getFullYear(), currentMonth.getMonth() + 1, 1));\n void service_controller.loadMonth();\n },\n\n selectProvider(providerId: string | null): void {\n const state = service_state.get();\n if (providerId && !resolveServiceProvider(state, providerId)) {\n throw new Error(`Provider ${providerId} is not configured for the selected service`);\n }\n service_state.set({\n ...state,\n selectedProviderId: providerId,\n selectedDate: null,\n slots: [],\n selectedSlot: null,\n dateTimeConfirmed: false,\n quote: null,\n quoteError: null,\n });\n activateServiceProviderForms(providerId);\n void service_controller.loadMonth();\n },\n\n selectDate(cell: ArkyCalendarDay): void {\n if (cell.blank || !cell.available) return;\n const state = service_state.get();\n service_state.set({\n ...state,\n selectedDate: cell.iso,\n slots: computeServiceSlots(cell.iso),\n selectedSlot: null,\n dateTimeConfirmed: false,\n quote: null,\n quoteError: null,\n });\n activateServiceProviderForms();\n service_state.setKey(\"calendar\", serviceCalendar());\n },\n\n selectTimeSlot(slot: ArkyServiceSlot | null): void {\n const state = service_state.get();\n if (slot) {\n if (!state.service || slot.serviceId !== state.service.id) {\n throw new Error(\"The selected slot does not belong to the selected service\");\n }\n if (state.selectedProviderId && slot.providerId !== state.selectedProviderId) {\n throw new Error(\"The selected slot does not belong to the selected provider\");\n }\n if (!resolveServiceProvider(state, slot.providerId)) {\n throw new Error(`Provider ${slot.providerId} is not configured for the selected service`);\n }\n }\n service_state.set({\n ...state,\n selectedSlot: slot,\n dateTimeConfirmed: false,\n quote: null,\n quoteError: null,\n });\n activateServiceProviderForms(slot?.providerId);\n },\n\n resetDateSelection(): void {\n service_state.set({\n ...service_state.get(),\n selectedDate: null,\n slots: [],\n selectedSlot: null,\n dateTimeConfirmed: false,\n quote: null,\n quoteError: null,\n });\n activateServiceProviderForms();\n },\n\n updateCalendar(): void {\n service_state.setKey(\"calendar\", serviceCalendar());\n },\n\n findFirstAvailable(): void {\n for (const day of service_state.get().calendar) {\n if (!day.blank && day.available) {\n service_controller.selectDate(day);\n return;\n }\n }\n },\n\n async addToCart(explicitSlots?: ArkyServiceSlot[]): Promise<void> {\n const state = service_state.get();\n const slots = explicitSlots || (state.selectedSlot ? [state.selectedSlot] : []);\n if (slots.length === 0) return;\n const first = slots[0];\n if (!state.service || first.serviceId !== state.service.id) {\n throw new Error(\"The booking slots do not belong to the selected service\");\n }\n const relationship = resolveServiceProvider(state, first.providerId);\n if (!relationship) {\n throw new Error(`Provider ${first.providerId} is not configured for the selected service`);\n }\n let forms: FormEntry[];\n try {\n forms = configuredServiceFormEntries(relationship);\n } catch (error) {\n service_form_state.setKey(\"error\", readErrorMessage(error, \"Booking forms are invalid.\"));\n throw error;\n }\n const displayName = serviceName(state.service, currentLocale());\n const enriched = slots.map((slot) => ({\n ...slot,\n serviceName: displayName,\n date: slot.dateText,\n }));\n const nextItems = [...service_items.get(), toServiceCartItem(enriched, forms)];\n await syncServiceCart(nextItems);\n service_state.set({\n ...service_state.get(),\n selectedDate: null,\n slots: [],\n selectedSlot: null,\n dateTimeConfirmed: false,\n quote: null,\n quoteError: null,\n });\n activateServiceProviderForms(service_state.get().selectedProviderId, true);\n service_state.setKey(\"calendar\", serviceCalendar());\n },\n\n async removeFromCart(bookingId: string): Promise<void> {\n await syncServiceCart(service_items.get().filter((item) => item.id !== bookingId));\n },\n\n async clearCart(): Promise<void> {\n await syncServiceCart([]);\n },\n\n async checkout(\n paymentMethodId?: string,\n forms: FormEntry[] = [],\n ): Promise<StorefrontOrderCheckoutResult> {\n const state = service_state.get();\n const items = service_items.get();\n if (!items.length) throw new Error(\"Cart is empty\");\n service_state.setKey(\"loading\", true);\n try {\n const result = await checkout({\n service_items: items,\n payment_method_key: paymentMethodId,\n promo_code: state.promoCode || undefined,\n forms,\n });\n service_state.setKey(\"cartId\", cart.get()?.id || null);\n return result;\n } finally {\n service_state.setKey(\"loading\", false);\n }\n },\n\n async fetchQuote(\n paymentMethodId?: string,\n promoCode?: string | null,\n ): Promise<StorefrontOrderQuote | null> {\n const state = service_state.get();\n const items = service_items.get();\n if (!items.length) return null;\n service_state.setKey(\"fetchingQuote\", true);\n service_state.setKey(\"quoteError\", null);\n try {\n service_state.setKey(\"promoCode\", promoCode || null);\n const response = await fetchQuote({\n service_items: items,\n payment_method_key: paymentMethodId,\n promo_code: promoCode || undefined,\n });\n service_state.setKey(\"cartId\", cart.get()?.id || null);\n service_state.setKey(\"quote\", response);\n const methods = response?.payment_methods || market.get()?.payment_methods || [];\n if (methods.length) service_state.setKey(\"availablePaymentMethods\", methods);\n return response;\n } catch (error) {\n service_state.setKey(\"quoteError\", readErrorMessage(error, \"Failed to fetch quote.\"));\n return null;\n } finally {\n service_state.setKey(\"fetchingQuote\", false);\n }\n },\n\n getProvidersList(): StorefrontProvider[] {\n return service_state.get().providers;\n },\n\n prevStep(): void {\n const current = serviceCurrentStepName();\n if (current === \"review\") {\n service_state.setKey(\"dateTimeConfirmed\", false);\n return;\n }\n if (current === \"datetime\") {\n service_state.setKey(\"selectedSlot\", null);\n service_state.setKey(\"dateTimeConfirmed\", false);\n service_state.setKey(\"quote\", null);\n service_state.setKey(\"quoteError\", null);\n activateServiceProviderForms();\n }\n },\n\n nextStep(): void {\n if (serviceCurrentStepName() === \"datetime\" && service_can_proceed.get()) {\n service_state.setKey(\"dateTimeConfirmed\", true);\n }\n },\n\n getServicePrice(): string {\n const state = service_state.get();\n const relationship = resolveServiceProvider(state);\n if (!relationship) return \"\";\n try {\n const price = priceForMarket(relationship.prices, currentMarketKey(), market.get()?.currency);\n return client.utils.formatPrice([price]);\n } catch {\n return \"\";\n }\n },\n\n formatDateDisplay: formatServiceDateDisplay,\n serviceItemsFromSlots(slots: ArkyServiceSlot[], forms: FormEntry[] = []): ArkyServiceCartItem[] {\n return slots.length ? [toServiceCartItem(slots, forms)] : [];\n },\n };\n\n async function loadEntry(\n params: ArkyCmsEntryParams,\n options?: RequestOptions,\n ): Promise<StorefrontCollectionEntry> {\n cms_state.setKey(\"loading\", true);\n cms_state.setKey(\"error\", null);\n try {\n const { locale: nextLocale, market: nextMarket, ...entryParams } = params;\n setContext({ locale: nextLocale, market: nextMarket });\n\n if (entryParams.id) {\n const entry = await client.cms.entry.get(entryParams as GetEntryParams, options);\n const cacheKey = entryParams.key || entryParams.id || entry.id;\n cms_state.setKey(\"entries\", {\n ...cms_state.get().entries,\n [cacheKey]: entry,\n });\n return entry;\n }\n\n if (!entryParams.collection_id || !entryParams.key) {\n throw new Error(\"ArkyCmsEntryParams requires id, or collection_id and key\");\n }\n\n const result = await client.cms.entry.find(\n {\n ...entryParams,\n collection_id: entryParams.collection_id,\n key: entryParams.key,\n limit: 1,\n } as GetEntriesParams,\n options,\n );\n const entry = result.items?.[0];\n if (!entry) {\n throw new Error(\"CMS entry not found\");\n }\n cms_state.setKey(\"entries\", {\n ...cms_state.get().entries,\n [entryParams.key]: entry,\n });\n return entry;\n } catch (error) {\n cms_state.setKey(\"error\", readErrorMessage(error, \"Failed to load CMS entry.\"));\n throw error;\n } finally {\n cms_state.setKey(\"loading\", false);\n }\n }\n\n function formCacheKey(params: StorefrontParams<GetFormParams>): string {\n const identifier = params.id ? `id:${params.id}` : params.key ? `key:${params.key}` : \"missing\";\n return identifier;\n }\n\n async function loadForm(\n params: StorefrontParams<GetFormParams>,\n options?: RequestOptions,\n ): Promise<StorefrontForm> {\n cms_state.setKey(\"loading\", true);\n cms_state.setKey(\"error\", null);\n try {\n const form = await client.cms.form.get(params, options);\n const forms = { ...cms_state.get().forms };\n forms[formCacheKey({ id: form.id })] = form;\n forms[formCacheKey({ key: form.key })] = form;\n cms_state.setKey(\"forms\", forms);\n return form;\n } catch (error) {\n cms_state.setKey(\"error\", readErrorMessage(error, \"Failed to load CMS form.\"));\n throw error;\n } finally {\n cms_state.setKey(\"loading\", false);\n }\n }\n\n async function submitForm(\n params: StorefrontParams<SubmitFormParams>,\n options?: RequestOptions,\n ): Promise<StorefrontFormSubmission> {\n await ensureSession();\n return client.cms.form.submit(params, options);\n }\n\n async function submitFormByKey(\n params: ArkySubmitFormByKeyParams,\n options?: RequestOptions,\n ): Promise<StorefrontFormSubmission> {\n const form = await loadForm({ key: params.key }, options);\n const entry = createFormEntryFromValues(form, params.values);\n return submitForm({ form_id: form.id, fields: entry.fields }, options);\n }\n\n async function loadProducts(\n params: StorefrontParams<GetProductsParams> = {},\n options?: RequestOptions,\n ): Promise<StorefrontPage<Product>> {\n eshop_state.setKey(\"loading_products\", true);\n eshop_state.setKey(\"error\", null);\n try {\n const response = await client.eshop.product.find(params, options);\n eshop_state.setKey(\"products\", response.items || []);\n eshop_state.setKey(\"product_cursor\", response.cursor || null);\n return response;\n } catch (error) {\n eshop_state.setKey(\"error\", readErrorMessage(error, \"Failed to load products.\"));\n throw error;\n } finally {\n eshop_state.setKey(\"loading_products\", false);\n }\n }\n\n async function loadServices(\n params: StorefrontParams<GetServicesParams> = {},\n options?: RequestOptions,\n ): Promise<StorefrontPage<Service>> {\n eshop_state.setKey(\"loading_services\", true);\n eshop_state.setKey(\"error\", null);\n try {\n const response = await client.eshop.service.find(params, options);\n eshop_state.setKey(\"services\", response.items || []);\n eshop_state.setKey(\"service_cursor\", response.cursor || null);\n return response;\n } catch (error) {\n eshop_state.setKey(\"error\", readErrorMessage(error, \"Failed to load services.\"));\n throw error;\n } finally {\n eshop_state.setKey(\"loading_services\", false);\n }\n }\n\n async function loadProviders(\n params: StorefrontParams<GetProvidersParams> = {},\n options?: RequestOptions,\n ): Promise<StorefrontPage<Provider>> {\n eshop_state.setKey(\"loading_providers\", true);\n eshop_state.setKey(\"error\", null);\n try {\n const response = await client.eshop.provider.find(params, options);\n eshop_state.setKey(\"providers\", response.items || []);\n eshop_state.setKey(\"provider_cursor\", response.cursor || null);\n return response;\n } catch (error) {\n eshop_state.setKey(\"error\", readErrorMessage(error, \"Failed to load providers.\"));\n throw error;\n } finally {\n eshop_state.setKey(\"loading_providers\", false);\n }\n }\n\n async function loadAvailability(\n params: StorefrontParams<GetAvailabilityParams>,\n options?: RequestOptions,\n ) {\n eshop_state.setKey(\"loading_availability\", true);\n eshop_state.setKey(\"error\", null);\n try {\n const response = await client.eshop.service.getAvailability(params, options);\n eshop_state.setKey(\"availability\", response);\n return response;\n } catch (error) {\n eshop_state.setKey(\"error\", readErrorMessage(error, \"Failed to load availability.\"));\n throw error;\n } finally {\n eshop_state.setKey(\"loading_availability\", false);\n }\n }\n\n async function useExperiment(params: string | UseExperimentParams): Promise<ExperimentUseResponse> {\n await ensureSession();\n const input = typeof params === \"string\" ? { key: params } : params;\n return client.experiments.use(input);\n }\n\n async function trackAction(params: TrackActionParams): Promise<void> {\n await ensureSession();\n return client.action.track(params);\n }\n\n const cart_store = {\n cart,\n product_items,\n service_items,\n quote_result: quote,\n promo_code,\n last_order,\n status: cart_status,\n product_item_count,\n service_item_count,\n item_count,\n snapshot,\n load: ensureCart,\n refresh: syncCart,\n addProduct,\n setProductQuantity,\n removeProduct,\n addServiceItem,\n removeServiceItem,\n clear: clearCart,\n clearLocal: clearLocalCart,\n quote: fetchQuote,\n checkout,\n payment: {\n controller: payment_controller,\n ready: payment_ready,\n setController: setPaymentController,\n getController: () => payment_controller.get(),\n mountStripe: mountStripePayment,\n update: updatePaymentController,\n destroy: destroyPaymentController,\n },\n applyPromoCode(code: string, input: Omit<ArkyCartInput, \"promo_code\"> = {}) {\n return fetchQuote({ ...input, promo_code: code });\n },\n removePromoCode(input: Omit<ArkyCartInput, \"promo_code\"> = {}) {\n return fetchQuote({ ...input, promo_code: null });\n },\n selectShippingMethod(id: string | null) {\n cart_status.setKey(\"selected_shipping_method_id\", id);\n },\n locationToAddress,\n createFormEntry,\n buildItems: checkoutItems,\n buildProductItems: toProductCheckoutItems,\n buildServiceItems: toServiceCheckoutItems,\n };\n\n const product_store = {\n get: (params: StorefrontParams<GetProductParams>, options?: RequestOptions) =>\n client.eshop.product.get(params, options),\n list: loadProducts,\n };\n\n const service_store = {\n get: (params: StorefrontParams<GetServiceParams>, options?: RequestOptions) =>\n client.eshop.service.get(params, options),\n list: loadServices,\n listProviders: (\n params: StorefrontParams<FindServiceProvidersParams>,\n options?: RequestOptions,\n ) => client.eshop.service.findProviders(params, options),\n getAvailability: loadAvailability,\n state: service_state,\n form_state: service_form_state,\n form_groups: service_form_groups,\n form_blocks: service_form_blocks,\n current_step_name: service_current_step_name,\n can_proceed: service_can_proceed,\n month_year: service_month_year,\n chain_start: service_chain_start,\n total_steps: service_total_steps,\n steps: service_steps,\n current_step: service_current_step,\n initialize: service_controller.initialize,\n select: service_controller.select,\n setTimezone: service_controller.setTimezone,\n loadMonth: service_controller.loadMonth,\n prevMonth: service_controller.prevMonth,\n nextMonth: service_controller.nextMonth,\n selectProvider: service_controller.selectProvider,\n selectDate: service_controller.selectDate,\n selectTimeSlot: service_controller.selectTimeSlot,\n resetDateSelection: service_controller.resetDateSelection,\n updateCalendar: service_controller.updateCalendar,\n findFirstAvailable: service_controller.findFirstAvailable,\n addToCart: service_controller.addToCart,\n removeFromCart: service_controller.removeFromCart,\n clearCart: service_controller.clearCart,\n getProvidersList: service_controller.getProvidersList,\n prevStep: service_controller.prevStep,\n nextStep: service_controller.nextStep,\n getServicePrice: service_controller.getServicePrice,\n formatDateDisplay: service_controller.formatDateDisplay,\n serviceItemsFromSlots: service_controller.serviceItemsFromSlots,\n };\n\n return {\n client,\n session,\n setup,\n market,\n market_key,\n locale,\n currency,\n allowed_payment_methods,\n payment_config,\n identify,\n identifyContactEmailIfMissing,\n verify: client.verify,\n me: client.me,\n logout: client.logout,\n onAuthStateChanged: client.onAuthStateChanged,\n get isAuthenticated() {\n return client.isAuthenticated;\n },\n setMarket,\n setLocale,\n setContext,\n getMarket: currentMarketKey,\n getLocale: currentLocale,\n cms: {\n state: cms_state,\n collection: {\n get: (\n params: StorefrontParams<GetCollectionParams>,\n options?: RequestOptions,\n ) => client.cms.collection.get(params, options),\n },\n entry: {\n get: loadEntry,\n find: (\n params: StorefrontParams<GetEntriesParams>,\n options?: RequestOptions,\n ) => client.cms.entry.find(params, options),\n },\n form: {\n get: loadForm,\n submit: submitForm,\n submitByKey: submitFormByKey,\n },\n taxonomy: client.cms.taxonomy,\n },\n eshop: {\n state: eshop_state,\n product: product_store,\n service: service_store,\n provider: {\n get: (\n params: StorefrontParams<GetProviderParams>,\n options?: RequestOptions,\n ) => client.eshop.provider.get(params, options),\n list: loadProviders,\n },\n order: client.eshop.order,\n cart: cart_store,\n },\n crm: client.crm,\n action: {\n track(params: TrackActionParams) {\n return trackAction(params);\n },\n pageView(payload: Record<string, unknown> = {}) {\n return trackAction({ key: \"page.view\", payload });\n },\n state: atom<StorefrontAction | null>(null),\n },\n experiments: {\n use: useExperiment,\n },\n support: client.support,\n store: {\n ...client.store,\n setup,\n load: loadSetup,\n },\n utils: client.utils,\n };\n}\n\ntype InitializedStoreCore = ReturnType<typeof initializeStoreCore>;\n\nexport type InitializedStore = InitializedStoreCore & {\n withContext(context: ArkyStoreContext): InitializedStore;\n};\n\nfunction initializeStore(\n publishableKey: string,\n config: ArkyStoreConfig,\n scopedClient?: ReturnType<typeof createStorefront>,\n): InitializedStore {\n const store = initializeStoreCore(publishableKey, config, scopedClient);\n return Object.assign(store, {\n withContext(context: ArkyStoreContext): InitializedStore {\n return initializeStore(\n publishableKey,\n {\n ...config,\n locale: context.locale ?? store.getLocale(),\n market: context.market ?? store.getMarket(),\n },\n store.client.withContext(context),\n );\n },\n });\n}\n\nexport function initialize(\n publishableKey: string,\n options: ArkyStoreConfig = {},\n): InitializedStore {\n return initializeStore(publishableKey, options);\n}\n\nexport type ArkyStore = InitializedStore;\nexport type ArkyCartStore = ArkyStore[\"eshop\"][\"cart\"];\nexport type ArkyServiceStore = ArkyStore[\"eshop\"][\"service\"];\n","export type {\n EshopCartItem,\n Cart,\n CartOrigin,\n CartStatus,\n EshopStoreState,\n Store,\n Webhook,\n WebhookEventSubscription,\n BuildHook,\n BuildHookType,\n PaymentStoreConfig,\n SocialConnectResponse,\n SocialDestinationMetadata,\n SocialOAuthCallbackResponse,\n SocialOAuthCallbackStatus,\n SocialOAuthDestinationOption,\n SocialConnection,\n SocialConnectionCredential,\n SocialConnectionData,\n SocialConnectionProviderData,\n SocialProviderCapability,\n SocialConnectionType,\n InstagramPlacement,\n SocialAnalyticsCapabilities,\n SocialEngagementCapabilities,\n SocialPublication,\n SocialPublicationComment,\n SocialPublicationCommentClassificationResult,\n SocialPublicationCommentIntent,\n SocialPublicationCommentPriority,\n SocialPublicationEngagementSyncResult,\n SocialCommentReply,\n SocialCommentReplyError,\n SocialCommentReplyEvidence,\n SocialCommentReplyStatus,\n SocialPublicationCommentReplyResponse,\n SocialPublicationCommentStatus,\n SocialPublicationContent,\n SocialPublicationEffect,\n SocialPublicationEffectError,\n SocialPublicationEffectEvidence,\n SocialPublicationEffectRequest,\n SocialPublicationEffectStatus,\n SocialPublicationMetricSnapshot,\n SocialPublicationMutationResponse,\n SocialPublicationStatus,\n SocialPublicationValidation,\n TiktokPrivacy,\n ValidationError,\n YoutubePrivacy,\n Block,\n Currency,\n Price,\n OrderPayment,\n OrderMoney,\n OrderFinancialSummary,\n PaymentProvider,\n PaymentProviderConnection,\n PaymentProviderConnectionError,\n PaymentProviderConnectionStatus,\n StripePaymentProviderConnectResponse,\n OrderPaymentTax,\n OrderPaymentTaxLine,\n OrderPaymentPromoCode,\n OrderRefund,\n PaymentTransactionProvider,\n PaymentTransactionRequestType,\n PaymentTransactionType,\n PaymentTransactionStatus,\n PaymentTransaction,\n OrderQuote,\n RefundStatus,\n CheckoutPaymentAction,\n StoreSubscription,\n StoreSubscriptionAction,\n StoreSubscriptionActionError,\n StoreSubscriptionActionRequest,\n StoreSubscriptionActionResult,\n StoreSubscriptionActionStatus,\n StoreSubscriptionEffect,\n StoreSubscriptionEffectError,\n StoreSubscriptionEffectStatus,\n StoreSubscriptionEffectType,\n StoreSubscriptionPayment,\n StoreSubscriptionStatus,\n SubscriptionPlan,\n SubscriptionPlanFeature,\n SubscriptionPlanFeatureType,\n SubscriptionPrice,\n ContactListMembershipCancellation,\n ContactListMembershipCancellationSafeError,\n ContactListMembershipCancellationStatus,\n ContactListMembershipCancellationType,\n ContactListMembershipPaymentAttempt,\n ContactListMembershipPaymentAttemptSafeError,\n ContactListMembershipPaymentAttemptStatus,\n ContactListMembershipPaymentAttemptType,\n ContactListMembershipRefund,\n ContactListMembershipRefundSafeError,\n ContactListMembershipRefundStatus,\n ContactListMembershipRefundType,\n StorefrontContactList,\n StorefrontContactListType,\n StorefrontContactListPlan,\n StorefrontContactListMembership,\n StorefrontContactListPaymentAttemptSummary,\n PaymentMethod,\n ShippingMethod,\n ShippingWeightTier,\n Zone,\n Market,\n Address,\n GeoLocation,\n ZoneLocation,\n Location,\n PromoCodeValidation,\n PaginatedResponse,\n Language,\n Access,\n Media,\n MediaSize,\n MediaResolution,\n Coordinates,\n ProviderWithTimeline,\n Collection,\n BlockSchema,\n BlockSchemaProperties,\n BlockSchemaType,\n CollectionEntry,\n EntryBlockQuery,\n MediaRef,\n FieldOperation,\n Workflow,\n WorkflowNode,\n WorkflowEdge,\n WorkflowTriggerNode,\n WorkflowHttpNode,\n WorkflowDeployWebhookNode,\n WorkflowGoogleDriveUploadNode,\n WorkflowConnection,\n WorkflowConnectionConnectUrl,\n WorkflowConnectionData,\n WorkflowConnectionType,\n GoogleDriveWorkflowConnectionData,\n GoogleDriveWorkflowProfile,\n WorkflowSwitchNode,\n WorkflowSwitchRule,\n WorkflowTransformNode,\n WorkflowLoopNode,\n WorkflowHttpMethod,\n WorkflowExecution,\n WorkflowEffect,\n WorkflowEffectEvidence,\n WorkflowEffectError,\n WorkflowEffectStatus,\n WorkflowEffectType,\n WorkflowExecutionInput,\n ExecutionStatus,\n NodeResult,\n ContactListType,\n ContactListPlan,\n ContactListPlanCatalogSafeError,\n ContactListPlanCatalogStatus,\n ContactListPlanCatalogType,\n ContactListPlanStatus,\n ContactListContentAccess,\n ContactListContentAccessStatus,\n ContactListContentAccessTarget,\n ContactListAccessResponse,\n ContactListContentAccessResponse,\n ContactListManagementContactList,\n ContactListManagementMembership,\n ContactListManagementResponse,\n ContactListSubscribeResponse,\n Event,\n EventAction,\n ShippingStatus,\n ShippingProvider,\n ShippingRateLine,\n ShippingLine,\n FulfillmentOrderStatus,\n FulfillmentOrderRequestStatus,\n FulfillmentOrderLine,\n FulfillmentOrder,\n OrderFulfillmentSummary,\n ShippingRate,\n Parcel,\n ShippingLabelStatus,\n ShippingLabelRefund,\n ShippingLabelRefundStatus,\n ShippingLabelRefundReconciliationStatus,\n ShippingLabelAdjustment,\n ShippingLabelAdjustmentStatus,\n ShippingLabelSettlement,\n ShippingLabelSettlementDirection,\n ShippingLabelSettlementStatus,\n ShippingLabelSettlementType,\n ShipmentAllocationStatus,\n ShipmentLine,\n Shipment,\n CreateShipmentResponse,\n CustomsItem,\n CustomsDeclaration,\n GeoLocationBlock,\n Service,\n Provider,\n ServiceProvider,\n ServiceDuration,\n ProviderTimelinePoint,\n TimelinePoint,\n WorkingHour,\n WorkingDay,\n SpecificDate,\n Order,\n OrderItem,\n OrderItemSnapshot,\n ProductLineItem,\n ServiceLineItem,\n ProductLineItemSnapshot,\n ServiceLineItemSnapshot,\n DiscountAllocation,\n TaxLine,\n LineMoneySnapshot,\n OrderItemFulfillmentStatus,\n BookingOrderItemStatus,\n QuoteLine,\n ProductQuoteLine,\n ServiceQuoteLine,\n ProductQuoteLineAvailability,\n ServiceQuoteLineAvailability,\n OrderItemStatus,\n OrderStatus,\n OrderPaymentSummaryStatus,\n OrderFulfillmentStatus,\n OrderPaymentStatus,\n OrderCancellationReason,\n HistoryEntry,\n DigitalAccessGrantStatus,\n DigitalAccessGrant,\n DigitalAccessDownloadResponse,\n Product,\n ProductVariant,\n ProductInventory,\n DigitalAssetType,\n DigitalAssetStatus,\n DigitalDeliveryPolicy,\n DigitalAsset,\n InventoryLevel,\n GalleryItem,\n EmailTemplate,\n EmailTemplateType,\n EmailRecipients,\n EmailSend,\n EmailSendRequest,\n EmailSendResult,\n EmailSendDeliveryResult,\n EmailDelivery,\n EmailDeliveryError,\n EmailDeliveryErrorKind,\n EmailDeliveryStatus,\n EmailDeliveryType,\n GetEmailDeliveryParams,\n RetryEmailDeliveryParams,\n EmailSendTemplateData,\n Form,\n FormSubmission,\n FormSchema,\n FormSchemaType,\n FormField,\n FormFieldType,\n FormValue,\n FormValues,\n FormEntry,\n Taxonomy,\n TaxonomyEntry,\n TaxonomyQuery,\n TaxonomySchema,\n TaxonomySchemaType,\n TaxonomyField,\n TaxonomyFieldQuery,\n PromoCode,\n Contact,\n ContactSessionRecord,\n ContactSessionIssued,\n ContactSessionStatus,\n ContactChannel,\n ChannelType,\n OpportunityStage,\n OpportunityType,\n OpportunitySource,\n Action,\n ActionData,\n ActionContext,\n ContactList,\n ContactListMembership,\n ContactListMember,\n Mailbox,\n MailboxConnectionSecurity,\n MailboxPreset,\n MailboxSyncStatus,\n GoogleMailboxProvider,\n SmtpImapMailboxProviderInput,\n SmtpImapMailboxProvider,\n OutreachStep,\n OutreachStepType,\n ManualTaskContinueBehavior,\n CampaignManualTaskOutcome,\n OutreachPersonalizationCounters,\n OutreachPersonalizationState,\n CampaignLaunchState,\n Campaign,\n CampaignLaunchReadiness,\n CampaignEnrollment,\n CampaignEnrollmentImportResult,\n CampaignEnrollmentConversationResponse,\n CampaignMessage,\n Suppression,\n LeadResearchRun,\n LeadResearchRunStatus,\n LeadScores,\n LeadInsight,\n CampaignRoute,\n ChannelMessage,\n LeadEmailClassification,\n LeadValidationCheck,\n LeadValidationCheckStatus,\n LeadEmailValidationResult,\n LeadResearchMessage,\n LeadResearchMessageRole,\n ResearchContactListMember,\n SendLeadResearchMessageResult,\n Account,\n AccountApiToken,\n AccountApiTokenCreated,\n AccountSession,\n AccountUpdateResponse,\n StoreMembership,\n StoreMember,\n Discount,\n Condition,\n ServiceStatus,\n ProviderStatus,\n ProductStatus,\n ContactStatus,\n ContactListStatus,\n ContactListSource,\n ContactListMembershipStatus,\n MailboxStatus,\n CampaignStatus,\n CampaignLaunchStatus,\n CampaignEnrollmentStatus,\n CampaignEnrollmentImportSource,\n CampaignMessageCopySource,\n CampaignMessageDirection,\n CampaignMessageType,\n CampaignMessageStatus,\n OutreachPersonalizationStatus,\n OutreachThreadMode,\n SuppressionStatus,\n SuppressionTargetType,\n SuppressionScopeType,\n SuppressionReason,\n SuppressionSource,\n WorkflowStatus,\n MutableWorkflowStatus,\n WorkflowSendEmailNode,\n PromoCodeStatus,\n CollectionStatus,\n EntryStatus,\n EmailTemplateStatus,\n EmailTemplateVariable,\n EmailTemplateVariableSource,\n FormStatus,\n TaxonomyStatus,\n} from \"./types\";\nexport { PaymentMethodType } from \"./types\";\n\nexport type {\n FindContactSessionsParams,\n RevokeAllContactSessionsParams,\n RevokeContactSessionParams,\n GetAvailabilityParams,\n AvailabilitySlot,\n DaySlots,\n ProviderAvailability,\n AvailabilityResponse,\n Slot,\n SlotRange,\n ConditionValue,\n ProductQuoteItemInput,\n ServiceQuoteItemInput,\n OrderQuoteItemInput,\n ProductCheckoutItemInput,\n ServiceCheckoutItemInput,\n OrderCheckoutItemInput,\n TrustedProductCheckoutItemInput,\n TrustedServiceCheckoutItemInput,\n TrustedOrderCheckoutItemInput,\n CreateOrderRefundParams,\n CreateOrderRefundResponse,\n FindOrderRefundsParams,\n GetOrderRefundParams,\n GetOrderPaymentParams,\n RetryPaymentTransactionParams,\n FindPaymentTransactionsParams,\n GetPaymentTransactionParams,\n FindDigitalAccessGrantsParams,\n GetDigitalAccessGrantParams,\n DownloadDigitalAccessParams,\n ActivateDigitalAccessGrantParams,\n RevokeDigitalAccessGrantParams,\n GetCurrentCartParams,\n GetCartParams,\n FindCartsParams,\n CreateCartParams,\n UpdateCartParams,\n AddCartItemParams,\n RemoveCartItemParams,\n ClearCartParams,\n QuoteCartParams,\n CheckoutCartParams,\n SystemTemplateKey,\n ImportFieldMapping,\n ImportPreviewRow,\n ImportContactsParams,\n ImportContactsPreviewParams,\n ImportContactsPreviewResult,\n ImportContactsResult,\n GetCollectionsParams,\n CreateCollectionParams,\n UpdateCollectionParams,\n GetCollectionParams,\n DeleteCollectionParams,\n GetEntriesParams,\n CreateEntryParams,\n UpdateEntryParams,\n GetEntryParams,\n DeleteEntryParams,\n GetShippingRatesParams,\n FindShipmentsParams,\n FindFulfillmentOrdersParams,\n GetFulfillmentOrderParams,\n GetShipmentParams,\n CreateShipmentParams,\n RetryShipmentParams,\n RequestShippingLabelRefundParams,\n FindShippingLabelRefundsParams,\n GetShippingLabelRefundParams,\n RetryShippingLabelRefundParams,\n FindShippingLabelAdjustmentsParams,\n FindShippingLabelSettlementsParams,\n RetryShippingLabelSettlementParams,\n CreateStoreSubscriptionActionParams,\n FindStoreSubscriptionActionEffectsParams,\n FindStoreSubscriptionActionsParams,\n GetStoreSubscriptionActionEffectParams,\n GetStoreSubscriptionActionParams,\n RetryStoreSubscriptionActionParams,\n TestWebhookParams,\n TestWebhookResponse,\n WebhookDeliveryStatus,\n CreateContactListParams,\n UpdateContactListParams,\n FindContactListsParams,\n FindStorefrontContactListsParams,\n GetContactListParams,\n CreateContactListPlanParams,\n UpdateContactListPlanParams,\n ContactListPlanPriceInput,\n FindContactListPlansParams,\n FindStorefrontContactListPlansParams,\n GetContactListPlanParams,\n RetryContactListPlanCatalogParams,\n AddContactListContactParams,\n UpdateContactListContactParams,\n RemoveContactListContactParams,\n FindContactListContactsParams,\n RefundContactListMembershipParams,\n RefundContactListMembershipResult,\n FindContactListMembershipPaymentAttemptsParams,\n FindStorefrontContactListMembershipsParams,\n GetContactListMembershipPaymentAttemptParams,\n FindContactListMembershipRefundsParams,\n GetContactListMembershipRefundParams,\n RetryContactListMembershipRefundParams,\n FindContactListMembershipCancellationsParams,\n GetContactListMembershipCancellationParams,\n RetryContactListMembershipCancellationParams,\n ImportContactRowInput,\n ImportContactRowError,\n ImportContactRowResult,\n ImportContactListRowResult,\n ImportContactListPreviewParams,\n ImportContactsIntoContactListParams,\n ImportContactsIntoContactListResult,\n SubscribeContactListParams,\n ContactListAccessParams,\n ContactListContentAccessParams,\n CreateMailboxParams,\n UpdateMailboxParams,\n FindMailboxesParams,\n GetMailboxParams,\n PrepareMailboxParams,\n TestMailboxParams,\n TestMailboxResult,\n CreateCampaignParams,\n UpdateCampaignParams,\n FindCampaignsParams,\n GetCampaignParams,\n LaunchCampaignParams,\n DuplicateCampaignParams,\n ImportCampaignEnrollmentsParams,\n GetCampaignLaunchReadinessParams,\n GenerateOutreachPersonalizedDraftsParams,\n FindCampaignEnrollmentsParams,\n UpdateCampaignEnrollmentParams,\n UpdateCampaignEnrollmentDraftParams,\n UpdateCampaignEnrollmentStepExecutionParams,\n GetCampaignEnrollmentConversationParams,\n ReplyCampaignEnrollmentParams,\n StopCampaignEnrollmentParams,\n FindCampaignMessagesParams,\n UpdateCampaignMessageParams,\n CreateSuppressionParams,\n UpdateSuppressionParams,\n FindSuppressionsParams,\n GetSuppressionParams,\n CreateLeadResearchRunParams,\n FindLeadResearchRunsParams,\n GetLeadResearchRunParams,\n UpdateLeadResearchRunParams,\n CancelLeadResearchRunParams,\n SendLeadResearchMessageParams,\n FindLeadResearchMessagesParams,\n ValidateLeadEmailParams,\n CancelSocialPublicationParams,\n ClassifySocialPublicationCommentsParams,\n ConnectStripePaymentProviderParams,\n ConnectSocialConnectionParams,\n CreateSocialCommentReplyParams,\n CreateSocialPublicationParams,\n DeletePaymentProviderParams,\n DeleteSocialConnectionParams,\n FindSocialPublicationCommentsParams,\n FindSocialPublicationsParams,\n GetSocialCapabilitiesParams,\n GetSocialOAuthAttemptParams,\n GetSocialCommentReplyParams,\n GetSocialPublicationCommentThreadParams,\n GetSocialPublicationCommentsParams,\n GetSocialPublicationEffectParams,\n GetSocialPublicationMetricsParams,\n GetSocialPublicationParams,\n ListPaymentProvidersParams,\n ListSocialCommentRepliesParams,\n ListSocialConnectionsParams,\n ListSocialPublicationEffectsParams,\n RefreshPaymentProvidersParams,\n RetrySocialCommentReplyParams,\n ScheduleSocialPublicationParams,\n SyncSocialEngagementParams,\n SyncSocialPublicationCommentsParams,\n SyncSocialPublicationCommentThreadParams,\n SyncSocialPublicationMetricsParams,\n UpdateSocialPublicationParams,\n ValidateSocialPublicationParams,\n} from \"./types/api\";\n\nexport type {\n LocationState,\n LocationCountry,\n GetCountriesResponse,\n} from \"./api/location\";\n\nexport type {\n AnalyticsTimeRange,\n AnalyticsReportKey,\n AnalyticsMetricReportKey,\n AnalyticsBreakdownReportKey,\n AnalyticsActionReportKey,\n AnalyticsCompositeReportKey,\n AnalyticsReportRequest,\n AnalyticsBlockRequest,\n AnalyticsRequest,\n AnalyticsMetricData,\n AnalyticsBreakdownItem,\n AnalyticsBreakdownData,\n BusinessOverviewData,\n RevenueByCurrencyData,\n ContactFunnelStage,\n ContactFunnelData,\n OutreachOverviewData,\n OutreachFunnelStage,\n OutreachFunnelData,\n EntityStatusOverviewData,\n DataHealthData,\n AnalyticsReport,\n AnalyticsBlockResponse,\n AnalyticsResponse,\n ActionFeedCategory,\n ActionFeedItem,\n ActionFeedSummary,\n ActionFeedCursor,\n ActionFeedData,\n} from \"./api/analytics\";\n\nexport type {\n CreateLocationParams,\n UpdateLocationParams,\n DeleteLocationParams,\n CreateMarketParams,\n UpdateMarketParams,\n MarketZoneInput,\n CreateProductVariantInput,\n UpdateProductVariantInput,\n ProductInventoryInput,\n} from \"./types/api\";\n\nexport type {\n StorefrontAction,\n TrackActionParams,\n CommonActionKey,\n ExperimentUseResponse,\n StorefrontContact,\n StorefrontDto,\n StorefrontLocation,\n StorefrontMarket,\n StorefrontSetup,\n StorefrontZone,\n UseExperimentParams,\n} from \"./api/storefront\";\nexport { COMMON_ACTION_KEYS } from \"./api/storefront\";\nexport type {\n CreateExperimentParams,\n Experiment,\n ExperimentResults,\n ExperimentStatus,\n ExperimentVariant,\n ExperimentVariantResult,\n FindExperimentsParams,\n GetExperimentParams,\n UpdateExperimentParams,\n} from \"./api/experiments\";\nexport {\n createCartController,\n type CartApi,\n type CartController,\n type CartControllerAddItemParams,\n type CartControllerCheckoutParams,\n type CartControllerClearParams,\n type CartControllerInitParams,\n type CartControllerListener,\n type CartControllerQuoteParams,\n type CartControllerRefreshParams,\n type CartControllerRemoveItemParams,\n type CartControllerState,\n type CartControllerUpdateParams,\n} from \"./cartController\";\n\nexport type { TimelineParams } from \"./api/crm\";\nexport type {\n SupportAgent,\n SupportAgentStatus,\n SupportChannel,\n SupportChannelConfig,\n SupportChannelStatus,\n SupportChannelType,\n SupportConversation,\n SupportConversationChannelContext,\n SupportMessage,\n SupportConversationResponse,\n SupportConversationStartResponse,\n StorefrontSupportConversationResponse,\n StorefrontSupportConversationStartResponse,\n SendSupportMessageParams,\n StorefrontSendSupportMessageParams,\n StorefrontGetSupportConversationParams,\n SupportAgentNode,\n SupportAgentEdge,\n SupportAgentAiConfig,\n EdgeTrigger,\n SupportAction,\n AssignSupportConversationParams,\n GetSupportConversationParams,\n ReplySupportConversationParams,\n ResolveSupportConversationParams,\n CreateSupportChannelParams,\n UpdateSupportChannelParams,\n FindSupportChannelsParams,\n FindSupportConversationsParams,\n ReceiveSupportChannelMessageParams,\n} from \"./api/support\";\nexport type {\n WorkflowToolOperation,\n WorkflowToolResource,\n WorkflowTool,\n EventMetadata,\n EventScopeField,\n} from \"./api/platform\";\n\nexport const SDK_VERSION = \"0.10.0\";\nexport const SUPPORTED_FRAMEWORKS = [\n \"astro\",\n \"react\",\n \"vue\",\n \"svelte\",\n \"vanilla\",\n] as const;\n\nimport type {\n Price,\n} from \"./types\";\n\nexport interface ApiConfig {\n httpClient: HttpClient;\n storeId: string;\n baseUrl: string;\n market: string;\n locale: string;\n authStorage: AuthStorage;\n}\n\nexport interface StorefrontApiConfig {\n httpClient: HttpClient;\n apiUrl: string;\n publishableKey: string;\n market: string;\n locale: string;\n authStorage: AuthStorage;\n}\n\nexport interface AdminSessionInternal {\n access_token: string;\n refresh_token: string;\n access_expires_at?: number;\n email?: string;\n}\n\nexport interface ContactSessionInternal {\n sessionToken: string;\n contact: import(\"./api/storefront\").StorefrontContact;\n}\n\nexport interface AdminSession {\n email?: string;\n}\n\nexport interface ContactSession {\n contact: import(\"./api/storefront\").StorefrontContact;\n}\n\nexport interface StorefrontIdentifyResult {\n contact: import(\"./api/storefront\").StorefrontContact;\n verification_challenge:\n import(\"./types/api\").VerificationChallengeResponse | null;\n}\n\nexport interface StorefrontVerifyResult {\n contact: import(\"./api/storefront\").StorefrontContact;\n}\n\nexport type AdminSessionUpdater = (\n updater: (prev: AdminSessionInternal | null) => AdminSessionInternal | null,\n) => void;\n\nexport type ContactSessionUpdater = (\n updater: (\n prev: ContactSessionInternal | null,\n ) => ContactSessionInternal | null,\n) => void;\n\nexport type AuthStateListener<T> = (session: T | null) => void;\n\nimport {\n createHttpClient,\n type HttpClientConfig,\n type HttpClient,\n type AuthStorage,\n} from \"./services/createHttpClient\";\nimport { createAccountApi } from \"./api/account\";\nimport { createAuthApi } from \"./api/auth\";\nimport { createStoreApi } from \"./api/store\";\nimport { createMediaApi } from \"./api/media\";\nimport { createNotificationApi } from \"./api/notification\";\nimport { createPromoCodeApi } from \"./api/promoCode\";\nimport { createCmsApi } from \"./api/cms\";\nimport { createEshopApi } from \"./api/eshop\";\nimport { createLocationApi } from \"./api/location\";\nimport { createMarketApi } from \"./api/market\";\nimport { createContactApi } from \"./api/crm\";\nimport {\n createAdminSupportApi,\n createStorefrontSupportApi,\n} from \"./api/support\";\nimport { createLeadResearchApi } from \"./api/leadResearch\";\nimport { createSocialApi } from \"./api/social\";\nimport { createWorkflowApi } from \"./api/workflow\";\nimport { createPlatformApi } from \"./api/platform\";\nimport { createShippingApi } from \"./api/shipping\";\nimport { createPaymentProviderApi } from \"./api/paymentProvider\";\nimport { createEmailTemplateApi } from \"./api/emailTemplate\";\nimport { createFormApi } from \"./api/form\";\nimport { createTaxonomyApi } from \"./api/taxonomy\";\nimport { createAnalyticsApi } from \"./api/analytics\";\nimport { createExperimentsApi } from \"./api/experiments\";\nimport { createStorefrontApi } from \"./api/storefront\";\nimport {\n getImageUrl,\n getBlockValue,\n getBlockTextValue,\n getBlockContentValue,\n getBlockValues,\n getBlockLabel,\n getBlockObjectValues,\n getBlockFromArray,\n formatBlockValue,\n prepareBlocksForSubmission,\n extractBlockValues,\n} from \"./utils/blocks\";\nimport {\n formatPrice,\n getPriceAmount,\n formatPayment,\n formatMinor,\n getCurrencySymbol,\n getCurrencyName,\n} from \"./utils/price\";\nimport { validatePhoneNumber } from \"./utils/validation\";\nimport { tzGroups, findTimeZone } from \"./utils/timezone\";\nimport { slugify, humanize, categorify, formatDate } from \"./utils/text\";\nimport {\n getSvgContentForAstro,\n fetchSvgContent,\n injectSvgIntoElement,\n} from \"./utils/svg\";\nimport {\n isValidKey,\n validateKey,\n toKey,\n nameToKey,\n} from \"./utils/keyValidation\";\nimport {\n getAvailableStock,\n getReservedStock,\n hasStock,\n getInventoryAt,\n getFirstAvailableFCId,\n} from \"./utils/inventory\";\n\nfunction createUtilitySurface(apiConfig: Pick<ApiConfig, \"market\">) {\n return {\n getImageUrl: (imageBlock: unknown, isBlock = true) =>\n getImageUrl(imageBlock, isBlock),\n getBlockValue,\n getBlockTextValue,\n getBlockContentValue,\n getBlockValues,\n getBlockLabel,\n getBlockObjectValues,\n getBlockFromArray,\n formatBlockValue,\n prepareBlocksForSubmission,\n extractBlockValues,\n\n formatPrice: (prices: Price[]) => formatPrice(prices, apiConfig.market),\n getPriceAmount: (prices: Price[]) => getPriceAmount(prices, apiConfig.market),\n formatPayment,\n formatMinor,\n getCurrencySymbol,\n getCurrencyName,\n validatePhoneNumber,\n\n tzGroups,\n findTimeZone,\n\n slugify,\n humanize,\n categorify,\n formatDate,\n\n getSvgContentForAstro,\n fetchSvgContent,\n injectSvgIntoElement,\n\n isValidKey,\n validateKey,\n toKey,\n nameToKey,\n\n getAvailableStock,\n getReservedStock,\n hasStock,\n getInventoryAt,\n getFirstAvailableFCId,\n };\n}\n\nconst ADMIN_STORAGE_KEY = \"arky_admin_session\";\n\nfunction readAdminSession(): AdminSessionInternal | null {\n if (typeof window === \"undefined\") return null;\n try {\n const raw = localStorage.getItem(ADMIN_STORAGE_KEY);\n return raw ? (JSON.parse(raw) as AdminSessionInternal) : null;\n } catch {\n return null;\n }\n}\n\nfunction writeAdminSession(s: AdminSessionInternal | null): void {\n if (typeof window === \"undefined\") return;\n if (s) {\n localStorage.setItem(ADMIN_STORAGE_KEY, JSON.stringify(s));\n } else {\n localStorage.removeItem(ADMIN_STORAGE_KEY);\n }\n}\n\nexport type CreateAdminConfig = Omit<\n HttpClientConfig,\n \"authStorage\" | \"storeId\"\n> & {\n storeId: string;\n market: string;\n locale?: string;\n apiToken?: string;\n};\n\nexport function createAdmin(config: CreateAdminConfig) {\n const locale = config.locale || \"en\";\n const listeners = new Set<AuthStateListener<AdminSession>>();\n\n function toPublic(s: AdminSessionInternal | null): AdminSession | null {\n return s ? { email: s.email } : null;\n }\n\n function emit(): void {\n const pub = toPublic(readAdminSession());\n for (const l of listeners) {\n Promise.resolve()\n .then(() => l(pub))\n .catch(() => {});\n }\n }\n\n const updateSession: AdminSessionUpdater = (updater) => {\n if (config.apiToken) return;\n const prev = readAdminSession();\n const next = updater(prev);\n writeAdminSession(next);\n emit();\n };\n\n const authStorage: AuthStorage = config.apiToken\n ? {\n getTokens: () => ({ access_token: config.apiToken! }),\n onTokensRefreshed: () => {},\n onForcedLogout: () => {},\n }\n : {\n getTokens() {\n const s = readAdminSession();\n if (!s) return null;\n return {\n access_token: s.access_token,\n refresh_token: s.refresh_token,\n access_expires_at: s.access_expires_at,\n };\n },\n onTokensRefreshed(tokens) {\n updateSession((prev) =>\n prev\n ? {\n ...prev,\n access_token: tokens.access_token,\n refresh_token: tokens.refresh_token ?? prev.refresh_token,\n access_expires_at:\n tokens.access_expires_at ?? prev.access_expires_at,\n }\n : null,\n );\n },\n onForcedLogout() {\n updateSession(() => null);\n },\n };\n\n const httpClient = createHttpClient({\n baseUrl: config.baseUrl,\n storeId: config.storeId,\n refreshPath: config.refreshPath,\n navigate: config.navigate,\n loginFallbackPath: config.loginFallbackPath,\n authStorage,\n });\n\n const apiConfig: ApiConfig = {\n httpClient,\n storeId: config.storeId,\n baseUrl: config.baseUrl,\n market: config.market,\n locale,\n authStorage,\n };\n\n const accountApi = createAccountApi(apiConfig);\n const authApi = createAuthApi(apiConfig, updateSession);\n const storeApi = createStoreApi(apiConfig, updateSession);\n const platformApi = createPlatformApi(apiConfig);\n\n const cmsApi = createCmsApi(apiConfig);\n const eshopApi = createEshopApi(apiConfig);\n const promoCodeApi = createPromoCodeApi(apiConfig);\n const crmApi = createContactApi(apiConfig);\n const supportApi = createAdminSupportApi(apiConfig);\n const leadResearchApi = createLeadResearchApi(apiConfig);\n const socialApi = createSocialApi(apiConfig);\n const paymentProviderApi = createPaymentProviderApi(apiConfig);\n const notificationApi = createNotificationApi(apiConfig);\n const shippingApi = createShippingApi(apiConfig);\n const locationApi = createLocationApi(apiConfig);\n const marketApi = createMarketApi(apiConfig);\n const workflowApi = createWorkflowApi(apiConfig);\n const storePaymentProviderApi = {\n list: paymentProviderApi.list,\n refresh: paymentProviderApi.refresh,\n connectStripe: paymentProviderApi.connectStripe,\n delete: paymentProviderApi.delete,\n };\n const workflowPublicApi = {\n create: workflowApi.createWorkflow,\n update: workflowApi.updateWorkflow,\n delete: workflowApi.deleteWorkflow,\n get: workflowApi.getWorkflow,\n find: workflowApi.getWorkflows,\n trigger: workflowApi.triggerWorkflow,\n getExecutions: workflowApi.getWorkflowExecutions,\n getExecution: workflowApi.getWorkflowExecution,\n listEffects: workflowApi.getWorkflowEffects,\n getEffect: workflowApi.getWorkflowEffect,\n listConnections: workflowApi.getWorkflowConnections,\n getConnectionConnectUrl: workflowApi.getWorkflowConnectionConnectUrl,\n deleteConnection: workflowApi.deleteWorkflowConnection,\n };\n const formApi = createFormApi(apiConfig);\n const taxonomyApi = createTaxonomyApi(apiConfig);\n const emailTemplateApi = createEmailTemplateApi(apiConfig);\n const analyticsApi = createAnalyticsApi(apiConfig);\n const experimentsApi = createExperimentsApi(apiConfig);\n\n const sdk = {\n account: {\n update: accountApi.updateAccount,\n delete: accountApi.deleteAccount,\n getMe: accountApi.getMe,\n search: accountApi.searchAccounts,\n apiToken: {\n list: accountApi.listApiTokens,\n create: accountApi.createApiToken,\n update: accountApi.updateApiToken,\n revoke: accountApi.revokeApiToken,\n },\n session: {\n list: accountApi.listSessions,\n revoke: accountApi.revokeSession,\n },\n auth: authApi,\n },\n store: {\n create: storeApi.createStore,\n update: storeApi.updateStore,\n get: storeApi.getStore,\n find: storeApi.getStores,\n regeneratePublishableKey: storeApi.regeneratePublishableKey,\n subscription: {\n get: storeApi.getSubscription,\n getPlans: storeApi.getSubscriptionPlans,\n action: {\n create: storeApi.createSubscriptionAction,\n find: storeApi.findSubscriptionActions,\n get: storeApi.getSubscriptionAction,\n retry: storeApi.retrySubscriptionAction,\n effect: {\n find: storeApi.findSubscriptionActionEffects,\n get: storeApi.getSubscriptionActionEffect,\n },\n },\n createPortalSession: storeApi.createPortalSession,\n },\n member: {\n add: storeApi.addMember,\n invite: storeApi.inviteUser,\n find: storeApi.findMembers,\n findOwn: storeApi.findOwnMemberships,\n remove: storeApi.removeMember,\n },\n buildHook: {\n list: storeApi.listBuildHooks,\n create: storeApi.createBuildHook,\n update: storeApi.updateBuildHook,\n delete: storeApi.deleteBuildHook,\n },\n webhook: {\n test: storeApi.testWebhook,\n list: storeApi.listWebhooks,\n create: storeApi.createWebhook,\n update: storeApi.updateWebhook,\n delete: storeApi.deleteWebhook,\n },\n config: {\n getPayment: storeApi.getPaymentConfig,\n },\n location: locationApi,\n market: marketApi,\n paymentProvider: storePaymentProviderApi,\n },\n media: createMediaApi(apiConfig),\n notification: {\n email: {\n send: notificationApi.sendEmail,\n getDelivery: notificationApi.getEmailDelivery,\n retryDelivery: notificationApi.retryEmailDelivery,\n },\n mailbox: crmApi.mailbox,\n },\n platform: platformApi,\n social: {\n connection: {\n getCapabilities: socialApi.getCapabilities,\n list: socialApi.listConnections,\n connect: socialApi.connect,\n getOAuthAttempt: socialApi.getOAuthAttempt,\n selectDestination: socialApi.selectDestination,\n delete: socialApi.deleteConnection,\n },\n publication: {\n create: socialApi.createPublication,\n update: socialApi.updatePublication,\n get: socialApi.getPublication,\n find: socialApi.findPublications,\n validate: socialApi.validatePublication,\n schedule: socialApi.schedulePublication,\n cancel: socialApi.cancelPublication,\n getComments: socialApi.getPublicationComments,\n syncComments: socialApi.syncPublicationComments,\n getCommentThread: socialApi.getPublicationCommentThread,\n syncCommentThread: socialApi.syncPublicationCommentThread,\n findComments: socialApi.findPublicationComments,\n classifyComments: socialApi.classifyPublicationComments,\n commentReply: {\n create: socialApi.createCommentReply,\n list: socialApi.listCommentReplies,\n get: socialApi.getCommentReply,\n retry: socialApi.retryCommentReply,\n },\n effect: {\n list: socialApi.listPublicationEffects,\n get: socialApi.getPublicationEffect,\n },\n getMetrics: socialApi.getPublicationMetrics,\n syncMetrics: socialApi.syncPublicationMetrics,\n syncEngagement: socialApi.syncEngagement,\n },\n },\n cms: {\n collection: {\n create: cmsApi.createCollection,\n update: cmsApi.updateCollection,\n delete: cmsApi.deleteCollection,\n get: cmsApi.getCollection,\n find: cmsApi.getCollections,\n },\n entry: {\n create: cmsApi.createEntry,\n update: cmsApi.updateEntry,\n delete: cmsApi.deleteEntry,\n get: cmsApi.getEntry,\n find: cmsApi.getEntries,\n },\n form: {\n create: formApi.createForm,\n update: formApi.updateForm,\n delete: formApi.deleteForm,\n get: formApi.getForm,\n find: formApi.getForms,\n submit: formApi.submit,\n getSubmissions: formApi.getSubmissions,\n getSubmission: formApi.getSubmission,\n updateSubmission: formApi.updateSubmission,\n },\n taxonomy: {\n create: taxonomyApi.createTaxonomy,\n update: taxonomyApi.updateTaxonomy,\n delete: taxonomyApi.deleteTaxonomy,\n get: taxonomyApi.getTaxonomy,\n find: taxonomyApi.getTaxonomies,\n getChildren: taxonomyApi.getTaxonomyChildren,\n },\n emailTemplate: {\n create: emailTemplateApi.createEmailTemplate,\n update: emailTemplateApi.updateEmailTemplate,\n delete: emailTemplateApi.deleteEmailTemplate,\n get: emailTemplateApi.getEmailTemplate,\n find: emailTemplateApi.getEmailTemplates,\n preview: emailTemplateApi.previewEmailTemplate,\n },\n },\n eshop: {\n product: {\n create: eshopApi.createProduct,\n update: eshopApi.updateProduct,\n delete: eshopApi.deleteProduct,\n get: eshopApi.getProduct,\n find: eshopApi.getProducts,\n },\n order: {\n update: eshopApi.updateOrder,\n get: eshopApi.getOrder,\n find: eshopApi.getOrders,\n getQuote: eshopApi.getQuote,\n createRefund: eshopApi.createRefund,\n getRefund: eshopApi.getRefund,\n getRefunds: eshopApi.getRefunds,\n getPayment: eshopApi.getPayment,\n retryPaymentTransaction: eshopApi.retryPaymentTransaction,\n getPaymentTransactions: eshopApi.getPaymentTransactions,\n getPaymentTransaction: eshopApi.getPaymentTransaction,\n findDigitalAccess: eshopApi.findDigitalAccess,\n getDigitalAccess: eshopApi.getDigitalAccess,\n downloadDigitalAccess: eshopApi.downloadDigitalAccess,\n activateDigitalAccess: eshopApi.activateDigitalAccess,\n revokeDigitalAccess: eshopApi.revokeDigitalAccess,\n },\n shipment: {\n getRates: shippingApi.getRates,\n create: shippingApi.createShipment,\n get: shippingApi.getShipment,\n find: shippingApi.findShipments,\n retry: shippingApi.retryShipment,\n fulfillment: {\n find: shippingApi.findFulfillmentOrders,\n get: shippingApi.getFulfillmentOrder,\n },\n refund: {\n request: shippingApi.requestRefund,\n get: shippingApi.getRefund,\n find: shippingApi.findRefunds,\n retry: shippingApi.retryRefund,\n },\n adjustment: {\n find: shippingApi.findAdjustments,\n },\n settlement: {\n find: shippingApi.findSettlements,\n retry: shippingApi.retrySettlement,\n },\n },\n cart: {\n create: eshopApi.createCart,\n update: eshopApi.updateCart,\n get: eshopApi.getCart,\n find: eshopApi.getCarts,\n addItem: eshopApi.addCartItem,\n removeItem: eshopApi.removeCartItem,\n clear: eshopApi.clearCart,\n quote: eshopApi.quoteCart,\n checkout: eshopApi.checkoutCart,\n },\n service: {\n create: eshopApi.createService,\n update: eshopApi.updateService,\n delete: eshopApi.deleteService,\n get: eshopApi.getService,\n find: eshopApi.getServices,\n getAvailability: eshopApi.getServiceAvailability,\n findProviders: eshopApi.findServiceProviders,\n createProvider: eshopApi.createServiceProvider,\n updateProvider: eshopApi.updateServiceProvider,\n deleteProvider: eshopApi.deleteServiceProvider,\n },\n provider: {\n create: eshopApi.createProvider,\n update: eshopApi.updateProvider,\n delete: eshopApi.deleteProvider,\n get: eshopApi.getProvider,\n find: eshopApi.getProviders,\n },\n promoCode: promoCodeApi,\n },\n crm: {\n contact: {\n create: crmApi.create,\n get: crmApi.get,\n find: crmApi.find,\n update: crmApi.update,\n merge: crmApi.merge,\n import: crmApi.import,\n findSessions: crmApi.findSessions,\n revokeSession: crmApi.revokeSession,\n revokeAllSessions: crmApi.revokeAllSessions,\n },\n contactList: {\n create: crmApi.contactList.create,\n update: crmApi.contactList.update,\n get: crmApi.contactList.get,\n find: crmApi.contactList.find,\n importContacts: crmApi.contactList.importContacts,\n previewImportContacts: crmApi.contactList.previewImportContacts,\n addMember: crmApi.contactList.members.add,\n updateMember: crmApi.contactList.members.update,\n removeMember: crmApi.contactList.members.remove,\n findMembers: crmApi.contactList.members.find,\n plans: crmApi.contactList.plans,\n memberships: {\n refund: crmApi.contactList.memberships.refund,\n paymentAttempts: crmApi.contactList.memberships.paymentAttempts,\n refunds: crmApi.contactList.memberships.refunds,\n cancellations: crmApi.contactList.memberships.cancellations,\n },\n },\n action: crmApi.action,\n },\n outreach: {\n campaign: crmApi.campaign,\n campaignEnrollment: crmApi.campaignEnrollment,\n campaignMessage: crmApi.campaignMessage,\n suppression: crmApi.suppression,\n leadResearch: leadResearchApi,\n },\n automation: {\n workflow: workflowPublicApi,\n support: {\n createChannel: supportApi.channel.create,\n getChannel: supportApi.channel.get,\n findChannels: supportApi.channel.find,\n updateChannel: supportApi.channel.update,\n deleteChannel: supportApi.channel.delete,\n receiveChannelMessage: supportApi.channel.receiveMessage,\n createAgent: supportApi.agent.create,\n getAgent: supportApi.agent.get,\n findAgents: supportApi.agent.find,\n updateAgent: supportApi.agent.update,\n deleteAgent: supportApi.agent.delete,\n findConversations: supportApi.conversation.find,\n getConversation: supportApi.conversation.get,\n sendConversationMessage: supportApi.conversation.sendMessage,\n replyToConversation: supportApi.conversation.reply,\n resolveConversation: supportApi.conversation.resolve,\n assignConversation: supportApi.conversation.assign,\n },\n },\n\n analytics: analyticsApi,\n experiments: experimentsApi,\n\n setStoreId: (storeId: string) => {\n apiConfig.storeId = storeId;\n },\n\n getStoreId: () => apiConfig.storeId,\n\n setMarket: (market: string) => {\n apiConfig.market = market;\n },\n\n getMarket: () => apiConfig.market,\n\n setLocale: (locale: string) => {\n apiConfig.locale = locale;\n },\n\n getLocale: () => apiConfig.locale,\n\n get session(): AdminSession | null {\n if (config.apiToken) return null;\n return toPublic(readAdminSession());\n },\n\n get isAuthenticated(): boolean {\n if (config.apiToken) return true;\n return readAdminSession() !== null;\n },\n\n onAuthStateChanged(listener: AuthStateListener<AdminSession>): () => void {\n listeners.add(listener);\n const current = toPublic(readAdminSession());\n if (current) {\n Promise.resolve()\n .then(() => listener(current))\n .catch(() => {});\n }\n return () => {\n listeners.delete(listener);\n };\n },\n\n async logout(): Promise<void> {\n if (config.apiToken) return;\n updateSession(() => null);\n },\n\n utils: createUtilitySurface(apiConfig),\n };\n\n return sdk;\n}\n\nexport interface StorefrontSessionStorage {\n getItem(key: string): string | null;\n setItem(key: string, value: string): void;\n removeItem(key: string): void;\n}\n\nexport interface StorefrontContext {\n locale?: string;\n market?: string;\n}\n\nexport interface StorefrontOptions extends StorefrontContext {\n apiUrl?: string;\n sessionStorage?: StorefrontSessionStorage;\n}\n\nexport const DEFAULT_STOREFRONT_API_URL = \"https://api.arky.io\";\nlet storefrontScopeSequence = 0;\n\nfunction defaultStorefrontSessionStorage(): StorefrontSessionStorage | null {\n if (typeof window === \"undefined\") return null;\n try {\n return window.localStorage;\n } catch {\n return null;\n }\n}\n\nfunction normalizeStorefrontApiUrl(value: string | undefined): string {\n const input = value?.trim() || DEFAULT_STOREFRONT_API_URL;\n let parsed: URL;\n try {\n parsed = new URL(input);\n } catch {\n throw new Error(\"Storefront apiUrl must be a valid HTTP(S) URL\");\n }\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n throw new Error(\"Storefront apiUrl must use HTTP or HTTPS\");\n }\n return input.replace(/\\/+$/, \"\");\n}\n\nfunction validatePublishableKey(publishableKey: string): string {\n if (typeof publishableKey !== \"string\") {\n throw new Error(\n \"A valid Arky publishable key is required (arky_pk_ followed by 43 URL-safe characters)\",\n );\n }\n const key = publishableKey.trim();\n if (!/^arky_pk_[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048]$/.test(key)) {\n throw new Error(\n \"A valid Arky publishable key is required (arky_pk_ followed by 43 URL-safe characters)\",\n );\n }\n return key;\n}\n\nfunction publishableKeyFingerprint(publishableKey: string): string {\n let hashA = 0x811c9dc5;\n let hashB = 0x9e3779b9;\n for (let index = 0; index < publishableKey.length; index += 1) {\n const code = publishableKey.charCodeAt(index);\n hashA = Math.imul(hashA ^ code, 0x01000193);\n hashB = Math.imul(hashB ^ code, 0x85ebca6b);\n }\n return `${(hashA >>> 0).toString(36)}${(hashB >>> 0).toString(36)}`;\n}\n\nfunction storefrontSessionStorageKey(\n apiUrl: string,\n publishableKey: string,\n): string {\n return `arky_visitor_session:${encodeURIComponent(apiUrl.toLowerCase())}:${publishableKeyFingerprint(publishableKey)}`;\n}\n\nfunction isVisitorSessionToken(value: string | null): value is string {\n return Boolean(value && /^arky_vst_[0-9a-f]{64}$/.test(value));\n}\n\nfunction createStorefrontClientCore(\n publishableKeyInput: string,\n options: StorefrontOptions = {},\n isolatedSession = false,\n) {\n const publishableKey = validatePublishableKey(publishableKeyInput);\n const apiUrl = normalizeStorefrontApiUrl(options.apiUrl);\n let locale = options.locale?.trim() || \"\";\n let market = options.market?.trim() || \"\";\n const listeners = new Set<AuthStateListener<ContactSession>>();\n let identifyPromise: Promise<StorefrontIdentifyResult> | null = null;\n let identityTail: Promise<void> = Promise.resolve();\n let setupPromise: Promise<import(\"./api/storefront\").StorefrontSetup> | null = null;\n let setupValue: import(\"./api/storefront\").StorefrontSetup | null = null;\n const explicitSessionStorage = options.sessionStorage;\n const sessionStorage = isolatedSession\n ? explicitSessionStorage || null\n : explicitSessionStorage || defaultStorefrontSessionStorage();\n const canCreateVisitorSession =\n typeof window !== \"undefined\" || Boolean(explicitSessionStorage);\n const storageKey = `${storefrontSessionStorageKey(apiUrl, publishableKey)}${\n isolatedSession ? `:scope:${++storefrontScopeSequence}` : \"\"\n }`;\n let memorySession: ContactSessionInternal | null = null;\n let memorySessionToken: string | null = null;\n\n function readSessionToken(): string | null {\n if (!sessionStorage) return memorySessionToken;\n try {\n const stored = sessionStorage.getItem(storageKey);\n return isVisitorSessionToken(stored) ? stored : memorySessionToken;\n } catch {\n return memorySessionToken;\n }\n }\n\n function writeContactSession(session: ContactSessionInternal | null): void {\n memorySession = session;\n memorySessionToken = session?.sessionToken || null;\n if (!sessionStorage) return;\n try {\n if (session) {\n sessionStorage.setItem(storageKey, session.sessionToken);\n } else {\n sessionStorage.removeItem(storageKey);\n }\n } catch {\n }\n }\n\n function toPublic(s: ContactSessionInternal | null): ContactSession | null {\n return s ? { contact: s.contact } : null;\n }\n\n function emit(): void {\n const pub = toPublic(memorySession);\n for (const l of listeners) {\n Promise.resolve()\n .then(() => l(pub))\n .catch(() => {});\n }\n }\n\n const updateSession: ContactSessionUpdater = (updater) => {\n const next = updater(memorySession);\n writeContactSession(next);\n emit();\n };\n\n const authStorage: AuthStorage = {\n getTokens() {\n const sessionToken = readSessionToken();\n return sessionToken ? { access_token: sessionToken } : null;\n },\n onTokensRefreshed() {},\n onForcedLogout() {\n identifyPromise = null;\n updateSession(() => null);\n },\n };\n\n let recoverUnauthorized: (\n authorizationToken: string | null,\n path: string,\n ) => Promise<boolean> = async () => false;\n let visitorRecoveryPromise: Promise<void> | null = null;\n\n const httpClient = createHttpClient({\n baseUrl: apiUrl,\n authStorage,\n storefrontMode: true,\n forcedHeaders: () => ({\n \"X-Arky-Publishable-Key\": publishableKey,\n ...(locale ? { \"X-Arky-Locale\": locale } : {}),\n ...(market ? { \"X-Arky-Market\": market } : {}),\n }),\n onUnauthorized: ({ authorizationToken, path }) =>\n recoverUnauthorized(authorizationToken, path),\n });\n\n const apiConfig: StorefrontApiConfig = {\n httpClient,\n apiUrl,\n publishableKey,\n market,\n locale,\n authStorage,\n };\n\n function requireVisitorSessionCapability(): void {\n if (!canCreateVisitorSession) {\n throw new Error(\n \"Stateful storefront operations during SSR require an explicit request-local sessionStorage adapter\",\n );\n }\n }\n\n async function getSetup(\n requestOptions?: import(\"./types/api\").RequestOptions,\n ): Promise<import(\"./api/storefront\").StorefrontSetup> {\n if (setupValue) return setupValue;\n if (setupPromise) return setupPromise;\n setupPromise = httpClient\n .get<import(\"./api/storefront\").StorefrontSetup>(\n \"/v1/storefront\",\n requestOptions,\n )\n .then((setup) => {\n setupValue = setup;\n return setup;\n })\n .finally(() => {\n setupPromise = null;\n });\n return setupPromise;\n }\n\n async function ensureVisitorSession(): Promise<void> {\n if (readSessionToken()) return;\n requireVisitorSessionCapability();\n await identify();\n }\n\n const storefrontApi = createStorefrontApi(apiConfig, updateSession, {\n ensureVisitorSession,\n getSetup,\n });\n const contactApi = storefrontApi.crm.contact;\n\n function identify(params?: {\n email?: string;\n verify?: boolean;\n market?: string;\n }): Promise<StorefrontIdentifyResult> {\n requireVisitorSessionCapability();\n if (params?.market !== undefined) setMarket(params.market);\n\n const isBareCall = !params?.email && !params?.verify;\n if (isBareCall && identifyPromise) return identifyPromise;\n\n const run = async (): Promise<StorefrontIdentifyResult> => {\n const result = await (params?.verify\n ? contactApi.requestCode({ email: params.email })\n : contactApi.identify({ email: params?.email }));\n return {\n contact: result.contact,\n verification_challenge: result.verification_challenge,\n };\n };\n\n const promise = identityTail.then(run);\n identityTail = promise.then(\n () => undefined,\n () => undefined,\n );\n\n if (isBareCall) {\n identifyPromise = promise;\n void promise.then(\n () => {\n if (identifyPromise === promise) identifyPromise = null;\n },\n () => {\n if (identifyPromise === promise) identifyPromise = null;\n },\n );\n }\n\n return promise;\n }\n\n async function verify(\n params: { challenge_id: string; code: string },\n ): Promise<StorefrontVerifyResult> {\n requireVisitorSessionCapability();\n const result = await contactApi.verify(params);\n identifyPromise = null;\n return { contact: result.contact };\n }\n\n async function me(): Promise<import(\"./api/storefront\").StorefrontContact> {\n await ensureVisitorSession();\n return contactApi.getMe();\n }\n\n async function logout(): Promise<void> {\n identifyPromise = null;\n if (!readSessionToken()) {\n updateSession(() => null);\n return;\n }\n try {\n await contactApi.logout();\n } catch {\n updateSession(() => null);\n }\n }\n\n function setMarket(value: string): void {\n market = value.trim();\n apiConfig.market = market;\n identifyPromise = null;\n }\n\n function setLocale(value: string): void {\n locale = value.trim();\n apiConfig.locale = locale;\n }\n\n function setContext(context: StorefrontContext): void {\n if (context.locale !== undefined) setLocale(context.locale);\n if (context.market !== undefined) setMarket(context.market);\n }\n\n recoverUnauthorized = async (\n authorizationToken: string | null,\n path: string,\n ) => {\n if (!authorizationToken) return false;\n const currentToken = readSessionToken();\n if (currentToken !== authorizationToken) {\n if (currentToken) return true;\n if (!visitorRecoveryPromise) return false;\n await visitorRecoveryPromise;\n return Boolean(readSessionToken());\n }\n updateSession(() => null);\n if (/\\/account\\/(identify|code)$/.test(path)) return true;\n const recovery = ensureVisitorSession();\n const trackedRecovery = recovery.finally(() => {\n if (visitorRecoveryPromise === trackedRecovery) {\n visitorRecoveryPromise = null;\n }\n });\n visitorRecoveryPromise = trackedRecovery;\n await trackedRecovery;\n return true;\n };\n\n return {\n identify,\n verify,\n logout,\n me,\n\n get session(): ContactSession | null {\n return toPublic(memorySession);\n },\n\n get isAuthenticated(): boolean {\n return Boolean(readSessionToken());\n },\n\n onAuthStateChanged(\n listener: AuthStateListener<ContactSession>,\n ): () => void {\n listeners.add(listener);\n const current = toPublic(memorySession);\n if (current) {\n Promise.resolve()\n .then(() => listener(current))\n .catch(() => {});\n }\n return () => {\n listeners.delete(listener);\n };\n },\n\n store: storefrontApi.store,\n cms: storefrontApi.cms,\n eshop: storefrontApi.eshop,\n crm: {\n ...storefrontApi.crm,\n contact: {\n identify: (params?: { email?: string }) => identify(params),\n requestCode: (params?: { email?: string }) =>\n identify({ ...params, verify: true }),\n verify,\n logout,\n getMe: me,\n },\n },\n action: storefrontApi.action,\n experiments: storefrontApi.experiments,\n support: createStorefrontSupportApi(apiConfig, ensureVisitorSession),\n getSetup,\n setContext,\n setMarket,\n getMarket: () => market,\n setLocale,\n getLocale: () => locale,\n utils: createUtilitySurface(apiConfig),\n };\n}\n\ntype StorefrontClientCore = ReturnType<typeof createStorefrontClientCore>;\n\nexport type StorefrontClient = StorefrontClientCore & {\n withContext(context: StorefrontContext): StorefrontClient;\n};\n\nfunction createStorefrontClient(\n publishableKey: string,\n options: StorefrontOptions = {},\n isolatedSession = false,\n): StorefrontClient {\n const client = createStorefrontClientCore(\n publishableKey,\n options,\n isolatedSession,\n );\n return Object.assign(client, {\n withContext(context: StorefrontContext): StorefrontClient {\n return createStorefrontClient(\n publishableKey,\n {\n ...options,\n locale: context.locale ?? client.getLocale(),\n market: context.market ?? client.getMarket(),\n },\n true,\n );\n },\n });\n}\n\nexport function createStorefront(\n publishableKey: string,\n options: StorefrontOptions = {},\n): StorefrontClient {\n return createStorefrontClient(publishableKey, options);\n}\n\nexport type { HttpClientConfig } from \"./services/createHttpClient\";\nexport {\n buildFormFields,\n createFormEntry,\n createFormEntryFromValues,\n initialize,\n} from \"./storefrontStore\";\nexport type {\n ArkyCartStore,\n ArkyServiceStore,\n ArkyStore,\n ArkyStoreConfig,\n ArkyStoreContext,\n ArkyStripePaymentMountOptions,\n} from \"./storefrontStore\";\n"]}
1
+ {"version":3,"sources":["../src/types/index.ts","../src/utils/orderItems.ts","../src/api/storefront.ts","../src/cartController.ts","../src/utils/queryParams.ts","../src/services/createHttpClient.ts","../src/api/account.ts","../src/api/auth.ts","../src/api/store.ts","../src/api/media.ts","../src/api/notification.ts","../src/api/promoCode.ts","../src/api/cms.ts","../src/api/eshop.ts","../src/api/location.ts","../src/api/market.ts","../src/api/crm.ts","../src/api/support.ts","../src/api/leadResearch.ts","../src/api/social.ts","../src/api/workflow.ts","../src/api/platform.ts","../src/api/shipping.ts","../src/api/paymentProvider.ts","../src/api/emailTemplate.ts","../src/api/form.ts","../src/api/taxonomy.ts","../src/api/analytics.ts","../src/api/experiments.ts","../src/utils/blocks.ts","../src/utils/price.ts","../src/utils/validation.ts","../src/utils/timezone.ts","../src/utils/text.ts","../src/utils/svg.ts","../src/utils/keyValidation.ts","../src/utils/inventory.ts","../src/payments/stripe.ts","../src/storefrontStore/utils.ts","../src/storefrontStore/initialize.ts","../src/index.ts"],"names":["PaymentMethodType","url","isRecord","isBlock","findBlock","atom","computed","map","publishableKey","entry","locale"],"mappings":"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","file":"index.cjs","sourcesContent":["export * from \"./api\";\n\nexport type Currency =\n | \"usd\"\n | \"eur\"\n | \"gbp\"\n | \"jpy\"\n | \"cny\"\n | \"chf\"\n | \"aud\"\n | \"cad\"\n | \"hkd\"\n | \"sgd\"\n | \"nzd\"\n | \"krw\"\n | \"sek\"\n | \"nok\"\n | \"dkk\"\n | \"inr\"\n | \"mxn\"\n | \"brl\"\n | \"zar\"\n | \"rub\"\n | \"try\"\n | \"pln\"\n | \"thb\"\n | \"idr\"\n | \"myr\"\n | \"php\"\n | \"czk\"\n | \"ils\"\n | \"aed\"\n | \"sar\"\n | \"huf\"\n | \"ron\"\n | \"bgn\"\n | \"hrk\"\n | \"bam\"\n | \"rsd\"\n | \"mkd\"\n | \"all\";\n\nexport enum PaymentMethodType {\n Cash = \"cash\",\n CreditCard = \"credit_card\",\n}\n\nexport interface OrderPaymentTax {\n amount: number;\n mode_snapshot?: string;\n rate_bps: number;\n lines: OrderPaymentTaxLine[];\n}\n\nexport interface OrderPaymentTaxLine {\n rate_bps: number;\n amount: number;\n label?: string;\n scope?: string;\n}\n\nexport interface OrderPaymentPromoCode {\n id: string;\n code: string;\n type: string;\n value: number;\n}\n\nexport type PaymentTransactionProvider = \"manual\" | \"stripe\";\nexport type PaymentTransactionType =\n | \"create\"\n | \"authorize\"\n | \"capture\"\n | \"sale\"\n | \"cancel\"\n | \"refund\"\n | \"mark_paid\";\nexport type PaymentTransactionRequestType =\n \"create_payment\" | \"confirm_payment\" | \"cancel_payment\";\nexport type PaymentTransactionStatus =\n | \"requested\"\n | \"requires_action\"\n | \"processing\"\n | \"succeeded\"\n | \"rejected\"\n | \"failed\"\n | \"unknown\"\n | \"cancelled\";\n\nexport interface PaymentTransaction {\n id: string;\n store_id: string;\n payment_id: string;\n order_id: string;\n parent_transaction_id?: string | null;\n type: PaymentTransactionType;\n request?: PaymentTransactionRequestType | null;\n status: PaymentTransactionStatus;\n revision: number;\n attempt_count: number;\n amount: number;\n currency: Currency;\n provider: PaymentTransactionProvider;\n requested_at?: number | null;\n processing_started_at?: number | null;\n processing_deadline_at?: number | null;\n completed_at?: number | null;\n created_at: number;\n updated_at: number;\n safe_error?: string | null;\n}\n\nexport interface OrderRefund {\n id: string;\n store_id: string;\n order_id: string;\n attempt_count: number;\n total: number;\n currency: Currency;\n provider: PaymentTransactionProvider;\n status: import(\"./api\").RefundStatus;\n safe_error?: string | null;\n requested_at: number;\n processing_started_at?: number | null;\n processing_deadline_at?: number | null;\n completed_at?: number | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface OrderPayment {\n id: string;\n store_id: string;\n order_id: string;\n status: OrderPaymentStatus;\n amount: number;\n currency: Currency;\n paid: number;\n authorized_amount: number;\n captured_amount: number;\n refunded_amount: number;\n voided_amount: number;\n method_type: PaymentMethodType;\n latest_transaction_id?: string | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface OrderMoney {\n currency: Currency;\n market: string;\n subtotal: number;\n shipping: number;\n discount: number;\n total: number;\n tax?: OrderPaymentTax | null;\n promo_code?: OrderPaymentPromoCode | null;\n zone_id?: string | null;\n payment_method_key?: string | null;\n shipping_method_id?: string | null;\n method_type: PaymentMethodType;\n}\n\nexport interface OrderFinancialSummary {\n status: OrderPaymentSummaryStatus;\n paid: number;\n authorized_amount: number;\n captured_amount: number;\n refunded_amount: number;\n voided_amount: number;\n updated_at: number;\n}\n\nexport interface PromoCodeValidation {\n promo_code_id: string;\n code: string;\n discounts: import(\"./api\").Discount[];\n conditions: import(\"./api\").Condition[];\n}\n\nexport interface OrderQuote {\n id?: string;\n expires_at?: number;\n market: string;\n zone: Zone | null;\n items: QuoteLine[];\n shipping_lines: ShippingLine[];\n subtotal: number;\n shipping: number;\n discount: number;\n tax: number;\n total: number;\n shipping_method: ShippingMethod | null;\n payment_method: PaymentMethod | null;\n payment_methods: PaymentMethod[];\n promo_code: PromoCodeValidation | null;\n money: OrderMoney;\n charge_amount: number;\n}\n\nexport interface Price {\n currency: Currency;\n market: string;\n amount: number;\n compare_at?: number;\n contact_list_id?: string;\n}\n\nexport type IntervalPeriod = \"month\" | \"year\";\n\nexport interface SubscriptionInterval {\n period: IntervalPeriod;\n count: number;\n}\n\nexport interface PriceProvider {\n type: \"stripe\";\n id: string;\n}\n\nexport interface SubscriptionPrice {\n currency: Currency;\n amount: number;\n compare_at?: number;\n interval?: SubscriptionInterval;\n providers: PriceProvider[];\n}\n\nexport interface Address {\n name?: string | null;\n company?: string | null;\n street1?: string | null;\n street2?: string | null;\n city?: string | null;\n state?: string | null;\n postal_code?: string | null;\n country?: string | null;\n phone?: string | null;\n email?: string | null;\n}\n\nexport interface Coordinates {\n lat: number;\n lon: number;\n}\n\nexport interface GeoLocation {\n coordinates?: Coordinates | null;\n label?: string | null;\n}\n\nexport interface ZoneLocation {\n country?: string | null;\n state?: string | null;\n city?: string | null;\n postal_code?: string | null;\n}\n\nexport interface EshopCartItem {\n id: string;\n product_id: string;\n variant_id: string;\n product_name: string;\n product_slug: string;\n variant_attributes: Record<string, any>;\n requires_shipping: boolean;\n price: Price;\n quantity: number;\n added_at: number;\n max_stock?: number;\n}\n\nexport type CartStatus = \"active\" | \"abandoned\" | \"converted\" | \"expired\";\nexport type CartOrigin = \"storefront\" | \"admin\";\n\nexport interface Cart {\n id: string;\n store_id: string;\n contact_id: string;\n token: string;\n status: CartStatus;\n origin: CartOrigin;\n created_by_account_id?: string | null;\n market: string;\n items: import(\"./api\").OrderCheckoutItemInput[];\n shipping_address?: Address | null;\n billing_address?: Address | null;\n forms: FormEntry[];\n promo_code?: string | null;\n payment_method_key?: string | null;\n shipping_method_id?: string | null;\n quote_snapshot?: OrderQuote | null;\n converted_order_id?: string | null;\n item_count: number;\n last_action_at: number;\n abandoned_at?: number | null;\n recovery_sent_at?: number | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface SocialConnectionCredential {\n expires_at: number | null;\n scopes: string[];\n}\n\nexport interface SocialDestinationMetadata {\n external_account_id: string;\n external_account_name: string;\n handle: string | null;\n avatar_url: string | null;\n}\n\nexport type SocialConnectionType =\n | \"facebook_page\"\n | \"instagram_business\"\n | \"youtube_channel\"\n | \"tiktok_account\"\n | \"x_account\";\n\nexport interface SocialConnectionProviderData {\n credential: SocialConnectionCredential;\n destination: SocialDestinationMetadata;\n}\n\nexport type SocialConnectionData = SocialConnectionProviderData;\n\nexport type SocialPublicationStatus =\n | \"draft\"\n | \"scheduled\"\n | \"publishing\"\n | \"published\"\n | \"failed\"\n | \"unknown\"\n | \"cancelled\";\n\nexport type YoutubePrivacy = \"public\" | \"unlisted\" | \"private\";\nexport type TiktokPrivacy = \"public\" | \"friends\" | \"private\";\nexport type InstagramPlacement = \"feed\" | \"reel\" | \"story\";\n\nexport interface FacebookPageContent {\n type: \"facebook_page\";\n text?: string | null;\n media_ids: string[];\n link_url?: string | null;\n}\n\nexport interface InstagramBusinessContent {\n type: \"instagram_business\";\n placement?: InstagramPlacement | null;\n share_to_feed?: boolean | null;\n caption?: string | null;\n media_ids: string[];\n}\n\nexport interface YoutubeChannelContent {\n type: \"youtube_channel\";\n title: string;\n description?: string | null;\n video_media_id: string;\n privacy: YoutubePrivacy;\n}\n\nexport interface TiktokAccountContent {\n type: \"tiktok_account\";\n caption?: string | null;\n video_media_id: string;\n privacy: TiktokPrivacy;\n}\n\nexport interface XAccountContent {\n type: \"x_account\";\n text?: string | null;\n media_ids: string[];\n}\n\nexport type SocialPublicationContent =\n | FacebookPageContent\n | InstagramBusinessContent\n | YoutubeChannelContent\n | TiktokAccountContent\n | XAccountContent;\n\nexport interface ValidationError {\n field: string;\n error: string;\n}\n\nexport interface SocialPublicationValidation {\n valid: boolean;\n errors: ValidationError[];\n warnings: ValidationError[];\n}\n\nexport interface SocialPublication {\n id: string;\n store_id: string;\n social_connection_id: string;\n key: string;\n status: SocialPublicationStatus;\n content: SocialPublicationContent;\n scheduled_at: number;\n published_at?: number | null;\n provider_post_id?: string | null;\n provider_post_url?: string | null;\n error_code?: string | null;\n error_message?: string | null;\n attempt_count: number;\n last_attempt_at?: number | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface SocialPublicationMutationResponse {\n publication: SocialPublication;\n validation: SocialPublicationValidation;\n publish_requested: boolean;\n}\n\nexport type SocialPublicationCommentStatus =\n \"open\" | \"replied\" | \"hidden\" | \"deleted\";\n\nexport type SocialPublicationCommentIntent =\n \"lead\" | \"support\" | \"complaint\" | \"question\" | \"praise\" | \"spam\" | \"general\";\n\nexport type SocialPublicationCommentPriority =\n \"urgent\" | \"high\" | \"normal\" | \"low\";\n\nexport interface SocialPublicationComment {\n id: string;\n store_id: string;\n publication_id: string;\n social_connection_id: string;\n type: SocialConnectionType;\n provider_post_id?: string | null;\n provider_comment_id: string;\n provider_parent_comment_id?: string | null;\n parent_comment_id?: string | null;\n root_comment_id?: string | null;\n depth: number;\n provider_reply_count?: number | null;\n synced_reply_count: number;\n has_more_replies: boolean;\n thread_last_synced_at?: number | null;\n author_is_channel: boolean;\n contact_id?: string | null;\n action_id?: string | null;\n opportunity_action_id?: string | null;\n author_name?: string | null;\n author_handle?: string | null;\n author_provider_user_id?: string | null;\n text: string;\n status: SocialPublicationCommentStatus;\n provider_created_at?: number | null;\n last_synced_at: number;\n replied_at?: number | null;\n classification_intent?: SocialPublicationCommentIntent | null;\n classification_priority?: SocialPublicationCommentPriority | null;\n classification_confidence?: number | null;\n classification_summary?: string | null;\n classification_reason?: string | null;\n suggested_reply?: string | null;\n classified_at?: number | null;\n classification_model?: string | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface SocialPublicationMetricSnapshot {\n id: string;\n store_id: string;\n publication_id: string;\n social_connection_id: string;\n type: SocialConnectionType;\n provider_post_id?: string | null;\n metrics: Record<string, number>;\n collected_at: number;\n created_at: number;\n updated_at: number;\n}\n\nexport type SocialCommentReplyStatus =\n \"requested\" | \"processing\" | \"succeeded\" | \"rejected\" | \"failed\" | \"unknown\";\n\nexport type SocialCommentReplyError =\n | { type: \"provider_call_not_started\"; message: string; at: number }\n | {\n type: \"provider_rejected\";\n message: string;\n provider_code?: string | null;\n provider_status?: number | null;\n at: number;\n }\n | { type: \"unknown_outcome\"; message: string; at: number };\n\nexport interface SocialCommentReplyEvidence {\n provider_comment_id: string;\n provider_comment_url?: string | null;\n}\n\nexport interface SocialCommentReply {\n id: string;\n store_id: string;\n publication_id: string;\n comment_id: string;\n social_connection_id: string;\n text: string;\n status: SocialCommentReplyStatus;\n requested_at: number;\n processing_started_at?: number | null;\n processing_deadline_at?: number | null;\n completed_at?: number | null;\n evidence?: SocialCommentReplyEvidence | null;\n error?: SocialCommentReplyError | null;\n}\n\nexport interface SocialPublicationCommentReplyResponse {\n comment: SocialPublicationComment;\n reply: SocialCommentReply;\n}\n\nexport type SocialPublicationEffectStatus =\n \"requested\" | \"processing\" | \"succeeded\" | \"rejected\" | \"failed\" | \"unknown\";\n\nexport type SocialPublicationEffectError =\n | { type: \"provider_call_not_started\"; message: string; at: number }\n | {\n type: \"provider_rejected\";\n message: string;\n provider_code?: string | null;\n provider_status?: number | null;\n at: number;\n }\n | { type: \"unknown_outcome\"; message: string; at: number };\n\nexport type SocialPublicationEffectRequest =\n | {\n type: \"x_upload_media\";\n media_id: string;\n uploaded_media_ids: string[];\n }\n | { type: \"x_publish_post\"; uploaded_media_ids: string[] }\n | {\n type: \"facebook_create_unpublished_photo\";\n media_id: string;\n unpublished_photo_ids: string[];\n }\n | {\n type: \"facebook_publish_post\";\n unpublished_photo_ids: string[];\n }\n | {\n type: \"instagram_create_media_container\";\n media_id: string;\n placement: InstagramPlacement;\n carousel_item: boolean;\n child_container_ids: string[];\n }\n | {\n type: \"instagram_create_carousel_container\";\n child_container_ids: string[];\n }\n | {\n type: \"instagram_publish_container\";\n container_id: string;\n container_media_id?: string | null;\n }\n | { type: \"youtube_initialize_upload\"; media_id: string }\n | {\n type: \"youtube_upload\";\n media_id: string;\n total_bytes: number;\n has_upload_session: boolean;\n }\n | { type: \"tiktok_initialize_upload\"; media_id: string }\n | {\n type: \"tiktok_upload\";\n media_id: string;\n publish_id: string;\n total_bytes: number;\n has_upload_session: boolean;\n };\n\nexport interface SocialPublicationEffectEvidence {\n provider_object_id?: string | null;\n provider_object_url?: string | null;\n has_upload_session: boolean;\n upload_total_bytes?: number | null;\n}\n\nexport interface SocialPublicationEffect {\n id: string;\n store_id: string;\n publication_id: string;\n social_connection_id: string;\n publication_revision: number;\n sequence: number;\n request: SocialPublicationEffectRequest;\n status: SocialPublicationEffectStatus;\n requested_at: number;\n processing_started_at?: number | null;\n processing_deadline_at?: number | null;\n completed_at?: number | null;\n evidence?: SocialPublicationEffectEvidence | null;\n error?: SocialPublicationEffectError | null;\n}\n\nexport interface SocialPublicationEngagementSyncResult {\n publications_scanned: number;\n comment_pages_scanned: number;\n comments_synced: number;\n metrics_synced: number;\n comments: SocialPublicationComment[];\n metrics: SocialPublicationMetricSnapshot[];\n skipped_publication_ids: string[];\n errors: string[];\n}\n\nexport interface SocialPublicationCommentClassificationResult {\n comments_scanned: number;\n comments_classified: number;\n comments_skipped: number;\n comments: SocialPublicationComment[];\n skipped_comment_ids: string[];\n errors: string[];\n}\n\nexport interface SocialEngagementCapabilities {\n read_comments: boolean;\n reply_to_comments: boolean;\n}\n\nexport interface SocialAnalyticsCapabilities {\n read_post_metrics: boolean;\n}\n\nexport interface SocialProviderCapability {\n type: SocialConnectionType;\n display_name: string;\n icon_key: string;\n publishing_supported: boolean;\n required_scopes: string[];\n media_requirements: string[];\n engagement: SocialEngagementCapabilities;\n analytics: SocialAnalyticsCapabilities;\n}\n\nexport interface SocialConnectResponse {\n authorization_url: string;\n state: string;\n}\n\nexport type SocialOAuthCallbackStatus = \"connected\" | \"selection_required\";\n\nexport interface SocialOAuthDestinationOption extends SocialDestinationMetadata {\n candidate_id: string;\n}\n\nexport interface SocialOAuthCallbackResponse {\n status: SocialOAuthCallbackStatus;\n store_id: string;\n type: SocialConnectionType;\n account_id: string;\n attempt_id?: string | null;\n social_connection_id?: string | null;\n destination?: SocialDestinationMetadata | null;\n options: SocialOAuthDestinationOption[];\n message: string;\n}\n\nexport type BuildHookType = \"vercel\" | \"netlify\" | \"cloudflare\" | \"custom\";\n\nexport interface BuildHook {\n id: string;\n store_id: string;\n key: string;\n type: BuildHookType;\n url: string;\n headers: Record<string, string>;\n active: boolean;\n created_at: number;\n updated_at: number;\n}\n\nexport interface SocialConnection {\n id: string;\n store_id: string;\n type: SocialConnectionType;\n data: SocialConnectionData;\n created_at: number;\n updated_at: number;\n}\n\nexport type PaymentProviderConnectionStatus =\n \"requested\" | \"processing\" | \"succeeded\" | \"rejected\" | \"failed\" | \"unknown\";\n\nexport type PaymentProviderConnectionError =\n | { type: \"provider_rejected\"; message: string; at: number }\n | { type: \"provider_call_not_started\"; message: string; at: number }\n | { type: \"unknown_outcome\"; message: string; at: number };\n\nexport interface PaymentProviderConnection {\n status: PaymentProviderConnectionStatus;\n revision: number;\n attempts: number;\n requested_at: number;\n processing_started_at?: number | null;\n completed_at?: number | null;\n error?: PaymentProviderConnectionError | null;\n}\n\nexport interface PaymentProvider {\n id: string;\n store_id: string;\n key: string;\n provider: {\n type: \"stripe\";\n onboarding_status: \"pending\" | \"submitted\" | \"complete\";\n charges_enabled: boolean;\n payouts_enabled: boolean;\n details_submitted: boolean;\n };\n connection: PaymentProviderConnection;\n created_at: number;\n updated_at: number;\n}\n\nexport interface PaymentStoreConfig {\n provider: \"stripe\";\n publishable_key: string;\n connected_account_id: string;\n}\n\nexport interface StripePaymentProviderConnectResponse {\n provider: PaymentProvider;\n onboarding_url: string;\n}\n\nexport interface ShippingWeightTier {\n up_to_grams: number;\n amount: number;\n}\n\nexport type PaymentMethod =\n | {\n type: \"cash\";\n id: string;\n key: string;\n }\n | {\n type: \"credit_card\";\n id: string;\n key: string;\n payment_provider_id: string;\n };\n\nexport interface ShippingMethod {\n id: string;\n taxable: boolean;\n eta_text: string;\n location_id?: string;\n amount: number;\n free_above?: number;\n weight_tiers?: ShippingWeightTier[];\n}\n\nexport interface Location {\n id: string;\n store_id: string;\n key: string;\n address: Address;\n is_pickup_location: boolean;\n created_at: number;\n updated_at: number;\n}\n\nexport interface InventoryLevel {\n location_id: string;\n available: number;\n reserved: number;\n}\n\nexport interface ProductInventory {\n id: string;\n store_id: string;\n product_id: string;\n variant_id: string;\n location_id: string;\n available: number;\n reserved: number;\n updated_at: number;\n}\n\nexport type DigitalAssetType = \"file\" | \"external_link\";\nexport type DigitalAssetStatus = \"active\" | \"archived\";\nexport type DigitalDeliveryPolicy = \"automatic_after_payment\" | \"manual\";\n\nexport interface DigitalAsset {\n id: string;\n name: string;\n type: DigitalAssetType;\n storage_ref?: string | null;\n external_url?: string | null;\n status: DigitalAssetStatus;\n}\n\nexport interface ProductVariant {\n id: string;\n sku?: string;\n prices: Price[];\n inventory: ProductInventory[];\n attributes: Block[];\n requires_shipping: boolean;\n digital_delivery_policy: DigitalDeliveryPolicy;\n digital_assets: DigitalAsset[];\n download_limit?: number | null;\n access_expires_after_days?: number | null;\n tax_category_id?: string | null;\n weight?: number;\n}\n\nexport interface Product {\n id: string;\n store_id: string;\n key: string;\n slug: Record<string, string>;\n blocks: Block[];\n taxonomies: TaxonomyEntry[];\n variants: ProductVariant[];\n status: ProductStatus;\n created_at: number;\n updated_at: number;\n}\n\nexport interface GalleryItem {\n id: string;\n url: string;\n alt?: string;\n caption?: string;\n}\n\nexport interface ProductLineItemSnapshot {\n product_key: string;\n variant_sku?: string;\n variant_attributes: Block[];\n requires_shipping: boolean;\n tax_category_id?: string | null;\n price: Price;\n}\n\nexport interface ServiceLineItemSnapshot {\n service_key: string;\n provider_key: string;\n tax_category_id?: string | null;\n price: Price;\n}\n\nexport interface DiscountAllocation {\n discount_application_id?: string | null;\n amount: number;\n}\n\nexport interface TaxLine {\n id: string;\n title: string;\n rate_bps: number;\n amount: number;\n taxable_base: number;\n included_in_price: boolean;\n jurisdiction_country?: string | null;\n jurisdiction_region?: string | null;\n jurisdiction_city?: string | null;\n jurisdiction_postal_code?: string | null;\n tax_category_id?: string | null;\n tax_rate_id?: string | null;\n source: string;\n provider_tax_id?: string | null;\n provider_tax_line_id?: string | null;\n}\n\nexport interface LineMoneySnapshot {\n unit_price: number;\n subtotal: number;\n discount_allocations: DiscountAllocation[];\n discount_total: number;\n taxable_base: number;\n tax_lines: TaxLine[];\n tax_total: number;\n total: number;\n}\n\nexport type OrderItemFulfillmentStatus =\n \"unfulfilled\" | \"partially_fulfilled\" | \"fulfilled\" | \"not_required\";\n\nexport type BookingOrderItemStatus =\n \"scheduled\" | \"completed\" | \"no_show\" | \"cancelled\";\n\nexport type OrderItemSnapshot =\n ProductLineItemSnapshot | ServiceLineItemSnapshot;\n\nexport type ProductQuoteLineAvailability =\n { ok: true; available?: number } | { ok: false; reason: string };\n\nexport type ServiceQuoteLineAvailability =\n { ok: true; spots: number } | { ok: false; reason: string };\n\nexport interface ProductQuoteLine {\n type: \"product\";\n line_id: string;\n product_id: string;\n variant_id: string;\n quantity: number;\n unit_price: number;\n subtotal: number;\n discount: number;\n tax: number;\n total: number;\n money: LineMoneySnapshot;\n snapshot: ProductLineItemSnapshot;\n availability: ProductQuoteLineAvailability;\n}\n\nexport interface ServiceQuoteLine {\n type: \"service\";\n line_id: string;\n service_id: string;\n provider_id: string;\n from: number;\n to: number;\n quantity: 1;\n unit_price: number;\n subtotal: number;\n discount: number;\n tax: number;\n total: number;\n money: LineMoneySnapshot;\n snapshot: ServiceLineItemSnapshot;\n availability: ServiceQuoteLineAvailability;\n}\n\nexport type QuoteLine = ProductQuoteLine | ServiceQuoteLine;\n\nexport interface ProductLineItem {\n type: \"product\";\n id: string;\n product_id: string;\n variant_id: string;\n quantity: number;\n cancelled_quantity: number;\n allocated_quantity: number;\n fulfilled_quantity: number;\n location_id?: string;\n snapshot: ProductLineItemSnapshot;\n status: OrderItemStatus;\n fulfillment_status: OrderItemFulfillmentStatus;\n money: LineMoneySnapshot;\n}\n\nexport interface ServiceLineItem {\n type: \"service\";\n id: string;\n service_id: string;\n provider_id: string;\n from: number;\n to: number;\n quantity: number;\n cancelled_quantity: number;\n fulfilled_quantity: number;\n forms: FormEntry[];\n snapshot: ServiceLineItemSnapshot;\n status: OrderItemStatus;\n booking_status: BookingOrderItemStatus;\n fulfillment_status: OrderItemFulfillmentStatus;\n money: LineMoneySnapshot;\n}\n\nexport type OrderItem = ProductLineItem | ServiceLineItem;\n\nexport type OrderPaymentSummaryStatus =\n | \"unpaid\"\n | \"pending\"\n | \"authorized\"\n | \"partially_paid\"\n | \"paid\"\n | \"partially_refunded\"\n | \"refunded\"\n | \"failed\"\n | \"voided\"\n | \"expired\";\n\nexport type OrderFulfillmentStatus =\n | \"unfulfilled\"\n | \"scheduled\"\n | \"on_hold\"\n | \"in_progress\"\n | \"partially_fulfilled\"\n | \"fulfilled\"\n | \"incomplete\"\n | \"not_required\";\n\nexport interface OrderFulfillmentSummary {\n status: OrderFulfillmentStatus;\n required_quantity: number;\n allocated_quantity: number;\n fulfilled_quantity: number;\n open_order_count: number;\n updated_at: number;\n}\n\nexport interface HistoryEntry {\n action: string;\n reason?: string;\n timestamp: number;\n}\n\nexport type DigitalAccessGrantStatus =\n \"pending\" | \"active\" | \"exhausted\" | \"revoked\" | \"expired\";\n\nexport interface DigitalAccessGrant {\n id: string;\n store_id: string;\n order_id: string;\n order_item_id: string;\n product_id: string;\n variant_id: string;\n contact_id: string;\n asset_id: string;\n asset_name_snapshot: string;\n type: DigitalAssetType;\n status: DigitalAccessGrantStatus;\n delivery_policy_snapshot: DigitalDeliveryPolicy;\n download_limit?: number | null;\n access_expires_after_days_snapshot?: number | null;\n download_count: number;\n expires_at?: number | null;\n granted_at?: number | null;\n revoked_at?: number | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface DigitalAccessDownloadResponse {\n url: string;\n url_expires_at?: number | null;\n grant: DigitalAccessGrant;\n}\n\nexport interface ShippingLine {\n id: string;\n shipping_method_id?: string | null;\n title: string;\n code?: string | null;\n source: string;\n carrier_identifier?: string | null;\n money: LineMoneySnapshot;\n created_at: number;\n updated_at: number;\n}\n\nexport type FulfillmentOrderStatus =\n | \"open\"\n | \"in_progress\"\n | \"closed\"\n | \"incomplete\"\n | \"on_hold\"\n | \"scheduled\"\n | \"cancelled\";\n\nexport type FulfillmentOrderRequestStatus =\n | \"unsubmitted\"\n | \"submitted\"\n | \"accepted\"\n | \"rejected\"\n | \"cancellation_requested\"\n | \"cancellation_accepted\";\n\nexport interface FulfillmentOrderLine {\n id: string;\n order_item_id: string;\n quantity: number;\n allocated_quantity: number;\n fulfilled_quantity: number;\n remaining_quantity: number;\n}\n\nexport interface FulfillmentOrder {\n id: string;\n store_id: string;\n order_id: string;\n assigned_location_id: string;\n status: FulfillmentOrderStatus;\n request_status: FulfillmentOrderRequestStatus;\n fulfill_at?: number | null;\n fulfill_by?: number | null;\n destination?: Address | null;\n lines: FulfillmentOrderLine[];\n created_at: number;\n updated_at: number;\n}\n\nexport interface Order {\n id: string;\n revision: number;\n number: string;\n store_id: string;\n source_cart_id: string;\n contact_id: string;\n status: OrderStatus;\n payment_status: OrderPaymentSummaryStatus;\n fulfillment_status: OrderFulfillmentStatus;\n verified: boolean;\n items: OrderItem[];\n payment_id: string;\n money: OrderMoney;\n financial_summary: OrderFinancialSummary;\n fulfillment_summary: OrderFulfillmentSummary;\n shipping_lines: ShippingLine[];\n shipping_address?: Address;\n billing_address?: Address;\n forms: FormEntry[];\n history: HistoryEntry[];\n contact_list_id?: string;\n fired_reminders: number[];\n created_at: number;\n updated_at: number;\n}\n\nexport type CheckoutPaymentAction =\n { type: \"none\" } | { type: \"handle_next_action\"; client_secret: string };\n\nexport interface OrderCheckoutResult {\n order_id: string;\n number: string;\n payment_action: CheckoutPaymentAction;\n payment: OrderPayment;\n}\n\nexport interface Zone {\n id: string;\n store_id: string;\n market_id: string;\n countries: string[];\n states: string[];\n postal_codes: string[];\n tax_bps: number;\n shipping_methods: ShippingMethod[];\n}\n\nexport interface Market {\n id: string;\n store_id: string;\n key: string;\n currency: Currency;\n tax_mode: \"exclusive\" | \"inclusive\";\n payment_methods: PaymentMethod[];\n zones: Zone[];\n created_at: number;\n updated_at: number;\n}\n\nexport interface Language {\n id: string;\n}\n\nexport interface StoreEmails {\n billing: string;\n support: string;\n}\n\nexport type WebhookEventSubscription =\n | { event: \"collection.created\"; key?: string }\n | { event: \"collection.updated\"; key?: string }\n | { event: \"collection.deleted\"; key?: string }\n | { event: \"entry.created\"; collection_id?: string; key?: string }\n | { event: \"entry.updated\"; collection_id?: string; key?: string }\n | { event: \"entry.deleted\"; collection_id?: string; key?: string }\n | { event: \"order.created\" }\n | { event: \"order.updated\" }\n | { event: \"order.confirmed\" }\n | { event: \"order.payment_received\" }\n | { event: \"order.payment_failed\" }\n | { event: \"order.refunded\" }\n | { event: \"order.digital_access_activated\" }\n | { event: \"order.digital_access_downloaded\" }\n | { event: \"order.digital_access_revoked\" }\n | { event: \"order.cancelled\" }\n | { event: \"order.reminder\" }\n | { event: \"order.shipment_created\" }\n | { event: \"order.shipment_in_transit\" }\n | { event: \"order.shipment_out_for_delivery\" }\n | { event: \"order.shipment_delivered\" }\n | { event: \"order.shipment_failed\" }\n | { event: \"order.shipment_returned\" }\n | { event: \"order.shipment_status_changed\" }\n | { event: \"cart.created\" }\n | { event: \"cart.updated\" }\n | { event: \"cart.abandoned\" }\n | { event: \"cart.converted\" }\n | { event: \"product.created\" }\n | { event: \"product.updated\" }\n | { event: \"product.deleted\" }\n | { event: \"provider.created\" }\n | { event: \"provider.updated\" }\n | { event: \"provider.deleted\" }\n | { event: \"service.created\" }\n | { event: \"service.updated\" }\n | { event: \"service.deleted\" }\n | { event: \"media.created\" }\n | { event: \"media.deleted\" }\n | { event: \"store.created\" }\n | { event: \"store.updated\" }\n | { event: \"contact_list.created\" }\n | { event: \"contact_list.updated\" }\n | { event: \"contact_list.contact_added\" }\n | { event: \"contact_list.contact_pending\" }\n | { event: \"contact_list.contact_confirmed\" }\n | { event: \"contact_list.contact_cancelled\" }\n | { event: \"contact.created\" }\n | { event: \"contact.updated\" }\n | { event: \"form_submission.created\"; form_id?: string }\n | { event: \"account.updated\" };\n\nexport interface Webhook {\n id: string;\n store_id: string;\n key: string;\n url: string;\n events: WebhookEventSubscription[];\n headers: Record<string, string>;\n secret: string;\n enabled: boolean;\n created_at: number;\n updated_at: number;\n}\n\nexport type StoreSubscriptionStatus =\n \"pending\" | \"active\" | \"cancellation_scheduled\" | \"cancelled\" | \"expired\";\n\nexport type StoreSubscriptionActionStatus =\n \"requested\" | \"processing\" | \"succeeded\" | \"rejected\" | \"failed\" | \"unknown\";\n\nexport type StoreSubscriptionActionRequest =\n | { type: \"select_plan\"; data: { plan_id: string } }\n | { type: \"cancel_at_period_end\" }\n | { type: \"reactivate\" };\n\nexport type StoreSubscriptionActionError =\n | {\n type: \"provider_rejected\";\n data: { effect_id: string; message: string };\n }\n | {\n type: \"unknown_outcome\";\n data: { effect_id: string; message: string };\n }\n | {\n type: \"provider_call_not_started\";\n data: { effect_id: string; message: string };\n };\n\nexport type StoreSubscriptionActionResult = {\n type: \"checkout\";\n data: {\n session_id: string;\n checkout_url: string;\n expires_at: number;\n };\n};\n\nexport interface StoreSubscriptionAction {\n id: string;\n subscription_id: string;\n store_id: string;\n request: StoreSubscriptionActionRequest;\n status: StoreSubscriptionActionStatus;\n error?: StoreSubscriptionActionError | null;\n result?: StoreSubscriptionActionResult | null;\n requested_at: number;\n completed_at?: number | null;\n updated_at: number;\n}\n\nexport type StoreSubscriptionEffectType =\n | \"create_checkout\"\n | \"cancel_at_period_end\"\n | \"cancel_immediately\"\n | \"reactivate\"\n | \"update_plan\"\n | \"create_schedule\"\n | \"update_schedule\";\n\nexport type StoreSubscriptionEffectStatus = StoreSubscriptionActionStatus;\n\nexport type StoreSubscriptionEffectError =\n | { type: \"provider_rejected\"; data: { message: string } }\n | { type: \"unknown_outcome\"; data: { message: string } }\n | { type: \"provider_call_not_started\"; data: { message: string } };\n\nexport interface StoreSubscriptionEffect {\n id: string;\n action_id: string;\n subscription_id: string;\n store_id: string;\n sequence: number;\n type: StoreSubscriptionEffectType;\n status: StoreSubscriptionEffectStatus;\n error?: StoreSubscriptionEffectError | null;\n requested_at: number;\n processing_started_at?: number | null;\n completed_at?: number | null;\n updated_at: number;\n}\n\nexport interface StoreSubscriptionPayment {\n currency: Currency;\n market: string;\n}\n\nexport interface StoreSubscription {\n id: string;\n store_id: string;\n plan_id: string;\n pending_plan_id: string | null;\n payment: StoreSubscriptionPayment;\n status: StoreSubscriptionStatus;\n start_date: number;\n end_date: number;\n created_at: number;\n updated_at: number;\n}\n\nexport type ContactListMembershipPaymentAttemptStatus =\n | \"pending\"\n | \"confirming\"\n | \"requires_action\"\n | \"processing\"\n | \"declined\"\n | \"failed\"\n | \"rejected\"\n | \"succeeded\"\n | \"expired\"\n | \"unknown\";\n\nexport type ContactListMembershipPaymentAttemptType =\n | \"create_customer\"\n | \"create_payment_intent\"\n | \"create_subscription\"\n | \"confirm_payment_intent\";\n\nexport type ContactListMembershipPaymentAttemptSafeError =\n \"payment_rejected\" | \"invalid_payment_state\" | \"unknown_outcome\";\n\nexport interface ContactListMembershipPaymentAttempt {\n id: string;\n store_id: string;\n contact_list_id: string;\n membership_id: string;\n contact_id: string;\n generation: number;\n stage: number;\n type: ContactListMembershipPaymentAttemptType;\n status: ContactListMembershipPaymentAttemptStatus;\n plan_id: string;\n amount: number;\n currency: Currency;\n interval?: SubscriptionInterval | null;\n safe_error?: ContactListMembershipPaymentAttemptSafeError | null;\n started_at: number;\n updated_at: number;\n}\n\nexport type ContactListMembershipRefundStatus =\n \"requested\" | \"processing\" | \"succeeded\" | \"failed\" | \"rejected\" | \"unknown\";\n\nexport type ContactListMembershipRefundType = \"partial\" | \"full\";\n\nexport type ContactListMembershipRefundSafeError =\n \"provider_rejected\" | \"invalid_refund_state\" | \"unknown_outcome\";\n\nexport interface ContactListMembershipRefund {\n id: string;\n store_id: string;\n contact_list_id: string;\n membership_id: string;\n payment_attempt_id: string;\n revision: number;\n type: ContactListMembershipRefundType;\n amount: number;\n currency: Currency;\n status: ContactListMembershipRefundStatus;\n safe_error?: ContactListMembershipRefundSafeError | null;\n created_at: number;\n updated_at: number;\n}\n\nexport type ContactListMembershipCancellationStatus =\n \"requested\" | \"processing\" | \"succeeded\" | \"failed\" | \"rejected\" | \"unknown\";\n\nexport type ContactListMembershipCancellationType =\n \"at_period_end\" | \"immediate\";\n\nexport type ContactListMembershipCancellationSafeError =\n \"provider_rejected\" | \"invalid_cancellation_state\" | \"unknown_outcome\";\n\nexport interface ContactListMembershipCancellation {\n id: string;\n store_id: string;\n contact_list_id: string;\n membership_id: string;\n payment_attempt_id: string;\n refund_id?: string | null;\n revision: number;\n type: ContactListMembershipCancellationType;\n status: ContactListMembershipCancellationStatus;\n safe_error?: ContactListMembershipCancellationSafeError | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface Store {\n id: string;\n key: string;\n publishable_key: string;\n default_market_id: string | null;\n timezone: string;\n languages?: Language[];\n emails?: StoreEmails;\n payment?: PaymentStoreConfig | null;\n}\n\nexport interface EshopStoreState {\n store_id: string;\n selected_shipping_method_id: string | null;\n user_token: string | null;\n processing_checkout: boolean;\n loading: boolean;\n error: string | null;\n}\n\nexport interface Block {\n id: string;\n key: string;\n type: string;\n properties?: any;\n value?: any;\n}\n\nexport type TaxonomySchemaType = \"text\" | \"number\" | \"boolean\" | \"geo_location\";\n\nexport interface TaxonomySchema {\n id: string;\n key: string;\n type: TaxonomySchemaType;\n value?: string[];\n min?: number | null;\n max?: number | null;\n}\n\nexport interface TaxonomyField {\n id: string;\n key: string;\n type: TaxonomySchemaType;\n value: any;\n}\n\nexport interface TaxonomyFieldQuery {\n key: string;\n type: TaxonomySchemaType;\n operation?: string;\n value: any;\n center?: { lat: number; lon: number };\n radius?: number;\n}\n\nexport interface TaxonomyEntry {\n taxonomy_id: string;\n fields: TaxonomyField[];\n}\n\nexport interface TaxonomyQuery {\n taxonomy_id: string;\n query: TaxonomyFieldQuery[];\n}\n\nexport type FormSchemaType =\n \"text\" | \"number\" | \"boolean\" | \"date\" | \"geo_location\" | \"select\";\n\ninterface FormSchemaBase {\n id: string;\n key: string;\n required: boolean;\n}\n\nexport type FormSchema =\n | (FormSchemaBase & { type: \"text\" })\n | (FormSchemaBase & {\n type: \"number\";\n min?: number | null;\n max?: number | null;\n })\n | (FormSchemaBase & { type: \"boolean\" })\n | (FormSchemaBase & { type: \"date\" })\n | (FormSchemaBase & { type: \"geo_location\" })\n | (FormSchemaBase & { type: \"select\"; options: string[] });\n\nexport type FormFieldType =\n \"text\" | \"number\" | \"boolean\" | \"date\" | \"geo_location\" | \"select\";\n\ninterface FormFieldBase {\n id: string;\n key: string;\n}\n\nexport type FormField =\n | (FormFieldBase & { type: \"text\"; value: string })\n | (FormFieldBase & { type: \"number\"; value: number })\n | (FormFieldBase & { type: \"boolean\"; value: boolean })\n | (FormFieldBase & { type: \"date\"; value: number })\n | (FormFieldBase & { type: \"geo_location\"; value: GeoLocation })\n | (FormFieldBase & { type: \"select\"; value: string[] });\n\nexport type FormValue = FormField[\"value\"];\nexport type FormValues = Record<string, FormValue | undefined>;\n\nexport interface FormEntry {\n form_id: string;\n fields: FormField[];\n}\n\nexport type BlockType =\n | \"text\"\n | \"localized_text\"\n | \"number\"\n | \"boolean\"\n | \"date\"\n | \"array\"\n | \"object\"\n | \"media\"\n | \"entry\"\n | \"markdown\"\n | \"geo_location\";\n\nexport interface GeoLocationBlockProperties {}\n\nexport interface GeoLocationBlock extends Block {\n type: \"geo_location\";\n properties: GeoLocationBlockProperties;\n value: GeoLocation | null;\n}\n\nexport type Access = \"public\" | \"private\";\n\nexport type MediaSize = \"original\" | \"thumbnail\" | \"small\" | \"medium\" | \"large\";\n\nexport interface MediaResolution {\n id: string;\n size: MediaSize;\n url: string;\n}\n\nexport interface Media {\n id: string;\n resolutions: Partial<Record<MediaSize, MediaResolution>>;\n mime_type: string;\n title?: string | null;\n description?: string | null;\n alt?: string | null;\n store_id: string;\n metadata?: string | null;\n created_at: number;\n slug: Record<string, string>;\n}\n\nexport type SubscriptionPlanFeatureType =\n | \"collections\"\n | \"entries\"\n | \"services\"\n | \"products\"\n | \"providers\"\n | \"workflows\"\n | \"contact_lists\"\n | \"crm_contacts\"\n | \"media\"\n | \"members\"\n | \"taxonomies\"\n | \"email_templates\"\n | \"forms\"\n | \"mailboxes\"\n | \"social_connections\"\n | \"webhooks\"\n | \"support_agents\"\n | \"lead_research_runs\"\n | \"outreach_campaigns\";\n\nexport interface SubscriptionPlanFeature {\n limit: number | null;\n reset: \"never\" | \"monthly\";\n}\n\nexport interface SubscriptionPlan {\n id: string;\n provider_price_id: string | null;\n name: string;\n tier: number;\n amount: number;\n currency: Currency;\n interval: \"lifetime\" | \"month\" | \"year\";\n interval_count: number;\n features: Record<SubscriptionPlanFeatureType, SubscriptionPlanFeature>;\n}\n\nexport type AccountApiTokenStatus = \"active\" | \"revoked\" | \"expired\";\n\nexport interface AccountApiToken {\n id: string;\n token_hint: string;\n name: string;\n status: AccountApiTokenStatus;\n created_at: number;\n expires_at?: number | null;\n revoked_at?: number | null;\n}\n\nexport interface StoreMembership {\n id: string;\n store_id: string;\n account_id: string;\n role: import(\"./api\").StoreRole;\n status: \"invited\" | \"active\";\n invited_by_account_id?: string | null;\n invited_at?: number | null;\n joined_at?: number | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface StoreMember {\n account: Account;\n membership: StoreMembership;\n}\n\nexport interface AccountLifecycle {\n last_login_at?: number | null;\n onboarding_completed: boolean;\n}\n\nexport interface Account {\n id: string;\n email: string;\n lifecycle: AccountLifecycle;\n}\n\nexport interface AccountUpdateResponse {\n success: boolean;\n}\n\nexport interface AccountApiTokenCreated {\n token: AccountApiToken;\n value: string;\n}\n\nexport interface AccountSession {\n id: string;\n status: \"active\" | \"revoked\" | \"expired\";\n access_expires_at: number;\n refresh_expires_at: number;\n is_verified: boolean;\n created_at: number;\n revoked_at?: number | null;\n}\n\nexport interface PaginatedResponse<T> {\n items: T[];\n cursor: string | null;\n}\n\nexport type ServiceStatus = \"active\" | \"draft\" | \"archived\";\nexport type ProviderStatus = \"active\" | \"draft\" | \"archived\";\n\nexport type ProductStatus = \"active\" | \"draft\" | \"archived\";\nexport type ContactStatus = \"active\" | \"archived\";\nexport type ContactListStatus = \"active\" | \"draft\" | \"archived\";\nexport type ContactListSource =\n \"manual\" | \"import\" | \"signup\" | \"admin\" | \"system\" | \"lead_research\";\nexport type ContactListMembershipStatus =\n | \"pending\"\n | \"active\"\n | \"cancellation_scheduled\"\n | \"cancelled\"\n | \"expired\"\n | \"archived\";\nexport type ContactListPlanStatus = \"active\" | \"archived\";\nexport type ContactListContentAccessStatus = \"active\" | \"archived\";\nexport type MailboxStatus = \"active\" | \"draft\" | \"archived\";\nexport type MailboxPreset = \"gmail\" | \"zoho\" | \"microsoft\" | \"custom\";\nexport type MailboxConnectionSecurity = \"tls\" | \"start_tls\";\nexport type MailboxSyncStatus = \"not_ready\" | \"ready\" | \"failed\";\nexport type SmtpImapMailboxProviderInput = {\n type: \"smtp_imap\";\n preset: MailboxPreset;\n smtp_host: string;\n smtp_port: number;\n smtp_security: MailboxConnectionSecurity;\n imap_host: string;\n imap_port: number;\n imap_security: MailboxConnectionSecurity;\n username: string;\n sync_enabled: boolean;\n sync_interval_seconds: number;\n};\nexport type SmtpImapMailboxProvider = SmtpImapMailboxProviderInput & {\n password_configured: boolean;\n sync_status?: MailboxSyncStatus;\n sync_error?: string | null;\n sync_ready_at?: number | null;\n last_synced_at?: number | null;\n last_seen_uid?: number | null;\n};\nexport interface GoogleMailboxProfile {\n external_account_id: string;\n email: string;\n display_name: string;\n avatar_url?: string | null;\n}\nexport type GoogleMailboxProvider = {\n type: \"google\";\n profile: GoogleMailboxProfile;\n access_configured: boolean;\n refresh_configured: boolean;\n token_expires_at?: number | null;\n token_type?: string | null;\n scopes: string[];\n sync_enabled: boolean;\n sync_interval_seconds: number;\n sync_status?: MailboxSyncStatus;\n sync_error?: string | null;\n sync_ready_at?: number | null;\n last_synced_at?: number | null;\n last_history_id?: string | null;\n};\nexport type CampaignStatus =\n \"draft\" | \"active\" | \"paused\" | \"completed\" | \"archived\";\nexport type CampaignLaunchStatus =\n \"idle\" | \"requested\" | \"processing\" | \"succeeded\" | \"failed\";\nexport type CampaignEnrollmentStatus =\n | \"pending\"\n | \"active\"\n | \"action_required\"\n | \"replied\"\n | \"completed\"\n | \"suppressed\"\n | \"failed\"\n | \"stopped\";\nexport type CampaignEnrollmentImportSource =\n \"contact_list\" | \"contact\" | \"manual\";\nexport type CampaignMessageStatus =\n | \"draft\"\n | \"scheduled\"\n | \"pending\"\n | \"sending\"\n | \"sent\"\n | \"received\"\n | \"action_required\"\n | \"completed\"\n | \"bounced\"\n | \"failed\"\n | \"unknown\"\n | \"skipped\"\n | \"stopped\"\n | \"superseded\";\nexport type CampaignMessageType =\n | \"campaign_step_email\"\n | \"manual_task\"\n | \"manual_reply\"\n | \"inbound_reply\"\n | \"delivery_failure\"\n | \"action\";\nexport type CampaignMessageDirection = \"outbound\" | \"inbound\" | \"action\";\nexport type CampaignMessageCopySource = \"template\" | \"generated\" | \"edited\";\nexport type OutreachThreadMode = \"new_thread\" | \"same_thread\";\nexport type ManualTaskContinueBehavior =\n \"continue_after_delay\" | \"wait_until_completed\";\nexport type OutreachStepType =\n | {\n type: \"email\";\n template_id: string;\n template_vars?: Record<string, unknown>;\n body?: string | null;\n thread_mode?: OutreachThreadMode;\n attachments?: string[];\n }\n | {\n type: \"manual_task\";\n target_channel_type?: ChannelType | null;\n title: string;\n instructions: string;\n suggested_message?: string | null;\n external_url?: string | null;\n continue_behavior: ManualTaskContinueBehavior;\n };\nexport type CampaignManualTaskOutcome =\n \"done\" | \"skipped\" | \"got_reply\" | \"do_not_contact\";\nexport type OutreachPersonalizationStatus =\n \"idle\" | \"running\" | \"completed\" | \"failed\";\nexport type SuppressionStatus = \"active\" | \"archived\";\nexport type SuppressionTargetType = \"email\" | \"domain\" | \"contact\" | \"phone\";\nexport type SuppressionScopeType = \"store\" | \"campaign\";\nexport type SuppressionReason =\n \"manual\" | \"unsubscribed\" | \"bounced\" | \"complained\" | \"replied\";\nexport type SuppressionSource = \"admin\" | \"import\" | \"reply\" | \"system\";\nexport type WorkflowStatus = \"active\" | \"draft\" | \"archived\" | \"deleting\";\nexport type MutableWorkflowStatus = Exclude<WorkflowStatus, \"deleting\">;\nexport type PromoCodeStatus = \"active\" | \"draft\" | \"archived\";\nexport type CollectionStatus = \"active\" | \"draft\" | \"archived\";\nexport type EntryStatus = \"active\" | \"draft\" | \"archived\";\nexport type EmailTemplateStatus = \"active\" | \"draft\" | \"archived\";\nexport type EmailTemplateType =\n | \"order_store_notification\"\n | \"order_contact_notification\"\n | \"order_reminder_contact\"\n | \"digital_access_ready_contact\"\n | \"contact_store_notification\"\n | \"subscription_confirmation\"\n | \"campaign_email\"\n | \"newsletter_email\";\n\nexport type FormStatus = \"active\" | \"draft\" | \"archived\";\nexport type TaxonomyStatus = \"active\" | \"draft\" | \"archived\";\n\nexport type OrderCancellationReason =\n | \"admin_rejected\"\n | \"contact_cancelled\"\n | \"payment_failed\"\n | \"expired\"\n | \"other\";\n\nexport type OrderItemStatus =\n | { status: \"pending\"; expires_at: number }\n | { status: \"confirmed\" }\n | { status: \"cancelled\"; reason: OrderCancellationReason };\n\nexport type OrderStatus =\n | \"pending\"\n | \"partially_confirmed\"\n | \"confirmed\"\n | \"partially_cancelled\"\n | \"cancelled\"\n | \"completed\";\n\nexport type OrderPaymentStatus =\n | { status: \"pending\"; at: number }\n | { status: \"requires_action\"; at: number; reason?: string | null }\n | { status: \"processing\"; at: number }\n | { status: \"authorized\"; at: number; amount: number }\n | { status: \"partially_captured\"; at: number; amount: number }\n | { status: \"captured\"; at: number; amount: number }\n | { status: \"partially_refunded\"; at: number; amount: number }\n | { status: \"refunded\"; at: number; amount: number }\n | { status: \"voided\"; at: number; amount: number }\n | { status: \"cancelled\"; at: number; reason?: string | null }\n | { status: \"expired\"; at: number }\n | { status: \"failed\"; at: number; reason?: string | null };\n\nexport interface TimeRange {\n from: number;\n to: number;\n}\n\nexport type BlockSchemaType =\n | \"text\"\n | \"localized_text\"\n | \"number\"\n | \"boolean\"\n | \"date\"\n | \"geo_location\"\n | \"markdown\"\n | \"media\"\n | \"entry\"\n | \"array\"\n | \"object\";\n\nexport interface BlockSchemaProperties {\n min_values?: number | null;\n max_values?: number | null;\n min_length?: number | null;\n max_length?: number | null;\n pattern?: string | null;\n min?: number | null;\n max?: number | null;\n collection_id?: string | null;\n on_delete?: \"restrict\" | \"set_null\" | null;\n}\n\nexport interface BlockSchema {\n id: string;\n key: string;\n type: BlockSchemaType;\n required: boolean;\n properties: BlockSchemaProperties;\n children: BlockSchema[];\n}\n\nexport interface Collection {\n id: string;\n store_id: string;\n key: string;\n schema: BlockSchema[];\n blocks: Block[];\n status: CollectionStatus;\n created_at: number;\n updated_at: number;\n}\n\nexport interface MediaRef {\n media_id: string;\n url?: string | null;\n mime_type?: string | null;\n alt?: string | null;\n}\n\nexport type FieldOperation =\n | \"equals\"\n | \"not_equals\"\n | \"contains\"\n | \"in\"\n | \"greater_than\"\n | \"greater_than_or_equal\"\n | \"less_than\"\n | \"less_than_or_equal\";\n\nexport type EntryBlockQuery =\n | { type: \"text\"; key: string; values: string[] }\n | { type: \"number\"; key: string; operation: FieldOperation; value: number }\n | { type: \"boolean\"; key: string; value: boolean }\n | { type: \"date\"; key: string; operation: FieldOperation; value: number };\n\nexport interface CollectionEntry {\n id: string;\n store_id: string;\n collection_id: string;\n key: string;\n slug: Record<string, string>;\n blocks: Block[];\n status: EntryStatus;\n created_at: number;\n updated_at: number;\n}\n\nexport interface EmailTemplate {\n id: string;\n key: string;\n store_id: string;\n type: EmailTemplateType;\n subject: Record<string, string>;\n body: string;\n preheader?: string;\n variables: EmailTemplateVariable[];\n sample_data: Record<string, unknown>;\n status: EmailTemplateStatus;\n created_at: number;\n updated_at: number;\n}\n\nexport type EmailTemplateVariableSource = \"template\" | \"system\";\n\nexport interface EmailTemplateVariable {\n key: string;\n required: boolean;\n source: EmailTemplateVariableSource;\n}\n\nexport interface Form {\n id: string;\n key: string;\n store_id: string;\n schema: FormSchema[];\n status: FormStatus;\n created_at: number;\n updated_at: number;\n}\n\nexport interface FormSubmission {\n id: string;\n form_id: string;\n store_id: string;\n contact_id: string;\n fields: FormField[];\n created_at: number;\n}\n\nexport interface Taxonomy {\n id: string;\n key: string;\n store_id: string;\n parent_id?: string | null;\n schema?: TaxonomySchema[];\n status: TaxonomyStatus;\n created_at: number;\n updated_at: number;\n}\n\nexport interface ServiceDuration {\n duration: number;\n is_pause: boolean;\n}\n\nexport interface WorkingHour {\n from: number;\n to: number;\n}\n\nexport interface WorkingDay {\n day: string;\n working_hours: WorkingHour[];\n}\n\nexport interface SpecificDate {\n date: number;\n working_hours: WorkingHour[];\n}\n\nexport interface ServiceProvider {\n id: string;\n service_id: string;\n provider_id: string;\n store_id: string;\n working_days: WorkingDay[];\n specific_dates: SpecificDate[];\n prices: Price[];\n durations: ServiceDuration[];\n slot_interval: number;\n forms: FormEntry[];\n reminders: number[];\n min_advance: number;\n max_advance: number;\n created_at: number;\n updated_at: number;\n}\n\nexport interface Service {\n id: string;\n key: string;\n slug: Record<string, string>;\n store_id: string;\n blocks: Block[];\n taxonomies: TaxonomyEntry[];\n created_at: number;\n updated_at: number;\n status: ServiceStatus;\n}\n\nexport interface ProviderTimelinePoint {\n timestamp: number;\n booked: number;\n}\n\nexport interface Provider {\n id: string;\n key: string;\n slug: Record<string, string>;\n store_id: string;\n status: ProviderStatus;\n blocks: Block[];\n taxonomies: TaxonomyEntry[];\n timeline: ProviderTimelinePoint[];\n created_at: number;\n updated_at: number;\n}\n\nexport interface WorkflowEdge {\n source: string;\n target: string;\n output: string;\n back_edge: boolean;\n}\n\nexport interface Workflow {\n id: string;\n key: string;\n store_id: string;\n secret: string;\n trigger_url: string;\n status: WorkflowStatus;\n nodes: Record<string, WorkflowNode>;\n edges: WorkflowEdge[];\n\n schedule?: string;\n created_at: number;\n updated_at: number;\n}\n\nexport type WorkflowNode =\n | WorkflowTriggerNode\n | WorkflowHttpNode\n | WorkflowSendEmailNode\n | WorkflowDeployWebhookNode\n | WorkflowGoogleDriveUploadNode\n | WorkflowSwitchNode\n | WorkflowTransformNode\n | WorkflowLoopNode;\n\nexport interface WorkflowTriggerNode {\n type: \"trigger\";\n delay_ms?: number;\n schema?: Block[];\n}\n\ninterface WorkflowHttpNodeBase {\n type: \"http\";\n url: string;\n headers: Record<string, string>;\n body?: unknown;\n timeout_ms: number;\n delay_ms: number;\n}\n\nexport type WorkflowHttpNode = WorkflowHttpNodeBase &\n (\n | {\n method: \"get\";\n retries: number;\n retry_delay_ms: number;\n }\n | {\n method: Exclude<WorkflowHttpMethod, \"get\">;\n retries: 0;\n retry_delay_ms: 0;\n }\n );\n\nexport type EmailRecipients = string | string[];\n\nexport interface EmailSendTemplateData {\n store_id: string;\n mailbox_id: string;\n template_id: string;\n recipients: EmailRecipients;\n vars?: Record<string, unknown>;\n}\n\nexport type EmailSend =\n | { type: \"order_store_notification\"; data: EmailSendTemplateData }\n | { type: \"order_contact_notification\"; data: EmailSendTemplateData }\n | { type: \"order_reminder_contact\"; data: EmailSendTemplateData }\n | { type: \"digital_access_ready_contact\"; data: EmailSendTemplateData }\n | { type: \"contact_store_notification\"; data: EmailSendTemplateData }\n | { type: \"subscription_confirmation\"; data: EmailSendTemplateData };\n\nexport interface EmailSendRequest {\n send_id: string;\n send: EmailSend;\n}\n\nexport type EmailDeliveryErrorKind =\n \"provider_call_not_started\" | \"provider_rejected\" | \"unknown_outcome\";\n\nexport type EmailDeliveryStatus =\n | \"pending\"\n | \"sending\"\n | \"sent\"\n | \"rejected\"\n | \"failed\"\n | \"unknown\"\n | \"skipped\";\n\nexport type EmailDeliveryType =\n | {\n type: \"platform_auth_code\";\n data: { account_id: string; challenge_id: string };\n }\n | {\n type: \"store_auth_code\";\n data: { store_id: string; account_id: string; challenge_id: string };\n }\n | {\n type: \"contact_verification\";\n data: { store_id: string; contact_id: string; challenge_id: string };\n }\n | {\n type: \"tenant_mailbox\";\n data: {\n send_id: string;\n store_id: string;\n mailbox_id: string;\n template_id: string;\n };\n }\n | {\n type: \"campaign_message\";\n data: {\n store_id: string;\n campaign_message_id: string;\n mailbox_id: string;\n };\n }\n | {\n type: \"support_message\";\n data: {\n store_id: string;\n support_message_id: string;\n mailbox_id: string;\n };\n };\n\nexport interface EmailDeliveryError {\n type: EmailDeliveryErrorKind;\n message: string;\n}\n\nexport interface EmailDelivery {\n id: string;\n revision: number;\n attempts: number;\n type: EmailDeliveryType;\n status: EmailDeliveryStatus;\n error?: EmailDeliveryError | null;\n requested_at: number;\n processing_started_at?: number | null;\n completed_at?: number | null;\n sent_at?: number | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface GetEmailDeliveryParams {\n delivery_id: string;\n}\n\nexport interface RetryEmailDeliveryParams {\n delivery_id: string;\n revision: number;\n}\n\nexport interface EmailSendDeliveryResult {\n delivery_id: string;\n revision: number;\n recipient: string;\n mailbox_id: string;\n template_id: string;\n status: EmailDeliveryStatus;\n error?: EmailDeliveryError | null;\n provider_message_id?: string | null;\n provider_thread_id?: string | null;\n}\n\nexport interface EmailSendResult {\n sent: number;\n deliveries: EmailSendDeliveryResult[];\n}\n\nexport interface WorkflowSendEmailNode {\n type: \"send_email\";\n send: EmailSend;\n delay_ms?: number;\n}\n\nexport interface WorkflowDeployWebhookNode {\n type: \"deploy_webhook\";\n build_hook_id: string;\n timeout_ms?: number;\n delay_ms?: number;\n}\n\nexport type WorkflowConnectionType = \"google_drive\";\n\nexport interface GoogleDriveWorkflowProfile {\n external_account_id: string;\n display_name: string;\n email?: string | null;\n}\n\nexport interface GoogleDriveWorkflowConnectionData {\n type: \"google_drive\";\n connected: boolean;\n profile: GoogleDriveWorkflowProfile | null;\n}\n\nexport type WorkflowConnectionData = GoogleDriveWorkflowConnectionData;\n\nexport interface WorkflowConnection {\n id: string;\n store_id: string;\n type: WorkflowConnectionType;\n data: WorkflowConnectionData;\n created_at: number;\n updated_at: number;\n}\n\nexport interface WorkflowConnectionConnectUrl {\n authorization_url: string;\n state: string;\n}\n\nexport interface WorkflowGoogleDriveUploadNode {\n type: \"google_drive_upload\";\n workflow_connection_id: string;\n name: string;\n mime_type?: string;\n content?: unknown;\n parent_folder_id?: string | null;\n timeout_ms?: number;\n delay_ms?: number;\n}\n\nexport interface WorkflowSwitchRule {\n condition: string;\n}\n\nexport interface WorkflowSwitchNode {\n type: \"switch\";\n rules: WorkflowSwitchRule[];\n delay_ms?: number;\n}\n\nexport interface WorkflowTransformNode {\n type: \"transform\";\n code: string;\n delay_ms?: number;\n}\n\nexport interface WorkflowLoopNode {\n type: \"loop\";\n expression: string;\n delay_ms?: number;\n}\n\nexport type WorkflowHttpMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\n\nexport type ExecutionStatus =\n \"pending\" | \"running\" | \"completed\" | \"failed\" | \"cancelled\";\n\nexport interface NodeResult {\n output: any;\n route: string;\n started_at: number;\n completed_at: number;\n duration_ms: number;\n error?: string;\n}\n\nexport type WorkflowExecutionInput =\n | { type: \"webhook\"; payload: unknown }\n | { type: \"schedule\"; schedule: string };\n\nexport interface WorkflowExecution {\n id: string;\n workflow_id: string;\n store_id: string;\n status: ExecutionStatus;\n input: WorkflowExecutionInput;\n results: Record<string, NodeResult>;\n error?: string;\n scheduled_at: number;\n started_at: number;\n completed_at?: number;\n created_at: number;\n updated_at: number;\n}\n\nexport type WorkflowEffectType =\n \"http_mutation\" | \"deploy_webhook\" | \"google_drive_upload\";\n\nexport type WorkflowEffectStatus =\n \"requested\" | \"processing\" | \"succeeded\" | \"rejected\" | \"failed\" | \"unknown\";\n\nexport interface WorkflowEffectError {\n type: \"provider_call_not_started\" | \"provider_rejected\" | \"unknown_outcome\";\n message: string;\n at: number;\n}\n\nexport interface WorkflowEffectEvidence {\n output: unknown;\n}\n\nexport interface WorkflowEffect {\n id: string;\n store_id: string;\n workflow_id: string;\n execution_id: string;\n node_id: string;\n type: WorkflowEffectType;\n status: WorkflowEffectStatus;\n requested_at: number;\n processing_started_at?: number | null;\n completed_at?: number | null;\n evidence?: WorkflowEffectEvidence | null;\n error?: WorkflowEffectError | null;\n updated_at: number;\n}\n\nexport type ContactListType =\n | { type: \"standard\" }\n | { type: \"confirmation\"; confirm_template_id?: string | null }\n | { type: \"paid\" };\n\nexport type ContactListPlanCatalogStatus =\n \"requested\" | \"processing\" | \"succeeded\" | \"failed\" | \"unknown\";\n\nexport type ContactListPlanCatalogType =\n { type: \"create_product\" } | { type: \"create_price\"; price_index: number };\n\nexport type ContactListPlanCatalogSafeError =\n \"provider_rejected\" | \"invalid_catalog_state\" | \"unknown_outcome\";\n\nexport interface ContactListPlan {\n id: string;\n store_id: string;\n contact_list_id: string;\n key: string;\n name: string;\n description?: string | null;\n status: ContactListPlanStatus;\n prices: SubscriptionPrice[];\n payment_provider_id?: string | null;\n catalog_revision: number;\n catalog_type: ContactListPlanCatalogType;\n catalog_status: ContactListPlanCatalogStatus;\n catalog_safe_error?: ContactListPlanCatalogSafeError | null;\n created_at: number;\n updated_at: number;\n}\n\nexport type ContactListContentAccessTarget =\n | { type: \"cms_entry\"; entry_id: string }\n | { type: \"cms_collection\"; collection_id: string };\n\nexport interface ContactListContentAccess {\n id: string;\n target: ContactListContentAccessTarget;\n status: ContactListContentAccessStatus;\n created_at: number;\n updated_at: number;\n}\n\nexport type ContactSessionStatus = \"active\" | \"revoked\" | \"expired\";\n\nexport interface ContactSessionRecord {\n id: string;\n store_id: string;\n contact_id: string;\n status: ContactSessionStatus;\n created_at: number;\n expires_at: number;\n revoked_at: number | null;\n last_seen_at: number | null;\n}\n\nexport interface ContactSessionIssued {\n id: string;\n token: string;\n status: ContactSessionStatus;\n created_at: number;\n expires_at: number;\n}\n\nexport interface PromoUsage {\n promo_code_id: string;\n uses: number;\n}\n\nexport type ChannelType =\n | \"email\"\n | \"phone\"\n | \"whatsapp\"\n | \"instagram\"\n | \"facebook\"\n | \"messenger\"\n | \"linkedin_company\"\n | \"linkedin_person\"\n | \"contact_form\"\n | \"booking_link\"\n | \"telegram\"\n | \"tiktok\"\n | \"youtube\"\n | \"other\";\n\nexport interface ContactChannel {\n type: ChannelType;\n label?: string | null;\n value: string;\n normalized_value?: string | null;\n provider?: string | null;\n provider_user_id?: string | null;\n verified_at?: number | null;\n is_primary?: boolean;\n consent_status?: ContactChannelConsentStatus;\n subscribed_at?: number | null;\n unsubscribed_at?: number | null;\n source_url?: string | null;\n confidence?: number | null;\n notes?: string | null;\n created_at: number;\n updated_at: number;\n}\n\nexport type ContactChannelConsentStatus =\n \"unknown\" | \"subscribed\" | \"unsubscribed\" | \"bounced\" | \"blocked\";\n\nexport interface Contact {\n id: string;\n store_id: string;\n email: string | null;\n verified: boolean;\n status: ContactStatus;\n channels: ContactChannel[];\n promo_usage: PromoUsage[];\n taxonomies: TaxonomyEntry[];\n created_at: number;\n updated_at: number;\n}\n\nexport interface ContactListAccessResponse {\n has_access: boolean;\n membership?: ContactListMembership | null;\n}\n\nexport interface ContactListContentAccessResponse {\n has_access: boolean;\n contact_list?: ContactList | null;\n membership?: ContactListMembership | null;\n}\n\nexport interface ContactListManagementContactList {\n id: string;\n key: string;\n name: string;\n description?: string | null;\n type: ContactListType;\n content_access: ContactListContentAccess[];\n}\n\nexport interface ContactListManagementMembership {\n id: string;\n status: ContactListMembershipStatus;\n current_payment_attempt_id?: string | null;\n source: ContactListSource;\n start_date: number;\n end_date: number;\n created_at: number;\n updated_at: number;\n}\n\nexport interface ContactListManagementResponse {\n has_access: boolean;\n contact_list: ContactListManagementContactList;\n membership: ContactListManagementMembership;\n}\n\nexport interface ContactListSubscribeResponse {\n payment_action: CheckoutPaymentAction;\n payment_attempt?: StorefrontContactListPaymentAttemptSummary | null;\n membership?: ContactListMembership | null;\n}\n\nexport interface ContactList {\n id: string;\n store_id: string;\n key: string;\n name: string;\n description?: string | null;\n status: ContactListStatus;\n type: ContactListType;\n content_access: ContactListContentAccess[];\n source: ContactListSource;\n member_count: number;\n created_at: number;\n updated_at: number;\n}\n\nexport interface ContactListMembership {\n id: string;\n store_id: string;\n contact_id: string;\n contact_list_id: string;\n source: ContactListSource;\n fields: Record<string, unknown>;\n lead_description?: string | null;\n lead?: LeadInsight | null;\n status: ContactListMembershipStatus;\n current_payment_attempt_id?: string | null;\n start_date: number;\n end_date: number;\n created_at: number;\n updated_at: number;\n}\n\nexport type StorefrontContactListType =\n \"standard\" | \"confirmation\" | \"paid\";\n\nexport interface StorefrontContactList {\n id: string;\n key: string;\n name: string;\n description?: string | null;\n type: StorefrontContactListType;\n}\n\nexport interface StorefrontContactListPlan {\n id: string;\n key: string;\n name: string;\n description?: string | null;\n prices: SubscriptionPrice[];\n}\n\nexport interface StorefrontContactListPaymentAttemptSummary {\n plan_id: string;\n amount: number;\n currency: Currency;\n interval?: SubscriptionInterval | null;\n status: ContactListMembershipPaymentAttemptStatus;\n}\n\nexport interface StorefrontContactListMembership {\n id: string;\n status: ContactListMembershipStatus;\n contact_list: StorefrontContactList;\n payment_attempt?: StorefrontContactListPaymentAttemptSummary | null;\n start_date: number;\n end_date: number;\n created_at: number;\n updated_at: number;\n}\n\nexport interface ContactListMember {\n contact: Contact;\n membership: ContactListMembership;\n}\n\nexport interface ActionLocation {\n country_code?: string | null;\n city?: string | null;\n region?: string | null;\n timezone?: string | null;\n}\n\nexport interface ActionDevice {\n device_type?: string | null;\n browser?: string | null;\n os?: string | null;\n language?: string | null;\n}\n\nexport interface ActionSession {\n idx?: number | null;\n}\n\nexport interface ActionContext {\n location?: ActionLocation | null;\n device?: ActionDevice | null;\n session?: ActionSession | null;\n}\n\nexport interface SocialActionAuthor {\n provider_user_id?: string | null;\n name?: string | null;\n handle?: string | null;\n}\n\nexport type OpportunityType =\n | \"lead\"\n | \"support\"\n | \"complaint\"\n | \"question\"\n | \"upsell\"\n | \"partnership\"\n | \"engagement\";\n\nexport type OpportunityStage =\n \"new\" | \"reviewing\" | \"contacted\" | \"won\" | \"lost\" | \"dismissed\";\n\nexport type OpportunitySource =\n | {\n type: \"social_comment\";\n publication_id: string;\n comment_id: string;\n action_id?: string | null;\n }\n | {\n type: \"form_submission\";\n form_id: string;\n submission_id: string;\n }\n | {\n type: \"tracked\";\n key: string;\n action_id?: string | null;\n }\n | { type: \"manual\" };\n\nexport type ActionData =\n | {\n type: \"tracked\";\n value: {\n key: string;\n payload: Record<string, unknown>;\n context?: ActionContext | null;\n };\n }\n | {\n type: \"form_submission\";\n value: {\n form_id: string;\n form_key: string;\n submission_id: string;\n field_keys: string[];\n context?: ActionContext | null;\n };\n }\n | {\n type: \"social_comment\";\n value: {\n social_connection_id: string;\n type: SocialConnectionType;\n publication_id: string;\n comment_id: string;\n provider_comment_id: string;\n provider_parent_comment_id?: string | null;\n author: SocialActionAuthor;\n text: string;\n };\n }\n | {\n type: \"social_reply\";\n value: {\n social_connection_id: string;\n type: SocialConnectionType;\n publication_id: string;\n comment_id: string;\n provider_comment_id?: string | null;\n provider_comment_url?: string | null;\n text: string;\n };\n }\n | {\n type: \"order\";\n value: {\n order_id: string;\n status: string;\n total?: number | null;\n };\n }\n | {\n type: \"campaign_reply\";\n value: {\n campaign_id: string;\n enrollment_id: string;\n message_id: string;\n text: string;\n };\n }\n | {\n type: \"direct_message\";\n value: {\n social_connection_id: string;\n type: SocialConnectionType;\n thread_id: string;\n message_id: string;\n text: string;\n };\n }\n | {\n type: \"manual\";\n value: {\n text: string;\n account_id?: string | null;\n };\n }\n | {\n type: \"opportunity\";\n value: {\n type: OpportunityType;\n stage: OpportunityStage;\n score?: number | null;\n reason?: string | null;\n suggested_next_action?: string | null;\n source: OpportunitySource;\n lead?: LeadInsight | null;\n };\n };\n\nexport interface Action {\n id: string;\n store_id: string;\n contact_id: string;\n key: string;\n type: ActionData[\"type\"];\n preview_text?: string | null;\n occurred_at: number;\n created_at: number;\n updated_at: number;\n data: ActionData;\n}\n\nexport interface Mailbox {\n id: string;\n store_id: string;\n key: string;\n email: string;\n from_name: string;\n reply_to_email?: string | null;\n provider: SmtpImapMailboxProvider | GoogleMailboxProvider;\n status: MailboxStatus;\n daily_limit: number;\n sent_today: number;\n last_sent_at?: number | null;\n sync_revision: number;\n next_sync_at?: number | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface OutreachStep {\n id?: string;\n position?: number;\n delay_seconds?: number;\n type?: OutreachStepType;\n}\n\nexport interface OutreachPersonalizationCounters {\n total_profiles: number;\n draft_messages: number;\n generated_messages: number;\n template_messages: number;\n failed_messages: number;\n}\n\nexport interface OutreachPersonalizationState {\n run_id: string;\n status: OutreachPersonalizationStatus;\n step_position?: number | null;\n contact_ids: string[];\n overwrite: boolean;\n instructions?: string | null;\n error?: string | null;\n counters: OutreachPersonalizationCounters;\n started_at?: number | null;\n completed_at?: number | null;\n}\n\nexport interface CampaignLaunchState {\n revision: number;\n status: CampaignLaunchStatus;\n requested_at: number | null;\n processing_started_at: number | null;\n completed_at: number | null;\n error: string | null;\n}\n\nexport interface Campaign {\n id: string;\n store_id: string;\n key: string;\n name: string;\n mailbox_ids: string[];\n status: CampaignStatus;\n launch: CampaignLaunchState;\n steps: OutreachStep[];\n personalization: OutreachPersonalizationState;\n launched_at?: number | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface CampaignLaunchReadiness {\n ready: boolean;\n blockers: string[];\n warnings: string[];\n contact_count: number;\n sender_count: number;\n step_count: number;\n daily_capacity: number;\n expected_drafts: number;\n draft_count: number;\n pending_drafts: number;\n generated_drafts: number;\n template_drafts: number;\n edited_drafts: number;\n personalization_errors: number;\n stale_drafts: number;\n suppression_count: number;\n}\n\nexport interface CampaignEnrollmentImportResult {\n imported_count: number;\n existing_count: number;\n skipped_count: number;\n draft_count: number;\n}\n\nexport interface CampaignEnrollment {\n id: string;\n store_id: string;\n campaign_id: string;\n contact_id: string;\n contact_list_membership_id?: string | null;\n import_source: CampaignEnrollmentImportSource;\n import_source_id?: string | null;\n imported_at?: number | null;\n mailbox_id?: string | null;\n lead_description?: string | null;\n fields: Record<string, unknown>;\n status: CampaignEnrollmentStatus;\n current_step_position: number;\n next_action_at?: number | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface CampaignMessage {\n id: string;\n store_id: string;\n campaign_id: string;\n campaign_enrollment_id: string;\n contact_id: string;\n mailbox_id: string;\n direction: CampaignMessageDirection;\n type: CampaignMessageType;\n step_id?: string | null;\n step_position?: number | null;\n template_copy_hash?: string | null;\n copy_source: CampaignMessageCopySource;\n personalized_at?: number | null;\n edited_at?: number | null;\n personalization_error?: string | null;\n in_reply_to_message_id?: string | null;\n status: CampaignMessageStatus;\n to_email: string;\n from_email: string;\n subject: string;\n body: string;\n body_html?: string | null;\n template_id?: string | null;\n template_vars: Record<string, unknown>;\n rendered_subject?: string | null;\n rendered_html?: string | null;\n rendered_text?: string | null;\n attachments: string[];\n target_channel_type?: ChannelType | null;\n resolved_channel?: ContactChannel | null;\n title?: string | null;\n instructions?: string | null;\n suggested_message?: string | null;\n external_url?: string | null;\n continue_behavior?: ManualTaskContinueBehavior | null;\n outcome?: CampaignManualTaskOutcome | null;\n note?: string | null;\n provider_message_id?: string | null;\n provider_thread_id?: string | null;\n error?: string | null;\n due_at?: number | null;\n completed_at?: number | null;\n sent_at?: number | null;\n received_at?: number | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface CampaignEnrollmentConversationResponse {\n enrollment: CampaignEnrollment;\n messages: CampaignMessage[];\n}\n\nexport interface Suppression {\n id: string;\n store_id: string;\n campaign_id?: string | null;\n contact_id?: string | null;\n email?: string | null;\n domain?: string | null;\n target_type: SuppressionTargetType;\n target_key: string;\n scope_type: SuppressionScopeType;\n scope_key: string;\n reason: SuppressionReason;\n status: SuppressionStatus;\n source: SuppressionSource;\n created_at: number;\n updated_at: number;\n}\n\nexport type LeadResearchRunStatus =\n \"draft\" | \"running\" | \"completed\" | \"failed\" | \"cancelled\";\n\nexport type LeadEmailClassification =\n | \"official_domain\"\n | \"role_official\"\n | \"personal_official\"\n | \"free_mail\"\n | \"unusable\"\n | \"unknown\";\n\nexport type LeadValidationCheckStatus =\n \"passed\" | \"warning\" | \"failed\" | \"unknown\";\n\nexport type CampaignRoute =\n \"email_only\" | \"email_manual_followup\" | \"manual_only\" | \"needs_review\";\n\nexport interface LeadScores {\n fit: number;\n problem: number;\n channel: number;\n intent: number;\n data_quality: number;\n}\n\nexport interface ChannelMessage {\n type: ChannelType;\n subject?: string | null;\n body: string;\n}\n\nexport interface LeadInsight {\n company?: string | null;\n contact_name?: string | null;\n website?: string | null;\n industry?: string | null;\n location?: string | null;\n description?: string | null;\n pain_points: string[];\n fit_reason?: string | null;\n scores: LeadScores;\n best_channel?: ChannelType | null;\n backup_channel?: ChannelType | null;\n route: CampaignRoute;\n first_messages: ChannelMessage[];\n run_id?: string | null;\n source_url?: string | null;\n source_excerpt?: string | null;\n reasoning_summary?: string | null;\n}\n\nexport interface LeadResearchRun {\n id: string;\n store_id: string;\n contact_list_id: string;\n title?: string | null;\n status: LeadResearchRunStatus;\n error?: string | null;\n started_at?: number | null;\n completed_at?: number | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface LeadValidationCheck {\n key: string;\n status: LeadValidationCheckStatus;\n message: string;\n}\n\nexport interface LeadEmailValidationResult {\n email: string;\n normalized_email?: string | null;\n domain?: string | null;\n classification: LeadEmailClassification;\n confidence: number;\n importable: boolean;\n hard_blockers: string[];\n checks: LeadValidationCheck[];\n}\n\nexport type LeadResearchMessageRole =\n \"system\" | \"user\" | \"assistant\" | \"action\";\n\nexport interface LeadResearchMessage {\n id: string;\n store_id: string;\n run_id: string;\n role: LeadResearchMessageRole;\n content: string;\n metadata?: Record<string, unknown> | null;\n created_at: number;\n}\n\nexport interface ResearchContactListMember {\n contact: Contact;\n membership: ContactListMembership;\n}\n\nexport interface SendLeadResearchMessageResult {\n response: string;\n run: LeadResearchRun;\n contact_list_members: ResearchContactListMember[];\n}\n\nexport type EventAction =\n | { action: \"order_created\" }\n | { action: \"order_updated\" }\n | { action: \"order_confirmed\" }\n | {\n action: \"order_payment_received\";\n data: { amount: number; currency: Currency };\n }\n | { action: \"order_payment_failed\"; data: { reason?: string } }\n | {\n action: \"order_refunded\";\n data: { amount: number; currency: Currency; reason?: string };\n }\n | { action: \"order_cancelled\"; data: { reason?: string } }\n | { action: \"order_shipment_created\"; data: { shipment_id: string } }\n | { action: \"order_shipment_in_transit\"; data: { shipment_id: string } }\n | { action: \"order_shipment_out_for_delivery\"; data: { shipment_id: string } }\n | { action: \"order_shipment_delivered\"; data: { shipment_id: string } }\n | {\n action: \"order_shipment_failed\";\n data: { shipment_id: string; reason?: string };\n }\n | { action: \"order_shipment_returned\"; data: { shipment_id: string } }\n | {\n action: \"order_shipment_status_changed\";\n data: { shipment_id: string; from: string; to: string };\n }\n | { action: \"product_created\" }\n | { action: \"product_updated\" }\n | { action: \"product_deleted\" }\n | { action: \"collection_created\" }\n | { action: \"collection_updated\" }\n | { action: \"collection_deleted\" }\n | { action: \"entry_created\" }\n | { action: \"entry_updated\" }\n | { action: \"entry_deleted\" }\n | { action: \"provider_created\" }\n | { action: \"provider_updated\" }\n | { action: \"provider_deleted\" }\n | { action: \"service_created\" }\n | { action: \"service_updated\" }\n | { action: \"service_deleted\" }\n | { action: \"account_created\" }\n | { action: \"account_updated\" }\n | { action: \"account_deleted\" }\n | { action: \"media_created\" }\n | { action: \"media_deleted\" }\n | { action: \"store_created\" }\n | { action: \"store_updated\" }\n | { action: \"contact_list_created\" }\n | { action: \"contact_list_updated\" }\n | { action: \"contact_list_contact_added\" }\n | { action: \"contact_list_contact_removed\" }\n | { action: \"contact_list_contact_pending\" }\n | { action: \"contact_list_contact_confirmed\" }\n | { action: \"contact_list_contact_cancelled\" };\n\nexport interface Event {\n id: string;\n entity: string;\n event: EventAction;\n actor: string;\n created_at: number;\n}\n\nexport type ShippingStatus =\n | \"pending\"\n | \"label_created\"\n | \"in_transit\"\n | \"out_for_delivery\"\n | \"delivered\"\n | \"failed\"\n | \"returned\"\n | \"cancelled\";\n\nexport type ShippingProvider = \"shippo\";\n\nexport interface ShippingRateLine {\n order_item_id: string;\n quantity: number;\n}\n\nexport interface ShipmentLine {\n order_item_id: string;\n fulfillment_order_line_id?: string | null;\n quantity: number;\n}\n\nexport type ShippingLabelStatus =\n \"requested\" | \"processing\" | \"succeeded\" | \"rejected\" | \"failed\" | \"unknown\";\n\nexport type ShippingLabelRefundStatus =\n \"requested\" | \"processing\" | \"succeeded\" | \"rejected\" | \"failed\" | \"unknown\";\n\nexport type ShippingLabelRefundReconciliationStatus =\n \"not_started\" | \"succeeded\" | \"conflict\";\n\nexport interface ShippingLabelRefund {\n id: string;\n shipment_id: string;\n amount: number;\n currency: Currency;\n status: ShippingLabelRefundStatus;\n revision: number;\n attempt_count: number;\n provider_refund_id?: string | null;\n provider_status?: string | null;\n credit_settlement_id?: string | null;\n allocation_reconciliation_status: ShippingLabelRefundReconciliationStatus;\n allocation_reconciliation_completed_at?: number | null;\n safe_allocation_reconciliation_error?: string | null;\n safe_error?: string | null;\n requested_at: number;\n completed_at?: number | null;\n created_at: number;\n updated_at: number;\n}\n\nexport type ShippingLabelAdjustmentStatus =\n \"requested\" | \"processing\" | \"succeeded\" | \"rejected\" | \"failed\" | \"unknown\";\n\nexport interface ShippingLabelAdjustment {\n id: string;\n shipment_id: string;\n provider_adjustment_id: string;\n amount: number;\n currency: Currency;\n reason: string;\n status: ShippingLabelAdjustmentStatus;\n settlement_id: string;\n safe_error?: string | null;\n created_at: number;\n updated_at: number;\n}\n\nexport type ShippingLabelSettlementDirection = \"debit\" | \"credit\";\n\nexport type ShippingLabelSettlementStatus =\n \"requested\" | \"processing\" | \"succeeded\" | \"rejected\" | \"failed\" | \"unknown\";\n\nexport type ShipmentAllocationStatus = \"reserved\" | \"fulfilled\" | \"released\";\n\nexport type ShippingLabelSettlementType =\n | { type: \"purchase_debit\" }\n | { type: \"purchase_compensation_credit\" }\n | { type: \"refund_credit\"; refund_id: string }\n | { type: \"adjustment_debit\"; adjustment_id: string }\n | { type: \"adjustment_credit\"; adjustment_id: string };\n\nexport interface ShippingLabelSettlement {\n id: string;\n shipment_id: string;\n type: ShippingLabelSettlementType;\n direction: ShippingLabelSettlementDirection;\n amount: number;\n currency: Currency;\n status: ShippingLabelSettlementStatus;\n revision: number;\n attempt_count: number;\n provider_object_id?: string | null;\n provider_status?: string | null;\n safe_error?: string | null;\n requested_at: number;\n completed_at?: number | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface Shipment {\n id: string;\n store_id: string;\n order_id: string;\n provider: ShippingProvider;\n fulfillment_order_id?: string | null;\n location_id: string;\n rate_id: string;\n lines: ShipmentLine[];\n allocation_status: ShipmentAllocationStatus;\n carrier: string;\n service: string;\n postage_amount: number;\n fee_amount: number;\n total_amount: number;\n currency: Currency;\n tracking_number?: string | null;\n tracking_url?: string | null;\n label_url?: string | null;\n status: ShippingStatus;\n tracking_status_at_ms: number | null;\n revision: number;\n label_status: ShippingLabelStatus;\n label_revision: number;\n label_attempt_count: number;\n provider_transaction_id?: string | null;\n provider_status?: string | null;\n safe_label_error?: string | null;\n label_requested_at: number;\n label_completed_at?: number | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface ShippingRate {\n id: string;\n carrier: string;\n service: string;\n display_name: string;\n amount: number;\n currency: Currency;\n estimated_days?: number | null;\n}\n\nexport interface Parcel {\n length: number;\n width: number;\n height: number;\n weight: number;\n distance_unit: \"cm\" | \"in\" | \"ft\" | \"mm\" | \"m\" | \"yd\";\n mass_unit: \"oz\" | \"lb\" | \"g\" | \"kg\";\n}\n\nexport interface CreateShipmentResponse {\n shipment_id: string;\n shipment: Shipment;\n}\n\nexport interface CustomsItem {\n description: string;\n quantity: number;\n net_weight: string;\n mass_unit: string;\n value_amount: string;\n value_currency: Currency;\n origin_country: string;\n tariff_number?: string | null;\n}\n\nexport interface CustomsDeclaration {\n contents_type: string;\n contents_explanation?: string | null;\n non_delivery_option: string;\n certify: boolean;\n certify_signer: string;\n items: CustomsItem[];\n}\n\nexport interface PromoCode {\n id: string;\n store_id: string;\n code: string;\n discounts: import(\"./api\").Discount[];\n conditions: import(\"./api\").Condition[];\n status: PromoCodeStatus;\n uses: number;\n created_at: number;\n updated_at: number;\n}\n","import type { OrderCheckoutItemInput } from \"../types/api\";\n\nexport function sanitizePublicCheckoutItems(\n items: OrderCheckoutItemInput[],\n): OrderCheckoutItemInput[] {\n return items.map((item) => {\n if (item.type === \"product\") {\n return {\n type: \"product\",\n ...(item.id ? { id: item.id } : {}),\n product_id: item.product_id,\n variant_id: item.variant_id,\n quantity: item.quantity,\n };\n }\n return {\n type: \"service\",\n ...(item.id ? { id: item.id } : {}),\n service_id: item.service_id,\n provider_id: item.provider_id,\n slots: item.slots,\n ...(item.forms ? { forms: item.forms } : {}),\n };\n });\n}\n","import type { ContactSessionUpdater, StorefrontApiConfig } from \"../index\";\nimport type {\n AddCartItemParams,\n AvailabilityResponse,\n CheckoutCartParams,\n ClearCartParams,\n ContactListAccessParams,\n ContactListContentAccessParams,\n DownloadDigitalAccessParams,\n FindDigitalAccessGrantsParams,\n FindServiceProvidersParams,\n FindStorefrontContactListMembershipsParams,\n FindStorefrontContactListPlansParams,\n FindStorefrontContactListsParams,\n GetAvailabilityParams,\n GetCartParams,\n GetCollectionParams,\n GetContactListParams,\n GetDigitalAccessGrantParams,\n GetEntriesParams,\n GetEntryParams,\n GetFormParams,\n GetOrderParams,\n GetOrdersParams,\n GetProductParams,\n GetProductsParams,\n GetProviderParams,\n GetProvidersParams,\n GetServiceParams,\n GetServicesParams,\n GetTaxonomyChildrenParams,\n GetTaxonomyParams,\n QuoteCartParams,\n RemoveCartItemParams,\n RequestOptions,\n SubmitFormParams,\n SubscribeContactListParams,\n UpdateCartParams,\n VerificationChallengeResponse,\n} from \"../types/api\";\nimport type {\n Cart,\n Collection,\n CollectionEntry,\n Contact,\n ContactListAccessResponse,\n ContactListContentAccessResponse,\n ContactListSubscribeResponse,\n ContactSessionIssued,\n DigitalAccessDownloadResponse,\n DigitalAccessGrant,\n Form,\n FormSubmission,\n Location,\n Market,\n Order,\n OrderCheckoutResult,\n OrderQuote,\n PaginatedResponse,\n PaymentStoreConfig,\n Product,\n Provider,\n Service,\n ServiceProvider,\n StorefrontContactList,\n StorefrontContactListMembership,\n StorefrontContactListPlan,\n Taxonomy,\n Zone,\n} from \"../types\";\nimport { sanitizePublicCheckoutItems } from \"../utils/orderItems\";\n\ntype StorefrontParams<T> = T extends unknown\n ? Omit<T, \"store_id\" | \"market\">\n : never;\n\ntype StorefrontOpaqueKey =\n | \"attributes\"\n | \"blocks\"\n | \"context\"\n | \"data\"\n | \"fields\"\n | \"metadata\"\n | \"payload\"\n | \"properties\"\n | \"schema\"\n | \"value\";\n\n/**\n * The public Storefront wire shape of an Admin/domain DTO.\n *\n * Store ownership is resolved from the publishable key and is intentionally\n * absent from Storefront responses. User-authored JSON containers stay opaque\n * so a legitimate content key named `store_id` is not erased from its type.\n */\nexport type StorefrontDto<T> = T extends readonly (infer Item)[]\n ? StorefrontDto<Item>[]\n : T extends object\n ? {\n [Key in keyof T as Key extends \"store_id\" ? never : Key]:\n Key extends StorefrontOpaqueKey ? T[Key] : StorefrontDto<T[Key]>;\n }\n : T;\n\nexport type StorefrontContact = StorefrontDto<Contact>;\nexport type StorefrontLocation = StorefrontDto<Location>;\nexport type StorefrontZone = Omit<Zone, \"store_id\" | \"market_id\">;\nexport type StorefrontMarket = Omit<\n Market,\n \"store_id\" | \"created_at\" | \"updated_at\" | \"zones\"\n> & {\n zones: StorefrontZone[];\n};\n\nexport interface StorefrontSetup {\n timezone: string;\n languages: {\n default: string;\n available: string[];\n };\n markets: {\n default: string | null;\n available: StorefrontMarket[];\n };\n support: {\n email: string | null;\n };\n payment: PaymentStoreConfig | null;\n readiness: {\n market: boolean;\n payment: boolean;\n commerce: boolean;\n };\n}\n\nexport type IdentifyResponse = {\n contact: StorefrontContact;\n token: ContactSessionIssued | null;\n verification_challenge: VerificationChallengeResponse | null;\n};\n\nexport type VerifyResponse = {\n contact: StorefrontContact;\n token: ContactSessionIssued;\n};\n\ntype Country = {\n code: string;\n name: string;\n states: { code: string; name: string }[];\n};\n\ntype CountriesResponse = { items: Country[]; cursor: string | null };\n\nexport interface StorefrontAction {\n contact_id: string;\n key: string;\n payload: Record<string, unknown>;\n created_at: number;\n}\n\nexport interface TrackActionParams {\n key: string;\n payload?: Record<string, unknown>;\n}\n\nexport const COMMON_ACTION_KEYS = [\n \"page.view\",\n \"product.view\",\n \"service.view\",\n \"provider.view\",\n \"cart.added\",\n \"cart.removed\",\n \"checkout.started\",\n \"order.created\",\n \"signin\",\n \"signup\",\n \"verified.email\",\n \"search\",\n \"share\",\n \"wishlist.added\",\n] as const;\n\nexport type CommonActionKey = (typeof COMMON_ACTION_KEYS)[number];\n\nexport interface UseExperimentParams {\n key: string;\n}\n\nexport interface ExperimentUseResponse {\n experiment_key: string;\n experiment_version: number;\n variant_key: string;\n goal_action_key: string;\n}\n\nexport interface StorefrontLifecycle {\n ensureVisitorSession(): Promise<void>;\n getSetup(options?: RequestOptions): Promise<StorefrontSetup>;\n}\n\nexport const createActionApi = (\n apiConfig: StorefrontApiConfig,\n lifecycle: StorefrontLifecycle,\n) => ({\n COMMON_ACTION_KEYS,\n async track(params: TrackActionParams): Promise<void> {\n await lifecycle.ensureVisitorSession();\n try {\n await apiConfig.httpClient.post<void>(\"/v1/storefront/actions/track\", {\n key: params.key,\n payload: params.payload,\n });\n } catch {}\n },\n});\n\nexport const createStorefrontApi = (\n apiConfig: StorefrontApiConfig,\n updateContactSession: ContactSessionUpdater,\n lifecycle: StorefrontLifecycle,\n) => {\n const base = \"/v1/storefront\";\n\n function persistIdentification(result: IdentifyResponse): IdentifyResponse {\n const sessionToken = result.token?.token;\n if (sessionToken) {\n updateContactSession(() => ({\n sessionToken,\n contact: result.contact,\n }));\n } else {\n updateContactSession((current) =>\n current ? { ...current, contact: result.contact } : null,\n );\n }\n return result;\n }\n\n async function submitIdentification(\n path: \"identify\" | \"code\",\n params?: { email?: string },\n options?: RequestOptions,\n ): Promise<IdentifyResponse> {\n const result = await apiConfig.httpClient.post<IdentifyResponse>(\n `${base}/account/${path}`,\n { email: params?.email },\n options,\n );\n return persistIdentification(result);\n }\n\n return {\n store: {\n getSetup: lifecycle.getSetup,\n location: {\n getCountries(options?: RequestOptions): Promise<CountriesResponse> {\n return apiConfig.httpClient.get<CountriesResponse>(\n \"/v1/platform/countries\",\n options,\n );\n },\n getCountry(\n countryCode: string,\n options?: RequestOptions,\n ): Promise<Country> {\n return apiConfig.httpClient.get<Country>(\n `/v1/platform/countries/${countryCode}`,\n options,\n );\n },\n list(options?: RequestOptions): Promise<StorefrontLocation[]> {\n return apiConfig.httpClient.get<StorefrontLocation[]>(\n `${base}/locations`,\n options,\n );\n },\n get(id: string, options?: RequestOptions): Promise<StorefrontLocation> {\n return apiConfig.httpClient.get<StorefrontLocation>(\n `${base}/locations/${id}`,\n options,\n );\n },\n },\n market: {\n list(options?: RequestOptions): Promise<StorefrontMarket[]> {\n return apiConfig.httpClient.get<StorefrontMarket[]>(\n `${base}/markets`,\n options,\n );\n },\n get(id: string, options?: RequestOptions): Promise<StorefrontMarket> {\n return apiConfig.httpClient.get<StorefrontMarket>(\n `${base}/markets/${id}`,\n options,\n );\n },\n },\n },\n cms: {\n collection: {\n get(\n params: StorefrontParams<GetCollectionParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<Collection>> {\n const identifier = params.id ?? params.key;\n return apiConfig.httpClient.get<StorefrontDto<Collection>>(\n `${base}/collections/${identifier}`,\n options,\n );\n },\n },\n entry: {\n get(\n params: StorefrontParams<GetEntryParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<CollectionEntry>> {\n return apiConfig.httpClient.get<StorefrontDto<CollectionEntry>>(\n `${base}/entries/${params.id}`,\n options,\n );\n },\n find(\n params: StorefrontParams<GetEntriesParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<PaginatedResponse<CollectionEntry>>> {\n return apiConfig.httpClient.get<\n StorefrontDto<PaginatedResponse<CollectionEntry>>\n >(\n `${base}/entries`,\n { ...options, params },\n );\n },\n },\n form: {\n get(\n params: StorefrontParams<GetFormParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<Form>> {\n const identifier = params.id ?? params.key;\n if (!identifier) throw new Error(\"GetFormParams requires id or key\");\n return apiConfig.httpClient.get<StorefrontDto<Form>>(\n `${base}/forms/${identifier}`,\n options,\n );\n },\n async submit(\n params: StorefrontParams<SubmitFormParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<FormSubmission>> {\n await lifecycle.ensureVisitorSession();\n const { form_id, ...payload } = params;\n if (!form_id) throw new Error(\"SubmitFormParams requires form_id\");\n return apiConfig.httpClient.post<StorefrontDto<FormSubmission>>(\n `${base}/forms/${form_id}/submissions`,\n { ...payload, form_id },\n options,\n );\n },\n },\n taxonomy: {\n get(\n params: StorefrontParams<GetTaxonomyParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<Taxonomy>> {\n const identifier = params.id ?? params.key;\n if (!identifier) throw new Error(\"GetTaxonomyParams requires id or key\");\n return apiConfig.httpClient.get<StorefrontDto<Taxonomy>>(\n `${base}/taxonomies/${identifier}`,\n options,\n );\n },\n getChildren(\n params: StorefrontParams<GetTaxonomyChildrenParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<PaginatedResponse<Taxonomy>>> {\n return apiConfig.httpClient.get<StorefrontDto<PaginatedResponse<Taxonomy>>>(\n `${base}/taxonomies/${params.id}/children`,\n options,\n );\n },\n },\n },\n eshop: {\n product: {\n get(\n params: StorefrontParams<GetProductParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<Product>> {\n const identifier = params.id ?? params.slug;\n if (!identifier) throw new Error(\"GetProductParams requires id or slug\");\n return apiConfig.httpClient.get<StorefrontDto<Product>>(\n `${base}/products/${identifier}`,\n options,\n );\n },\n find(\n params: StorefrontParams<GetProductsParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<PaginatedResponse<Product>>> {\n return apiConfig.httpClient.get<StorefrontDto<PaginatedResponse<Product>>>(\n `${base}/products`,\n { ...options, params },\n );\n },\n },\n cart: {\n async current(\n options?: RequestOptions,\n ): Promise<StorefrontDto<Cart>> {\n await lifecycle.ensureVisitorSession();\n return apiConfig.httpClient.post<StorefrontDto<Cart>>(\n `${base}/carts/current`,\n {},\n options,\n );\n },\n async get(\n params: StorefrontParams<GetCartParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<Cart>> {\n await lifecycle.ensureVisitorSession();\n const queryParams = Object.fromEntries(\n Object.entries(\n (options?.params || {}) as Record<string, unknown>,\n ).filter(\n ([name]) => ![\"token\", \"cart_token\"].includes(name.toLowerCase()),\n ),\n );\n const headers = Object.fromEntries(\n Object.entries(options?.headers || {}).filter(\n ([name]) => name.toLowerCase() !== \"x-arky-cart-token\",\n ),\n );\n return apiConfig.httpClient.get<StorefrontDto<Cart>>(\n `${base}/carts/${params.id}`,\n {\n ...options,\n headers: {\n ...headers,\n ...(params.token ? { \"X-Arky-Cart-Token\": params.token } : {}),\n },\n params:\n Object.keys(queryParams).length > 0 ? queryParams : undefined,\n },\n );\n },\n async update(\n params: StorefrontParams<UpdateCartParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<Cart>> {\n await lifecycle.ensureVisitorSession();\n const { items, ...payload } = params;\n return apiConfig.httpClient.put<StorefrontDto<Cart>>(\n `${base}/carts/${params.id}`,\n {\n ...payload,\n ...(items ? { items: sanitizePublicCheckoutItems(items) } : {}),\n },\n options,\n );\n },\n async addItem(\n params: StorefrontParams<AddCartItemParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<Cart>> {\n await lifecycle.ensureVisitorSession();\n const { item, ...payload } = params;\n return apiConfig.httpClient.post<StorefrontDto<Cart>>(\n `${base}/carts/${params.id}/items`,\n { ...payload, item: sanitizePublicCheckoutItems([item])[0] },\n options,\n );\n },\n async removeItem(\n params: StorefrontParams<RemoveCartItemParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<Cart>> {\n await lifecycle.ensureVisitorSession();\n return apiConfig.httpClient.post<StorefrontDto<Cart>>(\n `${base}/carts/${params.id}/items/remove`,\n params,\n options,\n );\n },\n async clear(\n params: StorefrontParams<ClearCartParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<Cart>> {\n await lifecycle.ensureVisitorSession();\n return apiConfig.httpClient.post<StorefrontDto<Cart>>(\n `${base}/carts/${params.id}/clear`,\n { id: params.id },\n options,\n );\n },\n async quote(\n params: StorefrontParams<QuoteCartParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<OrderQuote>> {\n await lifecycle.ensureVisitorSession();\n return apiConfig.httpClient.post<StorefrontDto<OrderQuote>>(\n `${base}/carts/${params.id}/quote`,\n { id: params.id },\n options,\n );\n },\n async checkout(\n params: StorefrontParams<CheckoutCartParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<OrderCheckoutResult>> {\n await lifecycle.ensureVisitorSession();\n return apiConfig.httpClient.post<StorefrontDto<OrderCheckoutResult>>(\n `${base}/carts/${params.id}/checkout`,\n {\n id: params.id,\n payment_method_key: params.payment_method_key,\n confirmation_token_id: params.confirmation_token_id,\n return_url: params.return_url,\n },\n options,\n );\n },\n },\n order: {\n async get(\n params: StorefrontParams<GetOrderParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<Order>> {\n await lifecycle.ensureVisitorSession();\n return apiConfig.httpClient.get<StorefrontDto<Order>>(\n `${base}/orders/${params.id}`,\n options,\n );\n },\n async find(\n params: StorefrontParams<GetOrdersParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<PaginatedResponse<Order>>> {\n await lifecycle.ensureVisitorSession();\n return apiConfig.httpClient.get<StorefrontDto<PaginatedResponse<Order>>>(\n `${base}/orders`,\n { ...options, params },\n );\n },\n async downloadDigitalAccess(\n params: StorefrontParams<DownloadDigitalAccessParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<DigitalAccessDownloadResponse>> {\n await lifecycle.ensureVisitorSession();\n return apiConfig.httpClient.post<\n StorefrontDto<DigitalAccessDownloadResponse>\n >(\n `${base}/orders/${params.order_id}/digital-access/${params.grant_id}/download`,\n {},\n options,\n );\n },\n async findDigitalAccess(\n params: StorefrontParams<FindDigitalAccessGrantsParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<PaginatedResponse<DigitalAccessGrant>>> {\n await lifecycle.ensureVisitorSession();\n const { order_id, ...queryParams } = params;\n return apiConfig.httpClient.get<\n StorefrontDto<PaginatedResponse<DigitalAccessGrant>>\n >(\n `${base}/orders/${order_id}/digital-access`,\n { ...options, params: queryParams },\n );\n },\n async getDigitalAccess(\n params: StorefrontParams<GetDigitalAccessGrantParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<DigitalAccessGrant>> {\n await lifecycle.ensureVisitorSession();\n return apiConfig.httpClient.get<StorefrontDto<DigitalAccessGrant>>(\n `${base}/orders/${params.order_id}/digital-access/${params.grant_id}`,\n options,\n );\n },\n },\n service: {\n get(\n params: StorefrontParams<GetServiceParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<Service>> {\n const identifier = params.id ?? params.slug;\n if (!identifier) throw new Error(\"GetServiceParams requires id or slug\");\n return apiConfig.httpClient.get<StorefrontDto<Service>>(\n `${base}/services/${identifier}`,\n options,\n );\n },\n find(\n params: StorefrontParams<GetServicesParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<PaginatedResponse<Service>>> {\n return apiConfig.httpClient.get<StorefrontDto<PaginatedResponse<Service>>>(\n `${base}/services`,\n { ...options, params },\n );\n },\n findProviders(\n params: StorefrontParams<FindServiceProvidersParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<ServiceProvider[]>> {\n return apiConfig.httpClient.get<StorefrontDto<ServiceProvider[]>>(\n `${base}/service-providers`,\n { ...options, params },\n );\n },\n getAvailability(\n params: StorefrontParams<GetAvailabilityParams>,\n options?: RequestOptions,\n ): Promise<AvailabilityResponse> {\n return apiConfig.httpClient.get<AvailabilityResponse>(\n `${base}/services/availability`,\n { ...options, params },\n );\n },\n },\n provider: {\n get(\n params: StorefrontParams<GetProviderParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<Provider>> {\n const identifier = params.id ?? params.slug;\n if (!identifier) throw new Error(\"GetProviderParams requires id or slug\");\n return apiConfig.httpClient.get<StorefrontDto<Provider>>(\n `${base}/providers/${identifier}`,\n options,\n );\n },\n find(\n params: StorefrontParams<GetProvidersParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<PaginatedResponse<Provider>>> {\n return apiConfig.httpClient.get<StorefrontDto<PaginatedResponse<Provider>>>(\n `${base}/providers`,\n { ...options, params },\n );\n },\n },\n },\n crm: {\n contact: {\n identify(\n params?: { email?: string },\n options?: RequestOptions,\n ): Promise<IdentifyResponse> {\n return submitIdentification(\"identify\", params, options);\n },\n requestCode(\n params?: { email?: string },\n options?: RequestOptions,\n ): Promise<IdentifyResponse> {\n return submitIdentification(\"code\", params, options);\n },\n async verify(\n params: { challenge_id: string; code: string },\n options?: RequestOptions,\n ): Promise<VerifyResponse> {\n const result = await apiConfig.httpClient.post<VerifyResponse>(\n `${base}/account/verify`,\n params,\n options,\n );\n if (result.token?.token) {\n updateContactSession(() => ({\n sessionToken: result.token.token,\n contact: result.contact,\n }));\n }\n return result;\n },\n async logout(options?: RequestOptions): Promise<void> {\n try {\n await apiConfig.httpClient.post<void>(\n `${base}/account/logout`,\n {},\n options,\n );\n } finally {\n updateContactSession(() => null);\n }\n },\n getMe(options?: RequestOptions): Promise<StorefrontContact> {\n return apiConfig.httpClient.get<StorefrontContact>(\n `${base}/account/me`,\n options,\n );\n },\n },\n contactList: {\n get(\n params: StorefrontParams<GetContactListParams>,\n options?: RequestOptions,\n ): Promise<StorefrontContactList> {\n return apiConfig.httpClient.get<StorefrontContactList>(\n `${base}/contact-lists/${params.id}`,\n options,\n );\n },\n find(\n params: StorefrontParams<FindStorefrontContactListsParams> = {},\n options?: RequestOptions,\n ): Promise<PaginatedResponse<StorefrontContactList>> {\n return apiConfig.httpClient.get<PaginatedResponse<StorefrontContactList>>(\n `${base}/contact-lists`,\n { ...options, params },\n );\n },\n plans: {\n find(\n params: StorefrontParams<FindStorefrontContactListPlansParams>,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<StorefrontContactListPlan>> {\n const { contact_list_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<StorefrontContactListPlan>>(\n `${base}/contact-lists/${contact_list_id}/plans`,\n { ...options, params: queryParams },\n );\n },\n },\n memberships: {\n async find(\n params: StorefrontParams<FindStorefrontContactListMembershipsParams> = {},\n options?: RequestOptions,\n ): Promise<StorefrontDto<PaginatedResponse<StorefrontContactListMembership>>> {\n await lifecycle.ensureVisitorSession();\n return apiConfig.httpClient.get<\n StorefrontDto<PaginatedResponse<StorefrontContactListMembership>>\n >(`${base}/contact-lists/memberships`, {\n ...options,\n params,\n });\n },\n },\n async subscribe(\n params: StorefrontParams<SubscribeContactListParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<ContactListSubscribeResponse>> {\n await lifecycle.ensureVisitorSession();\n const { id, ...payload } = params;\n return apiConfig.httpClient.post<StorefrontDto<ContactListSubscribeResponse>>(\n `${base}/contact-lists/${id}/subscribe`,\n payload,\n options,\n );\n },\n async checkAccess(\n params: StorefrontParams<ContactListAccessParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<ContactListAccessResponse>> {\n await lifecycle.ensureVisitorSession();\n return apiConfig.httpClient.get<StorefrontDto<ContactListAccessResponse>>(\n `${base}/contact-lists/${params.id}/access`,\n options,\n );\n },\n async checkContentAccess(\n params: StorefrontParams<ContactListContentAccessParams>,\n options?: RequestOptions,\n ): Promise<StorefrontDto<ContactListContentAccessResponse>> {\n await lifecycle.ensureVisitorSession();\n return apiConfig.httpClient.post<\n StorefrontDto<ContactListContentAccessResponse>\n >(\n `${base}/contact-lists/access`,\n params,\n options,\n );\n },\n },\n },\n action: createActionApi(apiConfig, lifecycle),\n experiments: {\n async use(\n params: UseExperimentParams,\n options?: RequestOptions,\n ): Promise<ExperimentUseResponse> {\n await lifecycle.ensureVisitorSession();\n return apiConfig.httpClient.post<ExperimentUseResponse>(\n `${base}/experiments/use`,\n { key: params.key },\n options,\n );\n },\n },\n };\n};\n","import type {\n AddCartItemParams,\n CheckoutCartParams,\n ClearCartParams,\n GetCartParams,\n GetCurrentCartParams,\n QuoteCartParams,\n RemoveCartItemParams,\n RequestOptions,\n UpdateCartParams,\n} from \"./types/api\";\nimport type { Cart, OrderCheckoutResult, OrderQuote } from \"./types\";\n\nexport interface CartApi {\n current(params?: GetCurrentCartParams, options?: RequestOptions): Promise<Cart>;\n get(params: GetCartParams, options?: RequestOptions): Promise<Cart>;\n update(params: UpdateCartParams, options?: RequestOptions): Promise<Cart>;\n addItem(params: AddCartItemParams, options?: RequestOptions): Promise<Cart>;\n removeItem(params: RemoveCartItemParams, options?: RequestOptions): Promise<Cart>;\n clear(params: ClearCartParams, options?: RequestOptions): Promise<Cart>;\n quote(params: QuoteCartParams, options?: RequestOptions): Promise<OrderQuote>;\n checkout(params: CheckoutCartParams, options?: RequestOptions): Promise<OrderCheckoutResult>;\n}\n\nexport interface CartControllerState {\n cart: Cart | null;\n quote: OrderQuote | null;\n checkoutResult: OrderCheckoutResult | null;\n loading: boolean;\n initialized: boolean;\n error: unknown;\n}\n\nexport type CartControllerListener = (state: CartControllerState) => void;\n\nexport type CartControllerInitParams = GetCurrentCartParams | GetCartParams;\nexport type CartControllerRefreshParams = GetCurrentCartParams | GetCartParams;\nexport type CartControllerUpdateParams = Omit<UpdateCartParams, \"id\"> & { id?: string };\nexport type CartControllerAddItemParams = Omit<AddCartItemParams, \"id\"> & { id?: string };\nexport type CartControllerRemoveItemParams = RemoveCartItemParams extends infer Params\n ? Params extends { id: string }\n ? Omit<Params, \"id\"> & { id?: string }\n : never\n : never;\nexport type CartControllerClearParams = Omit<ClearCartParams, \"id\"> & { id?: string };\nexport type CartControllerQuoteParams = Omit<QuoteCartParams, \"id\"> & { id?: string };\nexport type CartControllerCheckoutParams = Omit<CheckoutCartParams, \"id\"> & { id?: string };\n\nexport interface CartController {\n subscribe(listener: CartControllerListener): () => void;\n getState(): CartControllerState;\n init(params?: CartControllerInitParams, options?: RequestOptions): Promise<Cart>;\n refresh(params?: CartControllerRefreshParams, options?: RequestOptions): Promise<Cart>;\n addItem(params: CartControllerAddItemParams, options?: RequestOptions): Promise<Cart>;\n update(params: CartControllerUpdateParams, options?: RequestOptions): Promise<Cart>;\n removeItem(params: CartControllerRemoveItemParams, options?: RequestOptions): Promise<Cart>;\n clear(params?: CartControllerClearParams, options?: RequestOptions): Promise<Cart>;\n quote(params?: CartControllerQuoteParams, options?: RequestOptions): Promise<OrderQuote>;\n checkout(params?: CartControllerCheckoutParams, options?: RequestOptions): Promise<OrderCheckoutResult>;\n}\n\nfunction hasCartId(params: CartControllerInitParams): params is GetCartParams {\n return \"id\" in params && typeof params.id === \"string\" && params.id.length > 0;\n}\n\nexport function createCartController(cartApi: CartApi): CartController {\n const listeners = new Set<CartControllerListener>();\n let state: CartControllerState = {\n cart: null,\n quote: null,\n checkoutResult: null,\n loading: false,\n initialized: false,\n error: null,\n };\n\n function emit(): void {\n for (const listener of listeners) {\n Promise.resolve()\n .then(() => listener(state))\n .catch(() => {});\n }\n }\n\n function setState(patch: Partial<CartControllerState>): CartControllerState {\n state = { ...state, ...patch };\n emit();\n return state;\n }\n\n function currentCartId(id?: string): string {\n const cartId = id || state.cart?.id;\n if (!cartId) {\n throw new Error(\"Cart has not been initialized and no cart id was provided\");\n }\n return cartId;\n }\n\n async function runCartMutation(operation: () => Promise<Cart>): Promise<Cart> {\n setState({ loading: true, error: null });\n try {\n const cart = await operation();\n setState({\n cart,\n quote: null,\n checkoutResult: null,\n loading: false,\n initialized: true,\n error: null,\n });\n return cart;\n } catch (error) {\n setState({ loading: false, error });\n throw error;\n }\n }\n\n return {\n subscribe(listener) {\n listeners.add(listener);\n Promise.resolve()\n .then(() => listener(state))\n .catch(() => {});\n return () => {\n listeners.delete(listener);\n };\n },\n\n getState() {\n return state;\n },\n\n init(params = {}, options) {\n if (state.initialized && state.cart) {\n return Promise.resolve(state.cart);\n }\n return this.refresh(params, options);\n },\n\n refresh(params = {}, options) {\n return runCartMutation(() =>\n hasCartId(params)\n ? cartApi.get(params, options)\n : cartApi.current(params, options),\n );\n },\n\n addItem(params, options) {\n return runCartMutation(() =>\n cartApi.addItem({ ...params, id: currentCartId(params.id) }, options),\n );\n },\n\n update(params, options) {\n return runCartMutation(() =>\n cartApi.update({ ...params, id: currentCartId(params.id) }, options),\n );\n },\n\n removeItem(params, options) {\n return runCartMutation(() =>\n cartApi.removeItem({ ...params, id: currentCartId(params.id) }, options),\n );\n },\n\n clear(params = {}, options) {\n return runCartMutation(() =>\n cartApi.clear({ ...params, id: currentCartId(params.id) }, options),\n );\n },\n\n async quote(params = {}, options) {\n setState({ loading: true, error: null });\n try {\n const quote = await cartApi.quote(\n { ...params, id: currentCartId(params.id) },\n options,\n );\n setState({ quote, loading: false, error: null });\n return quote;\n } catch (error) {\n setState({ loading: false, error });\n throw error;\n }\n },\n\n async checkout(params = {}, options) {\n setState({ loading: true, error: null });\n try {\n const checkoutResult = await cartApi.checkout(\n { ...params, id: currentCartId(params.id) },\n options,\n );\n setState({ checkoutResult, loading: false, error: null });\n return checkoutResult;\n } catch (error) {\n setState({ loading: false, error });\n throw error;\n }\n },\n };\n}\n","export type QueryParams = object;\n\nexport function buildQueryString(params: QueryParams): string {\n const queryParts = Object.entries(params as Record<string, unknown>).flatMap(\n ([key, value]) => {\n if (value === null || value === undefined) return [];\n if (typeof value === \"string\") {\n return [`${key}=${encodeURIComponent(value)}`];\n }\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return [`${key}=${value}`];\n }\n if (Array.isArray(value) || typeof value === \"object\") {\n return [`${key}=${encodeURIComponent(JSON.stringify(value))}`];\n }\n return [];\n },\n );\n\n return queryParts.length > 0 ? `?${queryParts.join(\"&\")}` : \"\";\n}\n\nexport function appendQueryString(url: string, params: QueryParams): string {\n const queryString = buildQueryString(params);\n return queryString ? `${url}${queryString}` : url;\n}\n","import { buildQueryString, type QueryParams } from \"../utils/queryParams\";\n\nexport interface TokenSet {\n access_token: string;\n refresh_token?: string;\n access_expires_at?: number;\n}\n\nexport interface AuthStorage {\n getTokens(): TokenSet | null;\n onTokensRefreshed(tokens: TokenSet): void;\n onForcedLogout(): void;\n}\n\nexport interface RequestSuccessContext<T = unknown> {\n data: T;\n method: string;\n url: string;\n status: number;\n request?: unknown;\n duration_ms?: number;\n request_id?: string | null;\n}\n\nexport interface RequestErrorContext {\n error: unknown;\n method: string;\n url: string;\n status?: number;\n request?: unknown;\n response?: unknown;\n duration_ms?: number;\n request_id?: string | null;\n aborted?: boolean;\n}\n\nexport interface RequestOptions<T = unknown> {\n headers?: Record<string, string>;\n params?: QueryParams;\n signal?: AbortSignal;\n transformRequest?: (data: unknown) => unknown;\n onSuccess?: (ctx: RequestSuccessContext<T>) => void | Promise<void>;\n onError?: (ctx: RequestErrorContext) => void | Promise<void>;\n}\n\nexport interface HttpClient {\n get<T>(path: string, opts?: RequestOptions<T>): Promise<T>;\n post<T>(path: string, body: unknown, opts?: RequestOptions<T>): Promise<T>;\n put<T>(path: string, body: unknown, opts?: RequestOptions<T>): Promise<T>;\n patch<T>(path: string, body: unknown, opts?: RequestOptions<T>): Promise<T>;\n delete<T>(path: string, opts?: RequestOptions<T>): Promise<T>;\n}\n\nexport interface HttpClientConfig {\n baseUrl: string;\n storeId?: string;\n authStorage: AuthStorage;\n storefrontMode?: boolean;\n forcedHeaders?: Record<string, string> | (() => Record<string, string>);\n onUnauthorized?: (context: {\n hadAuthorization: boolean;\n authorizationToken: string | null;\n path: string;\n }) => boolean | Promise<boolean>;\n refreshPath?: string | (() => string);\n navigate?: (path: string) => void;\n loginFallbackPath?: string;\n}\n\ninterface ServerError {\n message: string;\n error: string;\n statusCode: number;\n validationErrors: Array<{ field: string; error: string }>;\n}\n\ninterface HttpRequestErrorDetails {\n statusCode?: number;\n validationErrors?: ServerError[\"validationErrors\"];\n method?: string;\n url?: string;\n requestId?: string;\n aborted?: boolean;\n}\n\nfunction requestError(\n name: \"ApiError\" | \"NetworkError\" | \"ParseError\" | \"AbortError\",\n message: string,\n details: HttpRequestErrorDetails = {},\n): Error & HttpRequestErrorDetails {\n return Object.assign(new Error(message), { name }, details);\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction omitStorefrontRouting(value: unknown): unknown {\n if (!isRecord(value) || Array.isArray(value)) return value;\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) return value;\n const result = { ...value };\n delete result.store_id;\n delete result.market;\n return result;\n}\n\nfunction isTokenSet(value: unknown): value is TokenSet {\n return (\n isRecord(value) &&\n typeof value.access_token === \"string\" &&\n (value.refresh_token === undefined ||\n typeof value.refresh_token === \"string\") &&\n (value.access_expires_at === undefined ||\n typeof value.access_expires_at === \"number\")\n );\n}\n\nfunction isValidationError(\n value: unknown,\n): value is ServerError[\"validationErrors\"][number] {\n return (\n isRecord(value) &&\n typeof value.field === \"string\" &&\n typeof value.error === \"string\"\n );\n}\n\nfunction toServerError(value: unknown, statusCode: number): ServerError {\n const payload = isRecord(value) ? value : {};\n const validationErrors = Array.isArray(payload.validationErrors)\n ? payload.validationErrors.filter(isValidationError)\n : [];\n\n return {\n message:\n typeof payload.message === \"string\" ? payload.message : \"Request failed\",\n error: typeof payload.error === \"string\" ? payload.error : \"REQUEST_FAILED\",\n statusCode:\n typeof payload.statusCode === \"number\" ? payload.statusCode : statusCode,\n validationErrors,\n };\n}\n\nfunction normalizeValidationErrors(\n validationErrors: ServerError[\"validationErrors\"],\n): ServerError[\"validationErrors\"] {\n return validationErrors.map((validationError) => ({\n field: validationError.field,\n error: validationError.error || \"GENERAL.VALIDATION_ERROR\",\n }));\n}\n\nexport function createHttpClient(cfg: HttpClientConfig): HttpClient {\n const { authStorage } = cfg;\n let refreshPromise: Promise<void> | null = null;\n\n function getRefreshEndpoint() {\n const refreshPath =\n typeof cfg.refreshPath === \"function\"\n ? cfg.refreshPath()\n : cfg.refreshPath || \"/v1/auth/refresh\";\n return `${cfg.baseUrl}${refreshPath}`;\n }\n\n async function ensureFreshToken() {\n if (refreshPromise) {\n return refreshPromise;\n }\n\n refreshPromise = (async () => {\n const tokens = authStorage.getTokens();\n const refresh_token = tokens?.refresh_token;\n if (!refresh_token) {\n authStorage.onForcedLogout();\n throw requestError(\"ApiError\", \"No refresh token available\", {\n statusCode: 401,\n });\n }\n\n const refRes = await fetch(getRefreshEndpoint(), {\n method: \"POST\",\n headers: {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ refresh_token }),\n });\n\n if (!refRes.ok) {\n authStorage.onForcedLogout();\n throw requestError(\"ApiError\", \"Token refresh failed\", {\n statusCode: 401,\n });\n }\n\n const data: unknown = await refRes.json();\n if (!isTokenSet(data)) {\n authStorage.onForcedLogout();\n throw requestError(\n \"ParseError\",\n \"Token refresh returned an invalid response\",\n { statusCode: refRes.status },\n );\n }\n authStorage.onTokensRefreshed(data);\n })().finally(() => {\n refreshPromise = null;\n });\n\n return refreshPromise;\n }\n\n async function request<T>(\n method: string,\n path: string,\n body?: unknown,\n options?: RequestOptions<T>,\n retried = false,\n ): Promise<T> {\n if (!retried && options?.transformRequest) {\n body = options.transformRequest(body);\n }\n\n if (cfg.storefrontMode) {\n body = omitStorefrontRouting(body);\n }\n\n const forcedHeaders =\n typeof cfg.forcedHeaders === \"function\"\n ? cfg.forcedHeaders()\n : cfg.forcedHeaders || {};\n const callerHeaders = { ...(options?.headers || {}) };\n const protectedHeaderNames = new Set(\n Object.keys(forcedHeaders).map((name) => name.toLowerCase()),\n );\n if (cfg.storefrontMode) protectedHeaderNames.add(\"authorization\");\n for (const name of Object.keys(callerHeaders)) {\n if (protectedHeaderNames.has(name.toLowerCase())) {\n delete callerHeaders[name];\n }\n }\n\n const headers: Record<string, string> = {\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n ...callerHeaders,\n ...forcedHeaders,\n };\n\n let tokens = authStorage.getTokens();\n const nowSec = Date.now() / 1000;\n if (tokens?.access_expires_at && nowSec > tokens.access_expires_at) {\n await ensureFreshToken();\n tokens = authStorage.getTokens();\n }\n\n if (tokens?.access_token) {\n headers[\"Authorization\"] = `Bearer ${tokens.access_token}`;\n }\n\n const requestParams = cfg.storefrontMode\n ? (omitStorefrontRouting(options?.params) as QueryParams | undefined)\n : options?.params;\n const finalPath = requestParams\n ? path + buildQueryString(requestParams)\n : path;\n\n const fetchOptions: RequestInit = {\n method,\n headers,\n signal: options?.signal,\n };\n if (![\"GET\", \"DELETE\"].includes(method) && body !== undefined) {\n fetchOptions.body =\n body instanceof URLSearchParams\n ? body.toString()\n : JSON.stringify(body);\n }\n\n const fullUrl = `${cfg.baseUrl}${finalPath}`;\n let res: Response;\n let data: unknown;\n const startedAt = Date.now();\n\n try {\n res = await fetch(fullUrl, fetchOptions);\n } catch (error) {\n const aborted =\n options?.signal?.aborted ||\n (error instanceof Error && error.name === \"AbortError\");\n const err = requestError(\n aborted ? \"AbortError\" : \"NetworkError\",\n error instanceof Error ? error.message : \"Network request failed\",\n { method, url: fullUrl, aborted },\n );\n if (options?.onError && method !== \"GET\") {\n Promise.resolve(\n options.onError({ error: err, method, url: fullUrl, aborted }),\n ).catch(() => {});\n }\n throw err;\n }\n\n if (res.status === 401 && !retried) {\n if (cfg.onUnauthorized) {\n const recovered = await cfg.onUnauthorized({\n hadAuthorization: Boolean(tokens?.access_token),\n authorizationToken: tokens?.access_token || null,\n path,\n });\n if (recovered) {\n return request<T>(method, path, body, options, true);\n }\n } else {\n await ensureFreshToken();\n return request<T>(method, path, body, options, true);\n }\n }\n\n try {\n const contentLength = res.headers.get(\"content-length\");\n const contentType = res.headers.get(\"content-type\");\n if (\n res.status === 204 ||\n contentLength === \"0\" ||\n !contentType?.includes(\"application/json\")\n ) {\n data = {};\n } else {\n data = await res.json();\n }\n } catch (error) {\n const err = requestError(\"ParseError\", \"Failed to parse response\", {\n method,\n url: fullUrl,\n statusCode: res.status,\n });\n if (options?.onError && method !== \"GET\") {\n Promise.resolve(\n options.onError({\n error: err,\n method,\n url: fullUrl,\n status: res.status,\n }),\n ).catch(() => {});\n }\n throw err;\n }\n\n if (!res.ok) {\n const serverErr = toServerError(data, res.status);\n const requestId =\n res.headers.get(\"x-request-id\") || res.headers.get(\"request-id\");\n const err = requestError(\"ApiError\", serverErr.message, {\n statusCode: serverErr.statusCode,\n validationErrors: normalizeValidationErrors(serverErr.validationErrors),\n method,\n url: fullUrl,\n requestId: requestId || undefined,\n });\n if (options?.onError && method !== \"GET\") {\n Promise.resolve(\n options.onError({\n error: err,\n method,\n url: fullUrl,\n status: res.status,\n response: serverErr,\n request_id: requestId || null,\n duration_ms: Date.now() - startedAt,\n }),\n ).catch(() => {});\n }\n throw err;\n }\n\n if (options?.onSuccess && method !== \"GET\") {\n const requestId =\n res.headers.get(\"x-request-id\") || res.headers.get(\"request-id\");\n Promise.resolve(\n options.onSuccess({\n data: data as T,\n method,\n url: fullUrl,\n status: res.status,\n request_id: requestId || null,\n duration_ms: Date.now() - startedAt,\n }),\n ).catch(() => {});\n }\n return data as T;\n }\n\n return {\n get: <T>(path: string, opts?: RequestOptions<T>) =>\n request<T>(\"GET\", path, undefined, opts),\n post: <T>(path: string, body: unknown, opts?: RequestOptions<T>) =>\n request<T>(\"POST\", path, body, opts),\n put: <T>(path: string, body: unknown, opts?: RequestOptions<T>) =>\n request<T>(\"PUT\", path, body, opts),\n patch: <T>(path: string, body: unknown, opts?: RequestOptions<T>) =>\n request<T>(\"PATCH\", path, body, opts),\n delete: <T>(path: string, opts?: RequestOptions<T>) =>\n request<T>(\"DELETE\", path, undefined, opts),\n };\n}\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateAccountApiTokenParams,\n DeleteAccountParams,\n GetMeParams,\n RequestOptions,\n SearchAccountsParams,\n UpdateAccountApiTokenParams,\n UpdateAccountContactParams,\n} from \"../types/api\";\nimport type {\n Account,\n AccountApiToken,\n AccountApiTokenCreated,\n AccountSession,\n AccountUpdateResponse,\n PaginatedResponse,\n} from \"../types\";\n\nexport const createAccountApi = (apiConfig: ApiConfig) => ({\n async updateAccount(\n _params: UpdateAccountContactParams,\n options?: RequestOptions,\n ): Promise<AccountUpdateResponse> {\n return apiConfig.httpClient.put<AccountUpdateResponse>(\n \"/v1/accounts\",\n {},\n options,\n );\n },\n\n async deleteAccount(\n _params: DeleteAccountParams,\n options?: RequestOptions,\n ): Promise<{ success: boolean; message: string }> {\n return apiConfig.httpClient.delete<{ success: boolean; message: string }>(\n \"/v1/accounts\",\n options,\n );\n },\n\n async getMe(\n _params: GetMeParams,\n options?: RequestOptions,\n ): Promise<Account> {\n return apiConfig.httpClient.get<Account>(\"/v1/accounts/me\", options);\n },\n\n async searchAccounts(\n params: SearchAccountsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<Account>> {\n return apiConfig.httpClient.get<PaginatedResponse<Account>>(\n \"/v1/accounts/search\",\n { ...options, params },\n );\n },\n\n async listApiTokens(\n options?: RequestOptions,\n ): Promise<PaginatedResponse<AccountApiToken>> {\n return apiConfig.httpClient.get<PaginatedResponse<AccountApiToken>>(\n \"/v1/accounts/me/api-tokens\",\n options,\n );\n },\n\n async createApiToken(\n params: CreateAccountApiTokenParams,\n options?: RequestOptions,\n ): Promise<AccountApiTokenCreated> {\n return apiConfig.httpClient.post<AccountApiTokenCreated>(\n \"/v1/accounts/me/api-tokens\",\n params,\n options,\n );\n },\n\n async updateApiToken(\n params: UpdateAccountApiTokenParams,\n options?: RequestOptions,\n ): Promise<AccountApiToken> {\n const { id, ...payload } = params;\n return apiConfig.httpClient.put<AccountApiToken>(\n `/v1/accounts/me/api-tokens/${id}`,\n payload,\n options,\n );\n },\n\n async revokeApiToken(\n id: string,\n options?: RequestOptions,\n ): Promise<boolean> {\n return apiConfig.httpClient.delete<boolean>(\n `/v1/accounts/me/api-tokens/${id}`,\n options,\n );\n },\n\n async listSessions(\n options?: RequestOptions,\n ): Promise<PaginatedResponse<AccountSession>> {\n return apiConfig.httpClient.get<PaginatedResponse<AccountSession>>(\n \"/v1/accounts/me/sessions\",\n options,\n );\n },\n\n async revokeSession(\n id: string,\n options?: RequestOptions,\n ): Promise<boolean> {\n return apiConfig.httpClient.delete<boolean>(\n `/v1/accounts/me/sessions/${id}`,\n options,\n );\n },\n});\n","import type { ApiConfig, AdminSessionInternal, AdminSessionUpdater } from '../index';\nimport type {\n AuthCodeVerifyParams,\n AuthToken,\n RequestOptions,\n VerificationChallengeResponse,\n} from '../types/api';\n\nexport const createAuthApi = (apiConfig: ApiConfig, updateSession: AdminSessionUpdater) => {\n const pendingEmails = new Map<string, string>();\n\n function applyAuthToken(result: AuthToken, email?: string) {\n const next: AdminSessionInternal = {\n access_token: result.access_token,\n refresh_token: result.refresh_token,\n access_expires_at: result.access_expires_at,\n email,\n };\n updateSession(() => next);\n }\n\n return {\n\n async code(params: { email: string }, options?: RequestOptions): Promise<VerificationChallengeResponse> {\n const result = await apiConfig.httpClient.post<VerificationChallengeResponse>('/v1/auth/code', params, options);\n pendingEmails.set(result.challenge_id, params.email);\n return result;\n },\n\n async verify(params: AuthCodeVerifyParams, options?: RequestOptions): Promise<AuthToken> {\n const result = await apiConfig.httpClient.post<AuthToken>(\n '/v1/auth/verify',\n params,\n options,\n );\n if (result?.access_token) {\n applyAuthToken(result, pendingEmails.get(params.challenge_id));\n pendingEmails.delete(params.challenge_id);\n }\n return result;\n },\n\n async refresh(params: { refresh_token: string }, options?: RequestOptions): Promise<AuthToken> {\n return apiConfig.httpClient.post<AuthToken>('/v1/auth/refresh', params, options);\n },\n\n async storeCode(storeId: string, params: { email: string }, options?: RequestOptions): Promise<VerificationChallengeResponse> {\n const result = await apiConfig.httpClient.post<VerificationChallengeResponse>(`/v1/stores/${storeId}/auth/code`, params, options);\n pendingEmails.set(result.challenge_id, params.email);\n return result;\n },\n\n async storeVerify(storeId: string, params: AuthCodeVerifyParams, options?: RequestOptions): Promise<AuthToken> {\n const result = await apiConfig.httpClient.post<AuthToken>(\n `/v1/stores/${storeId}/auth/verify`,\n params,\n options,\n );\n if (result?.access_token) {\n applyAuthToken(result, pendingEmails.get(params.challenge_id));\n pendingEmails.delete(params.challenge_id);\n }\n return result;\n }\n };\n};\n","import type { ApiConfig, AdminSessionUpdater } from \"../index\";\nimport type {\n CreateStoreParams,\n UpdateStoreParams,\n GetStoreParams,\n GetStoresParams,\n GetSubscriptionPlansParams,\n GetStoreSubscriptionParams,\n CreateStoreSubscriptionActionParams,\n RetryStoreSubscriptionActionParams,\n GetStoreSubscriptionActionParams,\n FindStoreSubscriptionActionsParams,\n FindStoreSubscriptionActionEffectsParams,\n GetStoreSubscriptionActionEffectParams,\n CreatePortalSessionParams,\n AddMemberParams,\n RemoveMemberParams,\n FindStoreMembersParams,\n TestWebhookParams,\n TestWebhookResponse,\n ListBuildHooksParams,\n CreateBuildHookParams,\n UpdateBuildHookParams,\n DeleteBuildHookParams,\n ListWebhooksParams,\n CreateWebhookParams,\n UpdateWebhookParams,\n DeleteWebhookParams,\n RequestOptions,\n} from \"../types/api\";\nimport type {\n Store,\n Webhook,\n PaginatedResponse,\n SubscriptionPlan,\n PaymentStoreConfig,\n BuildHook,\n StoreSubscription,\n StoreSubscriptionAction,\n StoreSubscriptionEffect,\n StoreMember,\n StoreMembership,\n} from \"../types\";\n\nexport const createStoreApi = (apiConfig: ApiConfig, _updateSession: AdminSessionUpdater) => {\n return {\n async createStore(params: CreateStoreParams, options?: RequestOptions): Promise<Store> {\n return apiConfig.httpClient.post<Store>(`/v1/stores`, params, options);\n },\n\n async updateStore(params: UpdateStoreParams, options?: RequestOptions): Promise<Store> {\n return apiConfig.httpClient.put<Store>(`/v1/stores/${params.id}`, params, options);\n },\n\n async getStore(_params: GetStoreParams, options?: RequestOptions): Promise<Store> {\n return apiConfig.httpClient.get<Store>(`/v1/stores/${apiConfig.storeId}`, options);\n },\n\n async getStores(params?: GetStoresParams, options?: RequestOptions): Promise<PaginatedResponse<Store>> {\n return apiConfig.httpClient.get<PaginatedResponse<Store>>(`/v1/stores`, {\n ...options,\n params,\n });\n },\n\n async regeneratePublishableKey(\n params: { store_id?: string } = {},\n options?: RequestOptions,\n ): Promise<Store> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Store>(\n `/v1/stores/${store_id}/publishable-key/regenerate`,\n {},\n options,\n );\n },\n\n async getSubscriptionPlans(\n _params: GetSubscriptionPlansParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<SubscriptionPlan>> {\n return apiConfig.httpClient.get<PaginatedResponse<SubscriptionPlan>>(\"/v1/stores/plans\", options);\n },\n\n async createSubscriptionAction(\n params: CreateStoreSubscriptionActionParams,\n options?: RequestOptions,\n ): Promise<StoreSubscriptionAction> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n const response = await apiConfig.httpClient.post<StoreSubscriptionAction>(\n `/v1/stores/${target_store_id}/subscription/actions`,\n payload,\n options,\n );\n if (response.id !== params.action_id) {\n throw new Error(\"Subscription response did not match the requested action_id\");\n }\n return response;\n },\n\n async getSubscription(params: GetStoreSubscriptionParams = {}, options?: RequestOptions): Promise<StoreSubscription> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<StoreSubscription>(`/v1/stores/${store_id}/subscription`, options);\n },\n\n async retrySubscriptionAction(params: RetryStoreSubscriptionActionParams, options?: RequestOptions): Promise<StoreSubscriptionAction> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<StoreSubscriptionAction>(\n `/v1/stores/${store_id}/subscription/actions/${params.action_id}/retry`,\n {},\n options,\n );\n },\n\n async getSubscriptionAction(params: GetStoreSubscriptionActionParams, options?: RequestOptions): Promise<StoreSubscriptionAction> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<StoreSubscriptionAction>(`/v1/stores/${store_id}/subscription/actions/${params.action_id}`, options);\n },\n\n async findSubscriptionActionEffects(\n params: FindStoreSubscriptionActionEffectsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<StoreSubscriptionEffect>> {\n const { store_id, action_id, ...query } = params;\n return apiConfig.httpClient.get<PaginatedResponse<StoreSubscriptionEffect>>(\n `/v1/stores/${store_id || apiConfig.storeId}/subscription/actions/${action_id}/effects`,\n { ...options, params: query },\n );\n },\n\n async getSubscriptionActionEffect(\n params: GetStoreSubscriptionActionEffectParams,\n options?: RequestOptions,\n ): Promise<StoreSubscriptionEffect> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<StoreSubscriptionEffect>(\n `/v1/stores/${store_id}/subscription/actions/${params.action_id}/effects/${params.effect_id}`,\n options,\n );\n },\n\n async findSubscriptionActions(\n params: FindStoreSubscriptionActionsParams = {},\n options?: RequestOptions,\n ): Promise<PaginatedResponse<StoreSubscriptionAction>> {\n const { store_id, ...query } = params;\n return apiConfig.httpClient.get<PaginatedResponse<StoreSubscriptionAction>>(\n `/v1/stores/${store_id || apiConfig.storeId}/subscription/actions`,\n { ...options, params: query },\n );\n },\n\n async createPortalSession(params: CreatePortalSessionParams, options?: RequestOptions): Promise<{ portal_url: string }> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<{ portal_url: string }>(\n `/v1/stores/${store_id}/subscription/portal`,\n { return_url: params.return_url },\n options,\n );\n },\n\n async addMember(params: AddMemberParams, options?: RequestOptions): Promise<boolean> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<boolean>(`/v1/stores/${store_id || apiConfig.storeId}/members`, payload, options);\n },\n\n async inviteUser(params: AddMemberParams, options?: RequestOptions): Promise<boolean> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<boolean>(`/v1/stores/${store_id || apiConfig.storeId}/invitation`, payload, options);\n },\n\n async findMembers(params: FindStoreMembersParams = {}, options?: RequestOptions): Promise<PaginatedResponse<StoreMember>> {\n const { store_id, ...query } = params;\n return apiConfig.httpClient.get<PaginatedResponse<StoreMember>>(`/v1/stores/${store_id || apiConfig.storeId}/members`, {\n ...options,\n params: query,\n });\n },\n\n async findOwnMemberships(options?: RequestOptions): Promise<PaginatedResponse<StoreMembership>> {\n return apiConfig.httpClient.get<PaginatedResponse<StoreMembership>>(\"/v1/stores/memberships\", options);\n },\n\n async removeMember(params: RemoveMemberParams, options?: RequestOptions): Promise<boolean> {\n return apiConfig.httpClient.delete<boolean>(\n `/v1/stores/${params.store_id || apiConfig.storeId}/members/${params.account_id}`,\n options,\n );\n },\n\n async testWebhook(params: TestWebhookParams, options?: RequestOptions): Promise<TestWebhookResponse> {\n return apiConfig.httpClient.post<TestWebhookResponse>(`/v1/stores/${apiConfig.storeId}/webhooks/test`, params, options);\n },\n\n async listBuildHooks(params: ListBuildHooksParams, options?: RequestOptions): Promise<BuildHook[]> {\n return apiConfig.httpClient.get<BuildHook[]>(`/v1/stores/${params.store_id}/build-hooks`, options);\n },\n\n async createBuildHook(params: CreateBuildHookParams, options?: RequestOptions): Promise<BuildHook> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<BuildHook>(`/v1/stores/${store_id}/build-hooks`, payload, options);\n },\n\n async updateBuildHook(params: UpdateBuildHookParams, options?: RequestOptions): Promise<BuildHook> {\n const { store_id, id, ...payload } = params;\n return apiConfig.httpClient.put<BuildHook>(`/v1/stores/${store_id}/build-hooks/${id}`, payload, options);\n },\n\n async deleteBuildHook(params: DeleteBuildHookParams, options?: RequestOptions): Promise<{ deleted: boolean }> {\n return apiConfig.httpClient.delete<{ deleted: boolean }>(`/v1/stores/${params.store_id}/build-hooks/${params.id}`, options);\n },\n\n async getPaymentConfig(params: { store_id: string }, options?: RequestOptions): Promise<PaymentStoreConfig | null> {\n return apiConfig.httpClient.get<PaymentStoreConfig | null>(`/v1/stores/${params.store_id}/config/payment`, options);\n },\n\n async listWebhooks(params: ListWebhooksParams, options?: RequestOptions): Promise<Webhook[]> {\n return apiConfig.httpClient.get<Webhook[]>(`/v1/stores/${params.store_id}/webhooks`, options);\n },\n\n async createWebhook(params: CreateWebhookParams, options?: RequestOptions): Promise<Webhook> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<Webhook>(`/v1/stores/${store_id}/webhooks`, payload, options);\n },\n\n async updateWebhook(params: UpdateWebhookParams, options?: RequestOptions): Promise<Webhook> {\n const { store_id, id, ...payload } = params;\n return apiConfig.httpClient.put<Webhook>(`/v1/stores/${store_id}/webhooks/${id}`, payload, options);\n },\n\n async deleteWebhook(params: DeleteWebhookParams, options?: RequestOptions): Promise<{ deleted: boolean }> {\n return apiConfig.httpClient.delete<{ deleted: boolean }>(`/v1/stores/${params.store_id}/webhooks/${params.id}`, options);\n },\n };\n};\n","import type { ApiConfig } from '../index';\nimport type {\n UploadStoreMediaParams,\n DeleteStoreMediaParams,\n GetStoreMediaParams,\n GetMediaParams,\n UpdateMediaParams,\n RequestOptions\n} from '../types/api';\nimport type { Media, PaginatedResponse } from '../types';\n\nexport const createMediaApi = (apiConfig: ApiConfig) => {\n return {\n async getMedia(params: GetMediaParams, options?: RequestOptions): Promise<Media> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<Media>(\n `/v1/stores/${target_store_id}/media/${params.media_id}`,\n options\n );\n },\n\n async uploadStoreMedia(params: UploadStoreMediaParams, options?: RequestOptions): Promise<Media[]> {\n const { store_id, files = [], urls = [] } = params;\n const target_store_id = store_id || apiConfig.storeId;\n const url = `${apiConfig.baseUrl}/v1/stores/${target_store_id}/media`;\n\n const formData = new FormData();\n files.forEach((file) => formData.append('files', file));\n urls.forEach((url) => formData.append('urls', url));\n\n const tokens = apiConfig.authStorage.getTokens();\n const response = await fetch(url, {\n method: 'POST',\n body: formData,\n headers: {\n Authorization: `Bearer ${tokens?.access_token || ''}`\n },\n signal: options?.signal\n });\n\n if (!response.ok) {\n throw new Error('Upload failed, server said no');\n }\n\n return await response.json();\n },\n\n async deleteStoreMedia(params: DeleteStoreMediaParams, options?: RequestOptions): Promise<boolean> {\n const { store_id, media_id } = params;\n const target_store_id = store_id || apiConfig.storeId;\n\n return apiConfig.httpClient.delete<boolean>(\n `/v1/stores/${target_store_id}/media/${media_id}`,\n options\n );\n },\n\n async getStoreMedia(params: GetStoreMediaParams, options?: RequestOptions): Promise<PaginatedResponse<Media>> {\n const { store_id, cursor, limit, ids, query, mime_type, sort_field, sort_direction } = params;\n const target_store_id = store_id || apiConfig.storeId;\n const url = `${apiConfig.baseUrl}/v1/stores/${target_store_id}/media`;\n\n const queryParams: Record<string, string> = { limit: String(limit) };\n if (cursor) queryParams.cursor = cursor;\n if (ids && ids.length > 0) queryParams.ids = JSON.stringify(ids);\n if (query) queryParams.query = query;\n if (mime_type) queryParams.mime_type = mime_type;\n if (sort_field) queryParams.sort_field = sort_field;\n if (sort_direction) queryParams.sort_direction = sort_direction;\n\n const queryString = new URLSearchParams(queryParams).toString();\n\n const tokens = apiConfig.authStorage.getTokens();\n const response = await fetch(`${url}?${queryString}`, {\n headers: {\n Authorization: `Bearer ${tokens?.access_token || ''}`\n },\n signal: options?.signal\n });\n\n if (!response.ok) {\n const errorData = await response.json().catch(() => null);\n throw new Error(errorData?.message || 'Failed to fetch media');\n }\n\n return await response.json();\n },\n\n async updateMedia(params: UpdateMediaParams, options?: RequestOptions): Promise<Media> {\n const { media_id, store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n\n return apiConfig.httpClient.put<Media>(\n `/v1/stores/${target_store_id}/media/${media_id}`,\n payload,\n options\n );\n }\n };\n};\n","import type { ApiConfig } from '../index';\nimport type {\n\tEmailDelivery,\n\tEmailSendRequest,\n\tEmailSendResult,\n\tGetEmailDeliveryParams,\n\tRetryEmailDeliveryParams\n} from '../types';\nimport type { RequestOptions } from '../types/api';\n\nexport const createNotificationApi = (apiConfig: ApiConfig) => {\n\treturn {\n\t\tasync sendEmail(request: EmailSendRequest, options?: RequestOptions): Promise<EmailSendResult> {\n\t\t\treturn apiConfig.httpClient.post<EmailSendResult>(\n\t\t\t\t'/v1/notifications/email',\n\t\t\t\trequest,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync getEmailDelivery(\n\t\t\tparams: GetEmailDeliveryParams,\n\t\t\toptions?: RequestOptions\n\t\t): Promise<EmailDelivery> {\n\t\t\treturn apiConfig.httpClient.get<EmailDelivery>(\n\t\t\t\t`/v1/notifications/email-deliveries/${params.delivery_id}`,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync retryEmailDelivery(\n\t\t\tparams: RetryEmailDeliveryParams,\n\t\t\toptions?: RequestOptions\n\t\t): Promise<EmailDelivery> {\n\t\t\treturn apiConfig.httpClient.post<EmailDelivery>(\n\t\t\t\t`/v1/notifications/email-deliveries/${params.delivery_id}/retry`,\n\t\t\t\t{ revision: params.revision },\n\t\t\t\toptions\n\t\t\t);\n\t\t}\n\t};\n};\n","import type { ApiConfig } from '../index';\nimport type {\n\tCreatePromoCodeParams,\n\tUpdatePromoCodeParams,\n\tDeletePromoCodeParams,\n\tGetPromoCodeParams,\n\tGetPromoCodesParams,\n\tRequestOptions\n} from '../types/api';\nimport type { PaginatedResponse, PromoCode } from '../types';\n\nexport const createPromoCodeApi = (apiConfig: ApiConfig) => {\n\treturn {\n\t\tasync createPromoCode(params: CreatePromoCodeParams, options?: RequestOptions): Promise<PromoCode> {\n\t\t\tconst { store_id, ...payload } = params;\n\t\t\tconst target_store_id = store_id || apiConfig.storeId;\n\t\t\treturn apiConfig.httpClient.post<PromoCode>(\n\t\t\t\t`/v1/stores/${target_store_id}/promo-codes`,\n\t\t\t\tpayload,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync updatePromoCode(params: UpdatePromoCodeParams, options?: RequestOptions): Promise<PromoCode> {\n\t\t\tconst { store_id, ...payload } = params;\n\t\t\tconst target_store_id = store_id || apiConfig.storeId;\n\t\t\treturn apiConfig.httpClient.put<PromoCode>(\n\t\t\t\t`/v1/stores/${target_store_id}/promo-codes/${params.id}`,\n\t\t\t\tpayload,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync deletePromoCode(params: DeletePromoCodeParams, options?: RequestOptions): Promise<{ deleted: boolean }> {\n\t\t\tconst target_store_id = params.store_id || apiConfig.storeId;\n\t\t\treturn apiConfig.httpClient.delete<{ deleted: boolean }>(\n\t\t\t\t`/v1/stores/${target_store_id}/promo-codes/${params.id}`,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync getPromoCode(params: GetPromoCodeParams, options?: RequestOptions): Promise<PromoCode> {\n\t\t\tconst target_store_id = params.store_id || apiConfig.storeId;\n\t\t\treturn apiConfig.httpClient.get<PromoCode>(\n\t\t\t\t`/v1/stores/${target_store_id}/promo-codes/${params.id}`,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync getPromoCodes(params: GetPromoCodesParams, options?: RequestOptions): Promise<PaginatedResponse<PromoCode>> {\n\t\t\tconst { store_id, ...queryParams } = params;\n\t\t\tconst target_store_id = store_id || apiConfig.storeId;\n\t\t\treturn apiConfig.httpClient.get<PaginatedResponse<PromoCode>>(`/v1/stores/${target_store_id}/promo-codes`, {\n\t\t\t\t...options,\n\t\t\t\tparams: queryParams\n\t\t\t});\n\t\t}\n\t};\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateCollectionParams,\n UpdateCollectionParams,\n DeleteCollectionParams,\n GetCollectionParams,\n GetCollectionsParams,\n CreateEntryParams,\n UpdateEntryParams,\n DeleteEntryParams,\n GetEntryParams,\n GetEntriesParams,\n RequestOptions,\n} from \"../types/api\";\nimport type { Collection, CollectionEntry, PaginatedResponse } from \"../types\";\n\nexport const createCmsApi = (apiConfig: ApiConfig) => {\n return {\n async createCollection(params: CreateCollectionParams, options?: RequestOptions): Promise<Collection> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Collection>(\n `/v1/stores/${target_store_id}/collections`,\n payload,\n options\n );\n },\n\n async updateCollection(params: UpdateCollectionParams, options?: RequestOptions): Promise<Collection> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<Collection>(\n `/v1/stores/${target_store_id}/collections/${params.id}`,\n payload,\n options\n );\n },\n\n async deleteCollection(params: DeleteCollectionParams, options?: RequestOptions): Promise<boolean> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<boolean>(\n `/v1/stores/${target_store_id}/collections/${params.id}`,\n options\n );\n },\n\n async getCollection(params: GetCollectionParams, options?: RequestOptions): Promise<Collection> {\n const target_store_id = params.store_id || apiConfig.storeId;\n const identifier = params.id !== undefined\n ? params.id\n : `${target_store_id}:${params.key}`;\n\n return apiConfig.httpClient.get<Collection>(\n `/v1/stores/${target_store_id}/collections/${identifier}`,\n options\n );\n },\n\n async getCollections(params: GetCollectionsParams = {}, options?: RequestOptions): Promise<PaginatedResponse<Collection>> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<Collection>>(\n `/v1/stores/${target_store_id}/collections`,\n {\n ...options,\n params: queryParams,\n }\n );\n },\n\n async createEntry(params: CreateEntryParams, options?: RequestOptions): Promise<CollectionEntry> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<CollectionEntry>(\n `/v1/stores/${target_store_id}/entries`,\n payload,\n options\n );\n },\n\n async updateEntry(params: UpdateEntryParams, options?: RequestOptions): Promise<CollectionEntry> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<CollectionEntry>(\n `/v1/stores/${target_store_id}/entries/${params.id}`,\n payload,\n options\n );\n },\n\n async deleteEntry(params: DeleteEntryParams, options?: RequestOptions): Promise<boolean> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<boolean>(\n `/v1/stores/${target_store_id}/entries/${params.id}`,\n options\n );\n },\n\n async getEntry(params: GetEntryParams, options?: RequestOptions): Promise<CollectionEntry> {\n const target_store_id = params.store_id || apiConfig.storeId;\n if (!params.id) {\n throw new Error(\"GetEntryParams requires id\");\n }\n return apiConfig.httpClient.get<CollectionEntry>(\n `/v1/stores/${target_store_id}/entries/${params.id}`,\n options\n );\n },\n\n async getEntries(params: GetEntriesParams, options?: RequestOptions): Promise<PaginatedResponse<CollectionEntry>> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<CollectionEntry>>(\n `/v1/stores/${target_store_id}/entries`,\n {\n ...options,\n params: queryParams,\n }\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateProviderParams,\n CreateProductParams,\n CreateServiceParams,\n CreateServiceProviderParams,\n DeleteProviderParams,\n UpdateProductParams,\n DeleteProductParams,\n DeleteServiceParams,\n DeleteServiceProviderParams,\n FindServiceProvidersParams,\n GetProviderParams,\n GetProductParams,\n GetProductsParams,\n GetProvidersParams,\n GetQuoteParams,\n GetAvailabilityParams,\n AvailabilityResponse,\n AddCartItemParams,\n CheckoutCartParams,\n ClearCartParams,\n CreateCartParams,\n FindCartsParams,\n GetCartParams,\n GetServiceParams,\n GetServicesParams,\n UpdateOrderParams,\n UpdateProviderParams,\n UpdateServiceParams,\n UpdateServiceProviderParams,\n GetOrderParams,\n GetOrdersParams,\n FindDigitalAccessGrantsParams,\n GetDigitalAccessGrantParams,\n DownloadDigitalAccessParams,\n ActivateDigitalAccessGrantParams,\n RevokeDigitalAccessGrantParams,\n CreateOrderRefundParams,\n CreateOrderRefundResponse,\n FindOrderRefundsParams,\n GetOrderRefundParams,\n GetOrderPaymentParams,\n RetryPaymentTransactionParams,\n FindPaymentTransactionsParams,\n GetPaymentTransactionParams,\n QuoteCartParams,\n RemoveCartItemParams,\n RequestOptions,\n UpdateCartParams,\n} from \"../types/api\";\nimport type {\n Order,\n DigitalAccessGrant,\n DigitalAccessDownloadResponse,\n Product,\n Provider,\n Service,\n ServiceProvider,\n OrderQuote,\n OrderRefund,\n OrderPayment,\n PaymentTransaction,\n Cart,\n PaginatedResponse,\n} from \"../types\";\n\nexport const createEshopApi = (apiConfig: ApiConfig) => {\n return {\n\n async createProduct(params: CreateProductParams, options?: RequestOptions): Promise<Product> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Product>(\n `/v1/stores/${target_store_id}/products`,\n payload,\n options,\n );\n },\n\n async updateProduct(params: UpdateProductParams, options?: RequestOptions): Promise<Product> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<Product>(\n `/v1/stores/${target_store_id}/products/${params.id}`,\n payload,\n options,\n );\n },\n\n async deleteProduct(params: DeleteProductParams, options?: RequestOptions): Promise<{ deleted: boolean }> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${target_store_id}/products/${params.id}`,\n options,\n );\n },\n\n async getProduct(params: GetProductParams, options?: RequestOptions): Promise<Product> {\n const target_store_id = params.store_id || apiConfig.storeId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.slug) {\n identifier = `${target_store_id}:${apiConfig.locale}:${params.slug}`;\n } else {\n throw new Error(\"GetProductParams requires id or slug\");\n }\n\n return apiConfig.httpClient.get<Product>(\n `/v1/stores/${target_store_id}/products/${identifier}`,\n options,\n );\n },\n\n async getProducts(params: GetProductsParams, options?: RequestOptions): Promise<PaginatedResponse<Product>> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<Product>>(\n `/v1/stores/${encodeURIComponent(target_store_id)}/products`,\n {\n ...options,\n params: queryParams,\n },\n );\n },\n\n async createService(\n params: CreateServiceParams,\n options?: RequestOptions,\n ): Promise<Service> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Service>(\n `/v1/stores/${target_store_id}/services`,\n payload,\n options,\n );\n },\n\n async updateService(\n params: UpdateServiceParams,\n options?: RequestOptions,\n ): Promise<Service> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<Service>(\n `/v1/stores/${target_store_id}/services/${params.id}`,\n payload,\n options,\n );\n },\n\n async deleteService(\n params: DeleteServiceParams,\n options?: RequestOptions,\n ): Promise<void> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<void>(\n `/v1/stores/${target_store_id}/services/${params.id}`,\n options,\n );\n },\n\n async getService(\n params: GetServiceParams,\n options?: RequestOptions,\n ): Promise<Service> {\n const store_id = params.store_id || apiConfig.storeId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.slug) {\n identifier = `${store_id}:${apiConfig.locale}:${params.slug}`;\n } else {\n throw new Error(\"GetServiceParams requires id or slug\");\n }\n\n return apiConfig.httpClient.get<Service>(\n `/v1/stores/${store_id}/services/${identifier}`,\n options,\n );\n },\n\n async getServices(\n params: GetServicesParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<Service>> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<Service>>(\n `/v1/stores/${target_store_id}/services`,\n {\n ...options,\n params: queryParams,\n },\n );\n },\n\n async getServiceAvailability(\n params: GetAvailabilityParams,\n options?: RequestOptions,\n ): Promise<AvailabilityResponse> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<AvailabilityResponse>(\n `/v1/stores/${target_store_id}/services/availability`,\n { ...options, params: queryParams },\n );\n },\n\n async createProvider(\n params: CreateProviderParams,\n options?: RequestOptions,\n ): Promise<Provider> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Provider>(\n `/v1/stores/${target_store_id}/providers`,\n payload,\n options,\n );\n },\n\n async updateProvider(\n params: UpdateProviderParams,\n options?: RequestOptions,\n ): Promise<Provider> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<Provider>(\n `/v1/stores/${target_store_id}/providers/${params.id}`,\n payload,\n options,\n );\n },\n\n async deleteProvider(\n params: DeleteProviderParams,\n options?: RequestOptions,\n ): Promise<void> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<void>(\n `/v1/stores/${target_store_id}/providers/${params.id}`,\n options,\n );\n },\n\n async getProvider(\n params: GetProviderParams,\n options?: RequestOptions,\n ): Promise<Provider> {\n const store_id = params.store_id || apiConfig.storeId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.slug) {\n identifier = `${store_id}:${apiConfig.locale}:${params.slug}`;\n } else {\n throw new Error(\"GetProviderParams requires id or slug\");\n }\n\n return apiConfig.httpClient.get<Provider>(\n `/v1/stores/${store_id}/providers/${identifier}`,\n options,\n );\n },\n\n async getProviders(\n params: GetProvidersParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<Provider>> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<Provider>>(\n `/v1/stores/${target_store_id}/providers`,\n {\n ...options,\n params: queryParams,\n },\n );\n },\n\n async findServiceProviders(\n params: FindServiceProvidersParams,\n options?: RequestOptions,\n ): Promise<ServiceProvider[]> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<ServiceProvider[]>(\n `/v1/stores/${target_store_id}/service-providers`,\n { ...options, params: queryParams },\n );\n },\n\n async createServiceProvider(\n params: CreateServiceProviderParams,\n options?: RequestOptions,\n ): Promise<ServiceProvider> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<ServiceProvider>(\n `/v1/stores/${target_store_id}/service-providers`,\n payload,\n options,\n );\n },\n\n async updateServiceProvider(\n params: UpdateServiceProviderParams,\n options?: RequestOptions,\n ): Promise<ServiceProvider> {\n const { store_id, id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<ServiceProvider>(\n `/v1/stores/${target_store_id}/service-providers/${id}`,\n payload,\n options,\n );\n },\n\n async deleteServiceProvider(\n params: DeleteServiceProviderParams,\n options?: RequestOptions,\n ): Promise<void> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<void>(\n `/v1/stores/${target_store_id}/service-providers/${params.id}`,\n options,\n );\n },\n\n async updateOrder(params: UpdateOrderParams, options?: RequestOptions): Promise<Order> {\n const { store_id, items, ...rest } = params;\n const target_store_id = store_id || apiConfig.storeId;\n const payload = {\n ...rest,\n ...(items ? { items } : {}),\n };\n\n return apiConfig.httpClient.put<Order>(\n `/v1/stores/${target_store_id}/orders/${params.id}`,\n payload,\n options,\n );\n },\n\n async getOrder(params: GetOrderParams, options?: RequestOptions): Promise<Order> {\n const target_store_id = params.store_id || apiConfig.storeId;\n\n return apiConfig.httpClient.get<Order>(\n `/v1/stores/${target_store_id}/orders/${params.id}`,\n options,\n );\n },\n\n async getOrders(params: GetOrdersParams, options?: RequestOptions): Promise<PaginatedResponse<Order>> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<Order>>(\n `/v1/stores/${target_store_id}/orders`,\n {\n ...options,\n params: queryParams,\n },\n );\n },\n\n async getCarts(params: FindCartsParams = {}, options?: RequestOptions): Promise<PaginatedResponse<Cart>> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<Cart>>(\n `/v1/stores/${target_store_id}/carts`,\n {\n ...options,\n params: queryParams,\n },\n );\n },\n\n async getCart(params: GetCartParams, options?: RequestOptions): Promise<Cart> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<Cart>(\n `/v1/stores/${target_store_id}/carts/${params.id}`,\n options,\n );\n },\n\n async createCart(params: CreateCartParams, options?: RequestOptions): Promise<Cart> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Cart>(\n `/v1/stores/${target_store_id}/carts`,\n {\n ...payload,\n items: payload.items || [],\n },\n options,\n );\n },\n\n async updateCart(params: UpdateCartParams, options?: RequestOptions): Promise<Cart> {\n const { id, store_id, items, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<Cart>(\n `/v1/stores/${target_store_id}/carts/${id}`,\n {\n ...payload,\n ...(items ? { items } : {}),\n },\n options,\n );\n },\n\n async addCartItem(params: AddCartItemParams, options?: RequestOptions): Promise<Cart> {\n const { id, store_id, item } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Cart>(\n `/v1/stores/${target_store_id}/carts/${id}/items`,\n { item },\n options,\n );\n },\n\n async removeCartItem(params: RemoveCartItemParams, options?: RequestOptions): Promise<Cart> {\n const { id, store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Cart>(\n `/v1/stores/${target_store_id}/carts/${id}/items/remove`,\n payload,\n options,\n );\n },\n\n async clearCart(params: ClearCartParams, options?: RequestOptions): Promise<Cart> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Cart>(\n `/v1/stores/${target_store_id}/carts/${params.id}/clear`,\n {},\n options,\n );\n },\n\n async quoteCart(params: QuoteCartParams, options?: RequestOptions): Promise<OrderQuote> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<OrderQuote>(\n `/v1/stores/${target_store_id}/carts/${params.id}/quote`,\n {},\n options,\n );\n },\n\n async checkoutCart(params: CheckoutCartParams, options?: RequestOptions): Promise<import(\"../types\").OrderCheckoutResult> {\n const { id, store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<import(\"../types\").OrderCheckoutResult>(\n `/v1/stores/${target_store_id}/carts/${id}/checkout`,\n payload,\n options,\n );\n },\n\n async getQuote(params: GetQuoteParams, options?: RequestOptions): Promise<OrderQuote> {\n const { location, store_id, items, ...rest } = params;\n const target_store_id = store_id || apiConfig.storeId;\n const shipping_address = location\n ? {\n country: location.country || \"\",\n state: location.state || \"\",\n city: location.city || \"\",\n postal_code: location.postal_code || \"\",\n name: \"\",\n street1: \"\",\n street2: null,\n }\n : rest.shipping_address;\n return apiConfig.httpClient.post<OrderQuote>(\n `/v1/stores/${target_store_id}/orders/quote`,\n {\n ...rest,\n items,\n shipping_address,\n market: rest.market || apiConfig.market,\n },\n options,\n );\n },\n\n async createRefund(\n params: CreateOrderRefundParams,\n options?: RequestOptions,\n ): Promise<CreateOrderRefundResponse> {\n const target_store_id = params.store_id || apiConfig.storeId;\n const response = await apiConfig.httpClient.post<CreateOrderRefundResponse>(\n `/v1/stores/${target_store_id}/orders/${params.order_id}/refunds`,\n {\n amount: params.amount,\n refund_id: params.refund_id,\n },\n options,\n );\n if (response.refund_id !== params.refund_id) {\n throw new Error(\n \"Refund response did not match the requested refund_id\",\n );\n }\n if (\n !Number.isSafeInteger(response.amount) ||\n response.amount !== params.amount\n ) {\n throw new Error(\"Refund response did not match the requested amount\");\n }\n if (\n ![\n \"requested\",\n \"processing\",\n \"succeeded\",\n \"rejected\",\n \"failed\",\n \"unknown\",\n ].includes(response.status)\n ) {\n throw new Error(\"Refund response contained an invalid status\");\n }\n return response;\n },\n\n async getPayment(\n params: GetOrderPaymentParams,\n options?: RequestOptions,\n ): Promise<OrderPayment> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<OrderPayment>(\n `/v1/stores/${target_store_id}/orders/${params.order_id}/payment`,\n options,\n );\n },\n\n async retryPaymentTransaction(\n params: RetryPaymentTransactionParams,\n options?: RequestOptions,\n ): Promise<PaymentTransaction> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<PaymentTransaction>(\n `/v1/stores/${target_store_id}/orders/${params.order_id}/payment/transactions/${params.transaction_id}/retry`,\n {},\n options,\n );\n },\n\n async getPaymentTransactions(\n params: FindPaymentTransactionsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<PaymentTransaction>> {\n const { order_id, store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<PaymentTransaction>>(\n `/v1/stores/${target_store_id}/orders/${order_id}/payment/transactions`,\n { ...options, params: queryParams },\n );\n },\n\n async getPaymentTransaction(\n params: GetPaymentTransactionParams,\n options?: RequestOptions,\n ): Promise<PaymentTransaction> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaymentTransaction>(\n `/v1/stores/${target_store_id}/orders/${params.order_id}/payment/transactions/${params.transaction_id}`,\n options,\n );\n },\n\n async getRefund(\n params: GetOrderRefundParams,\n options?: RequestOptions,\n ): Promise<OrderRefund> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<OrderRefund>(\n `/v1/stores/${target_store_id}/orders/${params.order_id}/refunds/${params.refund_id}`,\n options,\n );\n },\n\n async getRefunds(\n params: FindOrderRefundsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<OrderRefund>> {\n const { order_id, store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<OrderRefund>>(\n `/v1/stores/${target_store_id}/orders/${order_id}/refunds`,\n { ...options, params: queryParams },\n );\n },\n\n async downloadDigitalAccess(\n params: DownloadDigitalAccessParams,\n options?: RequestOptions,\n ): Promise<DigitalAccessDownloadResponse> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<DigitalAccessDownloadResponse>(\n `/v1/stores/${target_store_id}/orders/${params.order_id}/digital-access/${params.grant_id}/download`,\n {},\n options,\n );\n },\n\n async activateDigitalAccess(\n params: ActivateDigitalAccessGrantParams,\n options?: RequestOptions,\n ): Promise<DigitalAccessGrant> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<DigitalAccessGrant>(\n `/v1/stores/${target_store_id}/orders/${params.order_id}/digital-access/${params.grant_id}/activate`,\n {},\n options,\n );\n },\n\n async revokeDigitalAccess(\n params: RevokeDigitalAccessGrantParams,\n options?: RequestOptions,\n ): Promise<DigitalAccessGrant> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<DigitalAccessGrant>(\n `/v1/stores/${target_store_id}/orders/${params.order_id}/digital-access/${params.grant_id}/revoke`,\n {},\n options,\n );\n },\n\n async findDigitalAccess(\n params: FindDigitalAccessGrantsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<DigitalAccessGrant>> {\n const { order_id, store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<DigitalAccessGrant>>(\n `/v1/stores/${target_store_id}/orders/${order_id}/digital-access`,\n { ...options, params: queryParams },\n );\n },\n\n async getDigitalAccess(\n params: GetDigitalAccessGrantParams,\n options?: RequestOptions,\n ): Promise<DigitalAccessGrant> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<DigitalAccessGrant>(\n `/v1/stores/${target_store_id}/orders/${params.order_id}/digital-access/${params.grant_id}`,\n options,\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateLocationParams,\n DeleteLocationParams,\n RequestOptions,\n UpdateLocationParams,\n} from \"../types/api\";\nimport type { Location } from \"../types\";\n\nexport interface LocationState {\n code: string;\n name: string;\n}\n\nexport interface LocationCountry {\n code: string;\n name: string;\n states: LocationState[];\n}\n\nexport interface GetCountriesResponse {\n items: LocationCountry[];\n cursor: string | null;\n}\n\nexport const createLocationApi = (apiConfig: ApiConfig) => {\n return {\n async getCountries(options?: RequestOptions): Promise<GetCountriesResponse> {\n return apiConfig.httpClient.get<GetCountriesResponse>(`/v1/platform/countries`, options);\n },\n\n async getCountry(\n countryCode: string,\n options?: RequestOptions,\n ): Promise<LocationCountry> {\n return apiConfig.httpClient.get<LocationCountry>(\n `/v1/platform/countries/${countryCode}`,\n options,\n );\n },\n\n\n async list(options?: RequestOptions): Promise<Location[]> {\n return apiConfig.httpClient.get<Location[]>(\n `/v1/stores/${apiConfig.storeId}/locations`,\n options,\n );\n },\n\n async get(id: string, options?: RequestOptions): Promise<Location> {\n return apiConfig.httpClient.get<Location>(\n `/v1/stores/${apiConfig.storeId}/locations/${id}`,\n options,\n );\n },\n\n async create(\n params: CreateLocationParams,\n options?: RequestOptions,\n ): Promise<Location> {\n return apiConfig.httpClient.post<Location>(\n `/v1/stores/${apiConfig.storeId}/locations`,\n { ...params, store_id: apiConfig.storeId },\n options,\n );\n },\n\n async update(\n params: UpdateLocationParams,\n options?: RequestOptions,\n ): Promise<Location> {\n return apiConfig.httpClient.put<Location>(\n `/v1/stores/${apiConfig.storeId}/locations/${params.id}`,\n { ...params, store_id: apiConfig.storeId },\n options,\n );\n },\n\n async delete(\n params: DeleteLocationParams,\n options?: RequestOptions,\n ): Promise<{ deleted: boolean }> {\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${apiConfig.storeId}/locations/${params.id}`,\n options,\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateMarketParams,\n DeleteMarketParams,\n RequestOptions,\n UpdateMarketParams,\n} from \"../types/api\";\nimport type { Market } from \"../types\";\n\n\nexport const createMarketApi = (apiConfig: ApiConfig) => {\n return {\n async list(options?: RequestOptions): Promise<Market[]> {\n return apiConfig.httpClient.get<Market[]>(\n `/v1/stores/${apiConfig.storeId}/markets`,\n options,\n );\n },\n\n async get(id: string, options?: RequestOptions): Promise<Market> {\n return apiConfig.httpClient.get<Market>(\n `/v1/stores/${apiConfig.storeId}/markets/${id}`,\n options,\n );\n },\n\n async create(\n params: CreateMarketParams,\n options?: RequestOptions,\n ): Promise<Market> {\n return apiConfig.httpClient.post<Market>(\n `/v1/stores/${apiConfig.storeId}/markets`,\n { ...params, store_id: apiConfig.storeId },\n options,\n );\n },\n\n async update(\n params: UpdateMarketParams,\n options?: RequestOptions,\n ): Promise<Market> {\n return apiConfig.httpClient.put<Market>(\n `/v1/stores/${apiConfig.storeId}/markets/${params.id}`,\n { ...params, store_id: apiConfig.storeId },\n options,\n );\n },\n\n async delete(\n params: DeleteMarketParams,\n options?: RequestOptions,\n ): Promise<{ deleted: boolean }> {\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${apiConfig.storeId}/markets/${params.id}`,\n {\n ...options,\n params: params.replacement_default_market_id\n ? { replacement_default_market_id: params.replacement_default_market_id }\n : options?.params,\n },\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n RequestOptions,\n CreateContactParams,\n UpdateContactParams,\n GetContactParams,\n FindContactsParams,\n FindActionsParams,\n MergeContactsParams,\n ImportContactsParams,\n ImportContactsPreviewParams,\n ImportContactsPreviewResult,\n ImportContactsResult,\n Contact,\n ContactSessionRecord,\n FindContactSessionsParams,\n RevokeContactSessionParams,\n RevokeAllContactSessionsParams,\n CreateContactListParams,\n UpdateContactListParams,\n FindContactListsParams,\n GetContactListParams,\n CreateContactListPlanParams,\n UpdateContactListPlanParams,\n FindContactListPlansParams,\n GetContactListPlanParams,\n RetryContactListPlanCatalogParams,\n AddContactListContactParams,\n UpdateContactListContactParams,\n RemoveContactListContactParams,\n FindContactListContactsParams,\n RefundContactListMembershipParams,\n RefundContactListMembershipResult,\n FindContactListMembershipPaymentAttemptsParams,\n GetContactListMembershipPaymentAttemptParams,\n FindContactListMembershipRefundsParams,\n GetContactListMembershipRefundParams,\n RetryContactListMembershipRefundParams,\n FindContactListMembershipCancellationsParams,\n GetContactListMembershipCancellationParams,\n RetryContactListMembershipCancellationParams,\n ImportContactListPreviewParams,\n ImportContactsIntoContactListParams,\n ImportContactsIntoContactListResult,\n CreateMailboxParams,\n ConnectGoogleMailboxParams,\n GoogleMailboxConnectUrl,\n UpdateMailboxParams,\n FindMailboxesParams,\n GetMailboxParams,\n PrepareMailboxParams,\n TestMailboxParams,\n TestMailboxResult,\n CreateCampaignParams,\n UpdateCampaignParams,\n FindCampaignsParams,\n GetCampaignParams,\n LaunchCampaignParams,\n DuplicateCampaignParams,\n GetCampaignLaunchReadinessParams,\n ImportCampaignEnrollmentsParams,\n CampaignEnrollmentImportResult,\n GenerateOutreachPersonalizedDraftsParams,\n FindCampaignEnrollmentsParams,\n UpdateCampaignEnrollmentParams,\n UpdateCampaignEnrollmentDraftParams,\n UpdateCampaignEnrollmentStepExecutionParams,\n GetCampaignEnrollmentConversationParams,\n ReplyCampaignEnrollmentParams,\n StopCampaignEnrollmentParams,\n FindCampaignMessagesParams,\n UpdateCampaignMessageParams,\n CreateSuppressionParams,\n UpdateSuppressionParams,\n FindSuppressionsParams,\n GetSuppressionParams,\n} from \"../types/api\";\nimport type {\n Mailbox,\n Campaign,\n CampaignLaunchReadiness,\n CampaignEnrollment,\n CampaignMessage,\n CampaignEnrollmentConversationResponse,\n PaginatedResponse,\n ContactList,\n ContactListPlan,\n ContactListMembershipPaymentAttempt,\n ContactListMembershipRefund,\n ContactListMembershipCancellation,\n ContactListMember,\n Action,\n Suppression,\n} from \"../types\";\n\nexport interface TimelineParams {\n contact_id: string;\n store_id?: string;\n limit?: number;\n cursor?: string;\n}\n\nexport const createActionAdminApi = (apiConfig: ApiConfig) => ({\n async timeline(params: TimelineParams, options?: RequestOptions): Promise<{ items: Action[]; cursor: string | null }> {\n const store_id = params.store_id || apiConfig.storeId;\n const queryParams: Record<string, unknown> = { contact_id: params.contact_id };\n if (params.limit !== undefined) queryParams.limit = params.limit;\n if (params.cursor) queryParams.cursor = params.cursor;\n return apiConfig.httpClient.get<{ items: Action[]; cursor: string | null }>(\n `/v1/stores/${store_id}/contacts/${params.contact_id}/actions`,\n { ...options, params: queryParams },\n );\n },\n\n async find(params: FindActionsParams, options?: RequestOptions): Promise<{ items: Action[]; cursor: string | null }> {\n const store_id = params.store_id || apiConfig.storeId;\n const queryParams: Record<string, unknown> = {};\n if (params.contact_id) queryParams.contact_id = params.contact_id;\n if (params.limit !== undefined) queryParams.limit = params.limit;\n if (params.cursor) queryParams.cursor = params.cursor;\n return apiConfig.httpClient.get<{ items: Action[]; cursor: string | null }>(\n `/v1/stores/${store_id}/actions`,\n { ...options, params: queryParams }\n );\n },\n});\n\nexport const createContactApi = (apiConfig: ApiConfig) => {\n return {\n async create(params: CreateContactParams, options?: RequestOptions): Promise<Contact> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<Contact>(\n `/v1/stores/${store_id || apiConfig.storeId}/contacts`,\n payload,\n options\n );\n },\n\n async get(params: GetContactParams, options?: RequestOptions): Promise<Contact> {\n return apiConfig.httpClient.get<Contact>(\n `/v1/stores/${params.store_id || apiConfig.storeId}/contacts/${params.id}`,\n options\n );\n },\n\n async find(params?: FindContactsParams, options?: RequestOptions): Promise<{ items: Contact[]; cursor?: string }> {\n const store_id = params?.store_id || apiConfig.storeId;\n const queryParams: Record<string, unknown> = {};\n\n if (params?.ids && params.ids.length > 0) queryParams.ids = JSON.stringify(params.ids);\n if (params?.limit !== undefined) queryParams.limit = params.limit;\n if (params?.cursor) queryParams.cursor = params.cursor;\n if (params?.query) queryParams.query = params.query;\n if (params?.taxonomy_query) queryParams.taxonomy_query = params.taxonomy_query;\n if (params?.status) queryParams.status = params.status;\n if (params?.has_action !== undefined) queryParams.has_action = params.has_action;\n if (params?.has_cart !== undefined) queryParams.has_cart = params.has_cart;\n if (params?.sort_field) queryParams.sort_field = params.sort_field;\n if (params?.sort_direction) queryParams.sort_direction = params.sort_direction;\n\n return apiConfig.httpClient.get<{ items: Contact[]; cursor?: string }>(\n `/v1/stores/${store_id}/contacts`,\n {\n ...options,\n params: queryParams,\n }\n );\n },\n\n async update(params: UpdateContactParams, options?: RequestOptions): Promise<Contact> {\n const { id, store_id, ...body } = params;\n return apiConfig.httpClient.put<Contact>(\n `/v1/stores/${store_id || apiConfig.storeId}/contacts/${id}`,\n body,\n options\n );\n },\n\n async merge(params: MergeContactsParams, options?: RequestOptions): Promise<Contact> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Contact>(\n `/v1/stores/${store_id}/contacts/${params.target_id}/merge`,\n { source_id: params.source_id, store_id },\n options\n );\n },\n\n \"import\": async (params: ImportContactsParams, options?: RequestOptions): Promise<ImportContactsResult> => {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<ImportContactsResult>(\n `/v1/stores/${target_store_id}/contacts/import`,\n payload,\n options,\n );\n },\n\n previewImport: async (params: ImportContactsPreviewParams, options?: RequestOptions): Promise<ImportContactsPreviewResult> => {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<ImportContactsPreviewResult>(\n `/v1/stores/${target_store_id}/contacts/import/preview`,\n payload,\n options,\n );\n },\n\n async findSessions(\n params: FindContactSessionsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<ContactSessionRecord>> {\n const store_id = params.store_id || apiConfig.storeId;\n const queryParams: Record<string, unknown> = {};\n if (params.limit !== undefined) queryParams.limit = params.limit;\n if (params.cursor) queryParams.cursor = params.cursor;\n return apiConfig.httpClient.get<PaginatedResponse<ContactSessionRecord>>(\n `/v1/stores/${store_id}/contacts/${params.contact_id}/sessions`,\n { ...options, params: queryParams },\n );\n },\n\n async revokeSession(\n params: RevokeContactSessionParams,\n options?: RequestOptions,\n ): Promise<{ success: boolean }> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<{ success: boolean }>(\n `/v1/stores/${store_id}/contacts/${params.contact_id}/sessions/${params.session_id}`,\n options,\n );\n },\n\n async revokeAllSessions(\n params: RevokeAllContactSessionsParams,\n options?: RequestOptions,\n ): Promise<{ success: boolean }> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<{ success: boolean }>(\n `/v1/stores/${store_id}/contacts/${params.contact_id}/sessions`,\n options,\n );\n },\n\n contactList: {\n async create(params: CreateContactListParams, options?: RequestOptions): Promise<ContactList> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<ContactList>(\n `/v1/stores/${target_store_id}/contact-lists`,\n payload,\n options,\n );\n },\n\n async update(params: UpdateContactListParams, options?: RequestOptions): Promise<ContactList> {\n const { id, store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<ContactList>(\n `/v1/stores/${target_store_id}/contact-lists/${id}`,\n payload,\n options,\n );\n },\n\n async get(params: GetContactListParams, options?: RequestOptions): Promise<ContactList> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<ContactList>(\n `/v1/stores/${target_store_id}/contact-lists/${params.id}`,\n options,\n );\n },\n\n async find(params?: FindContactListsParams, options?: RequestOptions): Promise<PaginatedResponse<ContactList>> {\n const { store_id, ...queryParams } = params || {};\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<ContactList>>(\n `/v1/stores/${target_store_id}/contact-lists`,\n { ...options, params: queryParams },\n );\n },\n\n plans: {\n async create(\n params: CreateContactListPlanParams,\n options?: RequestOptions,\n ): Promise<ContactListPlan> {\n const { store_id, contact_list_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<ContactListPlan>(\n `/v1/stores/${target_store_id}/contact-lists/${contact_list_id}/plans`,\n payload,\n options,\n );\n },\n\n async update(\n params: UpdateContactListPlanParams,\n options?: RequestOptions,\n ): Promise<ContactListPlan> {\n const { id, store_id, contact_list_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<ContactListPlan>(\n `/v1/stores/${target_store_id}/contact-lists/${contact_list_id}/plans/${id}`,\n payload,\n options,\n );\n },\n\n async get(\n params: GetContactListPlanParams,\n options?: RequestOptions,\n ): Promise<ContactListPlan> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<ContactListPlan>(\n `/v1/stores/${target_store_id}/contact-lists/${params.contact_list_id}/plans/${params.id}`,\n options,\n );\n },\n\n async find(\n params: FindContactListPlansParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<ContactListPlan>> {\n const { store_id, contact_list_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<ContactListPlan>>(\n `/v1/stores/${target_store_id}/contact-lists/${contact_list_id}/plans`,\n { ...options, params: queryParams },\n );\n },\n\n async retryCatalog(\n params: RetryContactListPlanCatalogParams,\n options?: RequestOptions,\n ): Promise<ContactListPlan> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<ContactListPlan>(\n `/v1/stores/${target_store_id}/contact-lists/${params.contact_list_id}/plans/${params.plan_id}/catalog/retry`,\n {},\n options,\n );\n },\n },\n\n async importContacts(\n params: ImportContactsIntoContactListParams,\n options?: RequestOptions,\n ): Promise<ImportContactsIntoContactListResult> {\n const { store_id, contact_list_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<ImportContactsIntoContactListResult>(\n `/v1/stores/${target_store_id}/contact-lists/${contact_list_id}/contacts/import`,\n payload,\n options,\n );\n },\n\n async previewImportContacts(\n params: ImportContactListPreviewParams,\n options?: RequestOptions,\n ): Promise<ImportContactsPreviewResult> {\n const { store_id, contact_list_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<ImportContactsPreviewResult>(\n `/v1/stores/${target_store_id}/contact-lists/${contact_list_id}/contacts/import/preview`,\n payload,\n options,\n );\n },\n\n members: {\n async add(params: AddContactListContactParams, options?: RequestOptions): Promise<ContactListMember> {\n const { store_id, contact_list_id, contact_id, fields, lead_description } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<ContactListMember>(\n `/v1/stores/${target_store_id}/contact-lists/${contact_list_id}/contacts/${contact_id}`,\n { fields, lead_description },\n options,\n );\n },\n\n async update(params: UpdateContactListContactParams, options?: RequestOptions): Promise<ContactListMember> {\n const { store_id, contact_list_id, contact_id, status, fields, lead_description } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.patch<ContactListMember>(\n `/v1/stores/${target_store_id}/contact-lists/${contact_list_id}/contacts/${contact_id}`,\n { status, fields, lead_description },\n options,\n );\n },\n\n async remove(params: RemoveContactListContactParams, options?: RequestOptions): Promise<{ deleted: boolean }> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${target_store_id}/contact-lists/${params.contact_list_id}/contacts/${params.contact_id}`,\n options,\n );\n },\n\n async find(params: FindContactListContactsParams, options?: RequestOptions): Promise<PaginatedResponse<ContactListMember>> {\n const { store_id, contact_list_id, ...queryParams } = params;\n if (!contact_list_id && !queryParams.contact_id) {\n throw new Error(\"contact_list_id or contact_id is required\");\n }\n const target_store_id = store_id || apiConfig.storeId;\n const path = contact_list_id\n ? `/v1/stores/${target_store_id}/contact-lists/${contact_list_id}/contacts`\n : `/v1/stores/${target_store_id}/contact-lists/contacts`;\n return apiConfig.httpClient.get<PaginatedResponse<ContactListMember>>(\n path,\n { ...options, params: queryParams },\n );\n },\n },\n\n memberships: {\n async refund(\n params: RefundContactListMembershipParams,\n options?: RequestOptions,\n ): Promise<RefundContactListMembershipResult> {\n const { store_id, contact_list_id, membership_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n const response = await apiConfig.httpClient.post<RefundContactListMembershipResult>(\n `/v1/stores/${target_store_id}/contact-lists/${contact_list_id}/memberships/${membership_id}/refund`,\n payload,\n options,\n );\n if (response.refund_id !== params.refund_id) {\n throw new Error(\n \"Membership refund response did not match the requested refund_id\",\n );\n }\n return response;\n },\n\n paymentAttempts: {\n async find(\n params: FindContactListMembershipPaymentAttemptsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<ContactListMembershipPaymentAttempt>> {\n const { store_id, contact_list_id, membership_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<ContactListMembershipPaymentAttempt>>(\n `/v1/stores/${target_store_id}/contact-lists/${contact_list_id}/memberships/${membership_id}/payment-attempts`,\n { ...options, params: queryParams },\n );\n },\n\n async get(\n params: GetContactListMembershipPaymentAttemptParams,\n options?: RequestOptions,\n ): Promise<ContactListMembershipPaymentAttempt> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<ContactListMembershipPaymentAttempt>(\n `/v1/stores/${target_store_id}/contact-lists/${params.contact_list_id}/memberships/${params.membership_id}/payment-attempts/${params.id}`,\n options,\n );\n },\n },\n\n refunds: {\n async find(\n params: FindContactListMembershipRefundsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<ContactListMembershipRefund>> {\n const { store_id, contact_list_id, membership_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<ContactListMembershipRefund>>(\n `/v1/stores/${target_store_id}/contact-lists/${contact_list_id}/memberships/${membership_id}/refunds`,\n { ...options, params: queryParams },\n );\n },\n\n async get(\n params: GetContactListMembershipRefundParams,\n options?: RequestOptions,\n ): Promise<ContactListMembershipRefund> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<ContactListMembershipRefund>(\n `/v1/stores/${target_store_id}/contact-lists/${params.contact_list_id}/memberships/${params.membership_id}/refunds/${params.id}`,\n options,\n );\n },\n\n async retry(\n params: RetryContactListMembershipRefundParams,\n options?: RequestOptions,\n ): Promise<ContactListMembershipRefund> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<ContactListMembershipRefund>(\n `/v1/stores/${target_store_id}/contact-lists/${params.contact_list_id}/memberships/${params.membership_id}/refunds/${params.id}/retry`,\n {},\n options,\n );\n },\n },\n\n cancellations: {\n async find(\n params: FindContactListMembershipCancellationsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<ContactListMembershipCancellation>> {\n const { store_id, contact_list_id, membership_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<ContactListMembershipCancellation>>(\n `/v1/stores/${target_store_id}/contact-lists/${contact_list_id}/memberships/${membership_id}/cancellations`,\n { ...options, params: queryParams },\n );\n },\n\n async get(\n params: GetContactListMembershipCancellationParams,\n options?: RequestOptions,\n ): Promise<ContactListMembershipCancellation> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<ContactListMembershipCancellation>(\n `/v1/stores/${target_store_id}/contact-lists/${params.contact_list_id}/memberships/${params.membership_id}/cancellations/${params.id}`,\n options,\n );\n },\n\n async retry(\n params: RetryContactListMembershipCancellationParams,\n options?: RequestOptions,\n ): Promise<ContactListMembershipCancellation> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<ContactListMembershipCancellation>(\n `/v1/stores/${target_store_id}/contact-lists/${params.contact_list_id}/memberships/${params.membership_id}/cancellations/${params.id}/retry`,\n {},\n options,\n );\n },\n },\n },\n },\n\n mailbox: {\n async connectGoogle(params: ConnectGoogleMailboxParams, options?: RequestOptions): Promise<GoogleMailboxConnectUrl> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<GoogleMailboxConnectUrl>(\n `/v1/stores/${target_store_id}/mailboxes/google/connect-url`,\n payload,\n options,\n );\n },\n\n async create(params: CreateMailboxParams, options?: RequestOptions): Promise<Mailbox> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Mailbox>(\n `/v1/stores/${target_store_id}/mailboxes`,\n payload,\n options,\n );\n },\n\n async update(params: UpdateMailboxParams, options?: RequestOptions): Promise<Mailbox> {\n const { id, store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<Mailbox>(\n `/v1/stores/${target_store_id}/mailboxes/${id}`,\n payload,\n options,\n );\n },\n\n async get(params: GetMailboxParams, options?: RequestOptions): Promise<Mailbox> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<Mailbox>(\n `/v1/stores/${target_store_id}/mailboxes/${params.id}`,\n options,\n );\n },\n\n async test(params: TestMailboxParams, options?: RequestOptions): Promise<TestMailboxResult> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<TestMailboxResult>(\n `/v1/stores/${target_store_id}/mailboxes/${params.id}/test`,\n {},\n options,\n );\n },\n\n async prepare(params: PrepareMailboxParams, options?: RequestOptions): Promise<Mailbox> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Mailbox>(\n `/v1/stores/${target_store_id}/mailboxes/${params.id}/prepare`,\n {},\n options,\n );\n },\n\n async find(params?: FindMailboxesParams, options?: RequestOptions): Promise<PaginatedResponse<Mailbox>> {\n const { store_id, ...queryParams } = params || {};\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<Mailbox>>(\n `/v1/stores/${target_store_id}/mailboxes`,\n { ...options, params: queryParams },\n );\n },\n },\n\n campaign: {\n async create(params: CreateCampaignParams, options?: RequestOptions): Promise<Campaign> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Campaign>(\n `/v1/stores/${target_store_id}/campaigns`,\n payload,\n options,\n );\n },\n\n async update(params: UpdateCampaignParams, options?: RequestOptions): Promise<Campaign> {\n const { id, store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<Campaign>(\n `/v1/stores/${target_store_id}/campaigns/${id}`,\n payload,\n options,\n );\n },\n\n async get(params: GetCampaignParams, options?: RequestOptions): Promise<Campaign> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<Campaign>(\n `/v1/stores/${target_store_id}/campaigns/${params.id}`,\n options,\n );\n },\n\n async find(params?: FindCampaignsParams, options?: RequestOptions): Promise<PaginatedResponse<Campaign>> {\n const { store_id, ...queryParams } = params || {};\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<Campaign>>(\n `/v1/stores/${target_store_id}/campaigns`,\n { ...options, params: queryParams },\n );\n },\n\n async launch(params: LaunchCampaignParams, options?: RequestOptions): Promise<Campaign> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Campaign>(\n `/v1/stores/${target_store_id}/campaigns/${params.id}/launch`,\n {},\n options,\n );\n },\n\n async duplicate(params: DuplicateCampaignParams, options?: RequestOptions): Promise<Campaign> {\n const { id, store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Campaign>(\n `/v1/stores/${target_store_id}/campaigns/${id}/duplicate`,\n payload,\n options,\n );\n },\n\n async launchReadiness(\n params: GetCampaignLaunchReadinessParams,\n options?: RequestOptions,\n ): Promise<CampaignLaunchReadiness> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<CampaignLaunchReadiness>(\n `/v1/stores/${target_store_id}/campaigns/${params.id}/launch-readiness`,\n options,\n );\n },\n\n async importEnrollments(\n params: ImportCampaignEnrollmentsParams,\n options?: RequestOptions,\n ): Promise<CampaignEnrollmentImportResult> {\n const { id, store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<CampaignEnrollmentImportResult>(\n `/v1/stores/${target_store_id}/campaigns/${id}/enrollments/import`,\n payload,\n options,\n );\n },\n\n async generatePersonalizedDrafts(params: GenerateOutreachPersonalizedDraftsParams, options?: RequestOptions): Promise<Campaign> {\n const { id, store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Campaign>(\n `/v1/stores/${target_store_id}/campaigns/${id}/personalized-drafts`,\n payload,\n options,\n );\n },\n },\n\n campaignEnrollment: {\n async find(params?: FindCampaignEnrollmentsParams, options?: RequestOptions): Promise<PaginatedResponse<CampaignEnrollment>> {\n const { store_id, ...queryParams } = params || {};\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<CampaignEnrollment>>(\n `/v1/stores/${target_store_id}/campaign-enrollments`,\n { ...options, params: queryParams },\n );\n },\n\n async get(params: GetCampaignEnrollmentConversationParams, options?: RequestOptions): Promise<CampaignEnrollmentConversationResponse> {\n const { store_id, id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<CampaignEnrollmentConversationResponse>(\n `/v1/stores/${target_store_id}/campaign-enrollments/${id}`,\n { ...options, params: { ...queryParams, store_id: target_store_id } },\n );\n },\n\n async update(params: UpdateCampaignEnrollmentParams, options?: RequestOptions): Promise<CampaignEnrollment> {\n const { store_id, id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<CampaignEnrollment>(\n `/v1/stores/${target_store_id}/campaign-enrollments/${id}`,\n payload,\n options,\n );\n },\n\n async updateDraft(params: UpdateCampaignEnrollmentDraftParams, options?: RequestOptions): Promise<CampaignEnrollment> {\n const { store_id, id, draft_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<CampaignEnrollment>(\n `/v1/stores/${target_store_id}/campaign-enrollments/${id}/drafts/${draft_id}`,\n payload,\n options,\n );\n },\n\n async updateStepExecution(params: UpdateCampaignEnrollmentStepExecutionParams, options?: RequestOptions): Promise<CampaignEnrollmentConversationResponse> {\n const { store_id, id, execution_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<CampaignEnrollmentConversationResponse>(\n `/v1/stores/${target_store_id}/campaign-enrollments/${id}/step-executions/${execution_id}`,\n payload,\n options,\n );\n },\n\n async reply(params: ReplyCampaignEnrollmentParams, options?: RequestOptions): Promise<CampaignEnrollmentConversationResponse> {\n const { store_id, id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<CampaignEnrollmentConversationResponse>(\n `/v1/stores/${target_store_id}/campaign-enrollments/${id}/reply`,\n payload,\n options,\n );\n },\n\n async stop(params: StopCampaignEnrollmentParams, options?: RequestOptions): Promise<CampaignEnrollmentConversationResponse> {\n const { store_id, id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<CampaignEnrollmentConversationResponse>(\n `/v1/stores/${target_store_id}/campaign-enrollments/${id}/stop`,\n payload,\n options,\n );\n },\n },\n\n campaignMessage: {\n async find(params?: FindCampaignMessagesParams, options?: RequestOptions): Promise<PaginatedResponse<CampaignMessage>> {\n const { store_id, ...queryParams } = params || {};\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<CampaignMessage>>(\n `/v1/stores/${target_store_id}/campaign-messages`,\n { ...options, params: queryParams },\n );\n },\n\n async update(params: UpdateCampaignMessageParams, options?: RequestOptions): Promise<CampaignMessage> {\n const { id, store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<CampaignMessage>(\n `/v1/stores/${target_store_id}/campaign-messages/${id}`,\n payload,\n options,\n );\n },\n },\n\n suppression: {\n async create(params: CreateSuppressionParams, options?: RequestOptions): Promise<Suppression> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Suppression>(\n `/v1/stores/${target_store_id}/suppressions`,\n payload,\n options,\n );\n },\n\n async update(params: UpdateSuppressionParams, options?: RequestOptions): Promise<Suppression> {\n const { id, store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<Suppression>(\n `/v1/stores/${target_store_id}/suppressions/${id}`,\n payload,\n options,\n );\n },\n\n async get(params: GetSuppressionParams, options?: RequestOptions): Promise<Suppression> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<Suppression>(\n `/v1/stores/${target_store_id}/suppressions/${params.id}`,\n options,\n );\n },\n\n async find(params?: FindSuppressionsParams, options?: RequestOptions): Promise<PaginatedResponse<Suppression>> {\n const { store_id, ...queryParams } = params || {};\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<Suppression>>(\n `/v1/stores/${target_store_id}/suppressions`,\n { ...options, params: queryParams },\n );\n },\n },\n\n action: createActionAdminApi(apiConfig),\n };\n};\n","import type { ApiConfig, StorefrontApiConfig } from \"../index\";\nimport type { StorefrontDto } from \"./storefront\";\nimport type { RequestOptions } from \"../types/api\";\n\nexport type SupportAgentStatus = \"draft\" | \"active\" | \"archived\";\nexport type SupportChannelStatus = \"draft\" | \"active\" | \"disabled\" | \"archived\";\nexport type SupportChannelType = \"web\" | \"email\";\n\nexport interface SupportAgentNode {\n type: \"message\" | \"input\" | \"ai_handoff\" | \"action\";\n text?: string;\n buttons?: string[];\n prompt?: string;\n field?: string;\n input_type?: \"text\" | \"email\" | \"phone\";\n validation?: string;\n system_prompt_override?: string;\n tools?: string[];\n action?: SupportAction;\n}\n\nexport interface SupportAction {\n type: \"end_conversation\" | \"human_handoff\";\n message?: string;\n}\n\nexport interface SupportAgentEdge {\n source: string;\n target: string;\n trigger: EdgeTrigger;\n}\n\nexport type EdgeTrigger =\n | { type: \"button\"; label: string }\n | { type: \"input\"; field: string }\n | { type: \"default\" };\n\nexport interface SupportAgentAiConfig {\n system_prompt: string;\n tools: string[];\n max_context_messages: number;\n}\n\nexport interface SupportAgent {\n id: string;\n key: string;\n store_id: string;\n name: string;\n status: SupportAgentStatus;\n entry_node_id: string;\n nodes: Record<string, SupportAgentNode>;\n edges: SupportAgentEdge[];\n ai_config?: SupportAgentAiConfig;\n channel_ids: string[];\n notes?: string | null;\n created_at: number;\n updated_at: number;\n}\n\nexport type SupportChannelConfig =\n | {\n type: \"web\";\n widget_key: string;\n allowed_origins?: string[];\n }\n | {\n type: \"email\";\n mailbox_id: string;\n };\n\nexport interface SupportChannel {\n id: string;\n store_id: string;\n key: string;\n name: string;\n status: SupportChannelStatus;\n channel_type: SupportChannelType;\n config: SupportChannelConfig;\n created_at: number;\n updated_at: number;\n}\n\nexport type SupportConversationChannelContext =\n | {\n type: \"web\";\n visitor_id?: string | null;\n session_id?: string | null;\n }\n | {\n type: \"email\";\n thread_id: string;\n reply_to: string;\n message_id?: string | null;\n references: string[];\n };\n\nexport interface SupportConversation {\n id: string;\n store_id: string;\n agent_id?: string;\n channel_id?: string | null;\n channel_type: SupportChannelType;\n channel_context: SupportConversationChannelContext;\n current_node_id?: string;\n contact_id?: string;\n assigned_account_id?: string | null;\n status: \"active\" | \"ai_mode\" | \"escalated\" | \"resolved\";\n data: Record<string, unknown>;\n metadata: Record<string, unknown>;\n created_at: number;\n updated_at: number;\n}\n\nexport interface SupportMessage {\n id: string;\n store_id: string;\n conversation_id: string;\n role: \"system\" | \"user\" | \"assistant\" | \"staff\" | \"action\";\n content: string;\n buttons?: string[];\n metadata: Record<string, unknown>;\n created_at: number;\n}\n\nexport interface SupportConversationResponse {\n conversation: SupportConversation;\n messages: SupportMessage[];\n}\n\nexport interface SupportConversationStartResponse extends SupportConversationResponse {\n support_token: string;\n}\n\nexport type StorefrontSupportConversationResponse =\n StorefrontDto<SupportConversationResponse>;\nexport type StorefrontSupportConversationStartResponse =\n StorefrontDto<SupportConversationStartResponse>;\n\nexport interface StartSupportConversationParams {\n store_id: string;\n agent_key?: string;\n channel_id?: string;\n visitor_id?: string;\n session_id?: string;\n contact_id?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface SendSupportMessageParams {\n message_id: string;\n store_id: string;\n conversation_id: string;\n input: { type: \"button\"; label: string } | { type: \"text\"; content: string };\n}\n\nexport interface ReceiveSupportChannelMessageParams {\n store_id: string;\n channel_id: string;\n channel_context: SupportConversationChannelContext;\n external_message_id?: string;\n content: string;\n metadata?: Record<string, unknown>;\n received_at?: number;\n}\n\nexport interface ReplySupportConversationParams {\n message_id: string;\n store_id: string;\n conversation_id: string;\n content: string;\n resolve?: boolean;\n}\n\nexport interface ResolveSupportConversationParams {\n store_id: string;\n conversation_id: string;\n}\n\nexport interface AssignSupportConversationParams {\n store_id: string;\n conversation_id: string;\n account_id?: string | null;\n}\n\nexport interface GetSupportConversationParams {\n store_id: string;\n conversation_id: string;\n message_limit?: number;\n after_created_at?: number;\n after_id?: string;\n}\n\nexport type StorefrontSendSupportMessageParams = Omit<\n SendSupportMessageParams,\n \"store_id\"\n> & { support_token: string };\n\nexport type StorefrontGetSupportConversationParams = Omit<\n GetSupportConversationParams,\n \"store_id\"\n> & { support_token: string };\n\nexport interface FindSupportConversationsParams {\n store_id: string;\n status?: string;\n agent_id?: string;\n channel_id?: string;\n channel_type?: SupportChannelType;\n query?: string;\n limit?: number;\n cursor?: string;\n}\n\nfunction supportConversationQuery(params: GetSupportConversationParams): string {\n const qs = new URLSearchParams({ store_id: params.store_id });\n if (params.message_limit) qs.set(\"message_limit\", String(params.message_limit));\n if (typeof params.after_created_at === \"number\") qs.set(\"after_created_at\", String(params.after_created_at));\n if (params.after_id) qs.set(\"after_id\", params.after_id);\n return qs.toString();\n}\n\nfunction storefrontSupportOptions(\n supportToken: string,\n options?: RequestOptions,\n): RequestOptions {\n if (!/^[0-9a-f]{64}$/.test(supportToken)) {\n throw new Error(\"support_token must be a 64-character lowercase hexadecimal token\");\n }\n const headers = { ...options?.headers };\n for (const name of Object.keys(headers)) {\n if (name.toLowerCase() === \"x-arky-support-token\") delete headers[name];\n }\n return {\n ...options,\n headers: {\n ...headers,\n \"X-Arky-Support-Token\": supportToken,\n },\n };\n}\n\nexport function createStorefrontSupportApi(\n config: Pick<StorefrontApiConfig, \"httpClient\">,\n ensureVisitorSession: () => Promise<void>,\n) {\n const { httpClient } = config;\n\n return {\n async startConversation(\n params: Omit<StartSupportConversationParams, \"store_id\"> = {},\n opts?: RequestOptions\n ): Promise<StorefrontSupportConversationStartResponse> {\n await ensureVisitorSession();\n return httpClient.post<StorefrontSupportConversationStartResponse>(\n \"/v1/storefront/support/conversations\",\n params,\n opts\n );\n },\n\n async sendMessage(\n params: StorefrontSendSupportMessageParams,\n opts?: RequestOptions\n ): Promise<StorefrontSupportConversationResponse> {\n await ensureVisitorSession();\n const { support_token, ...request } = params;\n return httpClient.post<StorefrontSupportConversationResponse>(\n `/v1/storefront/support/conversations/${request.conversation_id}/messages`,\n request,\n storefrontSupportOptions(support_token, opts)\n );\n },\n\n async getConversation(\n params: StorefrontGetSupportConversationParams,\n opts?: RequestOptions\n ): Promise<StorefrontSupportConversationResponse> {\n await ensureVisitorSession();\n const { support_token, ...request } = params;\n const query = new URLSearchParams();\n if (request.message_limit) query.set(\"message_limit\", String(request.message_limit));\n if (typeof request.after_created_at === \"number\") {\n query.set(\"after_created_at\", String(request.after_created_at));\n }\n if (request.after_id) query.set(\"after_id\", request.after_id);\n const suffix = query.size ? `?${query}` : \"\";\n return httpClient.get<StorefrontSupportConversationResponse>(\n `/v1/storefront/support/conversations/${request.conversation_id}${suffix}`,\n storefrontSupportOptions(support_token, opts)\n );\n },\n };\n}\n\nexport interface CreateSupportAgentParams {\n store_id: string;\n key: string;\n name: string;\n status?: SupportAgentStatus;\n entry_node_id: string;\n nodes: Record<string, SupportAgentNode>;\n edges: SupportAgentEdge[];\n ai_config?: SupportAgentAiConfig;\n channel_ids?: string[];\n notes?: string | null;\n}\n\nexport interface UpdateSupportAgentParams {\n store_id: string;\n id: string;\n name?: string;\n status?: SupportAgentStatus;\n entry_node_id?: string;\n nodes?: Record<string, SupportAgentNode>;\n edges?: SupportAgentEdge[];\n ai_config?: SupportAgentAiConfig;\n channel_ids?: string[];\n notes?: string | null;\n}\n\nexport interface CreateSupportChannelParams {\n store_id: string;\n key: string;\n name: string;\n status?: SupportChannelStatus;\n channel_type: SupportChannelType;\n config: SupportChannelConfig;\n}\n\nexport interface UpdateSupportChannelParams {\n store_id: string;\n id: string;\n key?: string;\n name?: string;\n status?: SupportChannelStatus;\n channel_type?: SupportChannelType;\n config?: SupportChannelConfig;\n}\n\nexport interface FindSupportChannelsParams {\n store_id: string;\n status?: SupportChannelStatus;\n channel_type?: SupportChannelType;\n limit?: number;\n cursor?: string;\n}\n\nexport function createAdminSupportApi(config: ApiConfig) {\n const { httpClient } = config;\n\n return {\n channel: {\n async create(\n params: CreateSupportChannelParams,\n opts?: RequestOptions\n ): Promise<SupportChannel> {\n return httpClient.post<SupportChannel>(\n `/v1/stores/${params.store_id}/support/channels`,\n params,\n opts\n );\n },\n\n async get(\n params: { store_id: string; id: string },\n opts?: RequestOptions\n ): Promise<SupportChannel> {\n return httpClient.get<SupportChannel>(\n `/v1/stores/${params.store_id}/support/channels/${params.id}?store_id=${params.store_id}`,\n opts\n );\n },\n\n async find(\n params: FindSupportChannelsParams,\n opts?: RequestOptions\n ): Promise<{ items: SupportChannel[]; cursor?: string }> {\n const qs = new URLSearchParams({ store_id: params.store_id });\n if (params.status) qs.set(\"status\", params.status);\n if (params.channel_type) qs.set(\"channel_type\", params.channel_type);\n if (params.limit) qs.set(\"limit\", String(params.limit));\n if (params.cursor) qs.set(\"cursor\", params.cursor);\n return httpClient.get<{ items: SupportChannel[]; cursor?: string }>(\n `/v1/stores/${params.store_id}/support/channels?${qs}`,\n opts\n );\n },\n\n async update(\n params: UpdateSupportChannelParams,\n opts?: RequestOptions\n ): Promise<SupportChannel> {\n return httpClient.put<SupportChannel>(\n `/v1/stores/${params.store_id}/support/channels/${params.id}`,\n params,\n opts\n );\n },\n\n async delete(\n params: { store_id: string; id: string },\n opts?: RequestOptions\n ): Promise<void> {\n return httpClient.delete<void>(\n `/v1/stores/${params.store_id}/support/channels/${params.id}?store_id=${params.store_id}`,\n opts\n );\n },\n\n async receiveMessage(\n params: ReceiveSupportChannelMessageParams,\n opts?: RequestOptions\n ): Promise<SupportConversationResponse> {\n return httpClient.post<SupportConversationResponse>(\n `/v1/stores/${params.store_id}/support/channels/${params.channel_id}/messages`,\n params,\n opts\n );\n },\n },\n\n agent: {\n async create(\n params: CreateSupportAgentParams,\n opts?: RequestOptions\n ): Promise<SupportAgent> {\n return httpClient.post<SupportAgent>(\n `/v1/stores/${params.store_id}/support/agents`,\n params,\n opts\n );\n },\n\n async get(\n params: { store_id: string; id: string },\n opts?: RequestOptions\n ): Promise<SupportAgent> {\n return httpClient.get<SupportAgent>(\n `/v1/stores/${params.store_id}/support/agents/${params.id}?store_id=${params.store_id}`,\n opts\n );\n },\n\n async find(\n params: { store_id: string; status?: string; limit?: number; cursor?: string },\n opts?: RequestOptions\n ): Promise<{ items: SupportAgent[]; cursor?: string }> {\n const qs = new URLSearchParams({ store_id: params.store_id });\n if (params.status) qs.set(\"status\", params.status);\n if (params.limit) qs.set(\"limit\", String(params.limit));\n if (params.cursor) qs.set(\"cursor\", params.cursor);\n return httpClient.get<{ items: SupportAgent[]; cursor?: string }>(\n `/v1/stores/${params.store_id}/support/agents?${qs}`,\n opts\n );\n },\n\n async update(\n params: UpdateSupportAgentParams,\n opts?: RequestOptions\n ): Promise<SupportAgent> {\n return httpClient.put<SupportAgent>(\n `/v1/stores/${params.store_id}/support/agents/${params.id}`,\n params,\n opts\n );\n },\n\n async delete(\n params: { store_id: string; id: string },\n opts?: RequestOptions\n ): Promise<void> {\n return httpClient.delete<void>(\n `/v1/stores/${params.store_id}/support/agents/${params.id}?store_id=${params.store_id}`,\n opts\n );\n },\n },\n\n conversation: {\n async find(\n params: FindSupportConversationsParams,\n opts?: RequestOptions\n ): Promise<{ items: SupportConversation[]; cursor?: string }> {\n const qs = new URLSearchParams({ store_id: params.store_id });\n if (params.status) qs.set(\"status\", params.status);\n if (params.agent_id) qs.set(\"agent_id\", params.agent_id);\n if (params.channel_id) qs.set(\"channel_id\", params.channel_id);\n if (params.channel_type) qs.set(\"channel_type\", params.channel_type);\n if (params.query) qs.set(\"query\", params.query);\n if (params.limit) qs.set(\"limit\", String(params.limit));\n if (params.cursor) qs.set(\"cursor\", params.cursor);\n return httpClient.get<{ items: SupportConversation[]; cursor?: string }>(\n `/v1/stores/${params.store_id}/support/conversations?${qs}`,\n opts\n );\n },\n\n async get(\n params: GetSupportConversationParams,\n opts?: RequestOptions\n ): Promise<SupportConversationResponse> {\n const qs = supportConversationQuery(params);\n return httpClient.get<SupportConversationResponse>(\n `/v1/stores/${params.store_id}/support/conversations/${params.conversation_id}?${qs}`,\n opts\n );\n },\n\n async sendMessage(\n params: SendSupportMessageParams,\n opts?: RequestOptions\n ): Promise<SupportConversationResponse> {\n return httpClient.post<SupportConversationResponse>(\n `/v1/stores/${params.store_id}/support/conversations/${params.conversation_id}/messages`,\n params,\n opts\n );\n },\n\n async reply(\n params: ReplySupportConversationParams,\n opts?: RequestOptions\n ): Promise<SupportConversationResponse> {\n return httpClient.post<SupportConversationResponse>(\n `/v1/stores/${params.store_id}/support/conversations/${params.conversation_id}/reply`,\n params,\n opts\n );\n },\n\n async resolve(\n params: ResolveSupportConversationParams,\n opts?: RequestOptions\n ): Promise<SupportConversation> {\n return httpClient.post<SupportConversation>(\n `/v1/stores/${params.store_id}/support/conversations/${params.conversation_id}/resolve`,\n params,\n opts\n );\n },\n\n async assign(\n params: AssignSupportConversationParams,\n opts?: RequestOptions\n ): Promise<SupportConversation> {\n return httpClient.post<SupportConversation>(\n `/v1/stores/${params.store_id}/support/conversations/${params.conversation_id}/assign`,\n params,\n opts\n );\n },\n },\n };\n}\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateLeadResearchRunParams,\n CancelLeadResearchRunParams,\n FindLeadResearchRunsParams,\n GetLeadResearchRunParams,\n FindLeadResearchMessagesParams,\n RequestOptions,\n SendLeadResearchMessageParams,\n UpdateLeadResearchRunParams,\n ValidateLeadEmailParams,\n} from \"../types/api\";\nimport type {\n LeadEmailValidationResult,\n LeadResearchRun,\n LeadResearchMessage,\n PaginatedResponse,\n SendLeadResearchMessageResult,\n} from \"../types\";\n\nexport const createLeadResearchApi = (apiConfig: ApiConfig) => {\n const storeId = (store_id?: string) => store_id || apiConfig.storeId;\n\n return {\n async createRun(params: CreateLeadResearchRunParams, options?: RequestOptions): Promise<LeadResearchRun> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<LeadResearchRun>(\n `/v1/stores/${storeId(store_id)}/lead-research/runs`,\n payload,\n options,\n );\n },\n\n async findRuns(params?: FindLeadResearchRunsParams, options?: RequestOptions): Promise<PaginatedResponse<LeadResearchRun>> {\n const { store_id, ...queryParams } = params || {};\n return apiConfig.httpClient.get<PaginatedResponse<LeadResearchRun>>(\n `/v1/stores/${storeId(store_id)}/lead-research/runs`,\n { ...options, params: queryParams },\n );\n },\n\n async getRun(params: GetLeadResearchRunParams, options?: RequestOptions): Promise<LeadResearchRun> {\n return apiConfig.httpClient.get<LeadResearchRun>(\n `/v1/stores/${storeId(params.store_id)}/lead-research/runs/${params.id}`,\n options,\n );\n },\n\n async updateRun(params: UpdateLeadResearchRunParams, options?: RequestOptions): Promise<LeadResearchRun> {\n const { store_id, id, ...payload } = params;\n return apiConfig.httpClient.patch<LeadResearchRun>(\n `/v1/stores/${storeId(store_id)}/lead-research/runs/${id}`,\n payload,\n options,\n );\n },\n\n async cancelRun(params: CancelLeadResearchRunParams, options?: RequestOptions): Promise<LeadResearchRun> {\n return apiConfig.httpClient.post<LeadResearchRun>(\n `/v1/stores/${storeId(params.store_id)}/lead-research/runs/${params.id}/cancel`,\n {},\n options,\n );\n },\n\n async sendMessage(params: SendLeadResearchMessageParams, options?: RequestOptions): Promise<SendLeadResearchMessageResult> {\n const { store_id, run_id, ...payload } = params;\n return apiConfig.httpClient.post<SendLeadResearchMessageResult>(\n `/v1/stores/${storeId(store_id)}/lead-research/runs/${run_id}/messages`,\n payload,\n options,\n );\n },\n\n async findMessages(params: FindLeadResearchMessagesParams, options?: RequestOptions): Promise<LeadResearchMessage[]> {\n const { store_id, run_id, ...queryParams } = params;\n return apiConfig.httpClient.get<LeadResearchMessage[]>(\n `/v1/stores/${storeId(store_id)}/lead-research/runs/${run_id}/messages`,\n { ...options, params: queryParams },\n );\n },\n\n async validateEmail(params: ValidateLeadEmailParams, options?: RequestOptions): Promise<LeadEmailValidationResult> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<LeadEmailValidationResult>(\n `/v1/stores/${storeId(store_id)}/lead-research/validate-email`,\n payload,\n options,\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CancelSocialPublicationParams,\n ClassifySocialPublicationCommentsParams,\n ConnectSocialConnectionParams,\n CreateSocialCommentReplyParams,\n CreateSocialPublicationParams,\n DeleteSocialConnectionParams,\n FindSocialPublicationCommentsParams,\n FindSocialPublicationsParams,\n GetSocialCapabilitiesParams,\n GetSocialCommentReplyParams,\n GetSocialOAuthAttemptParams,\n GetSocialPublicationEffectParams,\n GetSocialPublicationCommentThreadParams,\n GetSocialPublicationCommentsParams,\n GetSocialPublicationMetricsParams,\n GetSocialPublicationParams,\n ListSocialCommentRepliesParams,\n ListSocialPublicationEffectsParams,\n RequestOptions,\n RetrySocialCommentReplyParams,\n ScheduleSocialPublicationParams,\n SelectSocialDestinationParams,\n ListSocialConnectionsParams,\n SyncSocialEngagementParams,\n SyncSocialPublicationCommentsParams,\n SyncSocialPublicationCommentThreadParams,\n SyncSocialPublicationMetricsParams,\n UpdateSocialPublicationParams,\n ValidateSocialPublicationParams,\n} from \"../types/api\";\nimport type {\n PaginatedResponse,\n SocialConnectResponse,\n SocialOAuthCallbackResponse,\n SocialProviderCapability,\n SocialConnection,\n SocialCommentReply,\n SocialPublication,\n SocialPublicationCommentClassificationResult,\n SocialPublicationComment,\n SocialPublicationEngagementSyncResult,\n SocialPublicationCommentReplyResponse,\n SocialPublicationEffect,\n SocialPublicationMetricSnapshot,\n SocialPublicationMutationResponse,\n SocialPublicationValidation,\n} from \"../types\";\n\nexport const createSocialApi = (apiConfig: ApiConfig) => {\n const storeId = (store_id?: string) => store_id || apiConfig.storeId;\n\n const api = {\n async findPublications(\n params?: FindSocialPublicationsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<SocialPublication>> {\n const { store_id, ...queryParams } = params || {};\n return apiConfig.httpClient.get<PaginatedResponse<SocialPublication>>(\n `/v1/stores/${storeId(store_id)}/social-publications`,\n {\n ...options,\n params: Object.keys(queryParams).length > 0 ? queryParams : undefined,\n },\n );\n },\n\n async getPublication(\n params: GetSocialPublicationParams,\n options?: RequestOptions,\n ): Promise<SocialPublication> {\n return apiConfig.httpClient.get<SocialPublication>(\n `/v1/stores/${storeId(params.store_id)}/social-publications/${params.id}`,\n options,\n );\n },\n\n async validatePublication(\n params: ValidateSocialPublicationParams,\n options?: RequestOptions,\n ): Promise<SocialPublicationValidation> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<SocialPublicationValidation>(\n `/v1/stores/${storeId(store_id)}/social-publications/validate`,\n payload,\n options,\n );\n },\n\n async createPublication(\n params: CreateSocialPublicationParams,\n options?: RequestOptions,\n ): Promise<SocialPublicationMutationResponse> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<SocialPublicationMutationResponse>(\n `/v1/stores/${storeId(store_id)}/social-publications`,\n payload,\n options,\n );\n },\n\n async updatePublication(\n params: UpdateSocialPublicationParams,\n options?: RequestOptions,\n ): Promise<SocialPublicationMutationResponse> {\n const { store_id, id, ...payload } = params;\n return apiConfig.httpClient.put<SocialPublicationMutationResponse>(\n `/v1/stores/${storeId(store_id)}/social-publications/${id}`,\n payload,\n options,\n );\n },\n\n async schedulePublication(\n params: ScheduleSocialPublicationParams,\n options?: RequestOptions,\n ): Promise<SocialPublicationMutationResponse> {\n const { store_id, id, ...payload } = params;\n return apiConfig.httpClient.post<SocialPublicationMutationResponse>(\n `/v1/stores/${storeId(store_id)}/social-publications/${id}/schedule`,\n payload,\n options,\n );\n },\n\n async cancelPublication(\n params: CancelSocialPublicationParams,\n options?: RequestOptions,\n ): Promise<SocialPublication> {\n return apiConfig.httpClient.post<SocialPublication>(\n `/v1/stores/${storeId(params.store_id)}/social-publications/${params.id}/cancel`,\n {},\n options,\n );\n },\n\n async getPublicationComments(\n params: GetSocialPublicationCommentsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<SocialPublicationComment>> {\n const { store_id, publication_id, ...queryParams } = params;\n return apiConfig.httpClient.get<\n PaginatedResponse<SocialPublicationComment>\n >(\n `/v1/stores/${storeId(store_id)}/social-publications/${publication_id}/comments`,\n {\n ...options,\n params: Object.keys(queryParams).length > 0 ? queryParams : undefined,\n },\n );\n },\n\n async syncPublicationComments(\n params: SyncSocialPublicationCommentsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<SocialPublicationComment>> {\n const { store_id, publication_id, ...payload } = params;\n return apiConfig.httpClient.post<\n PaginatedResponse<SocialPublicationComment>\n >(\n `/v1/stores/${storeId(store_id)}/social-publications/${publication_id}/comments/sync`,\n payload,\n options,\n );\n },\n\n async getPublicationCommentThread(\n params: GetSocialPublicationCommentThreadParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<SocialPublicationComment>> {\n const { store_id, publication_id, comment_id, ...queryParams } = params;\n return apiConfig.httpClient.get<\n PaginatedResponse<SocialPublicationComment>\n >(\n `/v1/stores/${storeId(store_id)}/social-publications/${publication_id}/comments/${comment_id}/thread`,\n {\n ...options,\n params: Object.keys(queryParams).length > 0 ? queryParams : undefined,\n },\n );\n },\n\n async syncPublicationCommentThread(\n params: SyncSocialPublicationCommentThreadParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<SocialPublicationComment>> {\n const { store_id, publication_id, comment_id, ...payload } = params;\n return apiConfig.httpClient.post<\n PaginatedResponse<SocialPublicationComment>\n >(\n `/v1/stores/${storeId(store_id)}/social-publications/${publication_id}/comments/${comment_id}/thread/sync`,\n payload,\n options,\n );\n },\n\n async findPublicationComments(\n params?: FindSocialPublicationCommentsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<SocialPublicationComment>> {\n const { store_id, ...queryParams } = params || {};\n return apiConfig.httpClient.get<\n PaginatedResponse<SocialPublicationComment>\n >(`/v1/stores/${storeId(store_id)}/social-publications/comments`, {\n ...options,\n params: Object.keys(queryParams).length > 0 ? queryParams : undefined,\n });\n },\n\n async classifyPublicationComments(\n params?: ClassifySocialPublicationCommentsParams,\n options?: RequestOptions,\n ): Promise<SocialPublicationCommentClassificationResult> {\n const { store_id, ...payload } = params || {};\n return apiConfig.httpClient.post<SocialPublicationCommentClassificationResult>(\n `/v1/stores/${storeId(store_id)}/social-publications/comments/classify`,\n payload,\n options,\n );\n },\n\n async createCommentReply(\n params: CreateSocialCommentReplyParams,\n options?: RequestOptions,\n ): Promise<SocialPublicationCommentReplyResponse> {\n const { store_id, publication_id, comment_id, ...payload } = params;\n return apiConfig.httpClient.post<SocialPublicationCommentReplyResponse>(\n `/v1/stores/${storeId(store_id)}/social-publications/${publication_id}/comments/${comment_id}/replies`,\n payload,\n options,\n );\n },\n\n async listCommentReplies(\n params: ListSocialCommentRepliesParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<SocialCommentReply>> {\n const { store_id, publication_id, comment_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<SocialCommentReply>>(\n `/v1/stores/${storeId(store_id)}/social-publications/${publication_id}/comments/${comment_id}/replies`,\n {\n ...options,\n params: Object.keys(queryParams).length > 0 ? queryParams : undefined,\n },\n );\n },\n\n async getCommentReply(\n params: GetSocialCommentReplyParams,\n options?: RequestOptions,\n ): Promise<SocialCommentReply> {\n return apiConfig.httpClient.get<SocialCommentReply>(\n `/v1/stores/${storeId(params.store_id)}/social-publications/${params.publication_id}/comments/${params.comment_id}/replies/${params.reply_id}`,\n options,\n );\n },\n\n async retryCommentReply(\n params: RetrySocialCommentReplyParams,\n options?: RequestOptions,\n ): Promise<SocialCommentReply> {\n return apiConfig.httpClient.post<SocialCommentReply>(\n `/v1/stores/${storeId(params.store_id)}/social-publications/${params.publication_id}/comments/${params.comment_id}/replies/${params.reply_id}/retry`,\n {},\n options,\n );\n },\n\n async listPublicationEffects(\n params: ListSocialPublicationEffectsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<SocialPublicationEffect>> {\n const { store_id, publication_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<SocialPublicationEffect>>(\n `/v1/stores/${storeId(store_id)}/social-publications/${publication_id}/effects`,\n {\n ...options,\n params: Object.keys(queryParams).length > 0 ? queryParams : undefined,\n },\n );\n },\n\n async getPublicationEffect(\n params: GetSocialPublicationEffectParams,\n options?: RequestOptions,\n ): Promise<SocialPublicationEffect> {\n return apiConfig.httpClient.get<SocialPublicationEffect>(\n `/v1/stores/${storeId(params.store_id)}/social-publications/${params.publication_id}/effects/${params.effect_id}`,\n options,\n );\n },\n\n async getPublicationMetrics(\n params: GetSocialPublicationMetricsParams,\n options?: RequestOptions,\n ): Promise<SocialPublicationMetricSnapshot> {\n return apiConfig.httpClient.get<SocialPublicationMetricSnapshot>(\n `/v1/stores/${storeId(params.store_id)}/social-publications/${params.publication_id}/metrics`,\n options,\n );\n },\n\n async syncPublicationMetrics(\n params: SyncSocialPublicationMetricsParams,\n options?: RequestOptions,\n ): Promise<SocialPublicationMetricSnapshot> {\n return apiConfig.httpClient.post<SocialPublicationMetricSnapshot>(\n `/v1/stores/${storeId(params.store_id)}/social-publications/${params.publication_id}/metrics/sync`,\n {},\n options,\n );\n },\n\n async syncEngagement(\n params?: SyncSocialEngagementParams,\n options?: RequestOptions,\n ): Promise<SocialPublicationEngagementSyncResult> {\n const { store_id, ...payload } = params || {};\n return apiConfig.httpClient.post<SocialPublicationEngagementSyncResult>(\n `/v1/stores/${storeId(store_id)}/social-publications/engagement/sync`,\n payload,\n options,\n );\n },\n\n async getCapabilities(\n params?: GetSocialCapabilitiesParams,\n options?: RequestOptions,\n ): Promise<SocialProviderCapability[]> {\n return apiConfig.httpClient.get<SocialProviderCapability[]>(\n `/v1/stores/${storeId(params?.store_id)}/social-connections/capabilities`,\n options,\n );\n },\n\n async listConnections(\n params?: ListSocialConnectionsParams,\n options?: RequestOptions,\n ): Promise<SocialConnection[]> {\n return apiConfig.httpClient.get<SocialConnection[]>(\n `/v1/stores/${storeId(params?.store_id)}/social-connections`,\n options,\n );\n },\n\n async connect(\n params: ConnectSocialConnectionParams,\n options?: RequestOptions,\n ): Promise<SocialConnectResponse> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<SocialConnectResponse>(\n `/v1/stores/${storeId(store_id)}/social-connections/oauth/connect`,\n payload,\n options,\n );\n },\n\n async getOAuthAttempt(\n params: GetSocialOAuthAttemptParams,\n options?: RequestOptions,\n ): Promise<SocialOAuthCallbackResponse> {\n return apiConfig.httpClient.get<SocialOAuthCallbackResponse>(\n `/v1/stores/${storeId(params.store_id)}/social-connections/oauth/attempts/${params.attempt_id}`,\n options,\n );\n },\n\n async selectDestination(\n params: SelectSocialDestinationParams,\n options?: RequestOptions,\n ): Promise<SocialOAuthCallbackResponse> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<SocialOAuthCallbackResponse>(\n `/v1/stores/${storeId(store_id)}/social-connections/oauth/select-destination`,\n payload,\n options,\n );\n },\n\n async deleteConnection(\n params: DeleteSocialConnectionParams,\n options?: RequestOptions,\n ): Promise<{ deleted: boolean }> {\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${storeId(params.store_id)}/social-connections/${params.id}`,\n options,\n );\n },\n\n validatePublications(\n params: ValidateSocialPublicationParams,\n options?: RequestOptions,\n ): Promise<SocialPublicationValidation> {\n return api.validatePublication(params, options);\n },\n\n createPublications(\n params: CreateSocialPublicationParams,\n options?: RequestOptions,\n ): Promise<SocialPublicationMutationResponse> {\n return api.createPublication(params, options);\n },\n };\n\n return api;\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateWorkflowParams,\n UpdateWorkflowParams,\n DeleteWorkflowParams,\n GetWorkflowParams,\n GetWorkflowsParams,\n TriggerWorkflowParams,\n GetWorkflowExecutionsParams,\n GetWorkflowExecutionParams,\n GetWorkflowEffectsParams,\n GetWorkflowEffectParams,\n GetWorkflowConnectionConnectUrlParams,\n GetWorkflowConnectionsParams,\n DeleteWorkflowConnectionParams,\n RequestOptions,\n} from \"../types/api\";\nimport type {\n Workflow,\n WorkflowConnection,\n WorkflowConnectionConnectUrl,\n WorkflowExecution,\n WorkflowEffect,\n PaginatedResponse,\n} from \"../types\";\n\nexport const createWorkflowApi = (apiConfig: ApiConfig) => {\n return {\n async createWorkflow(\n params: CreateWorkflowParams,\n options?: RequestOptions,\n ): Promise<Workflow> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Workflow>(\n `/v1/stores/${target_store_id}/workflows`,\n { ...payload, store_id: target_store_id },\n options,\n );\n },\n\n async updateWorkflow(\n params: UpdateWorkflowParams,\n options?: RequestOptions,\n ): Promise<Workflow> {\n const { store_id, id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<Workflow>(\n `/v1/stores/${target_store_id}/workflows/${id}`,\n payload,\n options,\n );\n },\n\n async deleteWorkflow(\n params: DeleteWorkflowParams,\n options?: RequestOptions,\n ): Promise<boolean> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<boolean>(\n `/v1/stores/${store_id}/workflows/${params.id}`,\n options,\n );\n },\n\n async getWorkflow(\n params: GetWorkflowParams,\n options?: RequestOptions,\n ): Promise<Workflow> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<Workflow>(\n `/v1/stores/${store_id}/workflows/${params.id}`,\n options,\n );\n },\n\n async getWorkflows(\n params?: GetWorkflowsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<Workflow>> {\n const store_id = params?.store_id || apiConfig.storeId;\n\n const { store_id: _, ...queryParams } = params || {};\n return apiConfig.httpClient.get<PaginatedResponse<Workflow>>(\n `/v1/stores/${store_id}/workflows`,\n {\n ...options,\n params: Object.keys(queryParams).length > 0 ? queryParams : undefined,\n },\n );\n },\n\n async triggerWorkflow(\n params: TriggerWorkflowParams,\n options?: RequestOptions,\n ): Promise<WorkflowExecution> {\n const { secret, ...payload } = params;\n return apiConfig.httpClient.post<WorkflowExecution>(\n `/v1/workflows/trigger/${secret}`,\n payload,\n options,\n );\n },\n\n async getWorkflowExecutions(\n params: GetWorkflowExecutionsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<WorkflowExecution>> {\n const store_id = params.store_id || apiConfig.storeId;\n const { store_id: _, workflow_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<WorkflowExecution>>(\n `/v1/stores/${store_id}/workflows/${workflow_id}/executions`,\n {\n ...options,\n params: Object.keys(queryParams).length > 0 ? queryParams : undefined,\n },\n );\n },\n\n async getWorkflowExecution(\n params: GetWorkflowExecutionParams,\n options?: RequestOptions,\n ): Promise<WorkflowExecution> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<WorkflowExecution>(\n `/v1/stores/${store_id}/workflows/${params.workflow_id}/executions/${params.execution_id}`,\n options,\n );\n },\n\n async getWorkflowEffects(\n params: GetWorkflowEffectsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<WorkflowEffect>> {\n const store_id = params.store_id || apiConfig.storeId;\n const { store_id: _, workflow_id, execution_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<WorkflowEffect>>(\n `/v1/stores/${store_id}/workflows/${workflow_id}/executions/${execution_id}/effects`,\n {\n ...options,\n params: Object.keys(queryParams).length > 0 ? queryParams : undefined,\n },\n );\n },\n\n async getWorkflowEffect(\n params: GetWorkflowEffectParams,\n options?: RequestOptions,\n ): Promise<WorkflowEffect> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<WorkflowEffect>(\n `/v1/stores/${store_id}/workflows/${params.workflow_id}/executions/${params.execution_id}/effects/${params.effect_id}`,\n options,\n );\n },\n\n async getWorkflowConnections(\n params?: GetWorkflowConnectionsParams,\n options?: RequestOptions,\n ): Promise<WorkflowConnection[]> {\n const store_id = params?.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<WorkflowConnection[]>(\n `/v1/stores/${store_id}/workflow-connections`,\n options,\n );\n },\n\n async getWorkflowConnectionConnectUrl(\n params: GetWorkflowConnectionConnectUrlParams,\n options?: RequestOptions,\n ): Promise<WorkflowConnectionConnectUrl> {\n const { store_id, type, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<WorkflowConnectionConnectUrl>(\n `/v1/stores/${target_store_id}/workflow-connections/connect-url`,\n { ...payload, type, store_id: target_store_id },\n options,\n );\n },\n\n async deleteWorkflowConnection(\n params: DeleteWorkflowConnectionParams,\n options?: RequestOptions,\n ): Promise<boolean> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<boolean>(\n `/v1/stores/${store_id}/workflow-connections/${params.id}`,\n options,\n );\n },\n };\n};\n","import type { ApiConfig } from '../index';\nimport type { RequestOptions } from '../types/api';\n\nexport interface WorkflowToolOperation {\n\tname: string;\n\tvalue: string;\n\tdescription?: string;\n\tmethod: 'get' | 'post' | 'put' | 'patch' | 'delete';\n\turl: string;\n\tbody?: Record<string, unknown> | string;\n\theaders?: Record<string, string>;\n}\n\nexport interface WorkflowToolResource {\n\tname: string;\n\tvalue: string;\n\tdescription: string;\n\toperations: WorkflowToolOperation[];\n}\n\nexport interface WorkflowTool {\n\tid: string;\n\tname: string;\n\tdescription: string;\n\ticon: string;\n\tcolor: string;\n\tcategory:\n\t\t| 'ai'\n\t\t| 'communication'\n\t\t| 'email'\n\t\t\t| 'productivity'\n\t\t\t| 'database'\n\t\t\t| 'payments'\n\t\t| 'crm'\n\t\t| 'ecommerce'\n\t\t| 'developer'\n\t\t| 'storage'\n\t\t\t| 'analytics'\n\t\t\t| 'core';\n\tconfiguration_required: boolean;\n\twebsite?: string;\n\turl_patterns: string[];\n\tresources: WorkflowToolResource[];\n\ttriggers?: Array<{\n\t\tname: string;\n\t\tvalue: string;\n\t\tdescription: string;\n\t\twebhook_type: 'incoming' | 'polling';\n\t}>;\n}\n\nexport interface EventScopeField {\n\tfield: string;\n\tlabel: string;\n\tplaceholder: string;\n}\n\nexport interface EventMetadata {\n\tevent: string;\n\tscopes: EventScopeField[];\n}\n\nexport const createPlatformApi = (apiConfig: ApiConfig) => {\n\treturn {\n\t\tasync getCurrencies(options?: RequestOptions): Promise<string[]> {\n\t\t\treturn apiConfig.httpClient.get<string[]>('/v1/platform/currencies', options);\n\t\t},\n\t\tasync getWorkflowTools(options?: RequestOptions): Promise<WorkflowTool[]> {\n\t\t\treturn apiConfig.httpClient.get<WorkflowTool[]>('/v1/platform/workflow-tools', options);\n\t\t},\n\t\tasync getWebhookEvents(options?: RequestOptions): Promise<EventMetadata[]> {\n\t\t\treturn apiConfig.httpClient.get<EventMetadata[]>('/v1/platform/events', options);\n\t\t},\n\t\tdata: {\n\t\t\tasync scan(params: { key: string; limit?: number }, options?: RequestOptions): Promise<{ value: Array<{ key: string; value: unknown }> }> {\n\t\t\t\treturn apiConfig.httpClient.get<{ value: Array<{ key: string; value: unknown }> }>('/v1/platform/data', {\n\t\t\t\t\t...options,\n\t\t\t\t\tparams: { key: params.key, limit: params.limit ?? 200 },\n\t\t\t\t});\n\t\t\t},\n\t\t\tasync put(params: { key: string; value: unknown; previous_key?: string }, options?: RequestOptions): Promise<{ ok: boolean }> {\n\t\t\t\treturn apiConfig.httpClient.post<{ ok: boolean }>('/v1/platform/data', params, options);\n\t\t\t},\n\t\t\tasync delete(params: { key: string }, options?: RequestOptions): Promise<{ ok: boolean }> {\n\t\t\t\treturn apiConfig.httpClient.delete<{ ok: boolean }>('/v1/platform/data', {\n\t\t\t\t\t...options,\n\t\t\t\t\tparams: { key: params.key },\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t\tasync runScript(\n\t\t\tparams: { name: string; value?: string; username?: string; password?: string },\n\t\t\toptions?: RequestOptions,\n\t\t): Promise<{ success: boolean; message: string }> {\n\t\t\treturn apiConfig.httpClient.post<{ success: boolean; message: string }>('/v1/platform/scripts', params, options);\n\t\t},\n\t};\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateShipmentParams,\n FindFulfillmentOrdersParams,\n FindShipmentsParams,\n FindShippingLabelAdjustmentsParams,\n FindShippingLabelRefundsParams,\n FindShippingLabelSettlementsParams,\n GetShipmentParams,\n GetFulfillmentOrderParams,\n GetShippingLabelRefundParams,\n GetShippingRatesParams,\n RequestOptions,\n RequestShippingLabelRefundParams,\n RetryShipmentParams,\n RetryShippingLabelRefundParams,\n RetryShippingLabelSettlementParams,\n} from \"../types/api\";\nimport type {\n CreateShipmentResponse,\n FulfillmentOrder,\n PaginatedResponse,\n Shipment,\n ShippingLabelAdjustment,\n ShippingLabelRefund,\n ShippingLabelSettlement,\n ShippingRate,\n} from \"../types\";\n\nexport const createShippingApi = (apiConfig: ApiConfig) => {\n const storeId = (value?: string) => value || apiConfig.storeId;\n\n return {\n async findFulfillmentOrders(\n params: FindFulfillmentOrdersParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<FulfillmentOrder>> {\n const { store_id, order_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<FulfillmentOrder>>(\n `/v1/stores/${storeId(store_id)}/orders/${order_id}/fulfillment-orders`,\n { ...options, params: queryParams },\n );\n },\n\n async getFulfillmentOrder(\n params: GetFulfillmentOrderParams,\n options?: RequestOptions,\n ): Promise<FulfillmentOrder> {\n return apiConfig.httpClient.get<FulfillmentOrder>(\n `/v1/stores/${storeId(params.store_id)}/orders/${params.order_id}/fulfillment-orders/${params.fulfillment_order_id}`,\n options,\n );\n },\n\n async getRates(\n params: GetShippingRatesParams,\n options?: RequestOptions,\n ): Promise<ShippingRate[]> {\n const { store_id, order_id, ...payload } = params;\n return apiConfig.httpClient.post<ShippingRate[]>(\n `/v1/stores/${storeId(store_id)}/orders/${order_id}/shipping/rates`,\n payload,\n options,\n );\n },\n\n async findShipments(\n params: FindShipmentsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<Shipment>> {\n const { store_id, order_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<Shipment>>(\n `/v1/stores/${storeId(store_id)}/orders/${order_id}/shipments`,\n { ...options, params: queryParams },\n );\n },\n\n async getShipment(\n params: GetShipmentParams,\n options?: RequestOptions,\n ): Promise<Shipment> {\n return apiConfig.httpClient.get<Shipment>(\n `/v1/stores/${storeId(params.store_id)}/orders/${params.order_id}/shipments/${params.shipment_id}`,\n options,\n );\n },\n\n async createShipment(\n params: CreateShipmentParams,\n options?: RequestOptions,\n ): Promise<CreateShipmentResponse> {\n const { store_id, order_id, ...payload } = params;\n const response = await apiConfig.httpClient.post<CreateShipmentResponse>(\n `/v1/stores/${storeId(store_id)}/orders/${order_id}/shipments`,\n payload,\n options,\n );\n if (\n response.shipment_id !== params.shipment_id ||\n response.shipment.id !== params.shipment_id\n ) {\n throw new Error(\"Shipping response did not match the requested shipment_id\");\n }\n return response;\n },\n\n async retryShipment(\n params: RetryShipmentParams,\n options?: RequestOptions,\n ): Promise<Shipment> {\n return apiConfig.httpClient.post<Shipment>(\n `/v1/stores/${storeId(params.store_id)}/orders/${params.order_id}/shipments/${params.shipment_id}/retry`,\n {},\n options,\n );\n },\n\n async requestRefund(\n params: RequestShippingLabelRefundParams,\n options?: RequestOptions,\n ): Promise<ShippingLabelRefund> {\n return apiConfig.httpClient.post<ShippingLabelRefund>(\n `/v1/stores/${storeId(params.store_id)}/orders/${params.order_id}/shipments/${params.shipment_id}/refunds`,\n {},\n options,\n );\n },\n\n async findRefunds(\n params: FindShippingLabelRefundsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<ShippingLabelRefund>> {\n const { store_id, order_id, shipment_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<ShippingLabelRefund>>(\n `/v1/stores/${storeId(store_id)}/orders/${order_id}/shipments/${shipment_id}/refunds`,\n { ...options, params: queryParams },\n );\n },\n\n async getRefund(\n params: GetShippingLabelRefundParams,\n options?: RequestOptions,\n ): Promise<ShippingLabelRefund> {\n return apiConfig.httpClient.get<ShippingLabelRefund>(\n `/v1/stores/${storeId(params.store_id)}/orders/${params.order_id}/shipments/${params.shipment_id}/refunds/${params.refund_id}`,\n options,\n );\n },\n\n async retryRefund(\n params: RetryShippingLabelRefundParams,\n options?: RequestOptions,\n ): Promise<ShippingLabelRefund> {\n return apiConfig.httpClient.post<ShippingLabelRefund>(\n `/v1/stores/${storeId(params.store_id)}/orders/${params.order_id}/shipments/${params.shipment_id}/refunds/${params.refund_id}/retry`,\n {},\n options,\n );\n },\n\n async findAdjustments(\n params: FindShippingLabelAdjustmentsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<ShippingLabelAdjustment>> {\n const { store_id, order_id, shipment_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<ShippingLabelAdjustment>>(\n `/v1/stores/${storeId(store_id)}/orders/${order_id}/shipments/${shipment_id}/adjustments`,\n { ...options, params: queryParams },\n );\n },\n\n async findSettlements(\n params: FindShippingLabelSettlementsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<ShippingLabelSettlement>> {\n const { store_id, order_id, shipment_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<ShippingLabelSettlement>>(\n `/v1/stores/${storeId(store_id)}/orders/${order_id}/shipments/${shipment_id}/settlements`,\n { ...options, params: queryParams },\n );\n },\n\n async retrySettlement(\n params: RetryShippingLabelSettlementParams,\n options?: RequestOptions,\n ): Promise<ShippingLabelSettlement> {\n return apiConfig.httpClient.post<ShippingLabelSettlement>(\n `/v1/stores/${storeId(params.store_id)}/orders/${params.order_id}/shipments/${params.shipment_id}/settlements/${params.settlement_id}/retry`,\n {},\n options,\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n ConnectStripePaymentProviderParams,\n DeletePaymentProviderParams,\n ListPaymentProvidersParams,\n RefreshPaymentProvidersParams,\n RequestOptions,\n} from \"../types/api\";\nimport type { PaymentProvider, StripePaymentProviderConnectResponse } from \"../types\";\n\nexport const createPaymentProviderApi = (apiConfig: ApiConfig) => {\n const storeId = (store_id?: string) => store_id || apiConfig.storeId;\n\n return {\n async list(\n params?: ListPaymentProvidersParams,\n options?: RequestOptions,\n ): Promise<PaymentProvider[]> {\n return apiConfig.httpClient.get<PaymentProvider[]>(\n `/v1/stores/${storeId(params?.store_id)}/payment-providers`,\n options,\n );\n },\n\n async refresh(\n params?: RefreshPaymentProvidersParams,\n options?: RequestOptions,\n ): Promise<PaymentProvider[]> {\n const targetStoreId = storeId(params?.store_id);\n return apiConfig.httpClient.post<PaymentProvider[]>(\n `/v1/stores/${targetStoreId}/payment-providers/refresh`,\n { store_id: targetStoreId },\n options,\n );\n },\n\n async connectStripe(\n params: ConnectStripePaymentProviderParams,\n options?: RequestOptions,\n ): Promise<StripePaymentProviderConnectResponse> {\n return apiConfig.httpClient.post<StripePaymentProviderConnectResponse>(\n `/v1/stores/${storeId(params.store_id)}/payment-providers/stripe/connect`,\n params,\n options,\n );\n },\n\n async delete(\n params: DeletePaymentProviderParams,\n options?: RequestOptions,\n ): Promise<{ deleted: boolean }> {\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${storeId(params.store_id)}/payment-providers/${params.id}`,\n options,\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateEmailTemplateParams,\n UpdateEmailTemplateParams,\n DeleteEmailTemplateParams,\n GetEmailTemplateParams,\n GetEmailTemplatesParams,\n PreviewEmailTemplateParams,\n PreviewEmailTemplateResponse,\n RequestOptions,\n} from \"../types/api\";\nimport type { EmailTemplate, PaginatedResponse } from \"../types\";\n\nexport const createEmailTemplateApi = (apiConfig: ApiConfig) => {\n return {\n async createEmailTemplate(params: CreateEmailTemplateParams, options?: RequestOptions): Promise<EmailTemplate> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<EmailTemplate>(\n `/v1/stores/${target_store_id}/email-templates`,\n payload,\n options\n );\n },\n\n async updateEmailTemplate(params: UpdateEmailTemplateParams, options?: RequestOptions): Promise<EmailTemplate> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<EmailTemplate>(\n `/v1/stores/${target_store_id}/email-templates/${params.id}`,\n payload,\n options\n );\n },\n\n async deleteEmailTemplate(params: DeleteEmailTemplateParams, options?: RequestOptions): Promise<{ deleted: boolean }> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${target_store_id}/email-templates/${params.id}`,\n options\n );\n },\n\n async getEmailTemplate(params: GetEmailTemplateParams, options?: RequestOptions): Promise<EmailTemplate> {\n const target_store_id = params.store_id || apiConfig.storeId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.key) {\n identifier = `${target_store_id}:${params.key}`;\n } else {\n throw new Error(\"GetEmailTemplateParams requires id or key\");\n }\n\n return apiConfig.httpClient.get<EmailTemplate>(\n `/v1/stores/${target_store_id}/email-templates/${identifier}`,\n options\n );\n },\n\n async getEmailTemplates(params: GetEmailTemplatesParams, options?: RequestOptions): Promise<PaginatedResponse<EmailTemplate>> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<EmailTemplate>>(\n `/v1/stores/${target_store_id}/email-templates`,\n {\n ...options,\n params: queryParams,\n }\n );\n },\n\n async previewEmailTemplate(params: PreviewEmailTemplateParams, options?: RequestOptions): Promise<PreviewEmailTemplateResponse> {\n const { store_id, id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<PreviewEmailTemplateResponse>(\n `/v1/stores/${target_store_id}/email-templates/${id}/preview`,\n payload,\n options\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateFormParams,\n UpdateFormParams,\n DeleteFormParams,\n GetFormParams,\n GetFormsParams,\n SubmitFormParams,\n GetFormSubmissionsParams,\n GetFormSubmissionParams,\n UpdateFormSubmissionParams,\n RequestOptions,\n} from \"../types/api\";\nimport type { Form, FormSubmission, PaginatedResponse } from \"../types\";\n\nexport const createFormApi = (apiConfig: ApiConfig) => {\n return {\n async createForm(params: CreateFormParams, options?: RequestOptions): Promise<Form> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Form>(\n `/v1/stores/${target_store_id}/forms`,\n payload,\n options\n );\n },\n\n async updateForm(params: UpdateFormParams, options?: RequestOptions): Promise<Form> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<Form>(\n `/v1/stores/${target_store_id}/forms/${params.id}`,\n payload,\n options\n );\n },\n\n async deleteForm(params: DeleteFormParams, options?: RequestOptions): Promise<{ deleted: boolean }> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${target_store_id}/forms/${params.id}`,\n options\n );\n },\n\n async getForm(params: GetFormParams, options?: RequestOptions): Promise<Form> {\n const target_store_id = params.store_id || apiConfig.storeId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.key) {\n identifier = `${target_store_id}:${params.key}`;\n } else {\n throw new Error(\"GetFormParams requires id or key\");\n }\n\n return apiConfig.httpClient.get<Form>(\n `/v1/stores/${target_store_id}/forms/${identifier}`,\n options\n );\n },\n\n async getForms(params: GetFormsParams, options?: RequestOptions): Promise<PaginatedResponse<Form>> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<Form>>(\n `/v1/stores/${target_store_id}/forms`,\n {\n ...options,\n params: queryParams,\n }\n );\n },\n\n async submit(params: SubmitFormParams, options?: RequestOptions): Promise<FormSubmission> {\n const { store_id, form_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<FormSubmission>(\n `/v1/stores/${target_store_id}/forms/${form_id}/submissions`,\n { ...payload, form_id, store_id: target_store_id },\n options\n );\n },\n\n async getSubmissions(params: GetFormSubmissionsParams, options?: RequestOptions): Promise<PaginatedResponse<FormSubmission>> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<FormSubmission>>(\n `/v1/stores/${target_store_id}/forms/submissions`,\n { ...options, params: queryParams }\n );\n },\n\n async getSubmission(params: GetFormSubmissionParams, options?: RequestOptions): Promise<FormSubmission> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<FormSubmission>(\n `/v1/stores/${target_store_id}/forms/${params.form_id}/submissions/${params.id}`,\n options\n );\n },\n\n async updateSubmission(params: UpdateFormSubmissionParams, options?: RequestOptions): Promise<FormSubmission> {\n const { store_id, form_id, id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<FormSubmission>(\n `/v1/stores/${target_store_id}/forms/${form_id}/submissions/${id}`,\n { ...payload, form_id, store_id: target_store_id, id },\n options\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateTaxonomyParams,\n UpdateTaxonomyParams,\n DeleteTaxonomyParams,\n GetTaxonomyParams,\n GetTaxonomiesParams,\n GetTaxonomyChildrenParams,\n RequestOptions,\n} from \"../types/api\";\nimport type { Taxonomy, PaginatedResponse } from \"../types\";\n\nexport const createTaxonomyApi = (apiConfig: ApiConfig) => {\n return {\n async createTaxonomy(params: CreateTaxonomyParams, options?: RequestOptions): Promise<Taxonomy> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Taxonomy>(\n `/v1/stores/${target_store_id}/taxonomies`,\n payload,\n options\n );\n },\n\n async updateTaxonomy(params: UpdateTaxonomyParams, options?: RequestOptions): Promise<Taxonomy> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<Taxonomy>(\n `/v1/stores/${target_store_id}/taxonomies/${params.id}`,\n payload,\n options\n );\n },\n\n async deleteTaxonomy(params: DeleteTaxonomyParams, options?: RequestOptions): Promise<{ deleted: boolean }> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${target_store_id}/taxonomies/${params.id}`,\n options\n );\n },\n\n async getTaxonomy(params: GetTaxonomyParams, options?: RequestOptions): Promise<Taxonomy> {\n const target_store_id = params.store_id || apiConfig.storeId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.key) {\n identifier = `${target_store_id}:${params.key}`;\n } else {\n throw new Error(\"GetTaxonomyParams requires id or key\");\n }\n\n return apiConfig.httpClient.get<Taxonomy>(\n `/v1/stores/${target_store_id}/taxonomies/${identifier}`,\n options\n );\n },\n\n async getTaxonomies(params: GetTaxonomiesParams, options?: RequestOptions): Promise<PaginatedResponse<Taxonomy>> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<Taxonomy>>(\n `/v1/stores/${target_store_id}/taxonomies`,\n {\n ...options,\n params: queryParams,\n }\n );\n },\n\n async getTaxonomyChildren(params: GetTaxonomyChildrenParams, options?: RequestOptions): Promise<PaginatedResponse<Taxonomy>> {\n const { id, store_id } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<Taxonomy>>(\n `/v1/stores/${target_store_id}/taxonomies/${id}/children`,\n options\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type { RequestOptions } from \"../types/api\";\n\nexport interface AnalyticsTimeRange {\n from: number;\n to: number;\n}\n\nexport type AnalyticsReportKey =\n | \"business_overview\"\n | \"contact_funnel\"\n | \"outreach_overview\"\n | \"outreach_funnel\"\n | \"action_by_country\"\n | \"top_action_pages\"\n | \"entity_status_overview\"\n | \"data_health\"\n | \"orders_created\"\n | \"contacts_created\"\n | \"form_submissions_created\"\n | \"carts_abandoned\"\n | \"campaign_messages_sent\"\n | \"campaign_messages_received\"\n | \"suppressions_created\"\n | \"media_count\"\n | \"products_by_status\"\n | \"services_by_status\"\n | \"providers_by_status\"\n | \"collections_by_status\"\n | \"entries_by_status\"\n | \"contacts_by_status\"\n | \"contact_lists_by_status\"\n | \"mailboxes_by_status\"\n | \"campaigns_by_status\"\n | \"campaign_enrollments_by_status\"\n | \"campaign_messages_by_status\"\n | \"support_conversations_by_status\"\n | \"lead_research_runs_by_status\"\n | \"suppressions_by_status\"\n\n | \"workflows_by_status\"\n | \"promo_codes_by_status\"\n | \"email_templates_by_status\"\n | \"forms_by_status\"\n | \"taxonomies_by_status\"\n | \"carts_by_status\"\n | \"orders_by_status\"\n | \"order_items_by_status\"\n | \"recent_action\";\n\nexport type ActionFeedCategory =\n | \"orders\"\n | \"carts\"\n | \"promo_codes\"\n | \"submissions\"\n | \"contacts\"\n | \"contact_lists\"\n | \"products\"\n | \"services\"\n | \"providers\"\n | \"cms\"\n | \"workflows\"\n | \"actions\";\n\nexport interface AnalyticsReportRequest {\n key: AnalyticsReportKey;\n limit?: number;\n category?: ActionFeedCategory;\n cursor_created_at?: number;\n cursor_id?: string;\n}\n\nexport interface AnalyticsRequest {\n time?: AnalyticsTimeRange;\n reports?: AnalyticsReportRequest[];\n blocks?: AnalyticsBlockRequest[];\n}\n\nexport interface AnalyticsBlockRequest {\n id: string;\n time: AnalyticsTimeRange;\n reports: AnalyticsReportRequest[];\n}\n\nexport interface AnalyticsMetricData {\n value: number;\n execution_ms?: number;\n}\n\nexport interface AnalyticsBreakdownItem {\n key: string;\n label: string;\n value: number;\n unique_contacts?: number;\n unique_visitors?: number;\n}\n\nexport interface AnalyticsBreakdownData {\n items: AnalyticsBreakdownItem[];\n}\n\nexport interface BusinessOverviewData {\n visitors: number;\n new_visitors: number;\n known_contacts: number;\n new_known_contacts: number;\n email_known_contacts: number;\n verified_contacts: number;\n new_verified_contacts: number;\n buyers: number;\n orders: number;\n revenue: number;\n revenue_by_currency: RevenueByCurrencyData[];\n average_order_value: number;\n carts: number;\n abandoned_carts: number;\n visitor_to_known_rate: number;\n visitor_to_buyer_rate: number;\n cart_abandonment_rate: number;\n}\n\nexport interface RevenueByCurrencyData {\n currency: string;\n orders: number;\n revenue: number;\n average_order_value: number;\n}\n\nexport interface ContactFunnelStage {\n key:\n | \"visitors\"\n | \"email_known_contacts\"\n | \"verified_contacts\"\n | \"buyers\"\n | string;\n label: string;\n value: number;\n}\n\nexport interface ContactFunnelData {\n stages: ContactFunnelStage[];\n visitor_to_known_rate?: number;\n visitor_to_buyer_rate?: number;\n}\n\nexport interface OutreachOverviewData {\n contact_lists: number;\n active_contact_lists: number;\n mailboxes: number;\n active_mailboxes: number;\n campaigns: number;\n active_campaigns: number;\n campaign_enrollments: number;\n new_campaign_enrollments: number;\n active_campaign_enrollments: number;\n completed_campaign_enrollments: number;\n replied_campaign_enrollments: number;\n suppressed_campaign_enrollments: number;\n failed_campaign_enrollments: number;\n campaign_messages_sent: number;\n outreach_bounces: number;\n campaign_messages_received: number;\n suppressions: number;\n active_suppressions: number;\n new_suppressions: number;\n reply_rate: number;\n bounce_rate: number;\n suppression_rate: number;\n}\n\nexport interface OutreachFunnelStage {\n key:\n | \"contact_lists\"\n | \"campaigns\"\n | \"campaign_enrollments\"\n | \"campaign_messages_sent\"\n | \"outreach_bounces\"\n | \"campaign_messages_received\"\n | string;\n label: string;\n value: number;\n}\n\nexport interface OutreachFunnelData {\n stages: OutreachFunnelStage[];\n reply_rate?: number;\n bounce_rate?: number;\n suppression_rate?: number;\n}\n\nexport interface EntityStatusOverviewData {\n entities: Record<string, AnalyticsBreakdownItem[]>;\n}\n\nexport interface DataHealthData {\n anonymous_contacts: number;\n known_contacts: number;\n duplicate_emails: number;\n unknown_country_events: number;\n unknown_device_events: number;\n}\n\nexport interface ActionFeedItem {\n id: string;\n entity: string;\n entity_id: string;\n action: string;\n event_type: string;\n status: string;\n contact_id: string;\n category: string;\n title: string;\n description: string;\n href?: string | null;\n data: unknown;\n payload: unknown;\n created_at: number;\n}\n\nexport interface ActionFeedSummary {\n total: number;\n orders: number;\n submissions: number;\n contacts: number;\n contact_lists: number;\n abandoned_carts: number;\n carts: number;\n promo_codes: number;\n products: number;\n services: number;\n providers: number;\n cms: number;\n workflows: number;\n actions: number;\n window_start: number;\n}\n\nexport interface ActionFeedCursor {\n created_at: number;\n id: string;\n}\n\nexport interface ActionFeedData {\n items: ActionFeedItem[];\n summary: ActionFeedSummary;\n next_cursor?: ActionFeedCursor | null;\n meta: {\n row_count: number;\n execution_ms: number;\n };\n}\n\nexport type AnalyticsMetricReportKey =\n | \"orders_created\"\n | \"contacts_created\"\n | \"form_submissions_created\"\n | \"carts_abandoned\"\n | \"campaign_messages_sent\"\n | \"campaign_messages_received\"\n | \"suppressions_created\"\n | \"media_count\";\n\nexport type AnalyticsBreakdownReportKey =\n | \"action_by_country\"\n | \"top_action_pages\"\n | \"products_by_status\"\n | \"services_by_status\"\n | \"providers_by_status\"\n | \"collections_by_status\"\n | \"entries_by_status\"\n | \"contacts_by_status\"\n | \"contact_lists_by_status\"\n | \"mailboxes_by_status\"\n | \"campaigns_by_status\"\n | \"campaign_enrollments_by_status\"\n | \"campaign_messages_by_status\"\n | \"support_conversations_by_status\"\n | \"lead_research_runs_by_status\"\n | \"suppressions_by_status\"\n\n | \"workflows_by_status\"\n | \"promo_codes_by_status\"\n | \"email_templates_by_status\"\n | \"forms_by_status\"\n | \"taxonomies_by_status\"\n | \"carts_by_status\"\n | \"orders_by_status\"\n | \"order_items_by_status\";\n\nexport type AnalyticsActionReportKey = \"recent_action\";\n\nexport type AnalyticsCompositeReportKey =\n | \"business_overview\"\n | \"contact_funnel\"\n | \"outreach_overview\"\n | \"outreach_funnel\"\n | \"entity_status_overview\"\n | \"data_health\";\n\nexport type AnalyticsReport =\n | { key: AnalyticsMetricReportKey; data: AnalyticsMetricData }\n | { key: AnalyticsBreakdownReportKey; data: AnalyticsBreakdownData }\n | { key: \"business_overview\"; data: BusinessOverviewData }\n | { key: \"contact_funnel\"; data: ContactFunnelData }\n | { key: \"outreach_overview\"; data: OutreachOverviewData }\n | { key: \"outreach_funnel\"; data: OutreachFunnelData }\n | { key: \"entity_status_overview\"; data: EntityStatusOverviewData }\n | { key: \"data_health\"; data: DataHealthData }\n | { key: AnalyticsActionReportKey; data: ActionFeedData };\n\nexport interface AnalyticsBlockResponse {\n id: string;\n time: AnalyticsTimeRange;\n reports: AnalyticsReport[];\n}\n\nexport interface AnalyticsResponse {\n time?: AnalyticsTimeRange;\n reports?: AnalyticsReport[];\n blocks?: AnalyticsBlockResponse[];\n}\n\nexport const createAnalyticsApi = (apiConfig: ApiConfig) => {\n return {\n async get(\n request: AnalyticsRequest,\n options?: RequestOptions & { store_id?: string },\n ): Promise<AnalyticsResponse> {\n const store_id = options?.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<AnalyticsResponse>(\n `/v1/stores/${store_id}/analytics`,\n request,\n options,\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type { PaginatedResponse } from \"../types\";\nimport type { RequestOptions } from \"../types/api\";\n\nexport type ExperimentStatus = \"draft\" | \"running\" | \"paused\" | \"completed\";\n\nexport interface ExperimentVariant {\n key: string;\n weight: number;\n}\n\nexport interface Experiment {\n id: string;\n store_id: string;\n key: string;\n status: ExperimentStatus;\n version: number;\n goal_action_key: string;\n variants: ExperimentVariant[];\n created_at: number;\n updated_at: number;\n}\n\nexport interface CreateExperimentParams {\n store_id?: string;\n key: string;\n goal_action_key: string;\n variants: ExperimentVariant[];\n status?: ExperimentStatus;\n}\n\nexport interface UpdateExperimentParams {\n store_id?: string;\n key: string;\n goal_action_key?: string;\n variants?: ExperimentVariant[];\n status?: ExperimentStatus;\n}\n\nexport interface GetExperimentParams {\n store_id?: string;\n key: string;\n}\n\nexport interface FindExperimentsParams {\n store_id?: string;\n limit?: number;\n cursor?: string;\n}\n\nexport interface ExperimentVariantResult {\n variant_key: string;\n weight: number;\n shown: number;\n wins: number;\n conversion_rate: number;\n}\n\nexport interface ExperimentResults {\n experiment: Experiment;\n variants: ExperimentVariantResult[];\n winning_variant_key?: string | null;\n}\n\nexport const createExperimentsApi = (apiConfig: ApiConfig) => {\n const base = (storeId = apiConfig.storeId) => `/v1/stores/${storeId}/experiments`;\n\n return {\n create(params: CreateExperimentParams, options?: RequestOptions): Promise<Experiment> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<Experiment>(base(store_id), payload, options);\n },\n\n update(params: UpdateExperimentParams, options?: RequestOptions): Promise<Experiment> {\n const { store_id, key, ...payload } = params;\n return apiConfig.httpClient.put<Experiment>(`${base(store_id)}/${key}`, payload, options);\n },\n\n get(params: GetExperimentParams, options?: RequestOptions): Promise<Experiment> {\n return apiConfig.httpClient.get<Experiment>(`${base(params.store_id)}/${params.key}`, options);\n },\n\n find(params: FindExperimentsParams = {}, options?: RequestOptions): Promise<PaginatedResponse<Experiment>> {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<Experiment>>(base(store_id), {\n ...options,\n params: queryParams,\n });\n },\n\n results(params: GetExperimentParams, options?: RequestOptions): Promise<ExperimentResults> {\n return apiConfig.httpClient.get<ExperimentResults>(\n `${base(params.store_id)}/${params.key}/results`,\n options,\n );\n },\n };\n};\n","import type { Block } from \"../types\";\n\ntype BlockContainer = { blocks?: readonly Block[] | null };\ntype UnknownRecord = Record<string, unknown>;\n\nfunction isRecord(value: unknown): value is UnknownRecord {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isBlock(value: unknown): value is Block {\n return isRecord(value) && typeof value.key === \"string\" && typeof value.type === \"string\";\n}\n\nfunction recordFromBlocks(values: readonly unknown[], locale: string): UnknownRecord {\n const result: UnknownRecord = {};\n for (const value of values) {\n if (!isBlock(value)) continue;\n result[value.key] = unwrapBlock(value, locale);\n }\n return result;\n}\n\nfunction localizedValue(value: unknown, locale: string): string {\n if (typeof value === \"string\") return value;\n if (!isRecord(value)) return \"\";\n const selected = value[locale] ?? value.en;\n return typeof selected === \"string\" ? selected : \"\";\n}\n\nfunction unwrapBlock(value: unknown, locale: string): unknown {\n if (!isBlock(value)) return value;\n if (value.type === \"localized_text\" || value.type === \"markdown\") {\n return localizedValue(value.value, locale);\n }\n if (value.type === \"array\") {\n if (!Array.isArray(value.value)) return [];\n return value.value.map((item) => {\n if (isBlock(item)) return unwrapBlock(item, locale);\n if (isRecord(item) && Array.isArray(item.value)) {\n return recordFromBlocks(item.value, locale);\n }\n if (!isRecord(item)) return item;\n return Object.fromEntries(\n Object.entries(item).map(([key, nested]) => [key, unwrapBlock(nested, locale)]),\n );\n });\n }\n if (value.type === \"object\") {\n if (Array.isArray(value.value)) return recordFromBlocks(value.value, locale);\n if (!isRecord(value.value)) return {};\n return Object.fromEntries(\n Object.entries(value.value).map(([key, nested]) => [key, unwrapBlock(nested, locale)]),\n );\n }\n return value.value;\n}\n\nfunction blockContentArray(values: readonly unknown[], locale: string): unknown {\n const blocks = values.filter(isBlock);\n if (blocks.length === 0) return [];\n if (blocks.every((block) => block.key === blocks[0].key)) {\n return blocks.map((block) => blockContentValue(block, locale));\n }\n return Object.fromEntries(\n blocks.map((block) => [block.key, blockContentValue(block, locale)]),\n );\n}\n\nfunction blockContentValue(block: Block, locale: string): unknown {\n if (block.type === \"localized_text\" || block.type === \"markdown\") {\n return localizedValue(block.value, locale);\n }\n if (block.type === \"media\") return block.value ?? null;\n if (block.type === \"array\") {\n return Array.isArray(block.value) ? blockContentArray(block.value, locale) : [];\n }\n if (block.type === \"object\") {\n if (Array.isArray(block.value)) return blockContentArray(block.value, locale);\n if (!isRecord(block.value)) return {};\n return Object.fromEntries(\n Object.entries(block.value).map(([key, value]) => [\n key,\n isBlock(value) ? blockContentValue(value, locale) : value,\n ]),\n );\n }\n return block.value;\n}\n\nexport function findBlock(entry: BlockContainer | null | undefined, key: string): Block | undefined {\n return entry?.blocks?.find((block) => block.key === key);\n}\n\nexport function getBlockLabel(block: Pick<Block, \"key\"> | null | undefined): string {\n return block?.key.replace(/_/g, \" \").replace(/\\b\\w/g, (letter) => letter.toUpperCase()) ?? \"\";\n}\n\nexport function formatBlockValue(block: Block | null | undefined): string {\n if (block?.value === null || block?.value === undefined) return \"\";\n if (block.type === \"boolean\") return block.value ? \"Yes\" : \"No\";\n if (block.type === \"date\") {\n return new Date(Number(block.value) * 1000).toLocaleDateString();\n }\n if (block.type === \"media\" && isRecord(block.value)) {\n const label = block.value.name ?? block.value.title ?? block.value.id;\n return typeof label === \"string\" ? label : \"\";\n }\n return String(block.value);\n}\n\nexport function prepareBlocksForSubmission(\n formData: Readonly<Record<string, unknown>>,\n blockTypes: Readonly<Record<string, string>> = {},\n): Array<{ key: string; value: unknown }> {\n return Object.entries(formData)\n .filter(([, value]) => value !== null && value !== undefined)\n .map(([key, value]) => ({\n key,\n value: blockTypes[key] === \"array\" && !Array.isArray(value) ? [value] : value,\n }));\n}\n\nexport function extractBlockValues(blocks: readonly Block[]): Record<string, unknown> {\n return Object.fromEntries(blocks.map((block) => [block.key, block.value ?? null]));\n}\n\nexport function getBlockValue<T = unknown>(\n entry: BlockContainer | null | undefined,\n key: string,\n): T | null {\n return (findBlock(entry, key)?.value as T | undefined) ?? null;\n}\n\nexport function getBlockTextValue(block: Block | null | undefined, locale = \"en\"): string {\n if (!block || block.value === null || block.value === undefined) return \"\";\n if (block.type === \"localized_text\" || block.type === \"markdown\") {\n return localizedValue(block.value, locale);\n }\n return typeof block.value === \"string\" ? block.value : String(block.value);\n}\n\nexport function getBlockContentValue(\n entry: BlockContainer | null | undefined,\n key: string,\n locale = \"en\",\n): unknown {\n const block = findBlock(entry, key);\n return block ? blockContentValue(block, locale) : null;\n}\n\nexport function getBlockValues<T = unknown>(\n entry: BlockContainer | null | undefined,\n key: string,\n): T[] {\n const block = findBlock(entry, key);\n return block?.type === \"array\" && Array.isArray(block.value) ? (block.value as T[]) : [];\n}\n\nexport function getBlockObjectValues(\n entry: BlockContainer | null | undefined,\n key: string,\n locale = \"en\",\n): UnknownRecord[] {\n return getBlockValues(entry, key).map((value) => {\n if (isRecord(value) && Array.isArray(value.value)) {\n return recordFromBlocks(value.value, locale);\n }\n return isRecord(value)\n ? Object.fromEntries(\n Object.entries(value).map(([field, nested]) => [field, unwrapBlock(nested, locale)]),\n )\n : {};\n });\n}\n\nexport function getBlockFromArray(\n entry: BlockContainer | null | undefined,\n key: string,\n locale = \"en\",\n): UnknownRecord {\n const block = findBlock(entry, key);\n if (!block) return {};\n const value = unwrapBlock(block, locale);\n if (isRecord(value)) return value;\n if (Array.isArray(block.value)) return recordFromBlocks(block.value, locale);\n return { [block.key]: value };\n}\n\nfunction nestedUrl(value: UnknownRecord): string | null {\n const resolutions = isRecord(value.resolutions) ? value.resolutions : null;\n const original = resolutions && isRecord(resolutions.original) ? resolutions.original : null;\n if (typeof original?.url === \"string\") return original.url;\n return typeof value.url === \"string\" ? value.url : null;\n}\n\nexport function getImageUrl(value: unknown, isBlock = true): string | null {\n if (typeof value === \"string\") return value;\n if (!isRecord(value)) return null;\n if (value.type === \"media\" && isRecord(value.value)) return nestedUrl(value.value);\n if (isBlock && typeof value.url === \"string\") return value.url;\n return nestedUrl(value);\n}\n","import type { OrderMoney, Price } from '../types';\n\ntype OrderTotal = Pick<OrderMoney, 'total' | 'currency'>;\n\nexport const SUPPORTED_STORE_CURRENCIES = Object.freeze([\n 'USD', 'EUR', 'GBP', 'JPY', 'CNY', 'CHF', 'AUD', 'CAD', 'HKD', 'SGD',\n 'NZD', 'KRW', 'SEK', 'NOK', 'DKK', 'INR', 'MXN', 'BRL', 'ZAR', 'RUB',\n 'TRY', 'PLN', 'THB', 'IDR', 'MYR', 'PHP', 'CZK', 'ILS', 'AED', 'SAR',\n 'HUF', 'RON', 'BGN', 'HRK', 'BAM', 'RSD', 'MKD', 'ALL',\n] as const);\n\nconst SUPPORTED_STORE_CURRENCY_SET: ReadonlySet<string> = Object.freeze(\n new Set<string>(SUPPORTED_STORE_CURRENCIES),\n);\n\nconst ZERO_MINOR_UNIT_STORE_CURRENCIES: ReadonlySet<string> = Object.freeze(\n new Set<string>(['JPY', 'KRW']),\n);\n\nfunction formatCurrency(amount: number, currencyCode: string, locale: string = 'en'): string {\n const normalized = currencyCode.trim().toUpperCase();\n if (!normalized) return '';\n const minorUnits = getCurrencyMinorUnits(normalized);\n return new Intl.NumberFormat(locale, {\n style: 'currency',\n currency: normalized,\n minimumFractionDigits: minorUnits,\n maximumFractionDigits: minorUnits,\n }).format(amount);\n}\n\nexport function getCurrencyMinorUnits(currency: string): number {\n const normalized = currency.trim().toUpperCase();\n if (!SUPPORTED_STORE_CURRENCY_SET.has(normalized)) {\n throw new RangeError(`Unsupported currency '${currency}'`);\n }\n return ZERO_MINOR_UNIT_STORE_CURRENCIES.has(normalized) ? 0 : 2;\n}\n\nexport function convertToMajor(minorAmount: number, currency: string): number {\n const units = getCurrencyMinorUnits(currency);\n return minorAmount / Math.pow(10, units);\n}\n\nexport function convertToMinor(majorAmount: number, currency: string): number {\n const units = getCurrencyMinorUnits(currency);\n return Math.round(majorAmount * Math.pow(10, units));\n}\n\nexport function getCurrencySymbol(currency: string): string {\n try {\n return new Intl.NumberFormat('en', {\n style: 'currency',\n currency: currency.toUpperCase(),\n currencyDisplay: 'narrowSymbol'\n }).formatToParts(0).find(p => p.type === 'currency')?.value || currency.toUpperCase();\n } catch {\n return currency.toUpperCase();\n }\n}\n\nexport function getCurrencyName(currency: string): string {\n try {\n return new Intl.DisplayNames(['en'], { type: 'currency' }).of(currency.toUpperCase()) || currency.toUpperCase();\n } catch {\n return currency.toUpperCase();\n }\n}\n\nexport function formatMinor(amountMinor: number, currency: string): string {\n if (!Number.isSafeInteger(amountMinor)) {\n throw new RangeError('Minor-unit amount must be a safe integer');\n }\n return formatCurrency(convertToMajor(amountMinor, currency), currency);\n}\n\nexport function formatPayment(payment: OrderTotal): string {\n return formatMinor(payment.total, payment.currency);\n}\n\nexport function formatPrice(prices: Price[], marketId?: string): string {\n if (!prices || prices.length === 0 || !marketId) return '';\n\n const price = prices.find(p => p.market === marketId);\n if (!price || !Number.isSafeInteger(price.amount) || price.amount < 0 || !price.currency) return '';\n\n return formatMinor(price.amount, price.currency);\n}\n\nexport function getPriceAmount(prices: Price[], marketId: string): number | null {\n if (!prices || prices.length === 0 || !marketId) return null;\n const price = prices.find(p => p.market === marketId);\n return price && Number.isSafeInteger(price.amount) && price.amount >= 0 ? price.amount : null;\n}\n","export interface ValidationResult {\n isValid: boolean;\n error?: string;\n}\n\nexport function validatePhoneNumber(phone: string): ValidationResult {\n if (!phone) {\n return { isValid: false, error: \"Phone number is required\" };\n }\n\n const cleaned = phone.replace(/\\D/g, \"\");\n\n if (cleaned.length < 8) {\n return { isValid: false, error: \"Phone number is too short\" };\n }\n\n if (cleaned.length > 15) {\n return { isValid: false, error: \"Phone number is too long\" };\n }\n\n return { isValid: true };\n}\n","\nexport const tzGroups = [\n {\n label: \"US\",\n zones: [\n { label: \"Eastern Time\", value: \"America/New_York\" },\n { label: \"Central Time\", value: \"America/Chicago\" },\n { label: \"Mountain Time\", value: \"America/Denver\" },\n { label: \"Pacific Time\", value: \"America/Los_Angeles\" },\n ],\n },\n {\n label: \"Europe\",\n zones: [\n { label: \"London\", value: \"Europe/London\" },\n { label: \"Paris\", value: \"Europe/Paris\" },\n { label: \"Berlin\", value: \"Europe/Berlin\" },\n { label: \"Rome\", value: \"Europe/Rome\" },\n ],\n },\n {\n label: \"Asia\",\n zones: [\n { label: \"Tokyo\", value: \"Asia/Tokyo\" },\n { label: \"Shanghai\", value: \"Asia/Shanghai\" },\n { label: \"Mumbai\", value: \"Asia/Kolkata\" },\n { label: \"Dubai\", value: \"Asia/Dubai\" },\n ],\n },\n];\n\nexport function findTimeZone(groups: typeof tzGroups): string {\n try {\n const detected = Intl.DateTimeFormat().resolvedOptions().timeZone;\n \n for (const group of groups) {\n for (const zone of group.zones) {\n if (zone.value === detected) {\n return detected;\n }\n }\n }\n \n return \"UTC\";\n } catch (e) {\n \n return \"UTC\";\n }\n}\n","\nconst locales = ['en', 'sr-latn'] as const;\nconst localeMap: Record<typeof locales[number], string> = {\n\t'en': 'en-US',\n\t'sr-latn': 'sr-RS'\n};\n\nexport function slugify(text: string): string {\n\treturn text\n\t\t.toString()\n\t\t.toLowerCase()\n\t\t.replace(/\\s+/g, \"-\")\n\t\t.replace(/[^\\w-]+/g, \"\")\n\t\t.replace(/--+/g, \"-\")\n\t\t.replace(/^-+/, \"\")\n\t\t.replace(/-+$/, \"\");\n}\n\nexport function humanize(text: string): string {\n\tconst slugifiedText = slugify(text);\n\treturn (\n\t\tslugifiedText\n\t\t\t.replace(/-/g, \" \")\n\t\t\t\n\t\t\t.replace(\n\t\t\t\t\n\t\t\t\t/\\w\\S*/g,\n\t\t\t\t(w) => w.charAt(0).toUpperCase() + w.slice(1).toLowerCase(),\n\t\t\t)\n\t);\n}\n\nexport function categorify(text: string): string {\n\tconst slugifiedText = slugify(text);\n\treturn slugifiedText\n\t\t.replace(/-/g, \" \")\n\t\t.toUpperCase();\n}\n\nexport function formatDate(date: string | number | Date, locale: (typeof locales)[number]): string {\n\tlet localeString = \"en-US\";\n\n\tif (locales.includes(locale)) {\n\t\tlocaleString = localeMap[locale];\n\t}\n\n\treturn new Date(date).toLocaleDateString(localeString, {\n\t\ttimeZone: \"UTC\",\n\t\tyear: \"numeric\",\n\t\tmonth: \"short\",\n\t\tday: \"numeric\",\n\t});\n}\n","import { getImageUrl } from \"./blocks\";\n\nexport async function fetchSvgContent(mediaObject: unknown): Promise<string | null> {\n\tif (!mediaObject) return null;\n\n\tconst svgUrl = getImageUrl(mediaObject, false);\n\tif (!svgUrl) return null;\n\n\ttry {\n\t\tconst response = await fetch(svgUrl);\n\n\t\tif (!response.ok) {\n\t\t\tconsole.error(`Failed to fetch SVG: ${response.status} ${response.statusText}`);\n\t\t\treturn null;\n\t\t}\n\n\t\tconst svgContent = await response.text();\n\t\treturn svgContent;\n\t} catch (error) {\n\t\tconsole.error(\"Error fetching SVG:\", error);\n\t\treturn null;\n\t}\n}\n\nexport async function getSvgContentForAstro(mediaObject: unknown): Promise<string> {\n\ttry {\n\t\tconst svgContent = await fetchSvgContent(mediaObject);\n\t\treturn svgContent || \"\";\n\t} catch (error) {\n\t\tconsole.error(\"Error getting SVG content for Astro:\", error);\n\t\treturn \"\";\n\t}\n}\n\nexport async function injectSvgIntoElement(\n\tmediaObject: unknown,\n\ttargetElement: HTMLElement,\n\tclassName?: string,\n): Promise<void> {\n\tif (!targetElement) return;\n\n\ttry {\n\t\tconst svgContent = await fetchSvgContent(mediaObject);\n\n\t\tif (svgContent) {\n\t\t\ttargetElement.innerHTML = svgContent;\n\n\t\t\tif (className) {\n\t\t\t\tconst svgElement = targetElement.querySelector(\"svg\");\n\t\t\t\tif (svgElement) {\n\t\t\t\t\tsvgElement.classList.add(...className.split(\" \"));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tconsole.error(\"Error injecting SVG:\", error);\n\t}\n}\n","\nconst KEY_PATTERN = /^[a-zA-Z0-9_-]+$/;\n\nexport function isValidKey(key: string): boolean {\n if (!key || key.length === 0) return false;\n return KEY_PATTERN.test(key);\n}\n\nexport function validateKey(key: string): { valid: boolean; error?: string } {\n if (!key || key.length === 0) {\n return { valid: false, error: \"Key is required\" };\n }\n\n if (key.length > 255) {\n return { valid: false, error: \"Key must be 255 characters or less\" };\n }\n\n if (!KEY_PATTERN.test(key)) {\n return {\n valid: false,\n error:\n \"Key can only contain letters, numbers, underscores (_) and hyphens (-)\",\n };\n }\n\n return { valid: true };\n}\n\nexport function toKey(input: string): string {\n if (!input) return \"\";\n\n return input\n .toLowerCase()\n .trim()\n .replace(/\\s+/g, \"_\")\n .replace(/[^a-z0-9_-]/g, \"\")\n .replace(/^[-_]+|[-_]+$/g, \"\")\n .replace(/[-_]{2,}/g, \"_\");\n}\n\nexport function nameToKey(name: string): string {\n return toKey(name);\n}\n","import type { InventoryLevel, Location } from '../types';\n\nexport interface VariantWithInventory {\n inventory: InventoryLevel[];\n}\n\n\nexport function getAvailableStock(variant: VariantWithInventory): number {\n if (!variant?.inventory) return 0;\n return variant.inventory.reduce((sum, inv) => sum + inv.available, 0);\n}\n\n\nexport function getReservedStock(variant: VariantWithInventory): number {\n if (!variant?.inventory) return 0;\n return variant.inventory.reduce((sum, inv) => sum + inv.reserved, 0);\n}\n\n\nexport function hasStock(variant: VariantWithInventory, quantity: number = 1): boolean {\n return getAvailableStock(variant) >= quantity;\n}\n\n\nexport function getInventoryAt(\n variant: VariantWithInventory,\n locationId: string\n): InventoryLevel | undefined {\n return variant?.inventory?.find(inv => inv.location_id === locationId);\n}\n\n\nexport function getFirstAvailableFCId(\n variant: VariantWithInventory,\n quantity: number = 1\n): string | undefined {\n const inv = variant?.inventory?.find(i => i.available >= quantity);\n return inv?.location_id;\n}\n","import type {\n Stripe,\n StripeElements,\n StripeElementsOptions,\n StripePaymentElement,\n} from \"@stripe/stripe-js\";\n\nexport interface StripeConfirmationTokenControllerConfig {\n publishableKey: string;\n connectedAccountId?: string;\n amount: number;\n currency: string;\n appearance?: StripeElementsOptions[\"appearance\"];\n setupFutureUsage?: \"off_session\" | \"on_session\";\n}\n\nexport interface StripeConfirmationTokenOptions {\n return_url?: string;\n billing_details?: {\n name?: string | null;\n email?: string | null;\n phone?: string | null;\n };\n}\n\nexport interface StripeConfirmationTokenResult {\n confirmation_token_id: string;\n return_url?: string;\n}\n\nexport interface StripeConfirmationTokenController {\n mount(target: string | HTMLElement): void;\n update(input: { amount?: number; currency?: string }): void;\n createConfirmationToken(\n options?: StripeConfirmationTokenOptions,\n ): Promise<StripeConfirmationTokenResult>;\n handleNextAction(clientSecret: string): Promise<void>;\n destroy(): void;\n}\n\ntype StripeLoader = (\n publishableKey: string,\n options?: { stripeAccount: string },\n) => PromiseLike<Stripe | null>;\n\nasync function defaultStripeLoader(\n publishableKey: string,\n options?: { stripeAccount: string },\n): Promise<Stripe | null> {\n const { loadStripe } = await import(\"@stripe/stripe-js\");\n return loadStripe(publishableKey, options);\n}\n\nfunction normalizeCurrency(currency: string): string {\n return currency.trim().toLowerCase();\n}\n\nexport async function createStripeConfirmationTokenController(\n config: StripeConfirmationTokenControllerConfig,\n stripeLoader: StripeLoader = defaultStripeLoader,\n): Promise<StripeConfirmationTokenController> {\n const stripe = await stripeLoader(\n config.publishableKey,\n config.connectedAccountId\n ? { stripeAccount: config.connectedAccountId }\n : undefined,\n );\n if (!stripe) throw new Error(\"Stripe failed to initialize\");\n\n let elements = createElements(stripe, config);\n let paymentElement: StripePaymentElement | null = elements.create(\"payment\", {\n layout: \"tabs\",\n });\n\n return {\n mount(target) {\n if (!paymentElement) {\n paymentElement = elements.create(\"payment\", { layout: \"tabs\" });\n }\n paymentElement.mount(target);\n },\n\n update(input) {\n elements.update({\n ...(input.amount !== undefined ? { amount: input.amount } : {}),\n ...(input.currency ? { currency: normalizeCurrency(input.currency) } : {}),\n });\n },\n\n async createConfirmationToken(options = {}) {\n const submitResult = await elements.submit();\n if (submitResult.error) {\n throw new Error(submitResult.error.message || \"Payment details are incomplete\");\n }\n\n const tokenInput: Parameters<Stripe[\"createConfirmationToken\"]>[0] = {\n elements,\n params: {\n ...(options.return_url ? { return_url: options.return_url } : {}),\n ...(options.billing_details\n ? { payment_method_data: { billing_details: options.billing_details } }\n : {}),\n },\n };\n const result = await stripe.createConfirmationToken(tokenInput);\n if (result.error) {\n throw new Error(result.error.message || \"Payment confirmation token failed\");\n }\n if (!result.confirmationToken?.id) {\n throw new Error(\"Stripe did not return a confirmation token\");\n }\n return {\n confirmation_token_id: result.confirmationToken.id,\n return_url: options.return_url,\n };\n },\n\n async handleNextAction(clientSecret) {\n const result = await stripe.handleNextAction({ clientSecret });\n if (result.error) {\n throw new Error(result.error.message || \"Payment authentication failed\");\n }\n },\n\n destroy() {\n paymentElement?.destroy();\n paymentElement = null;\n },\n };\n}\n\nfunction createElements(\n stripe: Stripe,\n config: StripeConfirmationTokenControllerConfig,\n): StripeElements {\n return stripe.elements({\n mode: \"payment\",\n amount: config.amount,\n currency: normalizeCurrency(config.currency),\n paymentMethodCreation: \"manual\",\n ...(config.appearance ? { appearance: config.appearance } : {}),\n ...(config.setupFutureUsage\n ? { setupFutureUsage: config.setupFutureUsage }\n : {}),\n });\n}\n","import type {\n Address,\n Block,\n EshopCartItem,\n Form,\n FormEntry,\n FormField,\n FormSchema,\n FormValue,\n FormValues,\n GeoLocation,\n Price,\n Product,\n ProductVariant,\n Provider,\n Service,\n ZoneLocation,\n} from \"../types\";\nimport type {\n AvailabilityResponse,\n ProductCheckoutItemInput,\n ServiceCheckoutItemInput,\n} from \"../types/api\";\nimport type { StorefrontDto } from \"../api/storefront\";\nimport type { ArkyServiceCartItem, ArkyServiceState, ArkyStoreClient } from \"./types\";\n\ntype StorefrontProduct = StorefrontDto<Product>;\ntype StorefrontProductVariant = StorefrontDto<ProductVariant>;\ntype StorefrontProvider = StorefrontDto<Provider>;\ntype StorefrontService = StorefrontDto<Service>;\n\nexport function readErrorMessage(error: unknown, fallback: string): string {\n if (error instanceof Error && error.message) return error.message;\n if (typeof error === \"string\" && error.length > 0) return error;\n return fallback;\n}\n\nexport function createId(prefix: string): string {\n const cryptoValue = globalThis.crypto;\n if (cryptoValue && \"randomUUID\" in cryptoValue) return cryptoValue.randomUUID();\n return `${prefix}_${Date.now()}_${Math.random().toString(36).slice(2)}`;\n}\n\nexport function firstLocalized(value: unknown, locale: string): string {\n if (typeof value === \"string\") return value;\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return \"\";\n const record = value as Record<string, unknown>;\n const localeValue = record[locale];\n if (typeof localeValue === \"string\") return localeValue;\n const englishValue = record.en;\n if (typeof englishValue === \"string\") return englishValue;\n for (const entry of Object.values(record)) {\n if (typeof entry === \"string\") return entry;\n }\n return \"\";\n}\n\nexport function findBlock(blocks: Block[] | undefined, keys: string[]): Block | null {\n return (blocks || []).find((block) => keys.includes(block.key)) || null;\n}\n\nexport function blockText(blocks: Block[] | undefined, keys: string[], locale: string): string {\n const block = findBlock(blocks, keys);\n if (!block) return \"\";\n return firstLocalized(block.value, locale);\n}\n\nexport function productName(product: StorefrontProduct, locale: string): string {\n return blockText(product.blocks, [\"name\", \"title\"], locale) || product.key || product.id;\n}\n\nexport function serviceName(service: StorefrontService, locale: string): string {\n return blockText(service.blocks, [\"name\", \"title\"], locale) || service.key || service.id;\n}\n\nexport function providerName(provider: StorefrontProvider, locale: string): string {\n return blockText(provider.blocks, [\"name\", \"title\"], locale) || provider.key || provider.id;\n}\n\nexport function entitySlug(entity: { id: string; slug?: Record<string, string> }, locale: string): string {\n return entity.slug?.[locale] || entity.slug?.en || Object.values(entity.slug || {})[0] || entity.id;\n}\n\nexport function priceForMarket(\n prices: Price[],\n market: string,\n marketCurrency: string | null | undefined,\n): Price {\n const marketKey = market.trim();\n if (!marketKey) throw new Error(\"A market is required to select a product price\");\n const currency = marketCurrency?.trim().toUpperCase();\n if (!currency) throw new Error(`Market ${marketKey} does not have an authoritative currency`);\n\n const marketPrices = prices.filter((candidate) => candidate.market === marketKey);\n if (marketPrices.length === 0) {\n throw new Error(`Product is not priced for market ${marketKey}`);\n }\n if (\n marketPrices.some(\n (candidate) =>\n !Number.isSafeInteger(candidate.amount) ||\n candidate.amount < 0 ||\n candidate.currency.trim().toUpperCase() !== currency,\n )\n ) {\n throw new Error(`Product has an invalid price for market ${marketKey}`);\n }\n\n const authorizedPrices = marketPrices.filter((candidate) => candidate.contact_list_id);\n if (authorizedPrices.length > 0) {\n return authorizedPrices.reduce((lowest, candidate) =>\n candidate.amount < lowest.amount ? candidate : lowest,\n );\n }\n\n const basePrices = marketPrices.filter((candidate) => !candidate.contact_list_id);\n if (basePrices.length !== 1) {\n throw new Error(`Product does not have one base price for market ${marketKey}`);\n }\n const price = basePrices[0];\n return price;\n}\n\nexport function availableStock(\n client: ArkyStoreClient,\n variant: StorefrontProductVariant,\n): number | undefined {\n const fromUtility = client.utils.getAvailableStock(variant);\n if (Number.isFinite(fromUtility)) return fromUtility;\n const stock = (variant.inventory || []).reduce((total, row) => total + (row.available || 0), 0);\n return stock > 0 ? stock : undefined;\n}\n\nexport function locationToAddress(location: ZoneLocation): Address {\n return {\n country: location.country || \"\",\n state: location.state || \"\",\n city: location.city || \"\",\n postal_code: location.postal_code || \"\",\n name: \"\",\n street1: \"\",\n street2: null,\n };\n}\n\nexport function createFormEntry(formId: string, fields: FormField[]): FormEntry {\n if (!formId.trim()) throw new Error(\"formId is required\");\n return { form_id: formId, fields };\n}\n\nexport function toProductCheckoutItems(items: EshopCartItem[]): ProductCheckoutItemInput[] {\n return items.map((item) => ({\n type: \"product\",\n id: item.id,\n product_id: item.product_id,\n variant_id: item.variant_id,\n quantity: item.quantity,\n }));\n}\n\nexport function toServiceCheckoutItems(items: ArkyServiceCartItem[]): ServiceCheckoutItemInput[] {\n return items.map((item) => ({\n type: \"service\",\n id: item.id,\n service_id: item.service_id,\n provider_id: item.provider_id,\n slots: [...item.slots].sort((a, b) => a.from - b.from),\n forms: item.forms,\n }));\n}\n\nfunction formValueError(field: FormSchema, message: string): Error {\n return new Error(`Invalid value for form field '${field.key}': ${message}`);\n}\n\nfunction isValidGeoLocation(value: unknown): value is GeoLocation {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n const location = value as GeoLocation;\n if (location.label !== undefined && location.label !== null && typeof location.label !== \"string\") {\n return false;\n }\n const coordinates = location.coordinates;\n if (!coordinates || typeof coordinates !== \"object\") return false;\n return (\n Number.isFinite(coordinates.lat) &&\n Number.isFinite(coordinates.lon) &&\n coordinates.lat >= -90 &&\n coordinates.lat <= 90 &&\n coordinates.lon >= -180 &&\n coordinates.lon <= 180\n );\n}\n\nfunction buildFormField(field: FormSchema, value: FormValue): FormField {\n const common = { id: field.id, key: field.key };\n switch (field.type) {\n case \"text\":\n if (typeof value !== \"string\") throw formValueError(field, \"expected text\");\n if (field.required && value.trim().length === 0) throw formValueError(field, \"required text is blank\");\n return { ...common, type: \"text\", value };\n case \"number\":\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\n throw formValueError(field, \"expected a finite number\");\n }\n if (field.min !== null && field.min !== undefined && value < field.min) {\n throw formValueError(field, `must be at least ${field.min}`);\n }\n if (field.max !== null && field.max !== undefined && value > field.max) {\n throw formValueError(field, `must be at most ${field.max}`);\n }\n return { ...common, type: \"number\", value };\n case \"boolean\":\n if (typeof value !== \"boolean\") throw formValueError(field, \"expected a boolean\");\n return { ...common, type: \"boolean\", value };\n case \"date\":\n if (typeof value !== \"number\" || !Number.isSafeInteger(value)) {\n throw formValueError(field, \"expected an integer timestamp\");\n }\n return { ...common, type: \"date\", value };\n case \"geo_location\":\n if (!isValidGeoLocation(value)) throw formValueError(field, \"expected valid coordinates\");\n return { ...common, type: \"geo_location\", value };\n case \"select\": {\n if (!Array.isArray(value) || value.some((item) => typeof item !== \"string\")) {\n throw formValueError(field, \"expected a list of options\");\n }\n const selected = value as string[];\n if (field.required && selected.length === 0) throw formValueError(field, \"at least one option is required\");\n if (new Set(selected).size !== selected.length || selected.some((item) => !field.options.includes(item))) {\n throw formValueError(field, \"contains an unknown or duplicate option\");\n }\n return { ...common, type: \"select\", value: selected };\n }\n }\n}\n\nfunction isEmptyOptionalValue(field: FormSchema, value: FormValue): boolean {\n if (field.required) return false;\n if (field.type === \"text\") return value === \"\";\n if (field.type === \"select\") return Array.isArray(value) && value.length === 0;\n if (field.type === \"geo_location\") {\n return Boolean(value && typeof value === \"object\" && !Array.isArray(value) && Object.keys(value).length === 0);\n }\n return false;\n}\n\nexport function buildFormFields(schema: FormSchema[], values: FormValues): FormField[] {\n const knownKeys = new Set(schema.map((field) => field.key));\n const unknownKey = Object.keys(values).find((key) => !knownKeys.has(key));\n if (unknownKey) throw new Error(`Form field '${unknownKey}' is not defined by the form schema`);\n\n const fields: FormField[] = [];\n for (const field of schema) {\n const value = values[field.key];\n if (value === undefined) {\n if (field.required) throw formValueError(field, \"required value is missing\");\n continue;\n }\n if (isEmptyOptionalValue(field, value)) continue;\n fields.push(buildFormField(field, value));\n }\n return fields;\n}\n\nexport function createFormEntryFromValues(\n form: Pick<Form, \"id\" | \"schema\">,\n values: FormValues,\n): FormEntry {\n return createFormEntry(form.id, buildFormFields(form.schema, values));\n}\n\nexport function getFormBlockType(field: FormSchema): string {\n if (field.key === \"email\") return \"email\";\n if (field.key === \"phone\") return \"phone\";\n if (field.type === \"geo_location\") return \"address\";\n return field.type;\n}\n\nexport function getFormBlockValue(field: FormSchema): unknown {\n if (field.type === \"boolean\") return false;\n if (field.type === \"select\") return [];\n if (field.type === \"geo_location\") return {};\n if (field.type === \"number\" || field.type === \"date\") return undefined;\n return \"\";\n}\n\nexport function formSchemaToBlock(field: FormSchema): Block {\n const min = field.type === \"number\" ? field.min : undefined;\n const max = field.type === \"number\" ? field.max : undefined;\n const options = field.type === \"select\" ? field.options : undefined;\n return {\n id: field.id,\n key: field.key,\n type: getFormBlockType(field),\n properties: {\n isRequired: field.required,\n minValues: field.required ? 1 : 0,\n min,\n max,\n options,\n pattern: field.key === \"email\" ? \"^.+@.+\\\\..+$\" : field.key === \"phone\" ? \"^.{6,20}$\" : undefined,\n },\n value: getFormBlockValue(field),\n };\n}\n\nexport function formatServiceTime(ts: number, tz: string): string {\n return new Date(ts * 1000).toLocaleTimeString([], {\n hour: \"2-digit\",\n minute: \"2-digit\",\n timeZone: tz,\n });\n}\n\nexport function formatServiceSlotTime(from: number, to: number, tz: string): string {\n return `${formatServiceTime(from, tz)} - ${formatServiceTime(to, tz)}`;\n}\n\nexport function getSlotsForDate(\n availability: AvailabilityResponse | null,\n dateStr: string,\n providerId?: string | null,\n): { from: number; to: number; providerId: string }[] {\n if (!availability) return [];\n const slots: { from: number; to: number; providerId: string }[] = [];\n for (const provider of availability.providers) {\n if (providerId && provider.provider_id !== providerId) continue;\n const day = provider.days.find((candidate) => candidate.date === dateStr);\n if (!day) continue;\n for (const slot of day.slots) {\n if (slot.spots > 0) slots.push({ from: slot.from, to: slot.to, providerId: provider.provider_id });\n }\n }\n return slots.sort((a, b) => a.from - b.from);\n}\n\nexport function hasAvailableSlotsForDate(\n availability: AvailabilityResponse | null,\n dateStr: string,\n providerId?: string | null,\n): boolean {\n if (!availability) return false;\n return availability.providers.some((provider) => {\n if (providerId && provider.provider_id !== providerId) return false;\n const day = provider.days.find((candidate) => candidate.date === dateStr);\n return !!day?.slots.some((slot) => slot.spots > 0);\n });\n}\n\nexport const SERVICE_WEEKDAYS = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"];\n\nexport function createServiceInitialState(): ArkyServiceState {\n return {\n service: null,\n availability: null,\n providers: [],\n serviceProviders: [],\n selectedProviderId: null,\n currentMonth: new Date(new Date().getFullYear(), new Date().getMonth(), 1),\n calendar: [],\n selectedDate: null,\n slots: [],\n selectedSlot: null,\n timezone: typeof window !== \"undefined\" ? Intl.DateTimeFormat().resolvedOptions().timeZone : \"UTC\",\n tzGroups: {},\n loading: false,\n weekdays: SERVICE_WEEKDAYS,\n quote: null,\n fetchingQuote: false,\n quoteError: null,\n currency: null,\n dateTimeConfirmed: false,\n availablePaymentMethods: [],\n cartId: null,\n promoCode: null,\n };\n}\n\nexport function normalizeTimezoneGroups(\n groups: { label: string; zones: { label: string; value: string }[] }[],\n): Record<string, { zone: string; name: string }[]> {\n const normalized: Record<string, { zone: string; name: string }[]> = {};\n for (const group of groups) {\n normalized[group.label] = group.zones.map((zone) => ({\n zone: zone.value,\n name: zone.label,\n }));\n }\n return normalized;\n}\n","import { atom, computed, map } from \"nanostores\";\nimport { createStorefront, type ContactSession, type StorefrontIdentifyResult } from \"../index\";\nimport type {\n StorefrontDto,\n StorefrontMarket,\n StorefrontSetup,\n} from \"../api/storefront\";\nimport type {\n Address,\n Block,\n Cart,\n EshopCartItem,\n CollectionEntry,\n Form,\n FormEntry,\n FormSubmission,\n OrderCheckoutResult,\n OrderQuote,\n PaginatedResponse,\n PaymentMethod,\n Price,\n Product,\n ProductVariant,\n Provider,\n Service,\n ServiceProvider,\n ZoneLocation,\n} from \"../types\";\nimport type {\n AvailabilityResponse,\n OrderCheckoutItemInput,\n FindServiceProvidersParams,\n GetAvailabilityParams,\n GetCollectionParams,\n GetEntriesParams,\n GetEntryParams,\n GetFormParams,\n GetProductParams,\n GetProductsParams,\n GetProviderParams,\n GetProvidersParams,\n GetServiceParams,\n GetServicesParams,\n ProductCheckoutItemInput,\n RequestOptions,\n ServiceCheckoutItemInput,\n SlotRange,\n SubmitFormParams,\n} from \"../types/api\";\nimport type { ExperimentUseResponse, StorefrontAction, TrackActionParams, UseExperimentParams } from \"../api/storefront\";\nimport type {\n ArkyCalendarDay,\n ArkyCmsEntryParams,\n ArkyCartInput,\n ArkyCartStatus,\n ArkyCmsState,\n ArkyEshopState,\n ArkyLastOrder,\n ArkyServiceCartItem,\n ArkyServiceFormGroup,\n ArkyServiceFormState,\n ArkyServiceSlot,\n ArkyServiceState,\n ArkyStoreContext,\n ArkyStoreConfig,\n ArkyStripePaymentMountOptions,\n ArkySubmitFormByKeyParams,\n} from \"./types\";\nimport { createStripeConfirmationTokenController, type StripeConfirmationTokenController } from \"../payments/stripe\";\nimport {\n availableStock,\n createFormEntryFromValues,\n createFormEntry,\n createId,\n createServiceInitialState,\n entitySlug,\n formSchemaToBlock,\n formatServiceSlotTime,\n getSlotsForDate,\n hasAvailableSlotsForDate,\n locationToAddress,\n normalizeTimezoneGroups,\n priceForMarket,\n productName,\n providerName,\n readErrorMessage,\n serviceName,\n toProductCheckoutItems,\n toServiceCheckoutItems,\n} from \"./utils\";\n\ntype StorefrontParams<T> = T extends unknown\n ? Omit<T, \"store_id\" | \"market\">\n : never;\ntype StorefrontCart = StorefrontDto<Cart>;\ntype StorefrontCollectionEntry = StorefrontDto<CollectionEntry>;\ntype StorefrontForm = StorefrontDto<Form>;\ntype StorefrontFormSubmission = StorefrontDto<FormSubmission>;\ntype StorefrontOrderCheckoutResult = StorefrontDto<OrderCheckoutResult>;\ntype StorefrontOrderQuote = StorefrontDto<OrderQuote>;\ntype StorefrontProduct = StorefrontDto<Product>;\ntype StorefrontProductVariant = StorefrontDto<ProductVariant>;\ntype StorefrontProvider = StorefrontDto<Provider>;\ntype StorefrontService = StorefrontDto<Service>;\ntype StorefrontServiceProvider = StorefrontDto<ServiceProvider>;\ntype StorefrontPage<T> = StorefrontDto<PaginatedResponse<T>>;\n\nfunction firstFiniteNumber(...values: Array<number | null | undefined>): number | undefined {\n return values.find((value): value is number => typeof value === \"number\" && Number.isFinite(value));\n}\n\nfunction initializeStoreCore(\n publishableKey: string,\n config: ArkyStoreConfig,\n scopedClient?: ReturnType<typeof createStorefront>,\n) {\n const client = scopedClient || createStorefront(publishableKey, config);\n const session = atom<ContactSession | null>(client.session);\n const setup = atom<StorefrontSetup | null>(null);\n const locale = atom(config.locale || client.getLocale());\n const market_key = atom(config.market || client.getMarket());\n const market = computed([setup, market_key], (setupValue, marketKey) => {\n const resolvedKey = marketKey || setupValue?.markets.default;\n return setupValue?.markets.available.find((candidate) => candidate.key === resolvedKey) || null;\n });\n const currency = computed(market, (value) => value?.currency || null);\n const allowed_payment_methods = computed(market, (value) => value?.payment_methods || []);\n const payment_config = computed([setup, market], (setupValue, marketValue) => {\n const methods = marketValue?.payment_methods || [];\n const hasCreditCard = methods.some((method: PaymentMethod) => method.type === \"credit_card\");\n return {\n provider: setupValue?.payment || null,\n enabled: hasCreditCard && Boolean(setupValue?.readiness.payment),\n };\n });\n\n const cart = atom<StorefrontCart | null>(null);\n const product_items = atom<EshopCartItem[]>([]);\n const service_items = atom<ArkyServiceCartItem[]>([]);\n const quote = atom<StorefrontOrderQuote | null>(null);\n const promo_code = atom<string | null>(null);\n const last_order = atom<ArkyLastOrder | null>(null);\n const payment_controller = atom<StripeConfirmationTokenController | null>(null);\n const payment_ready = computed(payment_controller, (value) => value !== null);\n const cart_status = map<ArkyCartStatus>({\n loading: false,\n syncing: false,\n fetching_quote: false,\n processing_checkout: false,\n error: null,\n quote_error: null,\n selected_shipping_method_id: null,\n user_token: null,\n });\n\n function rawProductItemCount(value: StorefrontCart | null): number {\n return (value?.items || []).reduce((total, item) => {\n if (item.type !== \"product\") return total;\n return total + (item.quantity || 0);\n }, 0);\n }\n\n function rawServiceItemCount(value: StorefrontCart | null): number {\n return (value?.items || []).reduce((total, item) => {\n if (item.type !== \"service\") return total;\n return total + Math.max(1, item.slots?.length || 0);\n }, 0);\n }\n\n const product_item_count = computed([cart, product_items], (cartValue, items) =>\n Math.max(\n rawProductItemCount(cartValue),\n items.reduce((total, item) => total + (item.quantity || 0), 0),\n ),\n );\n const service_item_count = computed([cart, service_items], (cartValue, items) =>\n Math.max(\n rawServiceItemCount(cartValue),\n items.reduce((total, item) => total + Math.max(1, item.slots.length), 0),\n ),\n );\n const item_count = computed([cart, product_item_count, service_item_count], (cartValue, products, services) =>\n Math.max(cartValue?.item_count || 0, products + services),\n );\n const snapshot = computed([cart, product_items, service_items, item_count], (cartValue, products, services, count) => ({\n cart: cartValue,\n product_items: products,\n service_items: services,\n item_count: count,\n }));\n let cartWriteRevision = 0;\n let sessionRequest: Promise<ContactSession | null> | null = null;\n let cartRequest: Promise<StorefrontCart> | null = null;\n\n function nextCartWriteRevision(): number {\n cartWriteRevision += 1;\n return cartWriteRevision;\n }\n\n const cms_state = map<ArkyCmsState>({\n entries: {},\n forms: {},\n loading: false,\n error: null,\n });\n const eshop_state = map<ArkyEshopState>({\n products: [],\n services: [],\n providers: [],\n product_cursor: null,\n service_cursor: null,\n provider_cursor: null,\n availability: null,\n loading_products: false,\n loading_services: false,\n loading_providers: false,\n loading_availability: false,\n error: null,\n });\n const service_state = map<ArkyServiceState>(createServiceInitialState());\n const service_form_definitions = new Map<string, StorefrontForm>();\n const service_form_state = map<ArkyServiceFormState>({\n provider_id: null,\n groups: [],\n loading: false,\n error: null,\n });\n const service_form_groups = computed(service_form_state, (state) => state.groups);\n const service_form_blocks = computed(service_form_groups, (groups) => groups.flatMap((group) => group.blocks));\n\n client.onAuthStateChanged((value) => session.set(value));\n currency.subscribe((value) => service_state.setKey(\"currency\", value));\n market.subscribe((value) => {\n const methods = value?.payment_methods || [];\n if (methods.length && service_state.get().availablePaymentMethods.length === 0) {\n service_state.setKey(\"availablePaymentMethods\", methods);\n }\n });\n\n function currentMarketKey(): string {\n return market_key.get() || client.getMarket() || setup.get()?.markets.default || \"\";\n }\n\n function currentLocale(): string {\n return locale.get() || client.getLocale() || setup.get()?.languages.default || \"en\";\n }\n\n function currentStripePublishableKey(): string | null {\n const provider = payment_config.get()?.provider;\n return provider?.publishable_key || null;\n }\n\n function currentStripeConnectedAccountId(): string | null {\n const provider = payment_config.get()?.provider;\n return provider?.connected_account_id || null;\n }\n\n function currentPaymentAmount(): number {\n return Math.max(\n 0,\n firstFiniteNumber(quote.get()?.charge_amount, cart.get()?.quote_snapshot?.charge_amount, cart.get()?.quote_snapshot?.total) ?? 0,\n );\n }\n\n function currentPaymentCurrency(): string | null {\n return quote.get()?.money?.currency?.trim() || cart.get()?.quote_snapshot?.money?.currency?.trim() || null;\n }\n\n function setPaymentController(controller: StripeConfirmationTokenController | null): StripeConfirmationTokenController | null {\n const current = payment_controller.get();\n if (current && current !== controller) {\n current.destroy();\n }\n payment_controller.set(controller);\n return controller;\n }\n\n function destroyPaymentController(): void {\n setPaymentController(null);\n }\n\n async function loadSetup(): Promise<StorefrontSetup> {\n const current = setup.get();\n if (current) return current;\n const result = await client.getSetup();\n setup.set(result);\n if (!market_key.get() && result.markets.default) {\n market_key.set(result.markets.default);\n }\n if (!locale.get() && result.languages.default) {\n locale.set(result.languages.default);\n }\n return result;\n }\n\n async function mountPayment(\n target: string | HTMLElement,\n options: ArkyStripePaymentMountOptions = {},\n ): Promise<StripeConfirmationTokenController> {\n await loadSetup();\n const publishableKey = currentStripePublishableKey();\n if (!publishableKey) {\n throw new Error(\"Stripe card payment is not configured for this Store\");\n }\n const hasExplicitAmount = options.amount !== undefined;\n const hasExplicitCurrency = Boolean(options.currency?.trim());\n if (hasExplicitAmount !== hasExplicitCurrency) {\n throw new Error(\"Stripe amount and currency must be supplied together\");\n }\n const amount = hasExplicitAmount ? options.amount! : currentPaymentAmount();\n if (!Number.isSafeInteger(amount) || amount <= 0) {\n throw new Error(\"A positive minor-unit payment amount is required to mount card payment\");\n }\n const paymentCurrency = hasExplicitCurrency ? options.currency!.trim() : currentPaymentCurrency();\n if (!paymentCurrency || !/^[a-z]{3}$/i.test(paymentCurrency)) {\n throw new Error(\"An explicit three-letter payment currency is required to mount card payment\");\n }\n const controller = await createStripeConfirmationTokenController({\n publishableKey,\n connectedAccountId: currentStripeConnectedAccountId() || undefined,\n amount,\n currency: paymentCurrency,\n ...(options.appearance ? { appearance: options.appearance } : {}),\n ...(options.setupFutureUsage\n ? { setupFutureUsage: options.setupFutureUsage }\n : {}),\n });\n controller.mount(target);\n setPaymentController(controller);\n return controller;\n }\n\n function updatePaymentController(input: { amount?: number; currency?: string }): void {\n payment_controller.get()?.update(input);\n }\n\n async function ensureSession(): Promise<ContactSession | null> {\n const current = session.get();\n if (client.isAuthenticated) return current;\n if (!sessionRequest) {\n sessionRequest = identify().finally(() => {\n sessionRequest = null;\n });\n }\n return sessionRequest;\n }\n\n async function identify(params: { email?: string; verify?: boolean; market?: string } = {}): Promise<StorefrontIdentifyResult> {\n if (params.market) setMarket(params.market);\n const result = await client.identify({\n ...params,\n market: params.market || currentMarketKey(),\n });\n session.set({\n contact: result.contact,\n });\n return result;\n }\n\n async function identifyContactEmailIfMissing(email: string): Promise<ContactSession> {\n const normalizedEmail = email.trim().toLowerCase();\n if (!normalizedEmail) throw new Error(\"Contact email is required\");\n\n const current = session.get();\n if (current?.contact.email === normalizedEmail) return current;\n return identify({ email: normalizedEmail });\n }\n\n function setMarket(key: string): void {\n const next = key.trim();\n const current = currentMarketKey();\n if (\n next &&\n current &&\n next !== current &&\n (cart.get()?.item_count || item_count.get()) > 0\n ) {\n throw Object.assign(\n new Error(\"Market cannot change while the cart contains items\"),\n { code: \"CART_MARKET_LOCKED\" },\n );\n }\n market_key.set(next);\n client.setMarket(next);\n }\n\n function setLocale(value: string): void {\n locale.set(value);\n client.setLocale(value);\n }\n\n function setContext(context: ArkyStoreContext): void {\n if (context.market !== undefined) setMarket(context.market);\n if (context.locale !== undefined) setLocale(context.locale);\n }\n\n async function ensureCart(): Promise<StorefrontCart> {\n if (cartRequest) return cartRequest;\n\n cart_status.setKey(\"loading\", true);\n cart_status.setKey(\"error\", null);\n const refreshRevision = cartWriteRevision;\n cartRequest = (async () => {\n await ensureSession();\n const response = await client.eshop.cart.current();\n await applyCartResponse(response, { ifRevision: refreshRevision });\n return response;\n })();\n\n try {\n return await cartRequest;\n } catch (error) {\n cart_status.setKey(\"error\", readErrorMessage(error, \"Failed to load cart.\"));\n throw error;\n } finally {\n cartRequest = null;\n cart_status.setKey(\"loading\", false);\n }\n }\n\n async function buildProductCartItem(\n item: ProductCheckoutItemInput,\n source: StorefrontCart,\n productHint?: StorefrontProduct,\n ): Promise<EshopCartItem | null> {\n try {\n const product =\n productHint?.id === item.product_id\n ? productHint\n : await client.eshop.product.get({ id: item.product_id });\n const variant = product.variants.find(\n (candidate) => candidate.id === item.variant_id,\n );\n if (!variant) {\n cart_status.setKey(\n \"error\",\n `Cart product ${item.product_id} references unavailable variant ${item.variant_id}.`,\n );\n return null;\n }\n return {\n id: item.id || createId(\"product\"),\n product_id: product.id,\n variant_id: variant.id,\n product_name: productName(product, currentLocale()),\n product_slug: entitySlug(product, currentLocale()),\n variant_attributes: variant.attributes as EshopCartItem[\"variant_attributes\"],\n requires_shipping: variant.requires_shipping !== false,\n price: priceForMarket(variant.prices, currentMarketKey(), market.get()?.currency),\n quantity: item.quantity,\n added_at: source.created_at ? source.created_at * 1000 : Date.now(),\n max_stock: availableStock(client, variant),\n };\n } catch (error) {\n cart_status.setKey(\n \"error\",\n readErrorMessage(\n error,\n `Failed to load cart product ${item.product_id}.`,\n ),\n );\n return null;\n }\n }\n\n async function buildServiceCartItems(items: ServiceCheckoutItemInput[]): Promise<ArkyServiceCartItem[]> {\n const rows: ArkyServiceCartItem[] = [];\n for (const item of items) {\n let service: StorefrontService | null = null;\n let provider: StorefrontProvider | null = null;\n try {\n service = await client.eshop.service.get({ id: item.service_id });\n } catch {}\n try {\n provider = await client.eshop.provider.get({ id: item.provider_id });\n } catch {}\n rows.push({\n id: item.id || createId(\"service\"),\n service_id: item.service_id,\n provider_id: item.provider_id,\n slots: item.slots,\n forms: item.forms || [],\n service_name: service ? serviceName(service, currentLocale()) : item.service_id,\n provider_name: provider ? providerName(provider, currentLocale()) : item.provider_id,\n });\n }\n return rows;\n }\n\n async function applyCartResponse(\n response: StorefrontCart,\n options: { ifRevision?: number; productHint?: StorefrontProduct } = {},\n ): Promise<StorefrontCart> {\n if (options.ifRevision !== undefined && options.ifRevision !== cartWriteRevision) {\n return cart.get() || response;\n }\n cart.set(response);\n cart_status.setKey(\"user_token\", response.token || null);\n cart_status.setKey(\"selected_shipping_method_id\", response.shipping_method_id || null);\n promo_code.set(response.promo_code || null);\n quote.set(response.quote_snapshot || null);\n\n const items = response.items || [];\n if (items.length > 0) await loadSetup();\n const products = await Promise.all(\n items\n .filter((item): item is ProductCheckoutItemInput => item.type === \"product\")\n .map((item) => buildProductCartItem(item, response, options.productHint)),\n );\n const services = await buildServiceCartItems(items.filter((item): item is ServiceCheckoutItemInput => item.type === \"service\"));\n product_items.set(products.filter((item): item is EshopCartItem => item !== null));\n service_items.set(services);\n return response;\n }\n\n function checkoutItems(input: ArkyCartInput = {}): OrderCheckoutItemInput[] {\n return [\n ...toProductCheckoutItems(input.product_items || product_items.get()),\n ...toServiceCheckoutItems(input.service_items || service_items.get()),\n ];\n }\n\n async function syncCart(\n input: ArkyCartInput = {},\n writeRevision = nextCartWriteRevision(),\n ): Promise<StorefrontCart> {\n cart_status.setKey(\"syncing\", true);\n cart_status.setKey(\"error\", null);\n try {\n const current = cart.get() || (await ensureCart());\n const response = await client.eshop.cart.update({\n id: current.id,\n items: checkoutItems(input),\n shipping_address: input.shipping_address,\n billing_address: input.billing_address,\n forms: input.forms,\n promo_code:\n input.promo_code === null\n ? \"\"\n : input.promo_code === undefined\n ? promo_code.get() || undefined\n : input.promo_code,\n payment_method_key: input.payment_method_key === null ? \"\" : input.payment_method_key,\n shipping_method_id:\n input.shipping_method_id === null\n ? \"\"\n : input.shipping_method_id === undefined\n ? cart_status.get().selected_shipping_method_id || undefined\n : input.shipping_method_id,\n });\n await applyCartResponse(response, { ifRevision: writeRevision });\n return response;\n } catch (error) {\n cart_status.setKey(\"error\", readErrorMessage(error, \"Failed to sync cart.\"));\n throw error;\n } finally {\n cart_status.setKey(\"syncing\", false);\n }\n }\n\n async function addProduct(\n product: StorefrontProduct,\n variant: StorefrontProductVariant,\n quantity = 1,\n ): Promise<StorefrontCart> {\n cart_status.setKey(\"error\", null);\n const writeRevision = nextCartWriteRevision();\n try {\n const current = cart.get() || (await ensureCart());\n const response = await client.eshop.cart.addItem({\n id: current.id,\n item: {\n type: \"product\",\n product_id: product.id,\n variant_id: variant.id,\n quantity,\n },\n });\n await applyCartResponse(response, { ifRevision: writeRevision, productHint: product });\n return response;\n } catch (error) {\n cart_status.setKey(\"error\", readErrorMessage(error, \"Failed to add product to cart.\"));\n throw error;\n }\n }\n\n async function setProductQuantity(itemId: string, quantity: number): Promise<StorefrontCart> {\n const writeRevision = nextCartWriteRevision();\n const next = product_items.get().map((item) => {\n if (item.id !== itemId) return item;\n const bounded = item.max_stock ? Math.min(Math.max(1, quantity), item.max_stock) : Math.max(1, quantity);\n return { ...item, quantity: bounded };\n });\n product_items.set(next);\n return syncCart({ product_items: next }, writeRevision);\n }\n\n async function removeProduct(itemId: string): Promise<StorefrontCart | null> {\n const writeRevision = nextCartWriteRevision();\n const item = product_items.get().find((candidate) => candidate.id === itemId);\n product_items.set(product_items.get().filter((candidate) => candidate.id !== itemId));\n const current = cart.get();\n if (!current || !item) return null;\n const response = await client.eshop.cart.removeItem({\n id: current.id,\n item_id: item.id,\n });\n await applyCartResponse(response, { ifRevision: writeRevision });\n return response;\n }\n\n async function addServiceItem(item: ArkyServiceCartItem): Promise<StorefrontCart> {\n const writeRevision = nextCartWriteRevision();\n const next = [...service_items.get(), item];\n service_items.set(next);\n return syncCart({ service_items: next }, writeRevision);\n }\n\n async function removeServiceItem(itemId: string): Promise<StorefrontCart> {\n const writeRevision = nextCartWriteRevision();\n const next = service_items.get().filter((item) => item.id !== itemId);\n service_items.set(next);\n return syncCart({ service_items: next }, writeRevision);\n }\n\n async function clearCart(): Promise<StorefrontCart | null> {\n const writeRevision = nextCartWriteRevision();\n const current = cart.get();\n clearLocalCart();\n if (!current) return null;\n const response = await client.eshop.cart.clear({ id: current.id });\n await applyCartResponse(response, { ifRevision: writeRevision });\n return response;\n }\n\n function clearLocalCart(): void {\n product_items.set([]);\n service_items.set([]);\n cart.set(null);\n quote.set(null);\n promo_code.set(null);\n cart_status.setKey(\"selected_shipping_method_id\", null);\n }\n\n async function fetchQuote(input: ArkyCartInput = {}): Promise<StorefrontOrderQuote | null> {\n if (checkoutItems(input).length === 0) {\n quote.set(null);\n return null;\n }\n cart_status.setKey(\"fetching_quote\", true);\n cart_status.setKey(\"quote_error\", null);\n try {\n const current = await syncCart(input);\n const response = await client.eshop.cart.quote({ id: current.id });\n quote.set(response);\n return response;\n } catch (error) {\n quote.set(null);\n cart_status.setKey(\"quote_error\", readErrorMessage(error, \"Failed to fetch quote.\"));\n throw error;\n } finally {\n cart_status.setKey(\"fetching_quote\", false);\n }\n }\n\n async function checkout(\n input: ArkyCartInput = {},\n ): Promise<StorefrontOrderCheckoutResult> {\n if (checkoutItems(input).length === 0) throw new Error(\"Cart is empty\");\n cart_status.setKey(\"processing_checkout\", true);\n cart_status.setKey(\"error\", null);\n try {\n const current = await syncCart(input);\n const quoteValue = quote.get();\n const paymentMethodKey = input.payment_method_key || current.payment_method_key || quoteValue?.money?.payment_method_key || undefined;\n let chargeAmount = firstFiniteNumber(quoteValue?.charge_amount, current.quote_snapshot?.charge_amount);\n if (paymentMethodKey === \"credit_card\" && chargeAmount === undefined) {\n const latestQuote = await client.eshop.cart.quote({ id: current.id });\n quote.set(latestQuote);\n chargeAmount = firstFiniteNumber(latestQuote.charge_amount, latestQuote.total);\n }\n if (\n paymentMethodKey === \"credit_card\" &&\n (typeof chargeAmount !== \"number\" || !Number.isSafeInteger(chargeAmount) || chargeAmount < 0)\n ) {\n throw new Error(\"Card checkout requires a non-negative integer charge amount in minor units\");\n }\n const needsConfirmationToken = paymentMethodKey === \"credit_card\" && typeof chargeAmount === \"number\" && chargeAmount > 0;\n let confirmationTokenId: string | undefined;\n let returnUrl = input.return_url;\n const paymentController = input.payment ?? payment_controller.get();\n\n if (needsConfirmationToken) {\n if (!paymentController) throw new Error(\"Payment controller is required for card checkout\");\n returnUrl = returnUrl || (typeof window !== \"undefined\" ? window.location.href : undefined);\n const token = await paymentController.createConfirmationToken({\n return_url: returnUrl,\n billing_details: input.billing_details,\n });\n confirmationTokenId = token.confirmation_token_id;\n returnUrl = token.return_url || returnUrl;\n }\n\n const response = await client.eshop.cart.checkout({\n id: current.id,\n payment_method_key: paymentMethodKey,\n confirmation_token_id: confirmationTokenId,\n return_url: returnUrl,\n });\n\n if (response.payment_action.type === \"handle_next_action\") {\n if (!paymentController) throw new Error(\"Payment controller is required for card authentication\");\n await paymentController.handleNextAction(response.payment_action.client_secret);\n }\n\n const stored: ArkyLastOrder = {\n order_id: response.order_id,\n number: response.number,\n payment_action: response.payment_action,\n payment: response.payment,\n product_items: input.product_items || product_items.get(),\n service_items: input.service_items || service_items.get(),\n shipping_address: input.shipping_address || null,\n billing_address: input.billing_address || null,\n total: response.payment.amount,\n currency: response.payment.currency,\n payment_method_key: paymentMethodKey || null,\n created_at: Date.now(),\n };\n last_order.set(stored);\n if (input.clear_after_checkout !== false) {\n clearLocalCart();\n }\n return response;\n } catch (error) {\n cart_status.setKey(\"error\", readErrorMessage(error, \"Checkout failed.\"));\n throw error;\n } finally {\n cart_status.setKey(\"processing_checkout\", false);\n }\n }\n\n function serviceCalendar(): ArkyCalendarDay[] {\n const state = service_state.get();\n const { currentMonth, selectedDate, availability, selectedProviderId } = state;\n const year = currentMonth.getFullYear();\n const monthIndex = currentMonth.getMonth();\n const first = new Date(year, monthIndex, 1);\n const last = new Date(year, monthIndex + 1, 0);\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n\n const cells: ArkyCalendarDay[] = [];\n const pad = (first.getDay() + 6) % 7;\n for (let i = 0; i < pad; i++) {\n cells.push({\n date: new Date(0),\n iso: \"\",\n available: false,\n isSelected: false,\n isInRange: false,\n isToday: false,\n blank: true,\n });\n }\n\n for (let day = 1; day <= last.getDate(); day++) {\n const date = new Date(year, monthIndex, day);\n const iso = `${year}-${String(monthIndex + 1).padStart(2, \"0\")}-${String(day).padStart(2, \"0\")}`;\n cells.push({\n date,\n iso,\n available: hasAvailableSlotsForDate(availability, iso, selectedProviderId),\n isSelected: iso === selectedDate,\n isInRange: false,\n isToday: date.getTime() === today.getTime(),\n blank: false,\n });\n }\n\n const suffix = (7 - (cells.length % 7)) % 7;\n for (let i = 0; i < suffix; i++) {\n cells.push({\n date: new Date(0),\n iso: \"\",\n available: false,\n isSelected: false,\n isInRange: false,\n isToday: false,\n blank: true,\n });\n }\n\n return cells;\n }\n\n function computeServiceSlots(dateStr: string): ArkyServiceSlot[] {\n const state = service_state.get();\n const { availability, selectedProviderId, timezone, service } = state;\n return getSlotsForDate(availability, dateStr, selectedProviderId).map((slot, index) => ({\n id: `${service?.id || \"service\"}-${slot.from}-${index}`,\n serviceId: service?.id || \"\",\n providerId: slot.providerId,\n from: slot.from,\n to: slot.to,\n timeText: formatServiceSlotTime(slot.from, slot.to, timezone),\n dateText: new Date(slot.from * 1000).toLocaleDateString([], {\n weekday: \"short\",\n month: \"short\",\n day: \"numeric\",\n timeZone: timezone,\n }),\n }));\n }\n\n function toServiceCartItem(slots: ArkyServiceSlot[], forms: FormEntry[] = []): ArkyServiceCartItem {\n const orderedSlots = [...slots].sort((left, right) => left.from - right.from || left.to - right.to);\n const [first] = orderedSlots;\n if (!first) throw new Error(\"At least one service slot is required\");\n if (orderedSlots.some((slot) => slot.serviceId !== first.serviceId || slot.providerId !== first.providerId)) {\n throw new Error(\"A booking can only contain slots for one service and provider\");\n }\n if (orderedSlots.some((slot) => !Number.isSafeInteger(slot.from) || !Number.isSafeInteger(slot.to) || slot.from >= slot.to)) {\n throw new Error(\"A booking contains an invalid service slot\");\n }\n for (let index = 1; index < orderedSlots.length; index += 1) {\n if (orderedSlots[index - 1].to !== orderedSlots[index].from) {\n throw new Error(\"A multi-slot booking must contain adjacent slots\");\n }\n }\n return {\n id: createId(\"booking\"),\n service_id: first.serviceId,\n provider_id: first.providerId,\n slots: orderedSlots.map(({ from, to }) => ({ from, to })),\n forms,\n service_name: first.serviceName,\n date_text: first.dateText,\n time_text: first.timeText,\n is_multi_day: orderedSlots.length > 1,\n };\n }\n\n async function syncServiceCart(items: ArkyServiceCartItem[]): Promise<StorefrontCart> {\n try {\n return await syncCart({\n product_items: product_items.get(),\n service_items: items,\n });\n } catch (error) {\n service_state.setKey(\"quoteError\", readErrorMessage(error, \"Failed to sync service cart.\"));\n throw error;\n }\n }\n\n function serviceCurrentStepName(): string {\n const state = service_state.get();\n if (!state.service) return \"\";\n if (!state.selectedSlot || !state.dateTimeConfirmed) return \"datetime\";\n return \"review\";\n }\n\n const service_current_step_name = computed(service_state, serviceCurrentStepName);\n const service_can_proceed = computed(service_state, (state) => {\n const step = serviceCurrentStepName();\n if (step === \"datetime\") {\n return !!(state.selectedDate && state.selectedSlot);\n }\n if (step === \"review\") return true;\n return false;\n });\n const service_month_year = computed(service_state, (state) =>\n state.currentMonth.toLocaleString(undefined, {\n month: \"long\",\n year: \"numeric\",\n }),\n );\n const service_chain_start = computed(service_items, (items) => {\n const slots = items.flatMap((item) => item.slots);\n if (!slots.length) return null;\n return Math.max(...slots.map((slot) => slot.to));\n });\n const service_total_steps = computed(service_state, (state) => (state.service ? 2 : 0));\n const service_steps = computed(service_state, () => ({\n 1: { name: \"datetime\" },\n 2: { name: \"review\" },\n }));\n const service_current_step = computed([service_current_step_name, service_steps], (name, steps) => {\n for (const [idx, step] of Object.entries(steps)) {\n if (step.name === name) return Number(idx);\n }\n return 1;\n });\n\n function formatServiceDateDisplay(value: string | null): string {\n if (!value) return \"\";\n return new Date(value).toLocaleDateString(undefined, {\n month: \"short\",\n day: \"numeric\",\n });\n }\n\n function configuredServiceFormIds(relationship: StorefrontServiceProvider): string[] {\n const formIds = relationship.forms.map((entry) => entry.form_id.trim());\n if (formIds.some((formId) => !formId) || new Set(formIds).size !== formIds.length) {\n throw new Error(`Service provider ${relationship.provider_id} has blank or duplicate configured form IDs`);\n }\n return formIds;\n }\n\n function resolveServiceProvider(\n state: ArkyServiceState,\n providerId?: string | null,\n ): StorefrontServiceProvider | null {\n const serviceId = state.service?.id;\n if (!serviceId) return null;\n const relationships = state.serviceProviders.filter((relationship) => relationship.service_id === serviceId);\n const targetProviderId = providerId ?? state.selectedSlot?.providerId ?? state.selectedProviderId;\n if (targetProviderId) {\n return relationships.find((relationship) => relationship.provider_id === targetProviderId) || null;\n }\n return relationships.length === 1 ? relationships[0] : null;\n }\n\n function clearServiceFormState(error: string | null = null, loading = false): void {\n service_form_state.set({\n provider_id: null,\n groups: [],\n loading,\n error,\n });\n }\n\n function activateServiceProviderForms(\n providerId?: string | null,\n reset = false,\n ): StorefrontServiceProvider | null {\n const relationship = resolveServiceProvider(service_state.get(), providerId);\n if (!relationship) {\n clearServiceFormState();\n return null;\n }\n\n const formIds = configuredServiceFormIds(relationship);\n const current = service_form_state.get();\n const currentFormIds = current.groups.map((group) => group.form.id);\n if (\n !reset &&\n current.provider_id === relationship.provider_id &&\n currentFormIds.length === formIds.length &&\n currentFormIds.every((formId, index) => formId === formIds[index])\n ) {\n if (current.error) service_form_state.setKey(\"error\", null);\n return relationship;\n }\n\n const groups: ArkyServiceFormGroup[] = formIds.map((formId) => {\n const form = service_form_definitions.get(formId);\n if (!form) throw new Error(`Configured booking form '${formId}' was not loaded`);\n return {\n form,\n blocks: form.schema.map(formSchemaToBlock),\n };\n });\n service_form_state.set({\n provider_id: relationship.provider_id,\n groups,\n loading: false,\n error: null,\n });\n return relationship;\n }\n\n async function loadServiceFormDefinitions(\n relationships: StorefrontServiceProvider[],\n ): Promise<void> {\n const formIds = [\n ...new Set(relationships.flatMap((relationship) => configuredServiceFormIds(relationship))),\n ];\n if (formIds.length === 0) return;\n\n const forms = await Promise.all(formIds.map((formId) => loadForm({ id: formId })));\n for (let index = 0; index < forms.length; index += 1) {\n const form = forms[index];\n const formId = formIds[index];\n if (form.id !== formId) {\n throw new Error(`Configured booking form '${formId}' resolved to '${form.id}'`);\n }\n }\n for (const form of forms) service_form_definitions.set(form.id, form);\n }\n\n function configuredServiceFormEntries(\n relationship: StorefrontServiceProvider,\n ): FormEntry[] {\n const formIds = configuredServiceFormIds(relationship);\n if (formIds.length === 0) return [];\n activateServiceProviderForms(relationship.provider_id);\n const state = service_form_state.get();\n if (\n state.provider_id !== relationship.provider_id ||\n state.groups.length !== formIds.length ||\n state.groups.some((group, index) => group.form.id !== formIds[index])\n ) {\n throw new Error(`Booking forms are not ready for provider ${relationship.provider_id}`);\n }\n return state.groups.map((group) =>\n createFormEntryFromValues(\n group.form,\n Object.fromEntries(group.blocks.map((block) => [block.key, block.value])),\n ),\n );\n }\n\n const service_controller = {\n async initialize(): Promise<void> {\n service_state.setKey(\"tzGroups\", normalizeTimezoneGroups(client.utils.tzGroups));\n await ensureCart();\n const methods = market.get()?.payment_methods || [];\n if (methods.length) service_state.setKey(\"availablePaymentMethods\", methods);\n },\n\n setTimezone(tz: string): void {\n service_state.setKey(\"timezone\", tz);\n service_state.setKey(\"calendar\", serviceCalendar());\n const state = service_state.get();\n if (state.selectedDate) {\n service_state.setKey(\"slots\", computeServiceSlots(state.selectedDate));\n service_state.setKey(\"selectedSlot\", null);\n service_state.setKey(\"quote\", null);\n service_state.setKey(\"quoteError\", null);\n activateServiceProviderForms();\n }\n },\n\n async select(service: StorefrontService): Promise<void> {\n service_form_definitions.clear();\n clearServiceFormState(null, true);\n service_state.set({\n ...service_state.get(),\n service: null,\n serviceProviders: [],\n providers: [],\n selectedProviderId: null,\n availability: null,\n selectedDate: null,\n slots: [],\n selectedSlot: null,\n dateTimeConfirmed: false,\n quote: null,\n quoteError: null,\n loading: true,\n });\n try {\n const [fullService, serviceProviders] = await Promise.all([\n client.eshop.service.get({ id: service.id }),\n client.eshop.service.findProviders({\n service_id: service.id,\n }),\n ]);\n const providerIds = [...new Set(serviceProviders.map((relationship) => relationship.provider_id))];\n const [providerResults] = await Promise.all([\n Promise.all(providerIds.map((id) => client.eshop.provider.get({ id }).catch(() => null))),\n loadServiceFormDefinitions(serviceProviders),\n ]);\n\n service_state.set({\n ...service_state.get(),\n service: fullService,\n serviceProviders,\n providers: providerResults.filter(\n (provider): provider is StorefrontProvider => provider !== null,\n ),\n selectedProviderId: null,\n availability: null,\n selectedDate: null,\n slots: [],\n selectedSlot: null,\n currentMonth: new Date(new Date().getFullYear(), new Date().getMonth(), 1),\n loading: false,\n dateTimeConfirmed: false,\n quote: null,\n quoteError: null,\n });\n activateServiceProviderForms();\n await service_controller.loadMonth();\n } catch (error) {\n service_form_definitions.clear();\n clearServiceFormState(readErrorMessage(error, \"Failed to load booking forms.\"));\n service_state.setKey(\"loading\", false);\n throw error;\n }\n },\n\n async loadMonth(): Promise<void> {\n const state = service_state.get();\n if (!state.service) return;\n service_state.setKey(\"loading\", true);\n try {\n const chainedStart = service_chain_start.get();\n let from: number;\n let to: number;\n if (chainedStart) {\n from = chainedStart;\n to = chainedStart;\n } else {\n const month = state.currentMonth;\n from = Math.floor(Date.UTC(month.getFullYear(), month.getMonth(), 1) / 1000);\n to = Math.floor(Date.UTC(month.getFullYear(), month.getMonth() + 1, 1) / 1000);\n }\n const availability = await loadAvailability({\n service_id: state.service.id,\n from,\n to,\n });\n service_state.setKey(\"availability\", availability);\n service_state.setKey(\"calendar\", serviceCalendar());\n } finally {\n service_state.setKey(\"loading\", false);\n }\n },\n\n prevMonth(): void {\n const { currentMonth } = service_state.get();\n service_state.setKey(\"currentMonth\", new Date(currentMonth.getFullYear(), currentMonth.getMonth() - 1, 1));\n void service_controller.loadMonth();\n },\n\n nextMonth(): void {\n const { currentMonth } = service_state.get();\n service_state.setKey(\"currentMonth\", new Date(currentMonth.getFullYear(), currentMonth.getMonth() + 1, 1));\n void service_controller.loadMonth();\n },\n\n selectProvider(providerId: string | null): void {\n const state = service_state.get();\n if (providerId && !resolveServiceProvider(state, providerId)) {\n throw new Error(`Provider ${providerId} is not configured for the selected service`);\n }\n service_state.set({\n ...state,\n selectedProviderId: providerId,\n selectedDate: null,\n slots: [],\n selectedSlot: null,\n dateTimeConfirmed: false,\n quote: null,\n quoteError: null,\n });\n activateServiceProviderForms(providerId);\n void service_controller.loadMonth();\n },\n\n selectDate(cell: ArkyCalendarDay): void {\n if (cell.blank || !cell.available) return;\n const state = service_state.get();\n service_state.set({\n ...state,\n selectedDate: cell.iso,\n slots: computeServiceSlots(cell.iso),\n selectedSlot: null,\n dateTimeConfirmed: false,\n quote: null,\n quoteError: null,\n });\n activateServiceProviderForms();\n service_state.setKey(\"calendar\", serviceCalendar());\n },\n\n selectTimeSlot(slot: ArkyServiceSlot | null): void {\n const state = service_state.get();\n if (slot) {\n if (!state.service || slot.serviceId !== state.service.id) {\n throw new Error(\"The selected slot does not belong to the selected service\");\n }\n if (state.selectedProviderId && slot.providerId !== state.selectedProviderId) {\n throw new Error(\"The selected slot does not belong to the selected provider\");\n }\n if (!resolveServiceProvider(state, slot.providerId)) {\n throw new Error(`Provider ${slot.providerId} is not configured for the selected service`);\n }\n }\n service_state.set({\n ...state,\n selectedSlot: slot,\n dateTimeConfirmed: false,\n quote: null,\n quoteError: null,\n });\n activateServiceProviderForms(slot?.providerId);\n },\n\n resetDateSelection(): void {\n service_state.set({\n ...service_state.get(),\n selectedDate: null,\n slots: [],\n selectedSlot: null,\n dateTimeConfirmed: false,\n quote: null,\n quoteError: null,\n });\n activateServiceProviderForms();\n },\n\n updateCalendar(): void {\n service_state.setKey(\"calendar\", serviceCalendar());\n },\n\n findFirstAvailable(): void {\n for (const day of service_state.get().calendar) {\n if (!day.blank && day.available) {\n service_controller.selectDate(day);\n return;\n }\n }\n },\n\n async addToCart(explicitSlots?: ArkyServiceSlot[]): Promise<void> {\n const state = service_state.get();\n const slots = explicitSlots || (state.selectedSlot ? [state.selectedSlot] : []);\n if (slots.length === 0) return;\n const first = slots[0];\n if (!state.service || first.serviceId !== state.service.id) {\n throw new Error(\"The booking slots do not belong to the selected service\");\n }\n const relationship = resolveServiceProvider(state, first.providerId);\n if (!relationship) {\n throw new Error(`Provider ${first.providerId} is not configured for the selected service`);\n }\n let forms: FormEntry[];\n try {\n forms = configuredServiceFormEntries(relationship);\n } catch (error) {\n service_form_state.setKey(\"error\", readErrorMessage(error, \"Booking forms are invalid.\"));\n throw error;\n }\n const displayName = serviceName(state.service, currentLocale());\n const enriched = slots.map((slot) => ({\n ...slot,\n serviceName: displayName,\n date: slot.dateText,\n }));\n const nextItems = [...service_items.get(), toServiceCartItem(enriched, forms)];\n await syncServiceCart(nextItems);\n service_state.set({\n ...service_state.get(),\n selectedDate: null,\n slots: [],\n selectedSlot: null,\n dateTimeConfirmed: false,\n quote: null,\n quoteError: null,\n });\n activateServiceProviderForms(service_state.get().selectedProviderId, true);\n service_state.setKey(\"calendar\", serviceCalendar());\n },\n\n async removeFromCart(bookingId: string): Promise<void> {\n await syncServiceCart(service_items.get().filter((item) => item.id !== bookingId));\n },\n\n async clearCart(): Promise<void> {\n await syncServiceCart([]);\n },\n\n async checkout(\n paymentMethodId?: string,\n forms: FormEntry[] = [],\n ): Promise<StorefrontOrderCheckoutResult> {\n const state = service_state.get();\n const items = service_items.get();\n if (!items.length) throw new Error(\"Cart is empty\");\n service_state.setKey(\"loading\", true);\n try {\n const result = await checkout({\n service_items: items,\n payment_method_key: paymentMethodId,\n promo_code: state.promoCode || undefined,\n forms,\n });\n service_state.setKey(\"cartId\", cart.get()?.id || null);\n return result;\n } finally {\n service_state.setKey(\"loading\", false);\n }\n },\n\n async fetchQuote(\n paymentMethodId?: string,\n promoCode?: string | null,\n ): Promise<StorefrontOrderQuote | null> {\n const state = service_state.get();\n const items = service_items.get();\n if (!items.length) return null;\n service_state.setKey(\"fetchingQuote\", true);\n service_state.setKey(\"quoteError\", null);\n try {\n service_state.setKey(\"promoCode\", promoCode || null);\n const response = await fetchQuote({\n service_items: items,\n payment_method_key: paymentMethodId,\n promo_code: promoCode || undefined,\n });\n service_state.setKey(\"cartId\", cart.get()?.id || null);\n service_state.setKey(\"quote\", response);\n const methods = response?.payment_methods || market.get()?.payment_methods || [];\n if (methods.length) service_state.setKey(\"availablePaymentMethods\", methods);\n return response;\n } catch (error) {\n service_state.setKey(\"quoteError\", readErrorMessage(error, \"Failed to fetch quote.\"));\n return null;\n } finally {\n service_state.setKey(\"fetchingQuote\", false);\n }\n },\n\n getProvidersList(): StorefrontProvider[] {\n return service_state.get().providers;\n },\n\n prevStep(): void {\n const current = serviceCurrentStepName();\n if (current === \"review\") {\n service_state.setKey(\"dateTimeConfirmed\", false);\n return;\n }\n if (current === \"datetime\") {\n service_state.setKey(\"selectedSlot\", null);\n service_state.setKey(\"dateTimeConfirmed\", false);\n service_state.setKey(\"quote\", null);\n service_state.setKey(\"quoteError\", null);\n activateServiceProviderForms();\n }\n },\n\n nextStep(): void {\n if (serviceCurrentStepName() === \"datetime\" && service_can_proceed.get()) {\n service_state.setKey(\"dateTimeConfirmed\", true);\n }\n },\n\n getServicePrice(): string {\n const state = service_state.get();\n const relationship = resolveServiceProvider(state);\n if (!relationship) return \"\";\n try {\n const price = priceForMarket(relationship.prices, currentMarketKey(), market.get()?.currency);\n return client.utils.formatPrice([price]);\n } catch {\n return \"\";\n }\n },\n\n formatDateDisplay: formatServiceDateDisplay,\n serviceItemsFromSlots(slots: ArkyServiceSlot[], forms: FormEntry[] = []): ArkyServiceCartItem[] {\n return slots.length ? [toServiceCartItem(slots, forms)] : [];\n },\n };\n\n async function loadEntry(\n params: ArkyCmsEntryParams,\n options?: RequestOptions,\n ): Promise<StorefrontCollectionEntry> {\n cms_state.setKey(\"loading\", true);\n cms_state.setKey(\"error\", null);\n try {\n const { locale: nextLocale, market: nextMarket, ...entryParams } = params;\n setContext({ locale: nextLocale, market: nextMarket });\n\n if (entryParams.id) {\n const entry = await client.cms.entry.get(entryParams as GetEntryParams, options);\n const cacheKey = entryParams.key || entryParams.id || entry.id;\n cms_state.setKey(\"entries\", {\n ...cms_state.get().entries,\n [cacheKey]: entry,\n });\n return entry;\n }\n\n if (!entryParams.collection_id || !entryParams.key) {\n throw new Error(\"ArkyCmsEntryParams requires id, or collection_id and key\");\n }\n\n const result = await client.cms.entry.find(\n {\n ...entryParams,\n collection_id: entryParams.collection_id,\n key: entryParams.key,\n limit: 1,\n } as GetEntriesParams,\n options,\n );\n const entry = result.items?.[0];\n if (!entry) {\n throw new Error(\"CMS entry not found\");\n }\n cms_state.setKey(\"entries\", {\n ...cms_state.get().entries,\n [entryParams.key]: entry,\n });\n return entry;\n } catch (error) {\n cms_state.setKey(\"error\", readErrorMessage(error, \"Failed to load CMS entry.\"));\n throw error;\n } finally {\n cms_state.setKey(\"loading\", false);\n }\n }\n\n function formCacheKey(params: StorefrontParams<GetFormParams>): string {\n const identifier = params.id ? `id:${params.id}` : params.key ? `key:${params.key}` : \"missing\";\n return identifier;\n }\n\n async function loadForm(\n params: StorefrontParams<GetFormParams>,\n options?: RequestOptions,\n ): Promise<StorefrontForm> {\n cms_state.setKey(\"loading\", true);\n cms_state.setKey(\"error\", null);\n try {\n const form = await client.cms.form.get(params, options);\n const forms = { ...cms_state.get().forms };\n forms[formCacheKey({ id: form.id })] = form;\n forms[formCacheKey({ key: form.key })] = form;\n cms_state.setKey(\"forms\", forms);\n return form;\n } catch (error) {\n cms_state.setKey(\"error\", readErrorMessage(error, \"Failed to load CMS form.\"));\n throw error;\n } finally {\n cms_state.setKey(\"loading\", false);\n }\n }\n\n async function submitForm(\n params: StorefrontParams<SubmitFormParams>,\n options?: RequestOptions,\n ): Promise<StorefrontFormSubmission> {\n await ensureSession();\n return client.cms.form.submit(params, options);\n }\n\n async function submitFormByKey(\n params: ArkySubmitFormByKeyParams,\n options?: RequestOptions,\n ): Promise<StorefrontFormSubmission> {\n const form = await loadForm({ key: params.key }, options);\n const entry = createFormEntryFromValues(form, params.values);\n return submitForm({ form_id: form.id, fields: entry.fields }, options);\n }\n\n async function loadProducts(\n params: StorefrontParams<GetProductsParams> = {},\n options?: RequestOptions,\n ): Promise<StorefrontPage<Product>> {\n eshop_state.setKey(\"loading_products\", true);\n eshop_state.setKey(\"error\", null);\n try {\n const response = await client.eshop.product.find(params, options);\n eshop_state.setKey(\"products\", response.items || []);\n eshop_state.setKey(\"product_cursor\", response.cursor || null);\n return response;\n } catch (error) {\n eshop_state.setKey(\"error\", readErrorMessage(error, \"Failed to load products.\"));\n throw error;\n } finally {\n eshop_state.setKey(\"loading_products\", false);\n }\n }\n\n async function loadServices(\n params: StorefrontParams<GetServicesParams> = {},\n options?: RequestOptions,\n ): Promise<StorefrontPage<Service>> {\n eshop_state.setKey(\"loading_services\", true);\n eshop_state.setKey(\"error\", null);\n try {\n const response = await client.eshop.service.find(params, options);\n eshop_state.setKey(\"services\", response.items || []);\n eshop_state.setKey(\"service_cursor\", response.cursor || null);\n return response;\n } catch (error) {\n eshop_state.setKey(\"error\", readErrorMessage(error, \"Failed to load services.\"));\n throw error;\n } finally {\n eshop_state.setKey(\"loading_services\", false);\n }\n }\n\n async function loadProviders(\n params: StorefrontParams<GetProvidersParams> = {},\n options?: RequestOptions,\n ): Promise<StorefrontPage<Provider>> {\n eshop_state.setKey(\"loading_providers\", true);\n eshop_state.setKey(\"error\", null);\n try {\n const response = await client.eshop.provider.find(params, options);\n eshop_state.setKey(\"providers\", response.items || []);\n eshop_state.setKey(\"provider_cursor\", response.cursor || null);\n return response;\n } catch (error) {\n eshop_state.setKey(\"error\", readErrorMessage(error, \"Failed to load providers.\"));\n throw error;\n } finally {\n eshop_state.setKey(\"loading_providers\", false);\n }\n }\n\n async function loadAvailability(\n params: StorefrontParams<GetAvailabilityParams>,\n options?: RequestOptions,\n ) {\n eshop_state.setKey(\"loading_availability\", true);\n eshop_state.setKey(\"error\", null);\n try {\n const response = await client.eshop.service.getAvailability(params, options);\n eshop_state.setKey(\"availability\", response);\n return response;\n } catch (error) {\n eshop_state.setKey(\"error\", readErrorMessage(error, \"Failed to load availability.\"));\n throw error;\n } finally {\n eshop_state.setKey(\"loading_availability\", false);\n }\n }\n\n async function useExperiment(params: string | UseExperimentParams): Promise<ExperimentUseResponse> {\n await ensureSession();\n const input = typeof params === \"string\" ? { key: params } : params;\n return client.experiments.use(input);\n }\n\n async function trackAction(params: TrackActionParams): Promise<void> {\n await ensureSession();\n return client.action.track(params);\n }\n\n const cart_store = {\n cart,\n product_items,\n service_items,\n quote_result: quote,\n promo_code,\n last_order,\n status: cart_status,\n product_item_count,\n service_item_count,\n item_count,\n snapshot,\n load: ensureCart,\n refresh: syncCart,\n addProduct,\n setProductQuantity,\n removeProduct,\n addServiceItem,\n removeServiceItem,\n clear: clearCart,\n clearLocal: clearLocalCart,\n quote: fetchQuote,\n checkout,\n payment: {\n controller: payment_controller,\n ready: payment_ready,\n setController: setPaymentController,\n getController: () => payment_controller.get(),\n mount: mountPayment,\n update: updatePaymentController,\n destroy: destroyPaymentController,\n },\n applyPromoCode(code: string, input: Omit<ArkyCartInput, \"promo_code\"> = {}) {\n return fetchQuote({ ...input, promo_code: code });\n },\n removePromoCode(input: Omit<ArkyCartInput, \"promo_code\"> = {}) {\n return fetchQuote({ ...input, promo_code: null });\n },\n selectShippingMethod(id: string | null) {\n cart_status.setKey(\"selected_shipping_method_id\", id);\n },\n locationToAddress,\n createFormEntry,\n buildItems: checkoutItems,\n buildProductItems: toProductCheckoutItems,\n buildServiceItems: toServiceCheckoutItems,\n };\n\n const product_store = {\n get: (params: StorefrontParams<GetProductParams>, options?: RequestOptions) =>\n client.eshop.product.get(params, options),\n list: loadProducts,\n };\n\n const service_store = {\n get: (params: StorefrontParams<GetServiceParams>, options?: RequestOptions) =>\n client.eshop.service.get(params, options),\n list: loadServices,\n listProviders: (\n params: StorefrontParams<FindServiceProvidersParams>,\n options?: RequestOptions,\n ) => client.eshop.service.findProviders(params, options),\n getAvailability: loadAvailability,\n state: service_state,\n form_state: service_form_state,\n form_groups: service_form_groups,\n form_blocks: service_form_blocks,\n current_step_name: service_current_step_name,\n can_proceed: service_can_proceed,\n month_year: service_month_year,\n chain_start: service_chain_start,\n total_steps: service_total_steps,\n steps: service_steps,\n current_step: service_current_step,\n initialize: service_controller.initialize,\n select: service_controller.select,\n setTimezone: service_controller.setTimezone,\n loadMonth: service_controller.loadMonth,\n prevMonth: service_controller.prevMonth,\n nextMonth: service_controller.nextMonth,\n selectProvider: service_controller.selectProvider,\n selectDate: service_controller.selectDate,\n selectTimeSlot: service_controller.selectTimeSlot,\n resetDateSelection: service_controller.resetDateSelection,\n updateCalendar: service_controller.updateCalendar,\n findFirstAvailable: service_controller.findFirstAvailable,\n addToCart: service_controller.addToCart,\n removeFromCart: service_controller.removeFromCart,\n clearCart: service_controller.clearCart,\n getProvidersList: service_controller.getProvidersList,\n prevStep: service_controller.prevStep,\n nextStep: service_controller.nextStep,\n getServicePrice: service_controller.getServicePrice,\n formatDateDisplay: service_controller.formatDateDisplay,\n serviceItemsFromSlots: service_controller.serviceItemsFromSlots,\n };\n\n return {\n client,\n session,\n setup,\n market,\n market_key,\n locale,\n currency,\n allowed_payment_methods,\n payment_config,\n identify,\n identifyContactEmailIfMissing,\n verify: client.verify,\n me: client.me,\n logout: client.logout,\n onAuthStateChanged: client.onAuthStateChanged,\n get isAuthenticated() {\n return client.isAuthenticated;\n },\n setMarket,\n setLocale,\n setContext,\n getMarket: currentMarketKey,\n getLocale: currentLocale,\n cms: {\n state: cms_state,\n collection: {\n get: (\n params: StorefrontParams<GetCollectionParams>,\n options?: RequestOptions,\n ) => client.cms.collection.get(params, options),\n },\n entry: {\n get: loadEntry,\n find: (\n params: StorefrontParams<GetEntriesParams>,\n options?: RequestOptions,\n ) => client.cms.entry.find(params, options),\n },\n form: {\n get: loadForm,\n submit: submitForm,\n submitByKey: submitFormByKey,\n },\n taxonomy: client.cms.taxonomy,\n },\n eshop: {\n state: eshop_state,\n product: product_store,\n service: service_store,\n provider: {\n get: (\n params: StorefrontParams<GetProviderParams>,\n options?: RequestOptions,\n ) => client.eshop.provider.get(params, options),\n list: loadProviders,\n },\n order: client.eshop.order,\n cart: cart_store,\n },\n crm: client.crm,\n action: {\n track(params: TrackActionParams) {\n return trackAction(params);\n },\n pageView(payload: Record<string, unknown> = {}) {\n return trackAction({ key: \"page.view\", payload });\n },\n state: atom<StorefrontAction | null>(null),\n },\n experiments: {\n use: useExperiment,\n },\n support: client.support,\n store: {\n ...client.store,\n setup,\n load: loadSetup,\n },\n utils: client.utils,\n };\n}\n\ntype InitializedStoreCore = ReturnType<typeof initializeStoreCore>;\n\nexport type InitializedStore = InitializedStoreCore & {\n withContext(context: ArkyStoreContext): InitializedStore;\n};\n\nfunction initializeStore(\n publishableKey: string,\n config: ArkyStoreConfig,\n scopedClient?: ReturnType<typeof createStorefront>,\n): InitializedStore {\n const store = initializeStoreCore(publishableKey, config, scopedClient);\n return Object.assign(store, {\n withContext(context: ArkyStoreContext): InitializedStore {\n return initializeStore(\n publishableKey,\n {\n ...config,\n locale: context.locale ?? store.getLocale(),\n market: context.market ?? store.getMarket(),\n },\n store.client.withContext(context),\n );\n },\n });\n}\n\nexport function initialize(\n publishableKey: string,\n options: ArkyStoreConfig = {},\n): InitializedStore {\n return initializeStore(publishableKey, options);\n}\n\nexport type ArkyStore = InitializedStore;\nexport type ArkyCartStore = ArkyStore[\"eshop\"][\"cart\"];\nexport type ArkyServiceStore = ArkyStore[\"eshop\"][\"service\"];\n","export type {\n EshopCartItem,\n Cart,\n CartOrigin,\n CartStatus,\n EshopStoreState,\n Store,\n Webhook,\n WebhookEventSubscription,\n BuildHook,\n BuildHookType,\n PaymentStoreConfig,\n SocialConnectResponse,\n SocialDestinationMetadata,\n SocialOAuthCallbackResponse,\n SocialOAuthCallbackStatus,\n SocialOAuthDestinationOption,\n SocialConnection,\n SocialConnectionCredential,\n SocialConnectionData,\n SocialConnectionProviderData,\n SocialProviderCapability,\n SocialConnectionType,\n InstagramPlacement,\n SocialAnalyticsCapabilities,\n SocialEngagementCapabilities,\n SocialPublication,\n SocialPublicationComment,\n SocialPublicationCommentClassificationResult,\n SocialPublicationCommentIntent,\n SocialPublicationCommentPriority,\n SocialPublicationEngagementSyncResult,\n SocialCommentReply,\n SocialCommentReplyError,\n SocialCommentReplyEvidence,\n SocialCommentReplyStatus,\n SocialPublicationCommentReplyResponse,\n SocialPublicationCommentStatus,\n SocialPublicationContent,\n SocialPublicationEffect,\n SocialPublicationEffectError,\n SocialPublicationEffectEvidence,\n SocialPublicationEffectRequest,\n SocialPublicationEffectStatus,\n SocialPublicationMetricSnapshot,\n SocialPublicationMutationResponse,\n SocialPublicationStatus,\n SocialPublicationValidation,\n TiktokPrivacy,\n ValidationError,\n YoutubePrivacy,\n Block,\n Currency,\n Price,\n OrderPayment,\n OrderMoney,\n OrderFinancialSummary,\n PaymentProvider,\n PaymentProviderConnection,\n PaymentProviderConnectionError,\n PaymentProviderConnectionStatus,\n StripePaymentProviderConnectResponse,\n OrderPaymentTax,\n OrderPaymentTaxLine,\n OrderPaymentPromoCode,\n OrderRefund,\n PaymentTransactionProvider,\n PaymentTransactionRequestType,\n PaymentTransactionType,\n PaymentTransactionStatus,\n PaymentTransaction,\n OrderQuote,\n RefundStatus,\n CheckoutPaymentAction,\n StoreSubscription,\n StoreSubscriptionAction,\n StoreSubscriptionActionError,\n StoreSubscriptionActionRequest,\n StoreSubscriptionActionResult,\n StoreSubscriptionActionStatus,\n StoreSubscriptionEffect,\n StoreSubscriptionEffectError,\n StoreSubscriptionEffectStatus,\n StoreSubscriptionEffectType,\n StoreSubscriptionPayment,\n StoreSubscriptionStatus,\n SubscriptionPlan,\n SubscriptionPlanFeature,\n SubscriptionPlanFeatureType,\n SubscriptionPrice,\n ContactListMembershipCancellation,\n ContactListMembershipCancellationSafeError,\n ContactListMembershipCancellationStatus,\n ContactListMembershipCancellationType,\n ContactListMembershipPaymentAttempt,\n ContactListMembershipPaymentAttemptSafeError,\n ContactListMembershipPaymentAttemptStatus,\n ContactListMembershipPaymentAttemptType,\n ContactListMembershipRefund,\n ContactListMembershipRefundSafeError,\n ContactListMembershipRefundStatus,\n ContactListMembershipRefundType,\n StorefrontContactList,\n StorefrontContactListType,\n StorefrontContactListPlan,\n StorefrontContactListMembership,\n StorefrontContactListPaymentAttemptSummary,\n PaymentMethod,\n ShippingMethod,\n ShippingWeightTier,\n Zone,\n Market,\n Address,\n GeoLocation,\n ZoneLocation,\n Location,\n PromoCodeValidation,\n PaginatedResponse,\n Language,\n Access,\n Media,\n MediaSize,\n MediaResolution,\n Coordinates,\n ProviderWithTimeline,\n Collection,\n BlockSchema,\n BlockSchemaProperties,\n BlockSchemaType,\n CollectionEntry,\n EntryBlockQuery,\n MediaRef,\n FieldOperation,\n Workflow,\n WorkflowNode,\n WorkflowEdge,\n WorkflowTriggerNode,\n WorkflowHttpNode,\n WorkflowDeployWebhookNode,\n WorkflowGoogleDriveUploadNode,\n WorkflowConnection,\n WorkflowConnectionConnectUrl,\n WorkflowConnectionData,\n WorkflowConnectionType,\n GoogleDriveWorkflowConnectionData,\n GoogleDriveWorkflowProfile,\n WorkflowSwitchNode,\n WorkflowSwitchRule,\n WorkflowTransformNode,\n WorkflowLoopNode,\n WorkflowHttpMethod,\n WorkflowExecution,\n WorkflowEffect,\n WorkflowEffectEvidence,\n WorkflowEffectError,\n WorkflowEffectStatus,\n WorkflowEffectType,\n WorkflowExecutionInput,\n ExecutionStatus,\n NodeResult,\n ContactListType,\n ContactListPlan,\n ContactListPlanCatalogSafeError,\n ContactListPlanCatalogStatus,\n ContactListPlanCatalogType,\n ContactListPlanStatus,\n ContactListContentAccess,\n ContactListContentAccessStatus,\n ContactListContentAccessTarget,\n ContactListAccessResponse,\n ContactListContentAccessResponse,\n ContactListManagementContactList,\n ContactListManagementMembership,\n ContactListManagementResponse,\n ContactListSubscribeResponse,\n Event,\n EventAction,\n ShippingStatus,\n ShippingProvider,\n ShippingRateLine,\n ShippingLine,\n FulfillmentOrderStatus,\n FulfillmentOrderRequestStatus,\n FulfillmentOrderLine,\n FulfillmentOrder,\n OrderFulfillmentSummary,\n ShippingRate,\n Parcel,\n ShippingLabelStatus,\n ShippingLabelRefund,\n ShippingLabelRefundStatus,\n ShippingLabelRefundReconciliationStatus,\n ShippingLabelAdjustment,\n ShippingLabelAdjustmentStatus,\n ShippingLabelSettlement,\n ShippingLabelSettlementDirection,\n ShippingLabelSettlementStatus,\n ShippingLabelSettlementType,\n ShipmentAllocationStatus,\n ShipmentLine,\n Shipment,\n CreateShipmentResponse,\n CustomsItem,\n CustomsDeclaration,\n GeoLocationBlock,\n Service,\n Provider,\n ServiceProvider,\n ServiceDuration,\n ProviderTimelinePoint,\n TimelinePoint,\n WorkingHour,\n WorkingDay,\n SpecificDate,\n Order,\n OrderItem,\n OrderItemSnapshot,\n ProductLineItem,\n ServiceLineItem,\n ProductLineItemSnapshot,\n ServiceLineItemSnapshot,\n DiscountAllocation,\n TaxLine,\n LineMoneySnapshot,\n OrderItemFulfillmentStatus,\n BookingOrderItemStatus,\n QuoteLine,\n ProductQuoteLine,\n ServiceQuoteLine,\n ProductQuoteLineAvailability,\n ServiceQuoteLineAvailability,\n OrderItemStatus,\n OrderStatus,\n OrderPaymentSummaryStatus,\n OrderFulfillmentStatus,\n OrderPaymentStatus,\n OrderCancellationReason,\n HistoryEntry,\n DigitalAccessGrantStatus,\n DigitalAccessGrant,\n DigitalAccessDownloadResponse,\n Product,\n ProductVariant,\n ProductInventory,\n DigitalAssetType,\n DigitalAssetStatus,\n DigitalDeliveryPolicy,\n DigitalAsset,\n InventoryLevel,\n GalleryItem,\n EmailTemplate,\n EmailTemplateType,\n EmailRecipients,\n EmailSend,\n EmailSendRequest,\n EmailSendResult,\n EmailSendDeliveryResult,\n EmailDelivery,\n EmailDeliveryError,\n EmailDeliveryErrorKind,\n EmailDeliveryStatus,\n EmailDeliveryType,\n GetEmailDeliveryParams,\n RetryEmailDeliveryParams,\n EmailSendTemplateData,\n Form,\n FormSubmission,\n FormSchema,\n FormSchemaType,\n FormField,\n FormFieldType,\n FormValue,\n FormValues,\n FormEntry,\n Taxonomy,\n TaxonomyEntry,\n TaxonomyQuery,\n TaxonomySchema,\n TaxonomySchemaType,\n TaxonomyField,\n TaxonomyFieldQuery,\n PromoCode,\n Contact,\n ContactSessionRecord,\n ContactSessionIssued,\n ContactSessionStatus,\n ContactChannel,\n ChannelType,\n OpportunityStage,\n OpportunityType,\n OpportunitySource,\n Action,\n ActionData,\n ActionContext,\n ContactList,\n ContactListMembership,\n ContactListMember,\n Mailbox,\n MailboxConnectionSecurity,\n MailboxPreset,\n MailboxSyncStatus,\n GoogleMailboxProvider,\n SmtpImapMailboxProviderInput,\n SmtpImapMailboxProvider,\n OutreachStep,\n OutreachStepType,\n ManualTaskContinueBehavior,\n CampaignManualTaskOutcome,\n OutreachPersonalizationCounters,\n OutreachPersonalizationState,\n CampaignLaunchState,\n Campaign,\n CampaignLaunchReadiness,\n CampaignEnrollment,\n CampaignEnrollmentImportResult,\n CampaignEnrollmentConversationResponse,\n CampaignMessage,\n Suppression,\n LeadResearchRun,\n LeadResearchRunStatus,\n LeadScores,\n LeadInsight,\n CampaignRoute,\n ChannelMessage,\n LeadEmailClassification,\n LeadValidationCheck,\n LeadValidationCheckStatus,\n LeadEmailValidationResult,\n LeadResearchMessage,\n LeadResearchMessageRole,\n ResearchContactListMember,\n SendLeadResearchMessageResult,\n Account,\n AccountApiToken,\n AccountApiTokenCreated,\n AccountSession,\n AccountUpdateResponse,\n StoreMembership,\n StoreMember,\n Discount,\n Condition,\n ServiceStatus,\n ProviderStatus,\n ProductStatus,\n ContactStatus,\n ContactListStatus,\n ContactListSource,\n ContactListMembershipStatus,\n MailboxStatus,\n CampaignStatus,\n CampaignLaunchStatus,\n CampaignEnrollmentStatus,\n CampaignEnrollmentImportSource,\n CampaignMessageCopySource,\n CampaignMessageDirection,\n CampaignMessageType,\n CampaignMessageStatus,\n OutreachPersonalizationStatus,\n OutreachThreadMode,\n SuppressionStatus,\n SuppressionTargetType,\n SuppressionScopeType,\n SuppressionReason,\n SuppressionSource,\n WorkflowStatus,\n MutableWorkflowStatus,\n WorkflowSendEmailNode,\n PromoCodeStatus,\n CollectionStatus,\n EntryStatus,\n EmailTemplateStatus,\n EmailTemplateVariable,\n EmailTemplateVariableSource,\n FormStatus,\n TaxonomyStatus,\n} from \"./types\";\nexport { PaymentMethodType } from \"./types\";\n\nexport type {\n FindContactSessionsParams,\n RevokeAllContactSessionsParams,\n RevokeContactSessionParams,\n GetAvailabilityParams,\n AvailabilitySlot,\n DaySlots,\n ProviderAvailability,\n AvailabilityResponse,\n Slot,\n SlotRange,\n ConditionValue,\n ProductQuoteItemInput,\n ServiceQuoteItemInput,\n OrderQuoteItemInput,\n ProductCheckoutItemInput,\n ServiceCheckoutItemInput,\n OrderCheckoutItemInput,\n TrustedProductCheckoutItemInput,\n TrustedServiceCheckoutItemInput,\n TrustedOrderCheckoutItemInput,\n CreateOrderRefundParams,\n CreateOrderRefundResponse,\n FindOrderRefundsParams,\n GetOrderRefundParams,\n GetOrderPaymentParams,\n RetryPaymentTransactionParams,\n FindPaymentTransactionsParams,\n GetPaymentTransactionParams,\n FindDigitalAccessGrantsParams,\n GetDigitalAccessGrantParams,\n DownloadDigitalAccessParams,\n ActivateDigitalAccessGrantParams,\n RevokeDigitalAccessGrantParams,\n GetCurrentCartParams,\n GetCartParams,\n FindCartsParams,\n CreateCartParams,\n UpdateCartParams,\n AddCartItemParams,\n RemoveCartItemParams,\n ClearCartParams,\n QuoteCartParams,\n CheckoutCartParams,\n SystemTemplateKey,\n ImportFieldMapping,\n ImportPreviewRow,\n ImportContactsParams,\n ImportContactsPreviewParams,\n ImportContactsPreviewResult,\n ImportContactsResult,\n GetCollectionsParams,\n CreateCollectionParams,\n UpdateCollectionParams,\n GetCollectionParams,\n DeleteCollectionParams,\n GetEntriesParams,\n CreateEntryParams,\n UpdateEntryParams,\n GetEntryParams,\n DeleteEntryParams,\n GetShippingRatesParams,\n FindShipmentsParams,\n FindFulfillmentOrdersParams,\n GetFulfillmentOrderParams,\n GetShipmentParams,\n CreateShipmentParams,\n RetryShipmentParams,\n RequestShippingLabelRefundParams,\n FindShippingLabelRefundsParams,\n GetShippingLabelRefundParams,\n RetryShippingLabelRefundParams,\n FindShippingLabelAdjustmentsParams,\n FindShippingLabelSettlementsParams,\n RetryShippingLabelSettlementParams,\n CreateStoreSubscriptionActionParams,\n FindStoreSubscriptionActionEffectsParams,\n FindStoreSubscriptionActionsParams,\n GetStoreSubscriptionActionEffectParams,\n GetStoreSubscriptionActionParams,\n RetryStoreSubscriptionActionParams,\n TestWebhookParams,\n TestWebhookResponse,\n WebhookDeliveryStatus,\n CreateContactListParams,\n UpdateContactListParams,\n FindContactListsParams,\n FindStorefrontContactListsParams,\n GetContactListParams,\n CreateContactListPlanParams,\n UpdateContactListPlanParams,\n ContactListPlanPriceInput,\n FindContactListPlansParams,\n FindStorefrontContactListPlansParams,\n GetContactListPlanParams,\n RetryContactListPlanCatalogParams,\n AddContactListContactParams,\n UpdateContactListContactParams,\n RemoveContactListContactParams,\n FindContactListContactsParams,\n RefundContactListMembershipParams,\n RefundContactListMembershipResult,\n FindContactListMembershipPaymentAttemptsParams,\n FindStorefrontContactListMembershipsParams,\n GetContactListMembershipPaymentAttemptParams,\n FindContactListMembershipRefundsParams,\n GetContactListMembershipRefundParams,\n RetryContactListMembershipRefundParams,\n FindContactListMembershipCancellationsParams,\n GetContactListMembershipCancellationParams,\n RetryContactListMembershipCancellationParams,\n ImportContactRowInput,\n ImportContactRowError,\n ImportContactRowResult,\n ImportContactListRowResult,\n ImportContactListPreviewParams,\n ImportContactsIntoContactListParams,\n ImportContactsIntoContactListResult,\n SubscribeContactListParams,\n ContactListAccessParams,\n ContactListContentAccessParams,\n CreateMailboxParams,\n UpdateMailboxParams,\n FindMailboxesParams,\n GetMailboxParams,\n PrepareMailboxParams,\n TestMailboxParams,\n TestMailboxResult,\n CreateCampaignParams,\n UpdateCampaignParams,\n FindCampaignsParams,\n GetCampaignParams,\n LaunchCampaignParams,\n DuplicateCampaignParams,\n ImportCampaignEnrollmentsParams,\n GetCampaignLaunchReadinessParams,\n GenerateOutreachPersonalizedDraftsParams,\n FindCampaignEnrollmentsParams,\n UpdateCampaignEnrollmentParams,\n UpdateCampaignEnrollmentDraftParams,\n UpdateCampaignEnrollmentStepExecutionParams,\n GetCampaignEnrollmentConversationParams,\n ReplyCampaignEnrollmentParams,\n StopCampaignEnrollmentParams,\n FindCampaignMessagesParams,\n UpdateCampaignMessageParams,\n CreateSuppressionParams,\n UpdateSuppressionParams,\n FindSuppressionsParams,\n GetSuppressionParams,\n CreateLeadResearchRunParams,\n FindLeadResearchRunsParams,\n GetLeadResearchRunParams,\n UpdateLeadResearchRunParams,\n CancelLeadResearchRunParams,\n SendLeadResearchMessageParams,\n FindLeadResearchMessagesParams,\n ValidateLeadEmailParams,\n CancelSocialPublicationParams,\n ClassifySocialPublicationCommentsParams,\n ConnectStripePaymentProviderParams,\n ConnectSocialConnectionParams,\n CreateSocialCommentReplyParams,\n CreateSocialPublicationParams,\n DeletePaymentProviderParams,\n DeleteSocialConnectionParams,\n FindSocialPublicationCommentsParams,\n FindSocialPublicationsParams,\n GetSocialCapabilitiesParams,\n GetSocialOAuthAttemptParams,\n GetSocialCommentReplyParams,\n GetSocialPublicationCommentThreadParams,\n GetSocialPublicationCommentsParams,\n GetSocialPublicationEffectParams,\n GetSocialPublicationMetricsParams,\n GetSocialPublicationParams,\n ListPaymentProvidersParams,\n ListSocialCommentRepliesParams,\n ListSocialConnectionsParams,\n ListSocialPublicationEffectsParams,\n RefreshPaymentProvidersParams,\n RetrySocialCommentReplyParams,\n ScheduleSocialPublicationParams,\n SyncSocialEngagementParams,\n SyncSocialPublicationCommentsParams,\n SyncSocialPublicationCommentThreadParams,\n SyncSocialPublicationMetricsParams,\n UpdateSocialPublicationParams,\n ValidateSocialPublicationParams,\n} from \"./types/api\";\n\nexport type {\n LocationState,\n LocationCountry,\n GetCountriesResponse,\n} from \"./api/location\";\n\nexport type {\n AnalyticsTimeRange,\n AnalyticsReportKey,\n AnalyticsMetricReportKey,\n AnalyticsBreakdownReportKey,\n AnalyticsActionReportKey,\n AnalyticsCompositeReportKey,\n AnalyticsReportRequest,\n AnalyticsBlockRequest,\n AnalyticsRequest,\n AnalyticsMetricData,\n AnalyticsBreakdownItem,\n AnalyticsBreakdownData,\n BusinessOverviewData,\n RevenueByCurrencyData,\n ContactFunnelStage,\n ContactFunnelData,\n OutreachOverviewData,\n OutreachFunnelStage,\n OutreachFunnelData,\n EntityStatusOverviewData,\n DataHealthData,\n AnalyticsReport,\n AnalyticsBlockResponse,\n AnalyticsResponse,\n ActionFeedCategory,\n ActionFeedItem,\n ActionFeedSummary,\n ActionFeedCursor,\n ActionFeedData,\n} from \"./api/analytics\";\n\nexport type {\n CreateLocationParams,\n UpdateLocationParams,\n DeleteLocationParams,\n CreateMarketParams,\n UpdateMarketParams,\n MarketZoneInput,\n CreateProductVariantInput,\n UpdateProductVariantInput,\n ProductInventoryInput,\n} from \"./types/api\";\n\nexport type {\n StorefrontAction,\n TrackActionParams,\n CommonActionKey,\n ExperimentUseResponse,\n StorefrontContact,\n StorefrontDto,\n StorefrontLocation,\n StorefrontMarket,\n StorefrontSetup,\n StorefrontZone,\n UseExperimentParams,\n} from \"./api/storefront\";\nexport { COMMON_ACTION_KEYS } from \"./api/storefront\";\nexport type {\n CreateExperimentParams,\n Experiment,\n ExperimentResults,\n ExperimentStatus,\n ExperimentVariant,\n ExperimentVariantResult,\n FindExperimentsParams,\n GetExperimentParams,\n UpdateExperimentParams,\n} from \"./api/experiments\";\nexport {\n createCartController,\n type CartApi,\n type CartController,\n type CartControllerAddItemParams,\n type CartControllerCheckoutParams,\n type CartControllerClearParams,\n type CartControllerInitParams,\n type CartControllerListener,\n type CartControllerQuoteParams,\n type CartControllerRefreshParams,\n type CartControllerRemoveItemParams,\n type CartControllerState,\n type CartControllerUpdateParams,\n} from \"./cartController\";\n\nexport type { TimelineParams } from \"./api/crm\";\nexport type {\n SupportAgent,\n SupportAgentStatus,\n SupportChannel,\n SupportChannelConfig,\n SupportChannelStatus,\n SupportChannelType,\n SupportConversation,\n SupportConversationChannelContext,\n SupportMessage,\n SupportConversationResponse,\n SupportConversationStartResponse,\n StorefrontSupportConversationResponse,\n StorefrontSupportConversationStartResponse,\n SendSupportMessageParams,\n StorefrontSendSupportMessageParams,\n StorefrontGetSupportConversationParams,\n SupportAgentNode,\n SupportAgentEdge,\n SupportAgentAiConfig,\n EdgeTrigger,\n SupportAction,\n AssignSupportConversationParams,\n GetSupportConversationParams,\n ReplySupportConversationParams,\n ResolveSupportConversationParams,\n CreateSupportChannelParams,\n UpdateSupportChannelParams,\n FindSupportChannelsParams,\n FindSupportConversationsParams,\n ReceiveSupportChannelMessageParams,\n} from \"./api/support\";\nexport type {\n WorkflowToolOperation,\n WorkflowToolResource,\n WorkflowTool,\n EventMetadata,\n EventScopeField,\n} from \"./api/platform\";\n\nexport const SDK_VERSION = \"0.11.0\";\nexport const SUPPORTED_FRAMEWORKS = [\n \"astro\",\n \"react\",\n \"vue\",\n \"svelte\",\n \"vanilla\",\n] as const;\n\nimport type {\n Price,\n} from \"./types\";\n\nexport interface ApiConfig {\n httpClient: HttpClient;\n storeId: string;\n baseUrl: string;\n market: string;\n locale: string;\n authStorage: AuthStorage;\n}\n\nexport interface StorefrontApiConfig {\n httpClient: HttpClient;\n apiUrl: string;\n publishableKey: string;\n market: string;\n locale: string;\n authStorage: AuthStorage;\n}\n\nexport interface AdminSessionInternal {\n access_token: string;\n refresh_token: string;\n access_expires_at?: number;\n email?: string;\n}\n\nexport interface ContactSessionInternal {\n sessionToken: string;\n contact: import(\"./api/storefront\").StorefrontContact;\n}\n\nexport interface AdminSession {\n email?: string;\n}\n\nexport interface ContactSession {\n contact: import(\"./api/storefront\").StorefrontContact;\n}\n\nexport interface StorefrontIdentifyResult {\n contact: import(\"./api/storefront\").StorefrontContact;\n verification_challenge:\n import(\"./types/api\").VerificationChallengeResponse | null;\n}\n\nexport interface StorefrontVerifyResult {\n contact: import(\"./api/storefront\").StorefrontContact;\n}\n\nexport type AdminSessionUpdater = (\n updater: (prev: AdminSessionInternal | null) => AdminSessionInternal | null,\n) => void;\n\nexport type ContactSessionUpdater = (\n updater: (\n prev: ContactSessionInternal | null,\n ) => ContactSessionInternal | null,\n) => void;\n\nexport type AuthStateListener<T> = (session: T | null) => void;\n\nimport {\n createHttpClient,\n type HttpClientConfig,\n type HttpClient,\n type AuthStorage,\n} from \"./services/createHttpClient\";\nimport { createAccountApi } from \"./api/account\";\nimport { createAuthApi } from \"./api/auth\";\nimport { createStoreApi } from \"./api/store\";\nimport { createMediaApi } from \"./api/media\";\nimport { createNotificationApi } from \"./api/notification\";\nimport { createPromoCodeApi } from \"./api/promoCode\";\nimport { createCmsApi } from \"./api/cms\";\nimport { createEshopApi } from \"./api/eshop\";\nimport { createLocationApi } from \"./api/location\";\nimport { createMarketApi } from \"./api/market\";\nimport { createContactApi } from \"./api/crm\";\nimport {\n createAdminSupportApi,\n createStorefrontSupportApi,\n} from \"./api/support\";\nimport { createLeadResearchApi } from \"./api/leadResearch\";\nimport { createSocialApi } from \"./api/social\";\nimport { createWorkflowApi } from \"./api/workflow\";\nimport { createPlatformApi } from \"./api/platform\";\nimport { createShippingApi } from \"./api/shipping\";\nimport { createPaymentProviderApi } from \"./api/paymentProvider\";\nimport { createEmailTemplateApi } from \"./api/emailTemplate\";\nimport { createFormApi } from \"./api/form\";\nimport { createTaxonomyApi } from \"./api/taxonomy\";\nimport { createAnalyticsApi } from \"./api/analytics\";\nimport { createExperimentsApi } from \"./api/experiments\";\nimport { createStorefrontApi } from \"./api/storefront\";\nimport {\n getImageUrl,\n getBlockValue,\n getBlockTextValue,\n getBlockContentValue,\n getBlockValues,\n getBlockLabel,\n getBlockObjectValues,\n getBlockFromArray,\n formatBlockValue,\n prepareBlocksForSubmission,\n extractBlockValues,\n} from \"./utils/blocks\";\nimport {\n formatPrice,\n getPriceAmount,\n formatPayment,\n formatMinor,\n getCurrencySymbol,\n getCurrencyName,\n} from \"./utils/price\";\nimport { validatePhoneNumber } from \"./utils/validation\";\nimport { tzGroups, findTimeZone } from \"./utils/timezone\";\nimport { slugify, humanize, categorify, formatDate } from \"./utils/text\";\nimport {\n getSvgContentForAstro,\n fetchSvgContent,\n injectSvgIntoElement,\n} from \"./utils/svg\";\nimport {\n isValidKey,\n validateKey,\n toKey,\n nameToKey,\n} from \"./utils/keyValidation\";\nimport {\n getAvailableStock,\n getReservedStock,\n hasStock,\n getInventoryAt,\n getFirstAvailableFCId,\n} from \"./utils/inventory\";\n\nfunction createUtilitySurface(apiConfig: Pick<ApiConfig, \"market\">) {\n return {\n getImageUrl: (imageBlock: unknown, isBlock = true) =>\n getImageUrl(imageBlock, isBlock),\n getBlockValue,\n getBlockTextValue,\n getBlockContentValue,\n getBlockValues,\n getBlockLabel,\n getBlockObjectValues,\n getBlockFromArray,\n formatBlockValue,\n prepareBlocksForSubmission,\n extractBlockValues,\n\n formatPrice: (prices: Price[]) => formatPrice(prices, apiConfig.market),\n getPriceAmount: (prices: Price[]) => getPriceAmount(prices, apiConfig.market),\n formatPayment,\n formatMinor,\n getCurrencySymbol,\n getCurrencyName,\n validatePhoneNumber,\n\n tzGroups,\n findTimeZone,\n\n slugify,\n humanize,\n categorify,\n formatDate,\n\n getSvgContentForAstro,\n fetchSvgContent,\n injectSvgIntoElement,\n\n isValidKey,\n validateKey,\n toKey,\n nameToKey,\n\n getAvailableStock,\n getReservedStock,\n hasStock,\n getInventoryAt,\n getFirstAvailableFCId,\n };\n}\n\nconst ADMIN_STORAGE_KEY = \"arky_admin_session\";\n\nfunction readAdminSession(): AdminSessionInternal | null {\n if (typeof window === \"undefined\") return null;\n try {\n const raw = localStorage.getItem(ADMIN_STORAGE_KEY);\n return raw ? (JSON.parse(raw) as AdminSessionInternal) : null;\n } catch {\n return null;\n }\n}\n\nfunction writeAdminSession(s: AdminSessionInternal | null): void {\n if (typeof window === \"undefined\") return;\n if (s) {\n localStorage.setItem(ADMIN_STORAGE_KEY, JSON.stringify(s));\n } else {\n localStorage.removeItem(ADMIN_STORAGE_KEY);\n }\n}\n\nexport type CreateAdminConfig = Omit<\n HttpClientConfig,\n \"authStorage\" | \"storeId\"\n> & {\n storeId: string;\n market: string;\n locale?: string;\n apiToken?: string;\n};\n\nexport function createAdmin(config: CreateAdminConfig) {\n const locale = config.locale || \"en\";\n const listeners = new Set<AuthStateListener<AdminSession>>();\n\n function toPublic(s: AdminSessionInternal | null): AdminSession | null {\n return s ? { email: s.email } : null;\n }\n\n function emit(): void {\n const pub = toPublic(readAdminSession());\n for (const l of listeners) {\n Promise.resolve()\n .then(() => l(pub))\n .catch(() => {});\n }\n }\n\n const updateSession: AdminSessionUpdater = (updater) => {\n if (config.apiToken) return;\n const prev = readAdminSession();\n const next = updater(prev);\n writeAdminSession(next);\n emit();\n };\n\n const authStorage: AuthStorage = config.apiToken\n ? {\n getTokens: () => ({ access_token: config.apiToken! }),\n onTokensRefreshed: () => {},\n onForcedLogout: () => {},\n }\n : {\n getTokens() {\n const s = readAdminSession();\n if (!s) return null;\n return {\n access_token: s.access_token,\n refresh_token: s.refresh_token,\n access_expires_at: s.access_expires_at,\n };\n },\n onTokensRefreshed(tokens) {\n updateSession((prev) =>\n prev\n ? {\n ...prev,\n access_token: tokens.access_token,\n refresh_token: tokens.refresh_token ?? prev.refresh_token,\n access_expires_at:\n tokens.access_expires_at ?? prev.access_expires_at,\n }\n : null,\n );\n },\n onForcedLogout() {\n updateSession(() => null);\n },\n };\n\n const httpClient = createHttpClient({\n baseUrl: config.baseUrl,\n storeId: config.storeId,\n refreshPath: config.refreshPath,\n navigate: config.navigate,\n loginFallbackPath: config.loginFallbackPath,\n authStorage,\n });\n\n const apiConfig: ApiConfig = {\n httpClient,\n storeId: config.storeId,\n baseUrl: config.baseUrl,\n market: config.market,\n locale,\n authStorage,\n };\n\n const accountApi = createAccountApi(apiConfig);\n const authApi = createAuthApi(apiConfig, updateSession);\n const storeApi = createStoreApi(apiConfig, updateSession);\n const platformApi = createPlatformApi(apiConfig);\n\n const cmsApi = createCmsApi(apiConfig);\n const eshopApi = createEshopApi(apiConfig);\n const promoCodeApi = createPromoCodeApi(apiConfig);\n const crmApi = createContactApi(apiConfig);\n const supportApi = createAdminSupportApi(apiConfig);\n const leadResearchApi = createLeadResearchApi(apiConfig);\n const socialApi = createSocialApi(apiConfig);\n const paymentProviderApi = createPaymentProviderApi(apiConfig);\n const notificationApi = createNotificationApi(apiConfig);\n const shippingApi = createShippingApi(apiConfig);\n const locationApi = createLocationApi(apiConfig);\n const marketApi = createMarketApi(apiConfig);\n const workflowApi = createWorkflowApi(apiConfig);\n const storePaymentProviderApi = {\n list: paymentProviderApi.list,\n refresh: paymentProviderApi.refresh,\n connectStripe: paymentProviderApi.connectStripe,\n delete: paymentProviderApi.delete,\n };\n const workflowPublicApi = {\n create: workflowApi.createWorkflow,\n update: workflowApi.updateWorkflow,\n delete: workflowApi.deleteWorkflow,\n get: workflowApi.getWorkflow,\n find: workflowApi.getWorkflows,\n trigger: workflowApi.triggerWorkflow,\n getExecutions: workflowApi.getWorkflowExecutions,\n getExecution: workflowApi.getWorkflowExecution,\n listEffects: workflowApi.getWorkflowEffects,\n getEffect: workflowApi.getWorkflowEffect,\n listConnections: workflowApi.getWorkflowConnections,\n getConnectionConnectUrl: workflowApi.getWorkflowConnectionConnectUrl,\n deleteConnection: workflowApi.deleteWorkflowConnection,\n };\n const formApi = createFormApi(apiConfig);\n const taxonomyApi = createTaxonomyApi(apiConfig);\n const emailTemplateApi = createEmailTemplateApi(apiConfig);\n const analyticsApi = createAnalyticsApi(apiConfig);\n const experimentsApi = createExperimentsApi(apiConfig);\n\n const sdk = {\n account: {\n update: accountApi.updateAccount,\n delete: accountApi.deleteAccount,\n getMe: accountApi.getMe,\n search: accountApi.searchAccounts,\n apiToken: {\n list: accountApi.listApiTokens,\n create: accountApi.createApiToken,\n update: accountApi.updateApiToken,\n revoke: accountApi.revokeApiToken,\n },\n session: {\n list: accountApi.listSessions,\n revoke: accountApi.revokeSession,\n },\n auth: authApi,\n },\n store: {\n create: storeApi.createStore,\n update: storeApi.updateStore,\n get: storeApi.getStore,\n find: storeApi.getStores,\n regeneratePublishableKey: storeApi.regeneratePublishableKey,\n subscription: {\n get: storeApi.getSubscription,\n getPlans: storeApi.getSubscriptionPlans,\n action: {\n create: storeApi.createSubscriptionAction,\n find: storeApi.findSubscriptionActions,\n get: storeApi.getSubscriptionAction,\n retry: storeApi.retrySubscriptionAction,\n effect: {\n find: storeApi.findSubscriptionActionEffects,\n get: storeApi.getSubscriptionActionEffect,\n },\n },\n createPortalSession: storeApi.createPortalSession,\n },\n member: {\n add: storeApi.addMember,\n invite: storeApi.inviteUser,\n find: storeApi.findMembers,\n findOwn: storeApi.findOwnMemberships,\n remove: storeApi.removeMember,\n },\n buildHook: {\n list: storeApi.listBuildHooks,\n create: storeApi.createBuildHook,\n update: storeApi.updateBuildHook,\n delete: storeApi.deleteBuildHook,\n },\n webhook: {\n test: storeApi.testWebhook,\n list: storeApi.listWebhooks,\n create: storeApi.createWebhook,\n update: storeApi.updateWebhook,\n delete: storeApi.deleteWebhook,\n },\n config: {\n getPayment: storeApi.getPaymentConfig,\n },\n location: locationApi,\n market: marketApi,\n paymentProvider: storePaymentProviderApi,\n },\n media: createMediaApi(apiConfig),\n notification: {\n email: {\n send: notificationApi.sendEmail,\n getDelivery: notificationApi.getEmailDelivery,\n retryDelivery: notificationApi.retryEmailDelivery,\n },\n mailbox: crmApi.mailbox,\n },\n platform: platformApi,\n social: {\n connection: {\n getCapabilities: socialApi.getCapabilities,\n list: socialApi.listConnections,\n connect: socialApi.connect,\n getOAuthAttempt: socialApi.getOAuthAttempt,\n selectDestination: socialApi.selectDestination,\n delete: socialApi.deleteConnection,\n },\n publication: {\n create: socialApi.createPublication,\n update: socialApi.updatePublication,\n get: socialApi.getPublication,\n find: socialApi.findPublications,\n validate: socialApi.validatePublication,\n schedule: socialApi.schedulePublication,\n cancel: socialApi.cancelPublication,\n getComments: socialApi.getPublicationComments,\n syncComments: socialApi.syncPublicationComments,\n getCommentThread: socialApi.getPublicationCommentThread,\n syncCommentThread: socialApi.syncPublicationCommentThread,\n findComments: socialApi.findPublicationComments,\n classifyComments: socialApi.classifyPublicationComments,\n commentReply: {\n create: socialApi.createCommentReply,\n list: socialApi.listCommentReplies,\n get: socialApi.getCommentReply,\n retry: socialApi.retryCommentReply,\n },\n effect: {\n list: socialApi.listPublicationEffects,\n get: socialApi.getPublicationEffect,\n },\n getMetrics: socialApi.getPublicationMetrics,\n syncMetrics: socialApi.syncPublicationMetrics,\n syncEngagement: socialApi.syncEngagement,\n },\n },\n cms: {\n collection: {\n create: cmsApi.createCollection,\n update: cmsApi.updateCollection,\n delete: cmsApi.deleteCollection,\n get: cmsApi.getCollection,\n find: cmsApi.getCollections,\n },\n entry: {\n create: cmsApi.createEntry,\n update: cmsApi.updateEntry,\n delete: cmsApi.deleteEntry,\n get: cmsApi.getEntry,\n find: cmsApi.getEntries,\n },\n form: {\n create: formApi.createForm,\n update: formApi.updateForm,\n delete: formApi.deleteForm,\n get: formApi.getForm,\n find: formApi.getForms,\n submit: formApi.submit,\n getSubmissions: formApi.getSubmissions,\n getSubmission: formApi.getSubmission,\n updateSubmission: formApi.updateSubmission,\n },\n taxonomy: {\n create: taxonomyApi.createTaxonomy,\n update: taxonomyApi.updateTaxonomy,\n delete: taxonomyApi.deleteTaxonomy,\n get: taxonomyApi.getTaxonomy,\n find: taxonomyApi.getTaxonomies,\n getChildren: taxonomyApi.getTaxonomyChildren,\n },\n emailTemplate: {\n create: emailTemplateApi.createEmailTemplate,\n update: emailTemplateApi.updateEmailTemplate,\n delete: emailTemplateApi.deleteEmailTemplate,\n get: emailTemplateApi.getEmailTemplate,\n find: emailTemplateApi.getEmailTemplates,\n preview: emailTemplateApi.previewEmailTemplate,\n },\n },\n eshop: {\n product: {\n create: eshopApi.createProduct,\n update: eshopApi.updateProduct,\n delete: eshopApi.deleteProduct,\n get: eshopApi.getProduct,\n find: eshopApi.getProducts,\n },\n order: {\n update: eshopApi.updateOrder,\n get: eshopApi.getOrder,\n find: eshopApi.getOrders,\n getQuote: eshopApi.getQuote,\n createRefund: eshopApi.createRefund,\n getRefund: eshopApi.getRefund,\n getRefunds: eshopApi.getRefunds,\n getPayment: eshopApi.getPayment,\n retryPaymentTransaction: eshopApi.retryPaymentTransaction,\n getPaymentTransactions: eshopApi.getPaymentTransactions,\n getPaymentTransaction: eshopApi.getPaymentTransaction,\n findDigitalAccess: eshopApi.findDigitalAccess,\n getDigitalAccess: eshopApi.getDigitalAccess,\n downloadDigitalAccess: eshopApi.downloadDigitalAccess,\n activateDigitalAccess: eshopApi.activateDigitalAccess,\n revokeDigitalAccess: eshopApi.revokeDigitalAccess,\n },\n shipment: {\n getRates: shippingApi.getRates,\n create: shippingApi.createShipment,\n get: shippingApi.getShipment,\n find: shippingApi.findShipments,\n retry: shippingApi.retryShipment,\n fulfillment: {\n find: shippingApi.findFulfillmentOrders,\n get: shippingApi.getFulfillmentOrder,\n },\n refund: {\n request: shippingApi.requestRefund,\n get: shippingApi.getRefund,\n find: shippingApi.findRefunds,\n retry: shippingApi.retryRefund,\n },\n adjustment: {\n find: shippingApi.findAdjustments,\n },\n settlement: {\n find: shippingApi.findSettlements,\n retry: shippingApi.retrySettlement,\n },\n },\n cart: {\n create: eshopApi.createCart,\n update: eshopApi.updateCart,\n get: eshopApi.getCart,\n find: eshopApi.getCarts,\n addItem: eshopApi.addCartItem,\n removeItem: eshopApi.removeCartItem,\n clear: eshopApi.clearCart,\n quote: eshopApi.quoteCart,\n checkout: eshopApi.checkoutCart,\n },\n service: {\n create: eshopApi.createService,\n update: eshopApi.updateService,\n delete: eshopApi.deleteService,\n get: eshopApi.getService,\n find: eshopApi.getServices,\n getAvailability: eshopApi.getServiceAvailability,\n findProviders: eshopApi.findServiceProviders,\n createProvider: eshopApi.createServiceProvider,\n updateProvider: eshopApi.updateServiceProvider,\n deleteProvider: eshopApi.deleteServiceProvider,\n },\n provider: {\n create: eshopApi.createProvider,\n update: eshopApi.updateProvider,\n delete: eshopApi.deleteProvider,\n get: eshopApi.getProvider,\n find: eshopApi.getProviders,\n },\n promoCode: promoCodeApi,\n },\n crm: {\n contact: {\n create: crmApi.create,\n get: crmApi.get,\n find: crmApi.find,\n update: crmApi.update,\n merge: crmApi.merge,\n import: crmApi.import,\n findSessions: crmApi.findSessions,\n revokeSession: crmApi.revokeSession,\n revokeAllSessions: crmApi.revokeAllSessions,\n },\n contactList: {\n create: crmApi.contactList.create,\n update: crmApi.contactList.update,\n get: crmApi.contactList.get,\n find: crmApi.contactList.find,\n importContacts: crmApi.contactList.importContacts,\n previewImportContacts: crmApi.contactList.previewImportContacts,\n addMember: crmApi.contactList.members.add,\n updateMember: crmApi.contactList.members.update,\n removeMember: crmApi.contactList.members.remove,\n findMembers: crmApi.contactList.members.find,\n plans: crmApi.contactList.plans,\n memberships: {\n refund: crmApi.contactList.memberships.refund,\n paymentAttempts: crmApi.contactList.memberships.paymentAttempts,\n refunds: crmApi.contactList.memberships.refunds,\n cancellations: crmApi.contactList.memberships.cancellations,\n },\n },\n action: crmApi.action,\n },\n outreach: {\n campaign: crmApi.campaign,\n campaignEnrollment: crmApi.campaignEnrollment,\n campaignMessage: crmApi.campaignMessage,\n suppression: crmApi.suppression,\n leadResearch: leadResearchApi,\n },\n automation: {\n workflow: workflowPublicApi,\n support: {\n createChannel: supportApi.channel.create,\n getChannel: supportApi.channel.get,\n findChannels: supportApi.channel.find,\n updateChannel: supportApi.channel.update,\n deleteChannel: supportApi.channel.delete,\n receiveChannelMessage: supportApi.channel.receiveMessage,\n createAgent: supportApi.agent.create,\n getAgent: supportApi.agent.get,\n findAgents: supportApi.agent.find,\n updateAgent: supportApi.agent.update,\n deleteAgent: supportApi.agent.delete,\n findConversations: supportApi.conversation.find,\n getConversation: supportApi.conversation.get,\n sendConversationMessage: supportApi.conversation.sendMessage,\n replyToConversation: supportApi.conversation.reply,\n resolveConversation: supportApi.conversation.resolve,\n assignConversation: supportApi.conversation.assign,\n },\n },\n\n analytics: analyticsApi,\n experiments: experimentsApi,\n\n setStoreId: (storeId: string) => {\n apiConfig.storeId = storeId;\n },\n\n getStoreId: () => apiConfig.storeId,\n\n setMarket: (market: string) => {\n apiConfig.market = market;\n },\n\n getMarket: () => apiConfig.market,\n\n setLocale: (locale: string) => {\n apiConfig.locale = locale;\n },\n\n getLocale: () => apiConfig.locale,\n\n get session(): AdminSession | null {\n if (config.apiToken) return null;\n return toPublic(readAdminSession());\n },\n\n get isAuthenticated(): boolean {\n if (config.apiToken) return true;\n return readAdminSession() !== null;\n },\n\n onAuthStateChanged(listener: AuthStateListener<AdminSession>): () => void {\n listeners.add(listener);\n const current = toPublic(readAdminSession());\n if (current) {\n Promise.resolve()\n .then(() => listener(current))\n .catch(() => {});\n }\n return () => {\n listeners.delete(listener);\n };\n },\n\n async logout(): Promise<void> {\n if (config.apiToken) return;\n updateSession(() => null);\n },\n\n utils: createUtilitySurface(apiConfig),\n };\n\n return sdk;\n}\n\nexport interface StorefrontSessionStorage {\n getItem(key: string): string | null;\n setItem(key: string, value: string): void;\n removeItem(key: string): void;\n}\n\nexport interface StorefrontContext {\n locale?: string;\n market?: string;\n}\n\nexport interface StorefrontOptions extends StorefrontContext {\n apiUrl?: string;\n sessionStorage?: StorefrontSessionStorage;\n}\n\nexport const DEFAULT_STOREFRONT_API_URL = \"https://api.arky.io\";\nlet storefrontScopeSequence = 0;\n\nfunction defaultStorefrontSessionStorage(): StorefrontSessionStorage | null {\n if (typeof window === \"undefined\") return null;\n try {\n return window.localStorage;\n } catch {\n return null;\n }\n}\n\nfunction normalizeStorefrontApiUrl(value: string | undefined): string {\n const input = value?.trim() || DEFAULT_STOREFRONT_API_URL;\n let parsed: URL;\n try {\n parsed = new URL(input);\n } catch {\n throw new Error(\"Storefront apiUrl must be a valid HTTP(S) URL\");\n }\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n throw new Error(\"Storefront apiUrl must use HTTP or HTTPS\");\n }\n return input.replace(/\\/+$/, \"\");\n}\n\nfunction validatePublishableKey(publishableKey: string): string {\n if (typeof publishableKey !== \"string\") {\n throw new Error(\n \"A valid Arky publishable key is required (arky_pk_ followed by 43 URL-safe characters)\",\n );\n }\n const key = publishableKey.trim();\n if (!/^arky_pk_[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048]$/.test(key)) {\n throw new Error(\n \"A valid Arky publishable key is required (arky_pk_ followed by 43 URL-safe characters)\",\n );\n }\n return key;\n}\n\nfunction publishableKeyFingerprint(publishableKey: string): string {\n let hashA = 0x811c9dc5;\n let hashB = 0x9e3779b9;\n for (let index = 0; index < publishableKey.length; index += 1) {\n const code = publishableKey.charCodeAt(index);\n hashA = Math.imul(hashA ^ code, 0x01000193);\n hashB = Math.imul(hashB ^ code, 0x85ebca6b);\n }\n return `${(hashA >>> 0).toString(36)}${(hashB >>> 0).toString(36)}`;\n}\n\nfunction storefrontSessionStorageKey(\n apiUrl: string,\n publishableKey: string,\n): string {\n return `arky_visitor_session:${encodeURIComponent(apiUrl.toLowerCase())}:${publishableKeyFingerprint(publishableKey)}`;\n}\n\nfunction isVisitorSessionToken(value: string | null): value is string {\n return Boolean(value && /^arky_vst_[0-9a-f]{64}$/.test(value));\n}\n\nfunction createStorefrontClientCore(\n publishableKeyInput: string,\n options: StorefrontOptions = {},\n isolatedSession = false,\n) {\n const publishableKey = validatePublishableKey(publishableKeyInput);\n const apiUrl = normalizeStorefrontApiUrl(options.apiUrl);\n let locale = options.locale?.trim() || \"\";\n let market = options.market?.trim() || \"\";\n const listeners = new Set<AuthStateListener<ContactSession>>();\n let identifyPromise: Promise<StorefrontIdentifyResult> | null = null;\n let identityTail: Promise<void> = Promise.resolve();\n let setupPromise: Promise<import(\"./api/storefront\").StorefrontSetup> | null = null;\n let setupValue: import(\"./api/storefront\").StorefrontSetup | null = null;\n const explicitSessionStorage = options.sessionStorage;\n const sessionStorage = isolatedSession\n ? explicitSessionStorage || null\n : explicitSessionStorage || defaultStorefrontSessionStorage();\n const canCreateVisitorSession =\n typeof window !== \"undefined\" || Boolean(explicitSessionStorage);\n const storageKey = `${storefrontSessionStorageKey(apiUrl, publishableKey)}${\n isolatedSession ? `:scope:${++storefrontScopeSequence}` : \"\"\n }`;\n let memorySession: ContactSessionInternal | null = null;\n let memorySessionToken: string | null = null;\n\n function readSessionToken(): string | null {\n if (!sessionStorage) return memorySessionToken;\n try {\n const stored = sessionStorage.getItem(storageKey);\n return isVisitorSessionToken(stored) ? stored : memorySessionToken;\n } catch {\n return memorySessionToken;\n }\n }\n\n function writeContactSession(session: ContactSessionInternal | null): void {\n memorySession = session;\n memorySessionToken = session?.sessionToken || null;\n if (!sessionStorage) return;\n try {\n if (session) {\n sessionStorage.setItem(storageKey, session.sessionToken);\n } else {\n sessionStorage.removeItem(storageKey);\n }\n } catch {\n }\n }\n\n function toPublic(s: ContactSessionInternal | null): ContactSession | null {\n return s ? { contact: s.contact } : null;\n }\n\n function emit(): void {\n const pub = toPublic(memorySession);\n for (const l of listeners) {\n Promise.resolve()\n .then(() => l(pub))\n .catch(() => {});\n }\n }\n\n const updateSession: ContactSessionUpdater = (updater) => {\n const next = updater(memorySession);\n writeContactSession(next);\n emit();\n };\n\n const authStorage: AuthStorage = {\n getTokens() {\n const sessionToken = readSessionToken();\n return sessionToken ? { access_token: sessionToken } : null;\n },\n onTokensRefreshed() {},\n onForcedLogout() {\n identifyPromise = null;\n updateSession(() => null);\n },\n };\n\n let recoverUnauthorized: (\n authorizationToken: string | null,\n path: string,\n ) => Promise<boolean> = async () => false;\n let visitorRecoveryPromise: Promise<void> | null = null;\n\n const httpClient = createHttpClient({\n baseUrl: apiUrl,\n authStorage,\n storefrontMode: true,\n forcedHeaders: () => ({\n \"X-Arky-Publishable-Key\": publishableKey,\n ...(locale ? { \"X-Arky-Locale\": locale } : {}),\n ...(market ? { \"X-Arky-Market\": market } : {}),\n }),\n onUnauthorized: ({ authorizationToken, path }) =>\n recoverUnauthorized(authorizationToken, path),\n });\n\n const apiConfig: StorefrontApiConfig = {\n httpClient,\n apiUrl,\n publishableKey,\n market,\n locale,\n authStorage,\n };\n\n function requireVisitorSessionCapability(): void {\n if (!canCreateVisitorSession) {\n throw new Error(\n \"Stateful storefront operations during SSR require an explicit request-local sessionStorage adapter\",\n );\n }\n }\n\n async function getSetup(\n requestOptions?: import(\"./types/api\").RequestOptions,\n ): Promise<import(\"./api/storefront\").StorefrontSetup> {\n if (setupValue) return setupValue;\n if (setupPromise) return setupPromise;\n setupPromise = httpClient\n .get<import(\"./api/storefront\").StorefrontSetup>(\n \"/v1/storefront\",\n requestOptions,\n )\n .then((setup) => {\n setupValue = setup;\n return setup;\n })\n .finally(() => {\n setupPromise = null;\n });\n return setupPromise;\n }\n\n async function ensureVisitorSession(): Promise<void> {\n if (readSessionToken()) return;\n requireVisitorSessionCapability();\n await identify();\n }\n\n const storefrontApi = createStorefrontApi(apiConfig, updateSession, {\n ensureVisitorSession,\n getSetup,\n });\n const contactApi = storefrontApi.crm.contact;\n\n function identify(params?: {\n email?: string;\n verify?: boolean;\n market?: string;\n }): Promise<StorefrontIdentifyResult> {\n requireVisitorSessionCapability();\n if (params?.market !== undefined) setMarket(params.market);\n\n const isBareCall = !params?.email && !params?.verify;\n if (isBareCall && identifyPromise) return identifyPromise;\n\n const run = async (): Promise<StorefrontIdentifyResult> => {\n const result = await (params?.verify\n ? contactApi.requestCode({ email: params.email })\n : contactApi.identify({ email: params?.email }));\n return {\n contact: result.contact,\n verification_challenge: result.verification_challenge,\n };\n };\n\n const promise = identityTail.then(run);\n identityTail = promise.then(\n () => undefined,\n () => undefined,\n );\n\n if (isBareCall) {\n identifyPromise = promise;\n void promise.then(\n () => {\n if (identifyPromise === promise) identifyPromise = null;\n },\n () => {\n if (identifyPromise === promise) identifyPromise = null;\n },\n );\n }\n\n return promise;\n }\n\n async function verify(\n params: { challenge_id: string; code: string },\n ): Promise<StorefrontVerifyResult> {\n requireVisitorSessionCapability();\n const result = await contactApi.verify(params);\n identifyPromise = null;\n return { contact: result.contact };\n }\n\n async function me(): Promise<import(\"./api/storefront\").StorefrontContact> {\n await ensureVisitorSession();\n return contactApi.getMe();\n }\n\n async function logout(): Promise<void> {\n identifyPromise = null;\n if (!readSessionToken()) {\n updateSession(() => null);\n return;\n }\n try {\n await contactApi.logout();\n } catch {\n updateSession(() => null);\n }\n }\n\n function setMarket(value: string): void {\n market = value.trim();\n apiConfig.market = market;\n identifyPromise = null;\n }\n\n function setLocale(value: string): void {\n locale = value.trim();\n apiConfig.locale = locale;\n }\n\n function setContext(context: StorefrontContext): void {\n if (context.locale !== undefined) setLocale(context.locale);\n if (context.market !== undefined) setMarket(context.market);\n }\n\n recoverUnauthorized = async (\n authorizationToken: string | null,\n path: string,\n ) => {\n if (!authorizationToken) return false;\n const currentToken = readSessionToken();\n if (currentToken !== authorizationToken) {\n if (currentToken) return true;\n if (!visitorRecoveryPromise) return false;\n await visitorRecoveryPromise;\n return Boolean(readSessionToken());\n }\n updateSession(() => null);\n if (/\\/account\\/(identify|code)$/.test(path)) return true;\n const recovery = ensureVisitorSession();\n const trackedRecovery = recovery.finally(() => {\n if (visitorRecoveryPromise === trackedRecovery) {\n visitorRecoveryPromise = null;\n }\n });\n visitorRecoveryPromise = trackedRecovery;\n await trackedRecovery;\n return true;\n };\n\n return {\n identify,\n verify,\n logout,\n me,\n\n get session(): ContactSession | null {\n return toPublic(memorySession);\n },\n\n get isAuthenticated(): boolean {\n return Boolean(readSessionToken());\n },\n\n onAuthStateChanged(\n listener: AuthStateListener<ContactSession>,\n ): () => void {\n listeners.add(listener);\n const current = toPublic(memorySession);\n if (current) {\n Promise.resolve()\n .then(() => listener(current))\n .catch(() => {});\n }\n return () => {\n listeners.delete(listener);\n };\n },\n\n store: storefrontApi.store,\n cms: storefrontApi.cms,\n eshop: storefrontApi.eshop,\n crm: {\n ...storefrontApi.crm,\n contact: {\n identify: (params?: { email?: string }) => identify(params),\n requestCode: (params?: { email?: string }) =>\n identify({ ...params, verify: true }),\n verify,\n logout,\n getMe: me,\n },\n },\n action: storefrontApi.action,\n experiments: storefrontApi.experiments,\n support: createStorefrontSupportApi(apiConfig, ensureVisitorSession),\n getSetup,\n setContext,\n setMarket,\n getMarket: () => market,\n setLocale,\n getLocale: () => locale,\n utils: createUtilitySurface(apiConfig),\n };\n}\n\ntype StorefrontClientCore = ReturnType<typeof createStorefrontClientCore>;\n\nexport type StorefrontClient = StorefrontClientCore & {\n withContext(context: StorefrontContext): StorefrontClient;\n};\n\nfunction createStorefrontClient(\n publishableKey: string,\n options: StorefrontOptions = {},\n isolatedSession = false,\n): StorefrontClient {\n const client = createStorefrontClientCore(\n publishableKey,\n options,\n isolatedSession,\n );\n return Object.assign(client, {\n withContext(context: StorefrontContext): StorefrontClient {\n return createStorefrontClient(\n publishableKey,\n {\n ...options,\n locale: context.locale ?? client.getLocale(),\n market: context.market ?? client.getMarket(),\n },\n true,\n );\n },\n });\n}\n\nexport function createStorefront(\n publishableKey: string,\n options: StorefrontOptions = {},\n): StorefrontClient {\n return createStorefrontClient(publishableKey, options);\n}\n\nexport type { HttpClientConfig } from \"./services/createHttpClient\";\nexport {\n buildFormFields,\n createFormEntry,\n createFormEntryFromValues,\n initialize,\n} from \"./storefrontStore\";\nexport type {\n ArkyCartStore,\n ArkyServiceStore,\n ArkyStore,\n ArkyStoreConfig,\n ArkyStoreContext,\n ArkyStripePaymentMountOptions,\n} from \"./storefrontStore\";\n"]}