arky-sdk 0.9.11 → 0.9.13

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.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types/index.ts","../src/utils/orderItems.ts","../src/api/storefront.ts","../src/cartController.ts","../src/utils/errors.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/index.ts"],"names":["PaymentMethodType","url","locale"],"mappings":"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","file":"index.js","sourcesContent":["export * from \"./api\";\n\nexport enum PaymentMethodType {\n Cash = \"cash\",\n CreditCard = \"credit_card\",\n}\n\nexport interface PaymentTaxLine {\n rate_bps: number;\n amount: number;\n label?: string;\n scope?: string;\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 OrderPaymentProvider = {\n type: \"stripe\";\n stripe_customer_id: string;\n payment_intent_id?: string | null;\n payment_provider_id?: string | null;\n connected_account_id?: string | null;\n};\n\nexport type PaymentTransactionProvider =\n | \"manual\"\n | \"stripe\"\n | \"gift_card\"\n | \"store_credit\";\nexport type PaymentCaptureMethod = \"automatic\" | \"manual\";\nexport type PaymentTransactionType =\n | \"authorize\"\n | \"capture\"\n | \"sale\"\n | \"void\"\n | \"cancel\"\n | \"refund\"\n | \"mark_paid\"\n | \"adjustment\";\nexport type PaymentTransactionStatus =\n | \"pending\"\n | \"requires_action\"\n | \"processing\"\n | \"succeeded\"\n | \"failed\"\n | \"cancelled\";\n\nexport interface PaymentTransaction {\n id: string;\n payment_id?: string | null;\n order_id?: string | null;\n parent_transaction_id?: string | null;\n type: PaymentTransactionType;\n status: PaymentTransactionStatus;\n amount: number;\n currency: string;\n provider: PaymentTransactionProvider;\n provider_transaction_id?: string | null;\n provider_payment_id?: string | null;\n provider_status?: string | null;\n error_code?: string | null;\n error_message?: string | null;\n fee_amount?: number | null;\n net_amount?: number | null;\n settlement_currency?: string | null;\n settlement_exchange_rate?: number | null;\n payout_id?: string | null;\n idempotency_key?: string | null;\n raw_provider_status?: string | null;\n processed_at?: number | null;\n created_at: number;\n}\n\nexport interface OrderPaymentRefund {\n id: string;\n type: RefundType;\n total: number;\n tax_amount: number;\n shipping_amount?: number | null;\n provider_refund_id?: string | null;\n status: import(\"./api\").RefundStatus;\n error?: OrderRefundError | null;\n reason?: string | null;\n lines: RefundLine[];\n transaction_ids: string[];\n created_at: number;\n}\n\nexport type OrderRefundError =\n | {\n type: \"provider_rejected\";\n message: string;\n provider_code?: string | null;\n provider_status?: number | null;\n at: number;\n }\n | {\n type: \"unknown_outcome\";\n message: string;\n at: number;\n }\n | {\n type: \"missing_payment_intent\";\n message: string;\n at: number;\n };\n\nexport interface OrderPayment {\n status: OrderPaymentStatus;\n currency: string;\n market: string;\n subtotal: number;\n shipping: number;\n discount: number;\n total: number;\n paid: number;\n authorized_amount: number;\n captured_amount: number;\n refunded_amount: number;\n voided_amount: number;\n capture_method: PaymentCaptureMethod;\n tax?: OrderPaymentTax;\n promo_code?: OrderPaymentPromoCode;\n provider?: OrderPaymentProvider;\n refunds: OrderPaymentRefund[];\n transactions: PaymentTransaction[];\n provider_payment_id?: string | null;\n provider_customer_id?: string | null;\n provider_payment_method_id?: string | null;\n provider_status?: string | null;\n next_action?: string | null;\n failure_code?: string | null;\n failure_message?: string | null;\n idempotency_key?: string | null;\n zone_id?: string;\n payment_method_key?: string;\n shipping_method_id?: string;\n method_type: PaymentMethodType;\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 payment: OrderPayment;\n charge_amount: number;\n}\n\nexport interface Price {\n currency: string;\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: string;\n id: string;\n}\n\nexport interface SubscriptionPrice {\n currency: string;\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 SocialOAuthCredential {\n access_token?: string;\n refresh_token?: string | null;\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 SocialProviderType =\n | \"facebook_page\"\n | \"instagram_business\"\n | \"youtube_channel\"\n | \"tiktok_account\"\n | \"x_account\";\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_account_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\"\n | \"replied\"\n | \"hidden\"\n | \"deleted\";\n\nexport type SocialPublicationCommentReplyStatus =\n | \"none\"\n | \"requested\"\n | \"processing\"\n | \"succeeded\"\n | \"failed\"\n | \"unknown\";\n\nexport type SocialPublicationCommentReplyError =\n | {\n type: \"provider_rejected\";\n message: string;\n provider_code?: string | null;\n provider_status?: number | null;\n at: number;\n }\n | {\n type: \"unknown_outcome\";\n message: string;\n at: number;\n };\n\nexport type SocialPublicationCommentIntent =\n | \"lead\"\n | \"support\"\n | \"complaint\"\n | \"question\"\n | \"praise\"\n | \"spam\"\n | \"general\";\n\nexport type SocialPublicationCommentPriority =\n | \"urgent\"\n | \"high\"\n | \"normal\"\n | \"low\";\n\nexport interface SocialPublicationComment {\n id: string;\n store_id: string;\n publication_id: string;\n social_account_id: string;\n provider_type: SocialProviderType;\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 reply_status: SocialPublicationCommentReplyStatus;\n reply_error?: SocialPublicationCommentReplyError | null;\n reply_requested_text?: string | null;\n reply_provider_comment_id?: string | null;\n reply_provider_comment_url?: string | null;\n reply_error_code?: string | null;\n reply_error_message?: string | null;\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_account_id: string;\n provider_type: SocialProviderType;\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 interface SocialPublicationCommentReply {\n provider_comment_id: string;\n provider_comment_url?: string | null;\n}\n\nexport interface SocialPublicationCommentReplyResponse {\n comment: SocialPublicationComment;\n reply: SocialPublicationCommentReply;\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 provider_type: SocialProviderType;\n display_name: string;\n icon_key: string;\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 =\n | \"code_received\"\n | \"connected\"\n | \"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 provider_type: SocialProviderType;\n account_id: string;\n attempt_id?: string | null;\n social_account_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 SocialAccount {\n id: string;\n store_id: string;\n key: string;\n provider_type: SocialProviderType;\n credential: SocialOAuthCredential;\n destination: SocialDestinationMetadata;\n created_at: number;\n updated_at: number;\n}\n\nexport interface PaymentProvider {\n id: string;\n store_id: string;\n key: string;\n provider: {\n type: \"stripe\";\n onboarding_status: string;\n charges_enabled: boolean;\n payouts_enabled: boolean;\n details_submitted: boolean;\n application_fee_bps?: number | null;\n currency: string;\n };\n created_at: number;\n updated_at: number;\n}\n\nexport interface PaymentStoreConfig {\n provider: \"stripe\";\n publishable_key: string;\n currency: string;\n}\n\nexport type StoreRuntimeConfig = PaymentStoreConfig | [] | null;\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 TaxLineReversal {\n tax_line_id: string;\n amount: number;\n}\n\nexport interface RefundLine {\n order_item_id: string;\n quantity: number;\n subtotal_amount: number;\n discount_amount: number;\n taxable_base: number;\n amount: number;\n tax_amount: number;\n tax_line_reversals: TaxLineReversal[];\n restock: boolean;\n}\n\nexport type RefundType = \"item\" | \"shipping\" | \"goodwill\" | \"correction\";\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\"\n | \"partially_fulfilled\"\n | \"fulfilled\"\n | \"not_required\";\n\nexport type BookingOrderItemStatus =\n | \"scheduled\"\n | \"completed\"\n | \"no_show\"\n | \"cancelled\";\n\nexport type OrderItemSnapshot =\n | ProductLineItemSnapshot\n | ServiceLineItemSnapshot;\n\nexport type ProductQuoteLineAvailability =\n | { ok: true; available?: number }\n | { ok: false; reason: string };\n\nexport type ServiceQuoteLineAvailability =\n | { ok: true; spots: number }\n | { 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 fulfilled_quantity: number;\n returned_quantity: number;\n refunded_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 refunded_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 HistoryEntry {\n action: string;\n reason?: string;\n timestamp: number;\n}\n\nexport type DigitalAccessGrantStatus =\n | \"pending\"\n | \"active\"\n | \"exhausted\"\n | \"revoked\"\n | \"expired\";\n\nexport interface DigitalAccessGrant {\n 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 access_url?: string | null;\n storage_ref?: string | null;\n status: DigitalAccessGrantStatus;\n delivery_policy_snapshot: DigitalDeliveryPolicy;\n download_limit?: number | null;\n download_count: number;\n expires_at?: number | null;\n granted_at?: number | null;\n revoked_at?: number | null;\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 fulfilled_quantity: number;\n}\n\nexport interface FulfillmentOrder {\n 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 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: OrderPayment;\n shipping_lines: ShippingLine[];\n fulfillment_orders: FulfillmentOrder[];\n shipping_address?: Address;\n billing_address?: Address;\n forms: FormEntry[];\n shipments: Shipment[];\n digital_access_grants: DigitalAccessGrant[];\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\" }\n | { 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: string;\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.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: \"store.deleted\" }\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: \"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\"\n | \"active\"\n | \"cancellation_scheduled\"\n | \"cancelled\"\n | \"expired\";\n\nexport type StoreSubscriptionSource = \"signup\" | \"admin\" | \"import\";\n\nexport type StoreSubscriptionProvider = {\n type: \"stripe\";\n stripe_customer_id: string;\n subscription_id?: string | null;\n price_id?: string | null;\n};\n\nexport type StoreSubscriptionProviderLifecycleStatus =\n | \"requested\"\n | \"processing\"\n | \"succeeded\"\n | \"rejected\"\n | \"unknown\";\n\nexport type StoreSubscriptionProviderOperation =\n | { type: \"cancel_at_period_end\" }\n | { type: \"cancel_immediately\"; plan_id?: string | null }\n | { type: \"reactivate\" }\n | {\n type: \"update_plan\";\n plan_id: string;\n price_id: string;\n proration_behavior: string;\n }\n | { type: \"schedule_plan_change\"; plan_id: string; price_id: string };\n\nexport type StoreSubscriptionProviderError =\n | {\n type: \"provider_rejected\";\n message: string;\n provider_code?: string | null;\n provider_status?: number | null;\n at: number;\n }\n | {\n type: \"unknown_outcome\";\n message: string;\n at: number;\n }\n | {\n type: \"missing_configuration\";\n message: string;\n at: number;\n };\n\nexport interface StoreSubscriptionProviderLifecycle {\n operation_id?: string | null;\n status: StoreSubscriptionProviderLifecycleStatus;\n operation?: StoreSubscriptionProviderOperation | null;\n error?: StoreSubscriptionProviderError | null;\n updated_at: number;\n}\n\nexport interface StoreSubscriptionPayment {\n currency: string;\n market: string;\n provider?: StoreSubscriptionProvider | null;\n}\n\nexport interface StoreSubscription {\n id: string;\n target: string;\n plan_id: string;\n pending_plan_id: string | null;\n payment: StoreSubscriptionPayment;\n status: StoreSubscriptionStatus;\n provider_lifecycle: StoreSubscriptionProviderLifecycle;\n start_date: number;\n end_date: number;\n token: string;\n source: StoreSubscriptionSource;\n}\n\nexport type ContactListMembershipProvider = {\n type: \"stripe\";\n stripe_customer_id: string;\n subscription_id?: string;\n price_id?: string;\n};\n\nexport interface ContactListMembershipPayment {\n currency: string;\n market: string;\n provider?: ContactListMembershipProvider;\n}\n\nexport type ContactListMembershipProviderCancellationStatus =\n | \"requested\"\n | \"processing\"\n | \"succeeded\"\n | \"rejected\"\n | \"unknown\";\n\nexport type ContactListMembershipProviderCancellationError =\n | {\n type: \"provider_rejected\";\n message: string;\n provider_code?: string | null;\n provider_status?: number | null;\n at: number;\n }\n | {\n type: \"unknown_outcome\";\n message: string;\n at: number;\n }\n | {\n type: \"missing_configuration\";\n message: string;\n at: number;\n };\n\nexport interface ContactListMembershipProviderCancellation {\n operation_id?: string | null;\n status: ContactListMembershipProviderCancellationStatus;\n error?: ContactListMembershipProviderCancellationError | null;\n updated_at: number;\n}\n\nexport interface Store {\n id: string;\n key: string;\n timezone: string;\n languages?: Language[];\n emails?: StoreEmails;\n subscription?: StoreSubscription;\n counts?: Record<string, number>;\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\"\n | \"number\"\n | \"boolean\"\n | \"date\"\n | \"geo_location\"\n | \"select\";\n\nexport interface FormSchema {\n id: string;\n key: string;\n type: FormSchemaType;\n required?: boolean;\n min?: number | null;\n max?: number | null;\n options?: string[];\n}\n\nexport type FormFieldType =\n | \"text\"\n | \"number\"\n | \"boolean\"\n | \"date\"\n | \"geo_location\"\n | \"select\";\n\nexport interface FormField {\n id: string;\n key: string;\n type: FormFieldType;\n value?: any;\n}\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 interface MediaResolution {\n id: string;\n size: string;\n url: string;\n}\n\nexport interface Media {\n id: string;\n resolutions: { [key: string]: MediaResolution };\n mime_type: string;\n title?: string | null;\n description?: string | null;\n alt?: string | null;\n store_id: string;\n entity?: string;\n metadata?: string | null;\n created_at: number;\n slug: Record<string, string>;\n}\n\nexport interface SubscriptionPlan {\n id: string;\n provider_price_id?: string | null;\n provider_product_id?: string | null;\n name: string;\n tier: number;\n amount: number;\n currency: string;\n interval: string;\n interval_count: number;\n trial_period_days: number;\n}\n\nexport interface AccountToken {\n id: string;\n value?: string;\n name?: string | null;\n created_at: number;\n expires_at?: number | null;\n type?: string;\n}\n\nexport interface StoreMembership {\n store_id: string;\n role: import(\"./api\").StoreRole;\n invitation_token?: AccountToken | null;\n joined_at?: number | null;\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 memberships: StoreMembership[];\n api_tokens: AccountToken[];\n auth_tokens?: import(\"./api\").AuthToken[];\n verification_codes?: unknown[];\n lifecycle?: AccountLifecycle;\n}\n\nexport interface AccountUpdateResponse {\n success: boolean;\n newly_created_tokens: AccountToken[];\n}\n\nexport interface ApiResponse<T> {\n success: boolean;\n data?: T;\n error?: string;\n cursor?: string;\n total?: number;\n}\n\nexport interface PaginatedResponse<T> {\n items: T[];\n cursor: string | null;\n data?: T[];\n meta?: {\n total: number;\n page: number;\n per_page: number;\n };\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\"\n | \"import\"\n | \"signup\"\n | \"admin\"\n | \"system\"\n | \"lead_research\";\nexport type ContactListMembershipStatus =\n | \"pending\"\n | \"active\"\n | \"cancellation_scheduled\"\n | \"cancelled\"\n | \"expired\"\n | \"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 SmtpImapMailboxProvider = {\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 password_configured: boolean;\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_seen_uid?: number | null;\n};\nexport type CampaignStatus =\n | \"draft\"\n | \"active\"\n | \"paused\"\n | \"completed\"\n | \"archived\";\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\"\n | \"contact\"\n | \"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\"\n | \"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\"\n | \"skipped\"\n | \"got_reply\"\n | \"do_not_contact\";\nexport type OutreachPersonalizationStatus =\n | \"idle\"\n | \"running\"\n | \"completed\"\n | \"failed\";\nexport type SuppressionStatus = \"active\" | \"archived\";\nexport type SuppressionTargetType = \"email\" | \"domain\" | \"contact\" | \"phone\";\nexport type SuppressionScopeType = \"store\" | \"campaign\";\nexport type SuppressionReason =\n | \"manual\"\n | \"unsubscribed\"\n | \"bounced\"\n | \"complained\"\n | \"replied\";\nexport type SuppressionSource = \"admin\" | \"import\" | \"reply\" | \"system\";\nexport type WorkflowStatus = \"active\" | \"draft\" | \"archived\";\nexport type PromoCodeStatus = \"active\" | \"draft\" | \"archived\";\nexport type CollectionStatus = \"active\" | \"draft\" | \"archived\";\nexport type EntryStatus = \"active\" | \"draft\" | \"archived\";\nexport type EmailTemplateStatus = \"active\" | \"draft\" | \"archived\";\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 subject: Record<string, string>;\n body: string;\n from_name: string;\n from_email: string;\n reply_to?: 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 interface EmailTemplateVariable {\n key: string;\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 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 | WorkflowDeployWebhookNode\n | WorkflowGoogleDriveUploadNode\n | WorkflowSwitchNode\n | WorkflowTransformNode\n | WorkflowLoopNode;\n\nexport interface WorkflowTriggerNode {\n type: \"trigger\";\n event?: string;\n delay_ms?: number;\n schema?: Block[];\n}\n\nexport interface WorkflowHttpNode {\n type: \"http\";\n method: WorkflowHttpMethod;\n url: string;\n headers?: Record<string, string>;\n body?: any;\n timeout_ms?: number;\n delay_ms?: number;\n retries?: number;\n retry_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 retries?: number;\n retry_delay_ms?: number;\n}\n\nexport type WorkflowAccountType = \"google_drive\";\n\nexport interface WorkflowAccountProfile {\n external_account_id: string;\n display_name: string;\n email?: string | null;\n}\n\nexport interface WorkflowAccount {\n id: string;\n store_id: string;\n key: string;\n type: WorkflowAccountType;\n profile: WorkflowAccountProfile;\n created_at: number;\n updated_at: number;\n}\n\nexport interface WorkflowAccountConnectUrl {\n authorization_url: string;\n state: string;\n}\n\nexport interface WorkflowGoogleDriveUploadNode {\n type: \"google_drive_upload\";\n workflow_account_id: string;\n name: string;\n mime_type: string;\n content?: any;\n parent_folder_id?: string | null;\n timeout_ms?: number;\n delay_ms?: number;\n retries?: number;\n retry_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\"\n | \"running\"\n | \"completed\"\n | \"failed\"\n | \"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 interface WorkflowExecution {\n id: string;\n workflow_id: string;\n store_id: string;\n status: ExecutionStatus;\n input: Record<string, any>;\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 ContactListType =\n | { type: \"standard\" }\n | { type: \"confirmation\"; confirm_template_id?: string | null }\n | {\n type: \"paid\";\n prices: SubscriptionPrice[];\n payment_provider_id?: string | null;\n };\n\nexport interface ContactSessionToken {\n id: string;\n token: string;\n created_at: number;\n}\n\nexport interface ContactVerificationCode {\n code: string;\n created_at: number;\n used: boolean;\n store_id?: string | null;\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\"\n | \"subscribed\"\n | \"unsubscribed\"\n | \"bounced\"\n | \"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 lists: ContactListMembership[];\n taxonomies: TaxonomyEntry[];\n auth_tokens: ContactSessionToken[];\n verification_codes: ContactVerificationCode[];\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 ContactListSubscribeResponse {\n checkout_url?: string | 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 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 plan_id: string;\n pending_plan_id: string | null;\n payment: ContactListMembershipPayment;\n provider_cancellation: ContactListMembershipProviderCancellation;\n start_date: number;\n end_date: number;\n token: string;\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\"\n | \"reviewing\"\n | \"contacted\"\n | \"won\"\n | \"lost\"\n | \"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_account_id: string;\n provider_type: SocialProviderType;\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_account_id: string;\n provider_type: SocialProviderType;\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_account_id: string;\n provider_type: SocialProviderType;\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;\n status: MailboxStatus;\n daily_limit: number;\n sent_today: number;\n last_sent_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_contacts: number;\n draft_messages: number;\n generated_messages: number;\n template_messages: number;\n failed_messages: number;\n}\n\nexport interface OutreachPersonalizationState {\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 Campaign {\n id: string;\n store_id: string;\n key: string;\n name: string;\n mailbox_ids: string[];\n status: CampaignStatus;\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\"\n | \"running\"\n | \"completed\"\n | \"failed\"\n | \"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\"\n | \"warning\"\n | \"failed\"\n | \"unknown\";\n\nexport type CampaignRoute =\n | \"email_only\"\n | \"email_manual_followup\"\n | \"manual_only\"\n | \"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\"\n | \"user\"\n | \"assistant\"\n | \"action\"\n | \"tool\";\n\nexport interface LeadResearchMessage {\n 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: string };\n }\n | { action: \"order_payment_failed\"; data: { reason?: string } }\n | {\n action: \"order_refunded\";\n data: { amount: number; currency: string; 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: \"store_deleted\" }\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\nexport interface OrderShipping {\n carrier: string;\n service: string;\n tracking_number?: string | null;\n tracking_url?: string | null;\n label_url?: string | null;\n status: ShippingStatus;\n}\n\nexport interface ShipmentLine {\n order_item_id: string;\n fulfillment_order_line_id?: string | null;\n quantity: number;\n}\n\nexport type ShipmentLabelStatus =\n | \"requested\"\n | \"processing\"\n | \"succeeded\"\n | \"failed\"\n | \"unknown\";\n\nexport type ShipmentLabelError =\n | {\n type: \"provider_rejected\";\n message: string;\n provider_code?: string | null;\n provider_status?: number | null;\n at: number;\n }\n | {\n type: \"unknown_outcome\";\n message: string;\n at: number;\n }\n | {\n type: \"missing_configuration\";\n message: string;\n at: number;\n };\n\nexport interface Shipment {\n id: string;\n fulfillment_order_id?: string | null;\n location_id: string;\n rate_id?: string | null;\n lines: ShipmentLine[];\n carrier?: string | null;\n service?: string | null;\n tracking_number?: string | null;\n tracking_url?: string | null;\n label_url?: string | null;\n status: ShippingStatus;\n label_status: ShipmentLabelStatus;\n label_error?: ShipmentLabelError | 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: string;\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: \"in\" | \"cm\";\n mass_unit: \"oz\" | \"lb\" | \"g\" | \"kg\";\n}\n\nexport interface PurchaseLabelResult {\n tracking_number: string;\n tracking_url?: string | null;\n label_url: string;\n carrier: string;\n service: string;\n}\n\nexport interface ShipResult {\n shipment_id: string;\n tracking_number?: string | null;\n tracking_url?: string | null;\n label_url?: string | null;\n label_status: ShipmentLabelStatus;\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: string;\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 {\n OrderCheckoutCompatibleItemInput,\n OrderCheckoutItemInput,\n OrderQuoteCompatibleItemInput,\n OrderQuoteItemInput,\n TrustedOrderCheckoutCompatibleItemInput,\n TrustedOrderCheckoutItemInput,\n} from \"../types/api\";\n\nexport function normalizeOrderQuoteItems(\n items: OrderQuoteCompatibleItemInput[],\n): OrderQuoteItemInput[] {\n return items.map((item) => {\n if (\"type\" in item) {\n return item;\n }\n\n if (\"product_id\" in item) {\n return { type: \"product\", ...item };\n }\n\n return { type: \"service\", ...item };\n });\n}\n\nexport function normalizeOrderCheckoutItems(\n items: TrustedOrderCheckoutCompatibleItemInput[],\n): TrustedOrderCheckoutItemInput[] {\n return items.map((item) => {\n if (\"type\" in item) {\n return item;\n }\n\n if (\"product_id\" in item) {\n return { type: \"product\", ...item };\n }\n\n return { type: \"service\", ...item };\n });\n}\n\nexport function normalizePublicCheckoutItems(\n items: OrderCheckoutCompatibleItemInput[],\n): OrderCheckoutItemInput[] {\n return normalizeOrderCheckoutItems(items).map((item) => {\n const { price: _price, ...publicItem } = item;\n return publicItem;\n });\n}\n","import type { ApiConfig, ContactSessionUpdater } from \"../index\";\nimport type {\n RequestOptions,\n GetCollectionParams,\n GetEntryParams,\n GetEntriesParams,\n GetFormParams,\n SubmitFormParams,\n GetTaxonomyParams,\n GetTaxonomyChildrenParams,\n GetProductParams,\n GetProductsParams,\n GetOrderParams,\n GetOrdersParams,\n DownloadDigitalAccessParams,\n GetAvailabilityParams,\n AvailabilityResponse,\n GetServiceParams,\n GetServicesParams,\n FindServiceProvidersParams,\n GetProviderParams,\n GetProvidersParams,\n GetContactListParams,\n FindContactListsParams,\n SubscribeContactListParams,\n ContactListAccessParams,\n GetCurrentCartParams,\n GetCartParams,\n UpdateCartParams,\n AddCartItemParams,\n RemoveCartItemParams,\n ClearCartParams,\n QuoteCartParams,\n CheckoutCartParams,\n} from \"../types/api\";\nimport type {\n CollectionEntry,\n Collection,\n Form,\n FormSubmission,\n Taxonomy,\n ContactList,\n ContactListAccessResponse,\n ContactListSubscribeResponse,\n Service,\n Provider,\n Store,\n Location,\n Market,\n OrderQuote,\n Order,\n DigitalAccessDownloadResponse,\n OrderCheckoutResult,\n Product,\n Contact,\n ContactDetail,\n Cart,\n PaginatedResponse,\n} from \"../types\";\nimport {\n getBlockFromArray,\n getBlockObjectValues,\n getImageUrl,\n} from \"../utils/blocks\";\nimport { normalizePublicCheckoutItems } from \"../utils/orderItems\";\n\nexport type ContactToken = {\n id: string;\n token: string;\n created_at: number;\n};\n\nexport type IdentifyResponse = {\n contact: Contact;\n token: ContactToken;\n store: Store;\n market: Market | null;\n code_sent: boolean;\n};\n\nexport type VerifyResponse = ContactToken;\ntype LogoutResponse = void;\ntype Country = {\n code: string;\n name: string;\n states: { code: string; name: string }[];\n};\ntype CountriesResponse = { items: Country[]; cursor: string | null };\n\nexport interface StorefrontAction {\n store_id: string;\n contact_id: string;\n key: string;\n type?: string;\n payload: Record<string, unknown>;\n created_at: number;\n}\n\nexport type TrackActionParams = {\n key: string;\n type?: string;\n payload?: Record<string, unknown>;\n} | {\n type: string;\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 store_id?: 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 const createActionApi = (apiConfig: ApiConfig) => ({\n COMMON_ACTION_KEYS,\n async track(params: TrackActionParams): Promise<void> {\n try {\n const key = \"key\" in params && params.key ? params.key : params.type;\n await apiConfig.httpClient.post<void>(\n `/v1/storefront/${apiConfig.storeId}/actions/track`,\n { key, payload: params.payload },\n );\n } catch {}\n },\n});\n\nexport const createStorefrontApi = (apiConfig: ApiConfig, updateContactSession: ContactSessionUpdater) => {\n const base = (storeId = apiConfig.storeId) =>\n `/v1/storefront/${storeId}`;\n\n return {\n store: {\n getStore(options?: RequestOptions): Promise<Store> {\n return apiConfig.httpClient.get<Store>(base(), options);\n },\n\n location: {\n getCountries(options?: RequestOptions): Promise<CountriesResponse> {\n return apiConfig.httpClient.get<CountriesResponse>(`/v1/platform/countries`, options);\n },\n\n getCountry(countryCode: string, options?: RequestOptions): Promise<Country> {\n return apiConfig.httpClient.get<Country>(\n `/v1/platform/countries/${countryCode}`,\n options,\n );\n },\n\n list(options?: RequestOptions): Promise<Location[]> {\n return apiConfig.httpClient.get<Location[]>(`${base()}/locations`, options);\n },\n\n get(id: string, options?: RequestOptions): Promise<Location> {\n return apiConfig.httpClient.get<Location>(`${base()}/locations/${id}`, options);\n },\n },\n\n market: {\n list(options?: RequestOptions): Promise<Market[]> {\n return apiConfig.httpClient.get<Market[]>(`${base()}/markets`, options);\n },\n\n get(id: string, options?: RequestOptions): Promise<Market> {\n return apiConfig.httpClient.get<Market>(`${base()}/markets/${id}`, options);\n },\n },\n },\n\n cms: {\n collection: {\n get(params: GetCollectionParams, options?: RequestOptions): Promise<Collection> {\n const store_id = params.store_id || apiConfig.storeId;\n if (!params.id) {\n throw new Error(\"GetCollectionParams requires id\");\n }\n return apiConfig.httpClient.get<Collection>(\n `${base(store_id)}/collections/${params.id}`,\n options,\n );\n },\n },\n\n entry: {\n get(params: GetEntryParams, options?: RequestOptions): Promise<CollectionEntry> {\n const 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 `${base(store_id)}/entries/${params.id}`,\n options,\n );\n },\n\n find(params: GetEntriesParams, options?: RequestOptions): Promise<PaginatedResponse<CollectionEntry>> {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<CollectionEntry>>(`${base(store_id)}/entries`, {\n ...options,\n params: queryParams,\n });\n },\n },\n\n form: {\n get(params: GetFormParams, options?: RequestOptions): Promise<Form> {\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.key) {\n identifier = `${store_id}:${params.key}`;\n } else {\n throw new Error(\"GetFormParams requires id or key\");\n }\n\n return apiConfig.httpClient.get<Form>(\n `${base(store_id)}/forms/${identifier}`,\n options,\n );\n },\n\n 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 if (!form_id) {\n throw new Error(\"SubmitFormParams requires form_id\");\n }\n\n return apiConfig.httpClient.post<FormSubmission>(\n `${base(target_store_id)}/forms/${form_id}/submissions`,\n { ...payload, form_id, store_id: target_store_id },\n options,\n );\n },\n },\n\n taxonomy: {\n get(params: GetTaxonomyParams, options?: RequestOptions): Promise<Taxonomy> {\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.key) {\n identifier = `${store_id}:${params.key}`;\n } else {\n throw new Error(\"GetTaxonomyParams requires id or key\");\n }\n\n return apiConfig.httpClient.get<Taxonomy>(\n `${base(store_id)}/taxonomies/${identifier}`,\n options,\n );\n },\n\n getChildren(params: GetTaxonomyChildrenParams, options?: RequestOptions): Promise<PaginatedResponse<Taxonomy>> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<Taxonomy>>(\n `${base(store_id)}/taxonomies/${params.id}/children`,\n options,\n );\n },\n },\n },\n\n eshop: {\n product: {\n get(params: GetProductParams, options?: RequestOptions): Promise<Product> {\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(\"GetProductParams requires id or slug\");\n }\n\n return apiConfig.httpClient.get<Product>(\n `${base(store_id)}/products/${identifier}`,\n options,\n );\n },\n\n find(params: GetProductsParams, options?: RequestOptions): Promise<PaginatedResponse<Product>> {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<Product>>(`${base(store_id)}/products`, {\n ...options,\n params: queryParams,\n });\n },\n },\n\n cart: {\n current(params: GetCurrentCartParams = {}, options?: RequestOptions): Promise<Cart> {\n const store_id = params.store_id || apiConfig.storeId;\n const { store_id: _store_id, ...payload } = params;\n return apiConfig.httpClient.post<Cart>(\n `${base(store_id)}/carts/current`,\n { ...payload, store_id, market: payload.market || apiConfig.market },\n options,\n );\n },\n\n get(params: GetCartParams, options?: RequestOptions): Promise<Cart> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<Cart>(`${base(store_id)}/carts/${params.id}`, {\n ...options,\n params: params.token ? { token: params.token } : options?.params,\n });\n },\n\n update(params: UpdateCartParams, options?: RequestOptions): Promise<Cart> {\n const { store_id, items, ...payload } = params;\n const target = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<Cart>(\n `${base(target)}/carts/${params.id}`,\n {\n ...payload,\n store_id: target,\n ...(items ? { items: normalizePublicCheckoutItems(items) } : {}),\n },\n options,\n );\n },\n\n addItem(params: AddCartItemParams, options?: RequestOptions): Promise<Cart> {\n const { store_id, item, ...payload } = params;\n const target = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Cart>(\n `${base(target)}/carts/${params.id}/items`,\n {\n ...payload,\n store_id: target,\n item: normalizePublicCheckoutItems([item])[0],\n },\n options,\n );\n },\n\n removeItem(params: RemoveCartItemParams, options?: RequestOptions): Promise<Cart> {\n const { store_id, ...payload } = params;\n const target = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Cart>(\n `${base(target)}/carts/${params.id}/items/remove`,\n { ...payload, store_id: target },\n options,\n );\n },\n\n clear(params: ClearCartParams, options?: RequestOptions): Promise<Cart> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Cart>(\n `${base(store_id)}/carts/${params.id}/clear`,\n { id: params.id, store_id },\n options,\n );\n },\n\n quote(params: QuoteCartParams, options?: RequestOptions): Promise<OrderQuote> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<OrderQuote>(\n `${base(store_id)}/carts/${params.id}/quote`,\n { id: params.id, store_id },\n options,\n );\n },\n\n checkout(params: CheckoutCartParams, options?: RequestOptions): Promise<OrderCheckoutResult> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<OrderCheckoutResult>(\n `${base(store_id)}/carts/${params.id}/checkout`,\n {\n id: params.id,\n store_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\n order: {\n get(params: GetOrderParams, options?: RequestOptions): Promise<Order> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<Order>(\n `${base(store_id)}/orders/${params.id}`,\n options,\n );\n },\n\n find(params: GetOrdersParams, options?: RequestOptions): Promise<PaginatedResponse<Order>> {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<Order>>(`${base(store_id)}/orders`, {\n ...options,\n params: queryParams,\n });\n },\n\n downloadDigitalAccess(\n params: DownloadDigitalAccessParams,\n options?: RequestOptions,\n ): Promise<DigitalAccessDownloadResponse> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<DigitalAccessDownloadResponse>(\n `${base(store_id)}/orders/${params.id}/digital-access/${params.grant_id}/download`,\n {},\n options,\n );\n },\n\n },\n\n service: {\n get(params: GetServiceParams, options?: RequestOptions): 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 `${base(store_id)}/services/${identifier}`,\n options,\n );\n },\n\n find(params: GetServicesParams, options?: RequestOptions): Promise<PaginatedResponse<Service>> {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<Service>>(`${base(store_id)}/services`, {\n ...options,\n params: queryParams,\n });\n },\n\n findProviders(params: FindServiceProvidersParams, options?: RequestOptions): Promise<Provider[]> {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get<Provider[]>(`${base(store_id)}/service-providers`, {\n ...options,\n params: queryParams,\n });\n },\n\n getAvailability(params: GetAvailabilityParams, options?: RequestOptions): Promise<AvailabilityResponse> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<AvailabilityResponse>(\n `${base(target_store_id)}/services/availability`,\n { ...options, params: queryParams },\n );\n },\n },\n\n provider: {\n get(params: GetProviderParams, options?: RequestOptions): 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 `${base(store_id)}/providers/${identifier}`,\n options,\n );\n },\n\n find(params: GetProvidersParams, options?: RequestOptions): Promise<PaginatedResponse<Provider>> {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<Provider>>(`${base(store_id)}/providers`, {\n ...options,\n params: queryParams,\n });\n },\n },\n },\n\n crm: {\n contact: {\n async identify(\n params?: { email?: string; verify?: boolean; market?: string },\n options?: RequestOptions,\n ): Promise<IdentifyResponse> {\n const store_id = apiConfig.storeId;\n const result = await apiConfig.httpClient.post<IdentifyResponse>(\n `${base(store_id)}/account/identify`,\n {\n store_id,\n market: params?.market || apiConfig.market || null,\n email: params?.email,\n verify: params?.verify ?? false,\n },\n options,\n );\n if (result?.token?.token) {\n updateContactSession(() => ({\n access_token: result.token.token,\n contact: result.contact,\n store: result.store,\n market: result.market,\n }));\n }\n return result;\n },\n\n async verify(\n params: { code: string },\n options?: RequestOptions,\n ): Promise<VerifyResponse> {\n const store_id = apiConfig.storeId;\n const result = await apiConfig.httpClient.post<VerifyResponse>(\n `${base(store_id)}/account/verify`,\n { store_id, code: params.code },\n options,\n );\n if (result?.token) {\n updateContactSession((prev) =>\n prev ? { ...prev, access_token: result.token } : null,\n );\n }\n return result;\n },\n\n async logout(options?: RequestOptions): Promise<LogoutResponse> {\n const store_id = apiConfig.storeId;\n try {\n await apiConfig.httpClient.post<void>(\n `${base(store_id)}/account/logout`,\n {},\n options,\n );\n } finally {\n updateContactSession(() => null);\n }\n },\n\n getMe(options?: RequestOptions): Promise<ContactDetail> {\n return apiConfig.httpClient.get<ContactDetail>(`${base()}/account/me`, options);\n },\n },\n\n contactList: {\n get(params: GetContactListParams, options?: RequestOptions): Promise<ContactList> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<ContactList>(\n `${base(store_id)}/contact-lists/${params.id}`,\n options,\n );\n },\n\n find(params?: FindContactListsParams, options?: RequestOptions): Promise<PaginatedResponse<ContactList>> {\n const { store_id, ...queryParams } = params || {};\n return apiConfig.httpClient.get<PaginatedResponse<ContactList>>(`${base(store_id)}/contact-lists`, {\n ...options,\n params: queryParams,\n });\n },\n\n subscribe(params: SubscribeContactListParams, options?: RequestOptions): Promise<ContactListSubscribeResponse> {\n const { store_id, id, ...payload } = params;\n return apiConfig.httpClient.post<ContactListSubscribeResponse>(\n `${base(store_id)}/contact-lists/${id}/subscribe`,\n payload,\n options,\n );\n },\n\n checkAccess(params: ContactListAccessParams, options?: RequestOptions): Promise<ContactListAccessResponse> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<ContactListAccessResponse>(\n `${base(store_id)}/contact-lists/${params.id}/access`,\n options,\n );\n },\n\n unsubscribe(token: string, options?: RequestOptions): Promise<{ success: boolean }> {\n return apiConfig.httpClient.post<{ success: boolean }>(\n `${base()}/contact-lists/unsubscribe`,\n { token },\n options,\n );\n },\n\n confirm(token: string, options?: RequestOptions): Promise<{ success: boolean }> {\n return apiConfig.httpClient.post<{ success: boolean }>(\n `${base()}/contact-lists/confirm`,\n { token },\n options,\n );\n },\n },\n },\n\n action: createActionApi(apiConfig),\n experiments: {\n use(params: UseExperimentParams, options?: RequestOptions): Promise<ExperimentUseResponse> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<ExperimentUseResponse>(\n `${base(store_id)}/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 = Omit<RemoveCartItemParams, \"id\"> & { id?: string };\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","\nexport const ERROR_CODES = {\n \n \"GENERAL.001\": \"GENERAL.BAD_REQUEST\",\n \"GENERAL.002\": \"GENERAL.VALIDATION_ERROR\",\n \"GENERAL.003\": \"GENERAL.FORBIDDEN_ERROR\",\n \"GENERAL.004\": \"GENERAL.INTERNAL_SERVER_ERROR\",\n \"GENERAL.005\": \"GENERAL.UNAUTHORIZED\",\n \"GENERAL.006\": \"GENERAL.UNAUTHENTICATED\",\n\n \"GOOGLE.001\": \"GOOGLE.INVALID_ORIGIN_URI\",\n \"GOOGLE.002\": \"GOOGLE.INVALID_REDIRECT_URI\",\n \"GOOGLE.003\": \"GOOGLE.FAILED_TO_CALL_API\",\n \"GOOGLE.004\": \"GOOGLE.FAILED_LOGIN\",\n \"GOOGLE.005\": \"GOOGLE.FAILED_LOGOUT\",\n \"GOOGLE.006\": \"GOOGLE.FAILED_REFRESH_TOKEN\",\n \"GOOGLE.007\": \"GOOGLE.INVALID_PROVIDER_PASSED\",\n\n \"USER.001\": \"USER.NOT_FOUND\",\n \"USER.002\": \"USER.FAILED_TO_CREATE\",\n \"USER.003\": \"USER.FAILED_TO_UPDATE\",\n \"USER.004\": \"USER.FAILED_TO_DELETE\",\n \"USER.005\": \"USER.EMAIL_EXISTS\",\n \"USER.006\": \"USER.FAILED_TO_GET_UPLOAD_URL\",\n\n \"STORE.001\": \"STORE.NOT_FOUND\",\n \"STORE.002\": \"STORE.FAILED_TO_CREATE\",\n \"STORE.003\": \"STORE.FAILED_TO_UPDATE\",\n \"STORE.004\": \"STORE.FAILED_TO_DELETE\",\n \"STORE.005\": \"STORE.FAILED_TO_GET_UPLOAD_URL\",\n \"STORE.006\": \"STORE.NAME_REQUIRED\",\n \"STORE.007\": \"STORE.STORE_ID_REQUIRED\",\n \"STORE.010\": \"STORE.DESCRIPTION_REQUIRED\",\n \"STORE.011\": \"STORE.SLUG_INVALID\",\n\n \"PROVIDER.001\": \"PROVIDER.NOT_FOUND\",\n \"PROVIDER.002\": \"PROVIDER.FAILED_TO_CREATE\",\n \"PROVIDER.003\": \"PROVIDER.FAILED_TO_UPDATE\",\n \"PROVIDER.004\": \"PROVIDER.FAILED_TO_DELETE\",\n \"PROVIDER.005\": \"PROVIDER.FAILED_TO_GET_UPLOAD_URL\",\n \"PROVIDER.006\": \"PROVIDER.NAME_REQUIRED\",\n \"PROVIDER.007\": \"PROVIDER.STORE_ID_REQUIRED\",\n \"PROVIDER.008\": \"PROVIDER.DESCRIPTION_REQUIRED\",\n};\n\nexport const ERROR_CONSTANTS = {\n GENERAL: {\n BAD_REQUEST: \"GENERAL.BAD_REQUEST\",\n VALIDATION_ERROR: \"GENERAL.VALIDATION_ERROR\",\n FORBIDDEN_ERROR: \"GENERAL.FORBIDDEN_ERROR\",\n INTERNAL_SERVER_ERROR: \"GENERAL.INTERNAL_SERVER_ERROR\",\n UNAUTHORIZED: \"GENERAL.UNAUTHORIZED\",\n UNAUTHENTICATED: \"GENERAL.UNAUTHENTICATED\",\n },\n USER: {\n NOT_FOUND: \"USER.NOT_FOUND\",\n FAILED_TO_CREATE: \"USER.FAILED_TO_CREATE\",\n FAILED_TO_UPDATE: \"USER.FAILED_TO_UPDATE\",\n FAILED_TO_DELETE: \"USER.FAILED_TO_DELETE\",\n EMAIL_EXISTS: \"USER.EMAIL_EXISTS\",\n FAILED_TO_GET_UPLOAD_URL: \"USER.FAILED_TO_GET_UPLOAD_URL\",\n },\n STORE: {\n NOT_FOUND: \"STORE.NOT_FOUND\",\n FAILED_TO_CREATE: \"STORE.FAILED_TO_CREATE\",\n FAILED_TO_UPDATE: \"STORE.FAILED_TO_UPDATE\",\n FAILED_TO_DELETE: \"STORE.FAILED_TO_DELETE\",\n FAILED_TO_GET_UPLOAD_URL: \"STORE.FAILED_TO_GET_UPLOAD_URL\",\n NAME_REQUIRED: \"STORE.NAME_REQUIRED\",\n STORE_ID_REQUIRED: \"STORE.STORE_ID_REQUIRED\",\n DESCRIPTION_REQUIRED: \"STORE.DESCRIPTION_REQUIRED\",\n SLUG_INVALID: \"STORE.SLUG_INVALID\",\n },\n};\n\nexport type ServerError = {\n message: string;\n error: string;\n statusCode: number;\n validationErrors: {\n field: string;\n error: string;\n }[];\n};\n\nexport type ValidationError = {\n field: string;\n error: string;\n};\n\nexport type RequestError = {\n validationErrors: ValidationError[];\n};\n\nexport function getErrorMessage(code: string): string {\n return ERROR_CODES[code as keyof typeof ERROR_CODES] || code;\n}\n\nexport function isErrorCode(code: string): boolean {\n return code in ERROR_CODES;\n}\n\nexport const transformErrors = (zodError: any): ValidationError[] => {\n const customErrors: ValidationError[] = [];\n\n if (!zodError.issues) return customErrors;\n\n zodError.issues.forEach((issue: any) => {\n const field = issue.path.join(\".\");\n const error = issue.message;\n\n if (\n !customErrors.some(\n (customError) =>\n customError.field === field && customError.error === error\n )\n ) {\n customErrors.push({ field, error });\n }\n });\n\n return customErrors;\n};\n\nexport const convertServerErrorToRequestError = (\n serverError: ServerError,\n renameRules?: { [key: string]: string }\n): RequestError => {\n const validationErrors = serverError?.validationErrors ?? [];\n\n return {\n ...serverError,\n validationErrors: validationErrors.map((validationError) => {\n const field =\n renameRules && renameRules[validationError.field]\n ? renameRules[validationError.field]\n : validationError.field;\n\n return {\n field: field,\n error: validationError.error || \"GENERAL.VALIDATION_ERROR\",\n };\n }),\n };\n};\n\nexport const errors = ERROR_CONSTANTS;\nexport default ERROR_CODES;\n","\nexport interface QueryParams {\n [key: string]: string | number | boolean | string[] | number[] | null | undefined;\n}\n\nexport function buildQueryString(params: QueryParams): string {\n const queryParts: string[] = [];\n \n Object.entries(params).forEach(([key, value]) => {\n \n if (value === null || value === undefined) {\n return;\n }\n \n if (Array.isArray(value)) {\n const jsonString = JSON.stringify(value);\n queryParts.push(`${key}=${encodeURIComponent(jsonString)}`);\n }\n \n else if (typeof value === 'string') {\n queryParts.push(`${key}=${encodeURIComponent(value)}`);\n }\n \n else if (typeof value === 'number' || typeof value === 'boolean') {\n queryParts.push(`${key}=${value}`);\n }\n \n else if (typeof value === 'object') {\n const jsonString = JSON.stringify(value);\n queryParts.push(`${key}=${encodeURIComponent(jsonString)}`);\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 {\n\tconvertServerErrorToRequestError,\n\ttype ServerError\n} from '../utils/errors';\nimport { buildQueryString, type QueryParams } from '../utils/queryParams';\n\nexport interface TokenSet {\n\taccess_token: string;\n\trefresh_token?: string;\n\taccess_expires_at?: number;\n}\n\nexport interface AuthStorage {\n\tgetTokens(): TokenSet | null;\n\tonTokensRefreshed(tokens: TokenSet): void;\n\tonForcedLogout(): void;\n}\n\nexport interface RequestSuccessContext<T = unknown> {\n\tdata: T;\n\tmethod: string;\n\turl: string;\n\tstatus: number;\n\trequest?: unknown;\n\tduration_ms?: number;\n\trequest_id?: string | null;\n}\n\nexport interface RequestErrorContext {\n\terror: unknown;\n\tmethod: string;\n\turl: string;\n\tstatus?: number;\n\trequest?: unknown;\n\tresponse?: unknown;\n\tduration_ms?: number;\n\trequest_id?: string | null;\n\taborted?: boolean;\n}\n\nexport interface RequestOptions<T = unknown> {\n\theaders?: Record<string, string>;\n\tparams?: QueryParams | Record<string, any>;\n\tsignal?: AbortSignal;\n\ttransformRequest?: (data: unknown) => unknown;\n\tonSuccess?: (ctx: RequestSuccessContext<T>) => void | Promise<void>;\n\tonError?: (ctx: RequestErrorContext) => void | Promise<void>;\n}\n\nexport interface HttpClient {\n\tget<T>(path: string, opts?: RequestOptions<T>): Promise<T>;\n\tpost<T>(path: string, body: unknown, opts?: RequestOptions<T>): Promise<T>;\n\tput<T>(path: string, body: unknown, opts?: RequestOptions<T>): Promise<T>;\n\tpatch<T>(path: string, body: unknown, opts?: RequestOptions<T>): Promise<T>;\n\tdelete<T>(path: string, opts?: RequestOptions<T>): Promise<T>;\n}\n\nexport interface HttpClientConfig {\n\tbaseUrl: string;\n\tstoreId: string;\n\tauthStorage: AuthStorage;\n\trefreshPath?: string | (() => string);\n\tnavigate?: (path: string) => void;\n\tloginFallbackPath?: string;\n}\n\nexport function createHttpClient(cfg: HttpClientConfig): HttpClient {\n\tconst { authStorage } = cfg;\n\tlet refreshPromise: Promise<void> | null = null;\n\n\tfunction getRefreshEndpoint() {\n\t\tconst refreshPath = typeof cfg.refreshPath === \"function\"\n\t\t\t? cfg.refreshPath()\n\t\t\t: cfg.refreshPath || '/v1/auth/refresh';\n\t\treturn `${cfg.baseUrl}${refreshPath}`;\n\t}\n\n\tasync function ensureFreshToken() {\n\t\tif (refreshPromise) {\n\t\t\treturn refreshPromise;\n\t\t}\n\n\t\trefreshPromise = (async () => {\n\t\t\tconst tokens = authStorage.getTokens();\n\t\t\tconst refresh_token = tokens?.refresh_token;\n\t\t\tif (!refresh_token) {\n\t\t\t\tauthStorage.onForcedLogout();\n\t\t\t\tconst err: any = new Error('No refresh token available');\n\t\t\t\terr.name = 'ApiError';\n\t\t\t\terr.statusCode = 401;\n\t\t\t\tthrow err;\n\t\t\t}\n\n\t\t\tconst refRes = await fetch(getRefreshEndpoint(), {\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: { Accept: 'application/json', 'Content-Type': 'application/json' },\n\t\t\t\tbody: JSON.stringify({ refresh_token })\n\t\t\t});\n\n\t\t\tif (!refRes.ok) {\n\t\t\t\tauthStorage.onForcedLogout();\n\t\t\t\tconst err: any = new Error('Token refresh failed');\n\t\t\t\terr.name = 'ApiError';\n\t\t\t\terr.statusCode = 401;\n\t\t\t\tthrow err;\n\t\t\t}\n\n\t\t\tconst data = await refRes.json();\n\t\t\tauthStorage.onTokensRefreshed(data);\n\t\t})().finally(() => {\n\t\t\trefreshPromise = null;\n\t\t});\n\n\t\treturn refreshPromise;\n\t}\n\n\tasync function request<T>(\n\t\tmethod: string,\n\t\tpath: string,\n\t\tbody?: unknown,\n\t\toptions?: RequestOptions<T> & { _retried?: boolean }\n\t): Promise<T> {\n\t\tif (options?.transformRequest) {\n\t\t\tbody = options.transformRequest(body);\n\t\t}\n\n\t\tconst headers: Record<string, string> = {\n\t\t\tAccept: 'application/json',\n\t\t\t'Content-Type': 'application/json',\n\t\t\t...(options?.headers || {})\n\t\t};\n\n\t\tlet tokens = authStorage.getTokens();\n\t\tconst nowSec = Date.now() / 1000;\n\t\tif (tokens?.access_expires_at && nowSec > tokens.access_expires_at) {\n\t\t\tawait ensureFreshToken();\n\t\t\ttokens = authStorage.getTokens();\n\t\t}\n\n\t\tif (tokens?.access_token) {\n\t\t\theaders['Authorization'] = `Bearer ${tokens.access_token}`;\n\t\t}\n\n\t\tconst finalPath = options?.params ? path + buildQueryString(options.params as QueryParams) : path;\n\n\t\tconst fetchOpts: any = { method, headers, signal: options?.signal };\n\t\tif (!['GET', 'DELETE'].includes(method) && body !== undefined) {\n\t\t\tfetchOpts.body = JSON.stringify(body);\n\t\t}\n\n\t\tconst fullUrl = `${cfg.baseUrl}${finalPath}`;\n\t\tlet res: Response;\n\t\tlet data: any;\n\t\tconst startedAt = Date.now();\n\n\t\ttry {\n\t\t\tres = await fetch(fullUrl, fetchOpts);\n\t\t} catch (error) {\n\t\t\tconst aborted =\n\t\t\t\toptions?.signal?.aborted ||\n\t\t\t\t(error instanceof Error && error.name === 'AbortError');\n\t\t\tconst err: any = new Error(error instanceof Error ? error.message : 'Network request failed');\n\t\t\terr.name = aborted ? 'AbortError' : 'NetworkError';\n\t\t\terr.method = method;\n\t\t\terr.url = fullUrl;\n\t\t\terr.aborted = aborted;\n\t\t\tif (options?.onError && method !== 'GET') {\n\t\t\t\tPromise.resolve(\n\t\t\t\t\toptions.onError({ error: err, method, url: fullUrl, aborted })\n\t\t\t\t).catch(() => {});\n\t\t\t}\n\t\t\tthrow err;\n\t\t}\n\n\t\tif (res.status === 401 && !options?.['_retried']) {\n\t\t\ttry {\n\t\t\t\tawait ensureFreshToken();\n\t\t\t\tconst refreshed = authStorage.getTokens();\n\t\t\t\tif (refreshed?.access_token) {\n\t\t\t\t\theaders['Authorization'] = `Bearer ${refreshed.access_token}`;\n\t\t\t\t\tfetchOpts.headers = headers;\n\t\t\t\t}\n\t\t\t\treturn request<T>(method, path, body, { ...options, _retried: true });\n\t\t\t} catch (refreshError) {\n\t\t\t\tthrow refreshError;\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tconst contentLength = res.headers.get('content-length');\n\t\t\tconst contentType = res.headers.get('content-type');\n\t\t\tif (res.status === 204 || contentLength === '0' || !contentType?.includes('application/json')) {\n\t\t\t\tdata = {};\n\t\t\t} else {\n\t\t\t\tdata = await res.json();\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconst err: any = new Error('Failed to parse response');\n\t\t\terr.name = 'ParseError';\n\t\t\terr.method = method;\n\t\t\terr.url = fullUrl;\n\t\t\terr.status = res.status;\n\t\t\tif (options?.onError && method !== 'GET') {\n\t\t\t\tPromise.resolve(\n\t\t\t\t\toptions.onError({ error: err, method, url: fullUrl, status: res.status })\n\t\t\t\t).catch(() => {});\n\t\t\t}\n\t\t\tthrow err;\n\t\t}\n\n\t\tif (!res.ok) {\n\t\t\tconst serverErr: ServerError = data;\n\t\t\tconst reqErr = convertServerErrorToRequestError(serverErr);\n\t\t\tconst err: any = new Error(serverErr.message || 'Request failed');\n\t\t\terr.name = 'ApiError';\n\t\t\terr.statusCode = serverErr.statusCode || res.status;\n\t\t\terr.validationErrors = reqErr.validationErrors;\n\t\t\terr.method = method;\n\t\t\terr.url = fullUrl;\n\t\t\tconst requestId = res.headers.get('x-request-id') || res.headers.get('request-id');\n\t\t\tif (requestId) err.requestId = requestId;\n\t\t\tif (options?.onError && method !== 'GET') {\n\t\t\t\tPromise.resolve(\n\t\t\t\t\toptions.onError({\n\t\t\t\t\t\terror: err,\n\t\t\t\t\t\tmethod,\n\t\t\t\t\t\turl: fullUrl,\n\t\t\t\t\t\tstatus: res.status,\n\t\t\t\t\t\tresponse: serverErr,\n\t\t\t\t\t\trequest_id: requestId || null,\n\t\t\t\t\t\tduration_ms: Date.now() - startedAt\n\t\t\t\t\t})\n\t\t\t\t).catch(() => {});\n\t\t\t}\n\t\t\tthrow err;\n\t\t}\n\n\t\tif (options?.onSuccess && method !== 'GET') {\n\t\t\tconst requestId = res.headers.get('x-request-id') || res.headers.get('request-id');\n\t\t\tPromise.resolve(\n\t\t\t\toptions.onSuccess({\n\t\t\t\t\tdata: data as T,\n\t\t\t\t\tmethod,\n\t\t\t\t\turl: fullUrl,\n\t\t\t\t\tstatus: res.status,\n\t\t\t\t\trequest_id: requestId || null,\n\t\t\t\t\tduration_ms: Date.now() - startedAt\n\t\t\t\t})\n\t\t\t).catch(() => {});\n\t\t}\n\t\treturn data as T;\n\t}\n\n\treturn {\n\t\tget: <T>(path: string, opts?: RequestOptions<T>) => request<T>('GET', path, undefined, opts),\n\t\tpost: <T>(path: string, body: unknown, opts?: RequestOptions<T>) => request<T>('POST', path, body, opts),\n\t\tput: <T>(path: string, body: unknown, opts?: RequestOptions<T>) => request<T>('PUT', path, body, opts),\n\t\tpatch: <T>(path: string, body: unknown, opts?: RequestOptions<T>) => request<T>('PATCH', path, body, opts),\n\t\tdelete: <T>(path: string, opts?: RequestOptions<T>) => request<T>('DELETE', path, undefined, opts)\n\t};\n}\n","import type { ApiConfig } from '../index';\nimport type {\n UpdateAccountContactParams,\n SearchAccountsParams,\n DeleteAccountParams,\n GetMeParams,\n RequestOptions\n} from '../types/api';\nimport type { Account, AccountUpdateResponse } from '../types';\n\nexport const createAccountApi = (apiConfig: ApiConfig) => {\n return {\n async updateAccount(params: UpdateAccountContactParams, options?: RequestOptions): Promise<AccountUpdateResponse> {\n const payload: Record<string, unknown> = {};\n\n if (params.phone_numbers !== undefined) payload.phone_numbers = params.phone_numbers;\n if (params.addresses !== undefined) payload.addresses = params.addresses;\n if (params.api_tokens !== undefined) payload.api_tokens = params.api_tokens;\n\n return apiConfig.httpClient.put<AccountUpdateResponse>('/v1/accounts', payload, options);\n },\n\n async deleteAccount(_params: DeleteAccountParams, options?: RequestOptions): Promise<{ deleted: boolean }> {\n return apiConfig.httpClient.delete<{ deleted: boolean }>('/v1/accounts', options);\n },\n\n async getMe(_params: GetMeParams, options?: RequestOptions): Promise<Account> {\n return apiConfig.httpClient.get<Account>('/v1/accounts/me', options);\n },\n\n async searchAccounts(params: SearchAccountsParams, options?: RequestOptions): Promise<{ items: Account[]; cursor?: string | null }> {\n return apiConfig.httpClient.get<{ items: Account[]; cursor?: string | null }>('/v1/accounts/search', {\n ...options,\n params: {\n ...params,\n store_id: apiConfig.storeId\n }\n });\n },\n };\n};\n","import type { ApiConfig, AdminSessionInternal, AdminSessionUpdater } from '../index';\nimport type {\n MagicLinkVerifyParams,\n AuthToken,\n RequestOptions\n} from '../types/api';\n\nexport const createAuthApi = (apiConfig: ApiConfig, updateSession: AdminSessionUpdater) => {\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<{ sent: boolean }> {\n return apiConfig.httpClient.post<{ sent: boolean }>('/v1/auth/code', params, options);\n },\n\n async verify(params: MagicLinkVerifyParams, 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, params.email);\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<{ sent: boolean }> {\n return apiConfig.httpClient.post<{ sent: boolean }>(`/v1/stores/${storeId}/auth/code`, params, options);\n },\n\n async storeVerify(storeId: string, params: MagicLinkVerifyParams, 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, params.email);\n }\n return result;\n }\n };\n};\n","import type { ApiConfig, AdminSessionUpdater } from \"../index\";\nimport type {\n CreateStoreParams,\n UpdateStoreParams,\n DeleteStoreParams,\n GetStoreParams,\n GetStoresParams,\n GetSubscriptionPlansParams,\n SubscribeParams,\n CreatePortalSessionParams,\n AddMemberParams,\n RemoveMemberParams,\n TestWebhookParams,\n FindStoreMediaParams,\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 Media,\n PaginatedResponse,\n SubscriptionPlan,\n StoreRuntimeConfig,\n BuildHook,\n} from \"../types\";\n\nexport const createStoreApi = (\n apiConfig: ApiConfig,\n _updateSession: AdminSessionUpdater,\n) => {\n return {\n async createStore(\n params: CreateStoreParams,\n options?: RequestOptions,\n ): Promise<Store> {\n return apiConfig.httpClient.post<Store>(`/v1/stores`, params, options);\n },\n\n async updateStore(\n params: UpdateStoreParams,\n options?: RequestOptions,\n ): Promise<Store> {\n return apiConfig.httpClient.put<Store>(\n `/v1/stores/${params.id}`,\n params,\n options,\n );\n },\n\n async deleteStore(\n params: DeleteStoreParams,\n options?: RequestOptions,\n ): Promise<{ deleted: boolean }> {\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${params.id}`,\n options,\n );\n },\n\n async getStore(\n _params: GetStoreParams,\n options?: RequestOptions,\n ): Promise<Store> {\n return apiConfig.httpClient.get<Store>(\n `/v1/stores/${apiConfig.storeId}`,\n options,\n );\n },\n\n async getStores(\n params?: GetStoresParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<Store>> {\n return apiConfig.httpClient.get<PaginatedResponse<Store>>(`/v1/stores`, {\n ...options,\n params,\n });\n },\n\n async getSubscriptionPlans(\n _params: GetSubscriptionPlansParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<SubscriptionPlan>> {\n return apiConfig.httpClient.get<PaginatedResponse<SubscriptionPlan>>(\n \"/v1/stores/plans\",\n options,\n );\n },\n\n async subscribe(\n params: SubscribeParams,\n options?: RequestOptions,\n ): Promise<{ checkout_url?: string }> {\n const { store_id, plan_id, action, success_url, cancel_url } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<{ checkout_url?: string }>(\n `/v1/stores/${target_store_id}/subscribe`,\n { plan_id, action, success_url, cancel_url },\n options,\n );\n },\n\n async createPortalSession(\n params: CreatePortalSessionParams,\n options?: RequestOptions,\n ): 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(\n params: AddMemberParams,\n options?: RequestOptions,\n ): Promise<boolean> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<boolean>(\n `/v1/stores/${store_id || apiConfig.storeId}/members`,\n payload,\n options,\n );\n },\n\n async inviteUser(\n params: AddMemberParams,\n options?: RequestOptions,\n ): Promise<boolean> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<boolean>(\n `/v1/stores/${store_id || apiConfig.storeId}/members`,\n payload,\n options,\n );\n },\n\n async removeMember(\n params: RemoveMemberParams,\n options?: RequestOptions,\n ): Promise<{ removed: boolean }> {\n return apiConfig.httpClient.delete<{ removed: boolean }>(\n `/v1/stores/${apiConfig.storeId}/members/${params.account_id}`,\n options,\n );\n },\n\n async testWebhook(\n params: TestWebhookParams,\n options?: RequestOptions,\n ): Promise<{ tested: boolean }> {\n return apiConfig.httpClient.post<{ tested: boolean }>(\n `/v1/stores/${apiConfig.storeId}/webhooks/test`,\n params,\n options,\n );\n },\n\n async getStoreMedia(\n params: FindStoreMediaParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<Media>> {\n const queryParams: Record<string, unknown> = {\n limit: params.limit,\n };\n if (params.cursor) queryParams.cursor = params.cursor;\n if (params.ids && params.ids.length > 0)\n queryParams.ids = JSON.stringify(params.ids);\n if (params.query) queryParams.query = params.query;\n if (params.mime_type) queryParams.mime_type = params.mime_type;\n if (params.sort_field) queryParams.sort_field = params.sort_field;\n if (params.sort_direction)\n queryParams.sort_direction = params.sort_direction;\n\n return apiConfig.httpClient.get<PaginatedResponse<Media>>(\n `/v1/stores/${params.id}/media`,\n {\n ...options,\n params: queryParams,\n },\n );\n },\n\n async listBuildHooks(\n params: ListBuildHooksParams,\n options?: RequestOptions,\n ): Promise<BuildHook[]> {\n return apiConfig.httpClient.get<BuildHook[]>(\n `/v1/stores/${params.store_id}/build-hooks`,\n options,\n );\n },\n\n async createBuildHook(\n params: CreateBuildHookParams,\n options?: RequestOptions,\n ): Promise<BuildHook> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<BuildHook>(\n `/v1/stores/${store_id}/build-hooks`,\n payload,\n options,\n );\n },\n\n async updateBuildHook(\n params: UpdateBuildHookParams,\n options?: RequestOptions,\n ): Promise<BuildHook> {\n const { store_id, id, ...payload } = params;\n return apiConfig.httpClient.put<BuildHook>(\n `/v1/stores/${store_id}/build-hooks/${id}`,\n payload,\n options,\n );\n },\n\n async deleteBuildHook(\n params: DeleteBuildHookParams,\n options?: RequestOptions,\n ): Promise<{ deleted: boolean }> {\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${params.store_id}/build-hooks/${params.id}`,\n options,\n );\n },\n\n async getStoreConfig(\n params: { store_id: string; type: \"payment\" | \"shipping\" },\n options?: RequestOptions,\n ): Promise<StoreRuntimeConfig> {\n return apiConfig.httpClient.get<StoreRuntimeConfig>(\n `/v1/stores/${params.store_id}/config/${params.type}`,\n options,\n );\n },\n\n async listWebhooks(\n params: ListWebhooksParams,\n options?: RequestOptions,\n ): Promise<Webhook[]> {\n return apiConfig.httpClient.get<Webhook[]>(\n `/v1/stores/${params.store_id}/webhooks`,\n options,\n );\n },\n\n async createWebhook(\n params: CreateWebhookParams,\n options?: RequestOptions,\n ): Promise<Webhook> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<Webhook>(\n `/v1/stores/${store_id}/webhooks`,\n payload,\n options,\n );\n },\n\n async updateWebhook(\n params: UpdateWebhookParams,\n options?: RequestOptions,\n ): Promise<Webhook> {\n const { store_id, id, ...payload } = params;\n return apiConfig.httpClient.put<Webhook>(\n `/v1/stores/${store_id}/webhooks/${id}`,\n payload,\n options,\n );\n },\n\n async deleteWebhook(\n params: DeleteWebhookParams,\n options?: RequestOptions,\n ): Promise<{ deleted: boolean }> {\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${params.store_id}/webhooks/${params.id}`,\n options,\n );\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<{ deleted: boolean }> {\n const { id, media_id } = params;\n\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${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\tTrackEmailOpenParams,\n\tTriggerNotificationParams,\n\tRequestOptions\n} from '../types/api';\n\nexport const createNotificationApi = (apiConfig: ApiConfig) => {\n\treturn {\n\t\tasync trackEmailOpen(params: TrackEmailOpenParams, options?: RequestOptions): Promise<void> {\n\t\t\treturn apiConfig.httpClient.get<void>(\n\t\t\t\t`/v1/notifications/track/pixel/${params.tracking_pixel_id}`,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync trigger(params: TriggerNotificationParams, options?: RequestOptions): Promise<{ success: boolean; message: string }> {\n\t\t\treturn apiConfig.httpClient.post<{ success: boolean; message: string }>(\n\t\t\t\t'/v1/notifications/trigger',\n\t\t\t\tparams,\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 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(\"GetCollectionParams requires id or key\");\n }\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 DownloadDigitalAccessParams,\n ProcessOrderRefundParams,\n ProcessOrderRefundResponse,\n QuoteCartParams,\n RemoveCartItemParams,\n RequestOptions,\n UpdateCartParams,\n} from \"../types/api\";\nimport type {\n Order,\n DigitalAccessDownloadResponse,\n Product,\n Provider,\n Service,\n ServiceProvider,\n OrderQuote,\n Cart,\n PaginatedResponse,\n} from \"../types\";\nimport {\n normalizeOrderCheckoutItems,\n normalizeOrderQuoteItems,\n} from \"../utils/orderItems\";\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: normalizeOrderCheckoutItems(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: normalizeOrderCheckoutItems(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: normalizeOrderCheckoutItems(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: normalizeOrderCheckoutItems([item])[0] },\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: normalizeOrderQuoteItems(items),\n shipping_address,\n market: rest.market || apiConfig.market,\n },\n options,\n );\n },\n\n async processRefund(\n params: ProcessOrderRefundParams,\n options?: RequestOptions,\n ): Promise<ProcessOrderRefundResponse> {\n return apiConfig.httpClient.post<ProcessOrderRefundResponse>(\n `/v1/stores/${apiConfig.storeId}/orders/${params.id}/refund`,\n { amount: params.amount },\n options,\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.id}/digital-access/${params.grant_id}/download`,\n {},\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 options,\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 ContactDetail,\n CreateContactListParams,\n UpdateContactListParams,\n FindContactListsParams,\n GetContactListParams,\n AddContactListContactParams,\n UpdateContactListContactParams,\n RemoveContactListContactParams,\n FindContactListContactsParams,\n ImportContactListPreviewParams,\n ImportContactsIntoContactListParams,\n ImportContactsIntoContactListResult,\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 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 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.query) queryParams.query = params.query;\n if (params.contact_id) queryParams.contact_id = params.contact_id;\n if (params.types && params.types.length > 0) queryParams.types = params.types;\n if (params.from !== undefined) queryParams.from = params.from;\n if (params.to !== undefined) queryParams.to = params.to;\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<ContactDetail> {\n return apiConfig.httpClient.get<ContactDetail>(\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 findActions(\n params?: FindActionsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<Action>> {\n const { store_id, ...queryParams } = params || {};\n return apiConfig.httpClient.get<PaginatedResponse<Action>>(\n `/v1/stores/${store_id || apiConfig.storeId}/actions`,\n {\n ...options,\n params: Object.keys(queryParams).length > 0 ? queryParams : undefined,\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 revokeToken(params: { id: string; token_id: string; store_id?: string }, options?: RequestOptions): Promise<{ deleted: boolean }> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${store_id}/contacts/${params.id}/sessions/${params.token_id}`,\n options\n );\n },\n\n async revokeAllTokens(params: { id: string; store_id?: string }, options?: RequestOptions): Promise<{ deleted: boolean }> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${store_id}/contacts/${params.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 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\n mailbox: {\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 } from \"../index\";\nimport type { RequestOptions } from \"../types/api\";\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: \"draft\" | \"active\" | \"archived\";\n entry_node_id: string;\n nodes: Record<string, SupportAgentNode>;\n edges: SupportAgentEdge[];\n ai_config?: SupportAgentAiConfig;\n created_at: number;\n updated_at: number;\n}\n\nexport interface SupportConversation {\n id: string;\n store_id: string;\n agent_id?: string;\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 StartSupportConversationParams {\n store_id: string;\n agent_key?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface SendSupportMessageParams {\n store_id: string;\n conversation_id: string;\n input: { type: \"button\"; label: string } | { type: \"text\"; content: string };\n}\n\nexport interface ReplySupportConversationParams {\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\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\nexport function createStorefrontSupportApi(config: ApiConfig) {\n const { httpClient, storeId } = config;\n\n return {\n async startConversation(\n params: Omit<StartSupportConversationParams, \"store_id\"> = {},\n opts?: RequestOptions\n ): Promise<SupportConversationResponse> {\n return httpClient.post(\n `/v1/storefront/${storeId}/support/conversations`,\n { store_id: storeId, ...params },\n opts\n );\n },\n\n async sendMessage(\n params: Omit<SendSupportMessageParams, \"store_id\">,\n opts?: RequestOptions\n ): Promise<SupportConversationResponse> {\n return httpClient.post(\n `/v1/storefront/${storeId}/support/conversations/${params.conversation_id}/messages`,\n { store_id: storeId, ...params },\n opts\n );\n },\n\n async getConversation(\n params: Omit<GetSupportConversationParams, \"store_id\">,\n opts?: RequestOptions\n ): Promise<SupportConversationResponse> {\n const qs = supportConversationQuery({ store_id: storeId, ...params });\n return httpClient.get(\n `/v1/storefront/${storeId}/support/conversations/${params.conversation_id}?${qs}`,\n opts\n );\n },\n };\n}\n\nexport interface CreateSupportAgentParams {\n store_id: string;\n key: string;\n name: string;\n status?: \"draft\" | \"active\" | \"archived\";\n entry_node_id: string;\n nodes: Record<string, SupportAgentNode>;\n edges: SupportAgentEdge[];\n ai_config?: SupportAgentAiConfig;\n}\n\nexport interface UpdateSupportAgentParams {\n store_id: string;\n id: string;\n name?: string;\n status?: \"draft\" | \"active\" | \"archived\";\n entry_node_id?: string;\n nodes?: Record<string, SupportAgentNode>;\n edges?: SupportAgentEdge[];\n ai_config?: SupportAgentAiConfig;\n}\n\nexport function createAdminSupportApi(config: ApiConfig) {\n const { httpClient } = config;\n\n return {\n agent: {\n async create(\n params: CreateSupportAgentParams,\n opts?: RequestOptions\n ): Promise<SupportAgent> {\n return httpClient.post(\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(\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(\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(\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(\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: { store_id: string; status?: string; agent_id?: string; query?: string; limit?: number; cursor?: string },\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.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(\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(\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(\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(\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(\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(\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 ConnectSocialAccountParams,\n CreateSocialPublicationParams,\n DeleteSocialAccountParams,\n FindSocialPublicationCommentsParams,\n FindSocialPublicationsParams,\n GetSocialCapabilitiesParams,\n GetSocialOAuthAttemptParams,\n GetSocialPublicationCommentThreadParams,\n GetSocialPublicationCommentsParams,\n GetSocialPublicationMetricsParams,\n GetSocialPublicationParams,\n ReplySocialPublicationCommentParams,\n RequestOptions,\n ScheduleSocialPublicationParams,\n SelectSocialDestinationParams,\n ListSocialAccountsParams,\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 SocialAccount,\n SocialPublication,\n SocialPublicationCommentClassificationResult,\n SocialPublicationComment,\n SocialPublicationEngagementSyncResult,\n SocialPublicationCommentReplyResponse,\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 replyToPublicationComment(\n params: ReplySocialPublicationCommentParams,\n options?: RequestOptions,\n ): Promise<SocialPublicationCommentReplyResponse> {\n const { store_id, publication_id, comment_id, text } = params;\n return apiConfig.httpClient.post<SocialPublicationCommentReplyResponse>(\n `/v1/stores/${storeId(store_id)}/social-publications/${publication_id}/comments/${comment_id}/reply`,\n { text },\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-accounts/capabilities`,\n options,\n );\n },\n\n async listAccounts(\n params?: ListSocialAccountsParams,\n options?: RequestOptions,\n ): Promise<SocialAccount[]> {\n return apiConfig.httpClient.get<SocialAccount[]>(\n `/v1/stores/${storeId(params?.store_id)}/social-accounts`,\n options,\n );\n },\n\n async connect(\n params: ConnectSocialAccountParams,\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-accounts/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-accounts/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-accounts/oauth/select-destination`,\n payload,\n options,\n );\n },\n\n async deleteAccount(\n params: DeleteSocialAccountParams,\n options?: RequestOptions,\n ): Promise<{ deleted: boolean }> {\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${storeId(params.store_id)}/social-accounts/${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 ConnectWorkflowAccountParams,\n GetWorkflowAccountConnectUrlParams,\n GetWorkflowAccountsParams,\n DeleteWorkflowAccountParams,\n RequestOptions,\n} from \"../types/api\";\nimport type {\n Workflow,\n WorkflowAccount,\n WorkflowAccountConnectUrl,\n WorkflowExecution,\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<{ deleted: boolean }> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<{ deleted: 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 getWorkflowAccounts(\n params?: GetWorkflowAccountsParams,\n options?: RequestOptions,\n ): Promise<WorkflowAccount[]> {\n const store_id = params?.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<WorkflowAccount[]>(\n `/v1/stores/${store_id}/workflow-accounts`,\n options,\n );\n },\n\n async getWorkflowAccountConnectUrl(\n params: GetWorkflowAccountConnectUrlParams,\n options?: RequestOptions,\n ): Promise<WorkflowAccountConnectUrl> {\n const { store_id, type, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<WorkflowAccountConnectUrl>(\n `/v1/stores/${target_store_id}/workflow-accounts/connect-url`,\n { ...payload, type, store_id: target_store_id },\n options,\n );\n },\n\n async connectWorkflowAccount(\n params: ConnectWorkflowAccountParams,\n options?: RequestOptions,\n ): Promise<WorkflowAccount> {\n const { store_id, type, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<WorkflowAccount>(\n `/v1/stores/${target_store_id}/workflow-accounts/connect`,\n { ...payload, type, store_id: target_store_id },\n options,\n );\n },\n\n async deleteWorkflowAccount(\n params: DeleteWorkflowAccountParams,\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-accounts/${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\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| 'productivity'\n\t\t| 'payments'\n\t\t| 'crm'\n\t\t| 'ecommerce'\n\t\t| 'developer'\n\t\t| 'storage'\n\t\t| 'analytics'\n\t\t| 'deploy'\n\t\t| 'core';\n\tconfigurationRequired: boolean;\n\twebsite?: string;\n\tdocsUrl?: string;\n\turlPatterns: string[];\n\tresources: WorkflowToolResource[];\n\ttriggers?: Array<{\n\t\tname: string;\n\t\tvalue: string;\n\t\tdescription: string;\n\t\twebhookType: 'incoming' | 'polling';\n\t}>;\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<{ data: string[] }> {\n\t\t\treturn apiConfig.httpClient.get<{ data: string[] }>('/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 GetShippingRatesParams,\n ShipParams,\n RequestOptions,\n} from \"../types/api\";\nimport type { ShippingRate, ShipResult } from \"../types\";\n\nexport const createShippingApi = (apiConfig: ApiConfig) => {\n return {\n \n async getRates(\n params: GetShippingRatesParams,\n options?: RequestOptions\n ): Promise<{ rates: ShippingRate[] }> {\n const { order_id, ...payload } = params;\n return apiConfig.httpClient.post<{ rates: ShippingRate[] }>(\n `/v1/stores/${apiConfig.storeId}/orders/${order_id}/shipping/rates`,\n payload,\n options\n );\n },\n\n\n async ship(\n params: ShipParams,\n options?: RequestOptions\n ): Promise<ShipResult> {\n const { order_id, ...payload } = params;\n return apiConfig.httpClient.post<ShipResult>(\n `/v1/stores/${apiConfig.storeId}/orders/${order_id}/ship`,\n payload,\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","\nexport interface Block {\n id: string;\n key: string;\n type: string;\n properties: any;\n value: any;\n}\n\nexport interface Collection {\n id: string;\n blocks: Block[];\n entity: string;\n}\n\nexport interface CollectionEntry {\n id: string;\n collection_id: string;\n blocks: Block[];\n}\n\nexport function getBlockLabel(block: any): string {\n if (!block) return \"\";\n return block.key?.replace(/_/g, \" \").replace(/\\b\\w/g, (l: string) => l.toUpperCase()) ?? \"\";\n}\n\nexport function formatBlockValue(block: any): string {\n if (!block || block.value === null || block.value === undefined) return \"\";\n\n const value = block.value;\n\n switch (block.type) {\n case \"boolean\":\n return value ? \"Yes\" : \"No\";\n case \"number\":\n if (block.properties?.variant === \"DATE\" || block.properties?.variant === \"DATE_TIME\") {\n return new Date(value).toLocaleDateString();\n }\n return String(value);\n case \"media\":\n if (value && typeof value === 'object') {\n return value.mime_type ? (value.name || value.id) : (value.title || value.name || value.id);\n }\n return String(value);\n default:\n return String(value);\n }\n}\n\nexport function prepareBlocksForSubmission(formData: any, blockTypes?: Record<string, string>): any[] {\n return Object.keys(formData)\n .filter((key) => formData[key] !== null && formData[key] !== undefined)\n .map((key) => ({\n key,\n value:\n ((blockTypes?.[key] || \"text\") === \"array\") && !Array.isArray(formData[key])\n ? [formData[key]]\n : formData[key],\n }));\n}\n\nexport function extractBlockValues(blocks: any[]): Record<string, any> {\n const values: Record<string, any> = {};\n blocks.forEach((block) => {\n values[block.key] = block.value ?? null;\n });\n return values;\n}\n\nexport const getBlockValue = (entry: any, blockKey: string) => {\n const block = entry?.blocks?.find((f: any) => f.key === blockKey);\n return block?.value ?? null;\n};\n\nexport const getBlockTextValue = (block: any, locale: string = \"en\"): string => {\n if (!block || block.value === null || block.value === undefined) return \"\";\n\n const blockType = block.type;\n\n if (blockType === \"localized_text\" || blockType === \"markdown\") {\n if (typeof block.value === \"object\" && block.value !== null) {\n return block.value[locale] ?? block.value[\"en\"] ?? \"\";\n }\n }\n\n \n if (typeof block.value === \"string\") return block.value;\n\n return String(block.value ?? \"\");\n};\n\nexport const getBlockValues = (entry: any, blockKey: string) => {\n const block = entry?.blocks?.find((f: any) => f.key === blockKey);\n if (!block) return [];\n\n if (block.type === \"array\" && Array.isArray(block.value)) {\n return block.value;\n }\n\n return [];\n};\n\nfunction unwrapBlock(block: any, locale: string) {\n if (!block?.type || block.value === undefined) return block;\n\n const blockType = block.type;\n if (blockType === \"array\") {\n return block.value.map((obj: Record<string, any>) => {\n const parsed: Record<string, any> = {};\n for (const [k, v] of Object.entries(obj)) {\n parsed[k] = unwrapBlock(v, locale);\n }\n return parsed;\n });\n }\n\n if (blockType === \"object\") {\n const parsed: Record<string, any> = {};\n for (const [k, v] of Object.entries(block.value || {})) {\n parsed[k] = unwrapBlock(v as any, locale);\n }\n return parsed;\n }\n\n if (blockType === \"localized_text\" || blockType === \"markdown\") {\n return block.value?.[locale];\n }\n\n return block.value;\n}\n\nexport const getBlockObjectValues = (entry: any, blockKey: string, locale = \"en\") => {\n const block = entry?.blocks?.find((f: any) => f.key === blockKey);\n if (!block || block.type !== \"array\" || !Array.isArray(block.value)) return [];\n\n return block.value.map((obj: Record<string, any>) => {\n if (!obj?.value || !Array.isArray(obj.value)) return {};\n return obj.value.reduce((acc: any, current: any) => {\n acc[current.key] = unwrapBlock(current, locale);\n return acc;\n }, {});\n });\n};\n\nexport const getBlockFromArray = (entry: any, blockKey: string, locale = \"en\") => {\n const block = entry?.blocks?.find((f: any) => f.key === blockKey);\n if (!block) return {};\n\n if (block.type === \"array\" && Array.isArray(block.value)) {\n return block.value.reduce((acc: any, current: any) => {\n acc[current.key] = unwrapBlock(current, locale);\n return acc;\n }, {});\n }\n\n if (block.type === \"object\" && block.value && typeof block.value === \"object\") {\n const result: Record<string, any> = {};\n for (const [k, v] of Object.entries(block.value)) {\n result[k] = unwrapBlock(v as any, locale);\n }\n return result;\n }\n\n return { [block.key]: unwrapBlock(block, locale) };\n};\n\nexport const getImageUrl = (imageBlock: any, isBlock = true) => {\n if (!imageBlock) return null;\n\n if (imageBlock.type === \"media\") {\n const mediaValue = imageBlock.value;\n return mediaValue?.resolutions?.original?.url || mediaValue?.url || null;\n }\n\n if (isBlock) {\n if (typeof imageBlock === \"string\") return imageBlock;\n if (imageBlock.url) return imageBlock.url;\n }\n\n return imageBlock.resolutions?.original?.url || null;\n};\n\nexport const translateMap = (labels: any, lang: string) => {\n return labels?.[lang];\n};\n","import type { OrderPayment, Price } from '../types';\n\ntype AnyPayment = Pick<OrderPayment, 'total' | 'currency'>;\n\nfunction formatCurrency(amount: number, currencyCode: string, locale: string = 'en'): string {\n if (!currencyCode) return '';\n return new Intl.NumberFormat(locale, {\n style: 'currency',\n currency: currencyCode.toUpperCase(),\n }).format(amount);\n}\n\nfunction getMinorUnits(currency: string): number {\n try {\n const formatter = new Intl.NumberFormat('en', {\n style: 'currency',\n currency: currency.toUpperCase(),\n });\n const parts = formatter.formatToParts(1.11);\n const fractionPart = parts.find(p => p.type === 'fraction');\n return fractionPart?.value.length ?? 2;\n } catch {\n return 2;\n }\n}\n\nexport function convertToMajor(minorAmount: number, currency: string): number {\n const units = getMinorUnits(currency);\n return minorAmount / Math.pow(10, units);\n}\n\nexport function convertToMinor(majorAmount: number, currency: string): number {\n const units = getMinorUnits(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 (!currency) return '';\n return formatCurrency(convertToMajor(amountMinor, currency), currency);\n}\n\nexport function formatPayment(payment: AnyPayment): string {\n return formatMinor(payment.total, payment.currency);\n}\n\nexport function formatPrice(prices: Price[], marketId?: string): string {\n if (!prices || prices.length === 0) return '';\n\n const price = marketId\n ? prices.find(p => p.market === marketId) || prices[0]\n : prices[0];\n\n if (!price) return '';\n\n return formatMinor(price.amount, price.currency);\n}\n\nexport function getPriceAmount(prices: Price[], marketId: string): number {\n if (!prices || prices.length === 0) return 0;\n const price = prices.find(p => p.market === marketId) || prices[0];\n return price?.amount || 0;\n}\n","\nexport 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 function validateEmail(email: string): ValidationResult {\n if (!email) {\n return { isValid: false, error: 'Email is required' };\n }\n \n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n \n if (!emailRegex.test(email)) {\n return { isValid: false, error: 'Please enter a valid email address' };\n }\n \n return { isValid: true };\n}\n\nexport function validateVerificationCode(code: string): ValidationResult {\n if (!code) {\n return { isValid: false, error: 'Verification code is required' };\n }\n \n const cleaned = code.replace(/\\D/g, '');\n \n if (cleaned.length !== 4) {\n return { isValid: false, error: 'Please enter a 4-digit verification code' };\n }\n \n return { isValid: true };\n}\n\nexport function validateRequired(value: any, fieldName: string = 'This field'): ValidationResult {\n if (value === null || value === undefined || value === '') {\n return { isValid: false, error: `${fieldName} is required` };\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: any): Promise<string | null> {\n\tif (!mediaObject) return null;\n\n\tconst svgUrl = getImageUrl(mediaObject, false);\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: any): 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: any,\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","export type {\n ApiResponse,\n EshopCartItem,\n Cart,\n CartOrigin,\n CartStatus,\n EshopStoreState,\n Store,\n Webhook,\n WebhookEventSubscription,\n BuildHook,\n BuildHookType,\n PaymentStoreConfig,\n StoreRuntimeConfig,\n SocialConnectResponse,\n SocialDestinationMetadata,\n SocialOAuthCallbackResponse,\n SocialOAuthCallbackStatus,\n SocialOAuthCredential,\n SocialOAuthDestinationOption,\n SocialAccount,\n SocialProviderCapability,\n SocialProviderType,\n InstagramPlacement,\n SocialAnalyticsCapabilities,\n SocialEngagementCapabilities,\n SocialPublication,\n SocialPublicationComment,\n SocialPublicationCommentClassificationResult,\n SocialPublicationCommentIntent,\n SocialPublicationCommentPriority,\n SocialPublicationEngagementSyncResult,\n SocialPublicationCommentReply,\n SocialPublicationCommentReplyResponse,\n SocialPublicationCommentReplyError,\n SocialPublicationCommentReplyStatus,\n SocialPublicationCommentStatus,\n SocialPublicationContent,\n SocialPublicationMetricSnapshot,\n SocialPublicationMutationResponse,\n SocialPublicationStatus,\n SocialPublicationValidation,\n TiktokPrivacy,\n ValidationError,\n YoutubePrivacy,\n Block,\n Price,\n OrderPayment,\n PaymentProvider,\n StripePaymentProviderConnectResponse,\n OrderPaymentTax,\n OrderPaymentTaxLine,\n OrderPaymentPromoCode,\n OrderPaymentProvider,\n OrderPaymentRefund,\n RefundType,\n RefundLine,\n TaxLineReversal,\n PaymentTransactionProvider,\n PaymentCaptureMethod,\n PaymentTransactionType,\n PaymentTransactionStatus,\n PaymentTransaction,\n OrderQuote,\n RefundStatus,\n CheckoutPaymentAction,\n StoreSubscription,\n StoreSubscriptionPayment,\n StoreSubscriptionProviderError,\n StoreSubscriptionProviderLifecycle,\n StoreSubscriptionProviderLifecycleStatus,\n StoreSubscriptionProviderOperation,\n StoreSubscriptionProvider,\n StoreSubscriptionStatus,\n StoreSubscriptionSource,\n SubscriptionPlan,\n SubscriptionPrice,\n ContactListMembershipProviderCancellation,\n ContactListMembershipProviderCancellationError,\n ContactListMembershipProviderCancellationStatus,\n ContactListMembershipPayment,\n ContactListMembershipProvider,\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 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 WorkflowAccount,\n WorkflowAccountConnectUrl,\n WorkflowAccountProfile,\n WorkflowAccountType,\n WorkflowSwitchNode,\n WorkflowSwitchRule,\n WorkflowTransformNode,\n WorkflowLoopNode,\n WorkflowHttpMethod,\n WorkflowExecution,\n ExecutionStatus,\n NodeResult,\n ContactListType,\n ContactListAccessResponse,\n ContactListSubscribeResponse,\n Event,\n EventAction,\n ShippingStatus,\n OrderShipping,\n ShippingLine,\n FulfillmentOrderStatus,\n FulfillmentOrderRequestStatus,\n FulfillmentOrderLine,\n FulfillmentOrder,\n ShippingRate,\n Parcel,\n PurchaseLabelResult,\n ShipResult,\n ShipmentLabelStatus,\n ShipmentLine,\n Shipment,\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 Form,\n FormSubmission,\n FormSchema,\n FormSchemaType,\n FormField,\n FormFieldType,\n FormEntry,\n Taxonomy,\n TaxonomyEntry,\n TaxonomyQuery,\n TaxonomySchema,\n TaxonomySchemaType,\n TaxonomyField,\n TaxonomyFieldQuery,\n PromoCode,\n Contact,\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 SmtpImapMailboxProvider,\n OutreachStep,\n OutreachStepType,\n ManualTaskContinueBehavior,\n CampaignManualTaskOutcome,\n OutreachPersonalizationCounters,\n OutreachPersonalizationState,\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 AccountToken,\n AccountUpdateResponse,\n StoreMembership,\n Discount,\n Condition,\n ServiceStatus,\n ProviderStatus,\n ProductStatus,\n ContactStatus,\n ContactListStatus,\n ContactListSource,\n ContactListMembershipStatus,\n MailboxStatus,\n CampaignStatus,\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 PromoCodeStatus,\n CollectionStatus,\n EntryStatus,\n EmailTemplateStatus,\n EmailTemplateVariable,\n FormStatus,\n TaxonomyStatus,\n} from \"./types\";\nexport { PaymentMethodType } from \"./types\";\n\nexport type {\n GetAvailabilityParams,\n AvailabilitySlot,\n DaySlots,\n ProviderAvailability,\n AvailabilityResponse,\n Slot,\n SlotRange,\n EshopItem,\n EshopQuoteItem,\n ServiceCheckoutPart,\n ServiceQuoteItem,\n ConditionValue,\n ProductQuoteItemInput,\n ServiceQuoteItemInput,\n OrderQuoteItemInput,\n OrderQuoteCompatibleItemInput,\n ProductCheckoutItemInput,\n ServiceCheckoutItemInput,\n OrderCheckoutItemInput,\n OrderCheckoutCompatibleItemInput,\n TrustedProductCheckoutItemInput,\n TrustedServiceCheckoutItemInput,\n TrustedOrderCheckoutItemInput,\n TrustedOrderCheckoutCompatibleItemInput,\n ProcessOrderRefundParams,\n ProcessOrderRefundResponse,\n GetCurrentCartParams,\n GetCartParams,\n FindCartsParams,\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 ShipParams,\n CreateContactListParams,\n UpdateContactListParams,\n FindContactListsParams,\n GetContactListParams,\n AddContactListContactParams,\n UpdateContactListContactParams,\n RemoveContactListContactParams,\n FindContactListContactsParams,\n ImportContactRowInput,\n ImportContactRowError,\n ImportContactRowResult,\n ImportContactListRowResult,\n ImportContactListPreviewParams,\n ImportContactsIntoContactListParams,\n ImportContactsIntoContactListResult,\n SubscribeContactListParams,\n ContactListAccessParams,\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 ConnectSocialAccountParams,\n CreateSocialPublicationParams,\n DeletePaymentProviderParams,\n DeleteSocialAccountParams,\n FindSocialPublicationCommentsParams,\n FindSocialPublicationsParams,\n GetSocialCapabilitiesParams,\n GetSocialOAuthAttemptParams,\n GetSocialPublicationCommentThreadParams,\n GetSocialPublicationCommentsParams,\n GetSocialPublicationMetricsParams,\n GetSocialPublicationParams,\n ListPaymentProvidersParams,\n ListSocialAccountsParams,\n RefreshPaymentProvidersParams,\n ReplySocialPublicationCommentParams,\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} from \"./types/api\";\n\nexport type {\n StorefrontAction,\n TrackActionParams,\n CommonActionKey,\n ExperimentUseResponse,\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 SupportConversation,\n SupportMessage,\n SupportConversationResponse,\n SupportAgentNode,\n SupportAgentEdge,\n SupportAgentAiConfig,\n EdgeTrigger,\n SupportAction,\n AssignSupportConversationParams,\n GetSupportConversationParams,\n ReplySupportConversationParams,\n ResolveSupportConversationParams,\n} from \"./api/support\";\nexport type {\n WorkflowToolOperation,\n WorkflowToolResource,\n WorkflowTool,\n} from \"./api/platform\";\n\nexport const SDK_VERSION = \"0.9.11\";\nexport const SUPPORTED_FRAMEWORKS = [\n \"astro\",\n \"react\",\n \"vue\",\n \"svelte\",\n \"vanilla\",\n] as const;\n\nimport type {\n Contact as ContactType,\n Store as StoreType,\n Market as MarketType,\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 AdminSessionInternal {\n access_token: string;\n refresh_token: string;\n access_expires_at?: number;\n email?: string;\n}\n\nexport interface ContactSessionInternal {\n access_token: string;\n contact: ContactType;\n store: StoreType;\n market: MarketType | null;\n}\n\nexport interface AdminSession {\n email?: string;\n}\n\nexport interface ContactSession {\n contact: ContactType;\n store: StoreType;\n market: MarketType | null;\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 { createCartController } from \"./cartController\";\nimport {\n getImageUrl,\n getBlockValue,\n getBlockTextValue,\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: ApiConfig) {\n return {\n getImageUrl: (imageBlock: any, isBlock = true) =>\n getImageUrl(imageBlock, isBlock),\n getBlockValue,\n getBlockTextValue,\n getBlockValues,\n getBlockLabel,\n getBlockObjectValues,\n getBlockFromArray,\n formatBlockValue,\n prepareBlocksForSubmission,\n extractBlockValues,\n\n formatPrice: (prices: any[]) => formatPrice(prices, apiConfig.market),\n getPriceAmount: (prices: any[]) => 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 listAccounts: workflowApi.getWorkflowAccounts,\n getAccountConnectUrl: workflowApi.getWorkflowAccountConnectUrl,\n connectAccount: workflowApi.connectWorkflowAccount,\n deleteAccount: workflowApi.deleteWorkflowAccount,\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 auth: authApi,\n },\n store: {\n create: storeApi.createStore,\n update: storeApi.updateStore,\n delete: storeApi.deleteStore,\n get: storeApi.getStore,\n find: storeApi.getStores,\n subscription: {\n getPlans: storeApi.getSubscriptionPlans,\n subscribe: storeApi.subscribe,\n createPortalSession: storeApi.createPortalSession,\n },\n member: {\n add: storeApi.addMember,\n invite: storeApi.inviteUser,\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 get: storeApi.getStoreConfig,\n },\n media: {\n find: storeApi.getStoreMedia,\n },\n location: locationApi,\n market: marketApi,\n paymentProvider: storePaymentProviderApi,\n },\n media: createMediaApi(apiConfig),\n notification: {\n email: {\n trackOpen: notificationApi.trackEmailOpen,\n },\n trigger: {\n send: notificationApi.trigger,\n },\n mailbox: crmApi.mailbox,\n },\n platform: platformApi,\n social: {\n account: {\n getCapabilities: socialApi.getCapabilities,\n list: socialApi.listAccounts,\n connect: socialApi.connect,\n getOAuthAttempt: socialApi.getOAuthAttempt,\n selectDestination: socialApi.selectDestination,\n delete: socialApi.deleteAccount,\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 replyToComment: socialApi.replyToPublicationComment,\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 processRefund: eshopApi.processRefund,\n downloadDigitalAccess: eshopApi.downloadDigitalAccess,\n getShippingRates: shippingApi.getRates,\n ship: shippingApi.ship,\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 revokeToken: crmApi.revokeToken,\n revokeAllTokens: crmApi.revokeAllTokens,\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 },\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 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\nconst CONTACT_STORAGE_KEY = \"arky_contact_session\";\n\nfunction readContactSession(): ContactSessionInternal | null {\n if (typeof window === \"undefined\") return null;\n try {\n const raw = localStorage.getItem(CONTACT_STORAGE_KEY);\n return raw ? (JSON.parse(raw) as ContactSessionInternal) : null;\n } catch {\n return null;\n }\n}\n\nfunction writeContactSession(s: ContactSessionInternal | null): void {\n if (typeof window === \"undefined\") return;\n if (s) {\n localStorage.setItem(CONTACT_STORAGE_KEY, JSON.stringify(s));\n } else {\n localStorage.removeItem(CONTACT_STORAGE_KEY);\n }\n}\n\nexport type CreateStorefrontConfig = Omit<\n HttpClientConfig,\n \"authStorage\" | \"storeId\"\n> & {\n storeId: string;\n market?: string;\n locale?: string;\n apiToken?: string;\n};\n\nexport function createStorefront(config: CreateStorefrontConfig) {\n const locale = config.locale || \"en\";\n const initialMarket = config.market || \"\";\n const listeners = new Set<AuthStateListener<ContactSession>>();\n let bareIdentifyPromise: Promise<ContactSession> | null = null;\n\n function toPublic(s: ContactSessionInternal | null): ContactSession | null {\n return s ? { contact: s.contact, store: s.store, market: s.market } : null;\n }\n\n function emit(): void {\n const pub = toPublic(readContactSession());\n for (const l of listeners) {\n Promise.resolve()\n .then(() => l(pub))\n .catch(() => {});\n }\n }\n\n const updateSession: ContactSessionUpdater = (updater) => {\n if (config.apiToken) return;\n const prev = readContactSession();\n const next = updater(prev);\n writeContactSession(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 = readContactSession();\n return s ? { access_token: s.access_token } : null;\n },\n onTokensRefreshed() {\n // Contact tokens are one-shot; no refresh on this flow.\n },\n onForcedLogout() {\n bareIdentifyPromise = null;\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: initialMarket,\n locale,\n authStorage,\n };\n\n const storefrontApi = createStorefrontApi(apiConfig, updateSession);\n const contactApi = storefrontApi.crm.contact;\n\n function identify(params?: {\n email?: string;\n verify?: boolean;\n market?: string;\n }): Promise<ContactSession> {\n if (params?.market !== undefined) apiConfig.market = params.market;\n\n const isBareCall = !params?.email && !params?.verify;\n if (isBareCall && bareIdentifyPromise) return bareIdentifyPromise;\n\n const promise = (async (): Promise<ContactSession> => {\n try {\n const result = await contactApi.identify({\n market: apiConfig.market,\n email: params?.email,\n verify: params?.verify,\n });\n return {\n contact: result.contact,\n store: result.store,\n market: result.market,\n };\n } catch (err: unknown) {\n const e = err as {\n statusCode?: number;\n status?: number;\n response?: { status?: number };\n };\n const status = e?.statusCode || e?.status || e?.response?.status;\n if (isBareCall && status === 401) {\n updateSession(() => null);\n const result = await contactApi.identify({\n market: apiConfig.market,\n });\n return {\n contact: result.contact,\n store: result.store,\n market: result.market,\n };\n }\n throw err;\n }\n })().catch((err) => {\n if (isBareCall) bareIdentifyPromise = null;\n throw err;\n });\n\n if (isBareCall) bareIdentifyPromise = promise;\n\n return promise;\n }\n\n async function verify(params: { code: string }) {\n const result = await contactApi.verify(params);\n bareIdentifyPromise = null;\n return result;\n }\n\n async function logout(): Promise<void> {\n if (config.apiToken) return;\n bareIdentifyPromise = null;\n try {\n await contactApi.logout();\n } catch {\n updateSession(() => null);\n }\n }\n\n return {\n identify,\n verify,\n logout,\n me: () => contactApi.getMe(),\n\n get session(): ContactSession | null {\n if (config.apiToken) return null;\n return toPublic(readContactSession());\n },\n\n get isAuthenticated(): boolean {\n if (config.apiToken) return true;\n const s = readContactSession();\n return s !== null && !!s.access_token;\n },\n\n onAuthStateChanged(\n listener: AuthStateListener<ContactSession>,\n ): () => void {\n listeners.add(listener);\n const current = toPublic(readContactSession());\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 cart: createCartController(storefrontApi.eshop.cart),\n cms: storefrontApi.cms,\n eshop: storefrontApi.eshop,\n crm: storefrontApi.crm,\n action: storefrontApi.action,\n experiments: storefrontApi.experiments,\n support: createStorefrontSupportApi(apiConfig),\n setStoreId: (storeId: string) => {\n apiConfig.storeId = storeId;\n bareIdentifyPromise = null;\n },\n getStoreId: () => apiConfig.storeId,\n setMarket: (key: string) => {\n apiConfig.market = key;\n bareIdentifyPromise = null;\n },\n getMarket: () => apiConfig.market,\n setLocale: (l: string) => {\n apiConfig.locale = l;\n },\n getLocale: () => apiConfig.locale,\n utils: createUtilitySurface(apiConfig),\n };\n}\n\nexport type { HttpClientConfig } from \"./services/createHttpClient\";\n"]}
1
+ {"version":3,"sources":["../src/types/index.ts","../src/utils/orderItems.ts","../src/api/storefront.ts","../src/cartController.ts","../src/utils/errors.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/index.ts"],"names":["PaymentMethodType","url","locale"],"mappings":"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","file":"index.js","sourcesContent":["export * from \"./api\";\n\nexport enum PaymentMethodType {\n Cash = \"cash\",\n CreditCard = \"credit_card\",\n}\n\nexport interface PaymentTaxLine {\n rate_bps: number;\n amount: number;\n label?: string;\n scope?: string;\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 OrderPaymentProvider = {\n type: \"stripe\";\n stripe_customer_id: string;\n payment_intent_id?: string | null;\n payment_provider_id?: string | null;\n connected_account_id?: string | null;\n};\n\nexport type PaymentTransactionProvider =\n | \"manual\"\n | \"stripe\"\n | \"gift_card\"\n | \"store_credit\";\nexport type PaymentCaptureMethod = \"automatic\" | \"manual\";\nexport type PaymentTransactionType =\n | \"authorize\"\n | \"capture\"\n | \"sale\"\n | \"void\"\n | \"cancel\"\n | \"refund\"\n | \"mark_paid\"\n | \"adjustment\";\nexport type PaymentTransactionStatus =\n | \"pending\"\n | \"requires_action\"\n | \"processing\"\n | \"succeeded\"\n | \"failed\"\n | \"cancelled\";\n\nexport interface PaymentTransaction {\n id: string;\n payment_id?: string | null;\n order_id?: string | null;\n parent_transaction_id?: string | null;\n type: PaymentTransactionType;\n status: PaymentTransactionStatus;\n amount: number;\n currency: string;\n provider: PaymentTransactionProvider;\n provider_transaction_id?: string | null;\n provider_payment_id?: string | null;\n provider_status?: string | null;\n error_code?: string | null;\n error_message?: string | null;\n fee_amount?: number | null;\n net_amount?: number | null;\n settlement_currency?: string | null;\n settlement_exchange_rate?: number | null;\n payout_id?: string | null;\n idempotency_key?: string | null;\n raw_provider_status?: string | null;\n processed_at?: number | null;\n created_at: number;\n}\n\nexport interface OrderPaymentRefund {\n id: string;\n type: RefundType;\n total: number;\n tax_amount: number;\n shipping_amount?: number | null;\n provider_refund_id?: string | null;\n status: import(\"./api\").RefundStatus;\n error?: OrderRefundError | null;\n reason?: string | null;\n lines: RefundLine[];\n transaction_ids: string[];\n created_at: number;\n}\n\nexport type OrderRefundError =\n | {\n type: \"provider_rejected\";\n message: string;\n provider_code?: string | null;\n provider_status?: number | null;\n at: number;\n }\n | {\n type: \"unknown_outcome\";\n message: string;\n at: number;\n }\n | {\n type: \"missing_payment_intent\";\n message: string;\n at: number;\n };\n\nexport interface OrderPayment {\n status: OrderPaymentStatus;\n currency: string;\n market: string;\n subtotal: number;\n shipping: number;\n discount: number;\n total: number;\n paid: number;\n authorized_amount: number;\n captured_amount: number;\n refunded_amount: number;\n voided_amount: number;\n capture_method: PaymentCaptureMethod;\n tax?: OrderPaymentTax;\n promo_code?: OrderPaymentPromoCode;\n provider?: OrderPaymentProvider;\n refunds: OrderPaymentRefund[];\n transactions: PaymentTransaction[];\n provider_payment_id?: string | null;\n provider_customer_id?: string | null;\n provider_payment_method_id?: string | null;\n provider_status?: string | null;\n next_action?: string | null;\n failure_code?: string | null;\n failure_message?: string | null;\n idempotency_key?: string | null;\n zone_id?: string;\n payment_method_key?: string;\n shipping_method_id?: string;\n method_type: PaymentMethodType;\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 payment: OrderPayment;\n charge_amount: number;\n}\n\nexport interface Price {\n currency: string;\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: string;\n id: string;\n}\n\nexport interface SubscriptionPrice {\n currency: string;\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 SocialOAuthCredential {\n access_token?: string;\n refresh_token?: string | null;\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 SocialProviderType =\n | \"facebook_page\"\n | \"instagram_business\"\n | \"youtube_channel\"\n | \"tiktok_account\"\n | \"x_account\";\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_account_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\"\n | \"replied\"\n | \"hidden\"\n | \"deleted\";\n\nexport type SocialPublicationCommentReplyStatus =\n | \"none\"\n | \"requested\"\n | \"processing\"\n | \"succeeded\"\n | \"failed\"\n | \"unknown\";\n\nexport type SocialPublicationCommentReplyError =\n | {\n type: \"provider_rejected\";\n message: string;\n provider_code?: string | null;\n provider_status?: number | null;\n at: number;\n }\n | {\n type: \"unknown_outcome\";\n message: string;\n at: number;\n };\n\nexport type SocialPublicationCommentIntent =\n | \"lead\"\n | \"support\"\n | \"complaint\"\n | \"question\"\n | \"praise\"\n | \"spam\"\n | \"general\";\n\nexport type SocialPublicationCommentPriority =\n | \"urgent\"\n | \"high\"\n | \"normal\"\n | \"low\";\n\nexport interface SocialPublicationComment {\n id: string;\n store_id: string;\n publication_id: string;\n social_account_id: string;\n provider_type: SocialProviderType;\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 reply_status: SocialPublicationCommentReplyStatus;\n reply_error?: SocialPublicationCommentReplyError | null;\n reply_requested_text?: string | null;\n reply_provider_comment_id?: string | null;\n reply_provider_comment_url?: string | null;\n reply_error_code?: string | null;\n reply_error_message?: string | null;\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_account_id: string;\n provider_type: SocialProviderType;\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 interface SocialPublicationCommentReply {\n provider_comment_id: string;\n provider_comment_url?: string | null;\n}\n\nexport interface SocialPublicationCommentReplyResponse {\n comment: SocialPublicationComment;\n reply: SocialPublicationCommentReply;\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 provider_type: SocialProviderType;\n display_name: string;\n icon_key: string;\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 =\n | \"code_received\"\n | \"connected\"\n | \"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 provider_type: SocialProviderType;\n account_id: string;\n attempt_id?: string | null;\n social_account_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 SocialAccount {\n id: string;\n store_id: string;\n key: string;\n provider_type: SocialProviderType;\n credential: SocialOAuthCredential;\n destination: SocialDestinationMetadata;\n created_at: number;\n updated_at: number;\n}\n\nexport interface PaymentProvider {\n id: string;\n store_id: string;\n key: string;\n provider: {\n type: \"stripe\";\n onboarding_status: string;\n charges_enabled: boolean;\n payouts_enabled: boolean;\n details_submitted: boolean;\n application_fee_bps?: number | null;\n currency: string;\n };\n created_at: number;\n updated_at: number;\n}\n\nexport interface PaymentStoreConfig {\n provider: \"stripe\";\n publishable_key: string;\n currency: string;\n}\n\nexport type StoreRuntimeConfig = PaymentStoreConfig | [] | null;\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 TaxLineReversal {\n tax_line_id: string;\n amount: number;\n}\n\nexport interface RefundLine {\n order_item_id: string;\n quantity: number;\n subtotal_amount: number;\n discount_amount: number;\n taxable_base: number;\n amount: number;\n tax_amount: number;\n tax_line_reversals: TaxLineReversal[];\n restock: boolean;\n}\n\nexport type RefundType = \"item\" | \"shipping\" | \"goodwill\" | \"correction\";\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\"\n | \"partially_fulfilled\"\n | \"fulfilled\"\n | \"not_required\";\n\nexport type BookingOrderItemStatus =\n | \"scheduled\"\n | \"completed\"\n | \"no_show\"\n | \"cancelled\";\n\nexport type OrderItemSnapshot =\n | ProductLineItemSnapshot\n | ServiceLineItemSnapshot;\n\nexport type ProductQuoteLineAvailability =\n | { ok: true; available?: number }\n | { ok: false; reason: string };\n\nexport type ServiceQuoteLineAvailability =\n | { ok: true; spots: number }\n | { 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 fulfilled_quantity: number;\n returned_quantity: number;\n refunded_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 refunded_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 HistoryEntry {\n action: string;\n reason?: string;\n timestamp: number;\n}\n\nexport type DigitalAccessGrantStatus =\n | \"pending\"\n | \"active\"\n | \"exhausted\"\n | \"revoked\"\n | \"expired\";\n\nexport interface DigitalAccessGrant {\n 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 access_url?: string | null;\n storage_ref?: string | null;\n status: DigitalAccessGrantStatus;\n delivery_policy_snapshot: DigitalDeliveryPolicy;\n download_limit?: number | null;\n download_count: number;\n expires_at?: number | null;\n granted_at?: number | null;\n revoked_at?: number | null;\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 fulfilled_quantity: number;\n}\n\nexport interface FulfillmentOrder {\n 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 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: OrderPayment;\n shipping_lines: ShippingLine[];\n fulfillment_orders: FulfillmentOrder[];\n shipping_address?: Address;\n billing_address?: Address;\n forms: FormEntry[];\n shipments: Shipment[];\n digital_access_grants: DigitalAccessGrant[];\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\" }\n | { 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: string;\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.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: \"store.deleted\" }\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: \"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\"\n | \"active\"\n | \"cancellation_scheduled\"\n | \"cancelled\"\n | \"expired\";\n\nexport type StoreSubscriptionSource = \"signup\" | \"admin\" | \"import\";\n\nexport type StoreSubscriptionProvider = {\n type: \"stripe\";\n stripe_customer_id: string;\n subscription_id?: string | null;\n price_id?: string | null;\n};\n\nexport type StoreSubscriptionProviderLifecycleStatus =\n | \"requested\"\n | \"processing\"\n | \"succeeded\"\n | \"rejected\"\n | \"unknown\";\n\nexport type StoreSubscriptionProviderOperation =\n | { type: \"cancel_at_period_end\" }\n | { type: \"cancel_immediately\"; plan_id?: string | null }\n | { type: \"reactivate\" }\n | {\n type: \"update_plan\";\n plan_id: string;\n price_id: string;\n proration_behavior: string;\n }\n | { type: \"schedule_plan_change\"; plan_id: string; price_id: string };\n\nexport type StoreSubscriptionProviderError =\n | {\n type: \"provider_rejected\";\n message: string;\n provider_code?: string | null;\n provider_status?: number | null;\n at: number;\n }\n | {\n type: \"unknown_outcome\";\n message: string;\n at: number;\n }\n | {\n type: \"missing_configuration\";\n message: string;\n at: number;\n };\n\nexport interface StoreSubscriptionProviderLifecycle {\n operation_id?: string | null;\n status: StoreSubscriptionProviderLifecycleStatus;\n operation?: StoreSubscriptionProviderOperation | null;\n error?: StoreSubscriptionProviderError | null;\n updated_at: number;\n}\n\nexport interface StoreSubscriptionPayment {\n currency: string;\n market: string;\n provider?: StoreSubscriptionProvider | null;\n}\n\nexport interface StoreSubscription {\n id: string;\n target: string;\n plan_id: string;\n pending_plan_id: string | null;\n payment: StoreSubscriptionPayment;\n status: StoreSubscriptionStatus;\n provider_lifecycle: StoreSubscriptionProviderLifecycle;\n start_date: number;\n end_date: number;\n token: string;\n source: StoreSubscriptionSource;\n}\n\nexport type ContactListMembershipProvider = {\n type: \"stripe\";\n customer_id: string;\n connected_account_id?: string | null;\n subscription_id?: string | null;\n payment_intent_id?: string | null;\n payment_intent_client_secret?: string | null;\n price_id?: string | null;\n};\n\nexport interface ContactListMembershipPayment {\n currency: string;\n market: string;\n provider?: ContactListMembershipProvider;\n}\n\nexport type ContactListMembershipProviderCancellationStatus =\n | \"requested\"\n | \"processing\"\n | \"succeeded\"\n | \"rejected\"\n | \"unknown\";\n\nexport type ContactListMembershipProviderCancellationError =\n | {\n type: \"provider_rejected\";\n message: string;\n provider_code?: string | null;\n provider_status?: number | null;\n at: number;\n }\n | {\n type: \"unknown_outcome\";\n message: string;\n at: number;\n }\n | {\n type: \"missing_configuration\";\n message: string;\n at: number;\n };\n\nexport interface ContactListMembershipProviderCancellation {\n operation_id?: string | null;\n status: ContactListMembershipProviderCancellationStatus;\n error?: ContactListMembershipProviderCancellationError | null;\n updated_at: number;\n}\n\nexport interface Store {\n id: string;\n key: string;\n timezone: string;\n languages?: Language[];\n emails?: StoreEmails;\n subscription?: StoreSubscription;\n counts?: Record<string, number>;\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\"\n | \"number\"\n | \"boolean\"\n | \"date\"\n | \"geo_location\"\n | \"select\";\n\nexport interface FormSchema {\n id: string;\n key: string;\n type: FormSchemaType;\n required?: boolean;\n min?: number | null;\n max?: number | null;\n options?: string[];\n}\n\nexport type FormFieldType =\n | \"text\"\n | \"number\"\n | \"boolean\"\n | \"date\"\n | \"geo_location\"\n | \"select\";\n\nexport interface FormField {\n id: string;\n key: string;\n type: FormFieldType;\n value?: any;\n}\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 interface MediaResolution {\n id: string;\n size: string;\n url: string;\n}\n\nexport interface Media {\n id: string;\n resolutions: { [key: string]: MediaResolution };\n mime_type: string;\n title?: string | null;\n description?: string | null;\n alt?: string | null;\n store_id: string;\n entity?: string;\n metadata?: string | null;\n created_at: number;\n slug: Record<string, string>;\n}\n\nexport interface SubscriptionPlan {\n id: string;\n provider_price_id?: string | null;\n provider_product_id?: string | null;\n name: string;\n tier: number;\n amount: number;\n currency: string;\n interval: string;\n interval_count: number;\n trial_period_days: number;\n}\n\nexport interface AccountToken {\n id: string;\n value?: string;\n name?: string | null;\n created_at: number;\n expires_at?: number | null;\n type?: string;\n}\n\nexport interface StoreMembership {\n store_id: string;\n role: import(\"./api\").StoreRole;\n invitation_token?: AccountToken | null;\n joined_at?: number | null;\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 memberships: StoreMembership[];\n api_tokens: AccountToken[];\n auth_tokens?: import(\"./api\").AuthToken[];\n verification_codes?: unknown[];\n lifecycle?: AccountLifecycle;\n}\n\nexport interface AccountUpdateResponse {\n success: boolean;\n newly_created_tokens: AccountToken[];\n}\n\nexport interface ApiResponse<T> {\n success: boolean;\n data?: T;\n error?: string;\n cursor?: string;\n total?: number;\n}\n\nexport interface PaginatedResponse<T> {\n items: T[];\n cursor: string | null;\n data?: T[];\n meta?: {\n total: number;\n page: number;\n per_page: number;\n };\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\"\n | \"import\"\n | \"signup\"\n | \"admin\"\n | \"system\"\n | \"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 SmtpImapMailboxProvider = {\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 password_configured: boolean;\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_seen_uid?: number | null;\n};\nexport type CampaignStatus =\n | \"draft\"\n | \"active\"\n | \"paused\"\n | \"completed\"\n | \"archived\";\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\"\n | \"contact\"\n | \"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\"\n | \"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\"\n | \"skipped\"\n | \"got_reply\"\n | \"do_not_contact\";\nexport type OutreachPersonalizationStatus =\n | \"idle\"\n | \"running\"\n | \"completed\"\n | \"failed\";\nexport type SuppressionStatus = \"active\" | \"archived\";\nexport type SuppressionTargetType = \"email\" | \"domain\" | \"contact\" | \"phone\";\nexport type SuppressionScopeType = \"store\" | \"campaign\";\nexport type SuppressionReason =\n | \"manual\"\n | \"unsubscribed\"\n | \"bounced\"\n | \"complained\"\n | \"replied\";\nexport type SuppressionSource = \"admin\" | \"import\" | \"reply\" | \"system\";\nexport type WorkflowStatus = \"active\" | \"draft\" | \"archived\";\nexport type PromoCodeStatus = \"active\" | \"draft\" | \"archived\";\nexport type CollectionStatus = \"active\" | \"draft\" | \"archived\";\nexport type EntryStatus = \"active\" | \"draft\" | \"archived\";\nexport type EmailTemplateStatus = \"active\" | \"draft\" | \"archived\";\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 subject: Record<string, string>;\n body: string;\n from_name: string;\n from_email: string;\n reply_to?: 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 interface EmailTemplateVariable {\n key: string;\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 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 | WorkflowDeployWebhookNode\n | WorkflowGoogleDriveUploadNode\n | WorkflowSwitchNode\n | WorkflowTransformNode\n | WorkflowLoopNode;\n\nexport interface WorkflowTriggerNode {\n type: \"trigger\";\n event?: string;\n delay_ms?: number;\n schema?: Block[];\n}\n\nexport interface WorkflowHttpNode {\n type: \"http\";\n method: WorkflowHttpMethod;\n url: string;\n headers?: Record<string, string>;\n body?: any;\n timeout_ms?: number;\n delay_ms?: number;\n retries?: number;\n retry_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 retries?: number;\n retry_delay_ms?: number;\n}\n\nexport type WorkflowAccountType = \"google_drive\";\n\nexport interface WorkflowAccountProfile {\n external_account_id: string;\n display_name: string;\n email?: string | null;\n}\n\nexport interface WorkflowAccount {\n id: string;\n store_id: string;\n key: string;\n type: WorkflowAccountType;\n profile: WorkflowAccountProfile;\n created_at: number;\n updated_at: number;\n}\n\nexport interface WorkflowAccountConnectUrl {\n authorization_url: string;\n state: string;\n}\n\nexport interface WorkflowGoogleDriveUploadNode {\n type: \"google_drive_upload\";\n workflow_account_id: string;\n name: string;\n mime_type: string;\n content?: any;\n parent_folder_id?: string | null;\n timeout_ms?: number;\n delay_ms?: number;\n retries?: number;\n retry_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\"\n | \"running\"\n | \"completed\"\n | \"failed\"\n | \"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 interface WorkflowExecution {\n id: string;\n workflow_id: string;\n store_id: string;\n status: ExecutionStatus;\n input: Record<string, any>;\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 ContactListType =\n | { type: \"standard\" }\n | { type: \"confirmation\"; confirm_template_id?: string | null }\n | { type: \"paid\" };\n\nexport interface ContactListPlan {\n 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 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 interface ContactSessionToken {\n id: string;\n token: string;\n created_at: number;\n}\n\nexport interface ContactVerificationCode {\n code: string;\n created_at: number;\n used: boolean;\n store_id?: string | null;\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\"\n | \"subscribed\"\n | \"unsubscribed\"\n | \"bounced\"\n | \"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 auth_tokens: ContactSessionToken[];\n verification_codes: ContactVerificationCode[];\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 ContactListSubscribeResponse {\n checkout_url?: string | null;\n payment_action: CheckoutPaymentAction;\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 plans: ContactListPlan[];\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 plan_id: string;\n pending_plan_id: string | null;\n payment: ContactListMembershipPayment;\n provider_cancellation: ContactListMembershipProviderCancellation;\n start_date: number;\n end_date: number;\n token: string;\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\"\n | \"reviewing\"\n | \"contacted\"\n | \"won\"\n | \"lost\"\n | \"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_account_id: string;\n provider_type: SocialProviderType;\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_account_id: string;\n provider_type: SocialProviderType;\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_account_id: string;\n provider_type: SocialProviderType;\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;\n status: MailboxStatus;\n daily_limit: number;\n sent_today: number;\n last_sent_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_contacts: number;\n draft_messages: number;\n generated_messages: number;\n template_messages: number;\n failed_messages: number;\n}\n\nexport interface OutreachPersonalizationState {\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 Campaign {\n id: string;\n store_id: string;\n key: string;\n name: string;\n mailbox_ids: string[];\n status: CampaignStatus;\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\"\n | \"running\"\n | \"completed\"\n | \"failed\"\n | \"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\"\n | \"warning\"\n | \"failed\"\n | \"unknown\";\n\nexport type CampaignRoute =\n | \"email_only\"\n | \"email_manual_followup\"\n | \"manual_only\"\n | \"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\"\n | \"user\"\n | \"assistant\"\n | \"action\"\n | \"tool\";\n\nexport interface LeadResearchMessage {\n 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: string };\n }\n | { action: \"order_payment_failed\"; data: { reason?: string } }\n | {\n action: \"order_refunded\";\n data: { amount: number; currency: string; 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: \"store_deleted\" }\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\nexport interface OrderShipping {\n carrier: string;\n service: string;\n tracking_number?: string | null;\n tracking_url?: string | null;\n label_url?: string | null;\n status: ShippingStatus;\n}\n\nexport interface ShipmentLine {\n order_item_id: string;\n fulfillment_order_line_id?: string | null;\n quantity: number;\n}\n\nexport type ShippingLabelPurchaseStatus =\n | \"requested\"\n | \"merchant_recovery_processing\"\n | \"merchant_recovery_succeeded\"\n | \"merchant_recovery_failed\"\n | \"label_purchase_processing\"\n | \"purchased\"\n | \"label_purchase_failed\"\n | \"merchant_credit_processing\"\n | \"failed_merchant_credited\"\n | \"merchant_credit_failed\"\n | \"unknown\";\n\nexport type MerchantRecoveryStatus = \"processing\" | \"succeeded\" | \"failed\" | \"unknown\";\nexport type MerchantCreditStatus = \"processing\" | \"succeeded\" | \"failed\" | \"unknown\";\n\nexport type ShippingLabelPurchaseError =\n | {\n type: \"provider_rejected\";\n message: string;\n provider_code?: string | null;\n provider_status?: number | null;\n at: number;\n }\n | {\n type: \"unknown_outcome\";\n message: string;\n at: number;\n }\n | {\n type: \"missing_configuration\";\n message: string;\n at: number;\n };\n\nexport type MerchantRecovery = {\n type: \"stripe_connect_account_debit\";\n payment_provider_id: string;\n connected_account_id: string;\n stripe_payment_id?: string | null;\n amount: number;\n currency: string;\n status: MerchantRecoveryStatus;\n error?: ShippingLabelPurchaseError | null;\n};\n\nexport type MerchantCreditReason =\n | \"shipping_label_purchase_failed\"\n | \"shipping_label_refund_succeeded\"\n | \"shipping_label_negative_adjustment\";\n\nexport type MerchantCredit = {\n type: \"stripe_connect_transfer\";\n payment_provider_id: string;\n connected_account_id: string;\n stripe_transfer_id?: string | null;\n amount: number;\n currency: string;\n reason: MerchantCreditReason;\n status: MerchantCreditStatus;\n error?: ShippingLabelPurchaseError | null;\n};\n\nexport type ShippingLabelProviderPurchase = {\n type: \"shippo\";\n transaction_id?: string | null;\n rate_id: string;\n tracking_number?: string | null;\n tracking_url?: string | null;\n label_url?: string | null;\n carrier?: string | null;\n service?: string | null;\n};\n\nexport type ShippingLabelRefundStatus =\n | \"requested\"\n | \"provider_pending\"\n | \"provider_rejected\"\n | \"merchant_credit_processing\"\n | \"succeeded\"\n | \"merchant_credit_failed\"\n | \"unknown\";\n\nexport type ShippingLabelProviderRefund = {\n type: \"shippo\";\n refund_id?: string | null;\n transaction_id: string;\n status: string;\n};\n\nexport interface ShippingLabelRefund {\n id: string;\n status: ShippingLabelRefundStatus;\n requested_amount?: number | null;\n approved_amount?: number | null;\n currency?: string | null;\n provider_refund?: ShippingLabelProviderRefund | null;\n merchant_credit?: MerchantCredit | null;\n error?: ShippingLabelPurchaseError | null;\n requested_at: number;\n updated_at: number;\n}\n\nexport type ShippingLabelAdjustmentStatus =\n | \"requested\"\n | \"merchant_recovery_processing\"\n | \"merchant_recovery_succeeded\"\n | \"merchant_recovery_failed\"\n | \"merchant_credit_processing\"\n | \"merchant_credit_succeeded\"\n | \"merchant_credit_failed\"\n | \"unknown\";\n\nexport interface ShippingLabelAdjustment {\n id: string;\n provider_adjustment_id?: string | null;\n amount: number;\n currency: string;\n reason: string;\n status: ShippingLabelAdjustmentStatus;\n merchant_recovery?: MerchantRecovery | null;\n merchant_credit?: MerchantCredit | null;\n error?: ShippingLabelPurchaseError | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface ShippingLabelPurchase {\n id: string;\n rate_id: string;\n status: ShippingLabelPurchaseStatus;\n postage_amount?: number | null;\n fee_amount: number;\n total_amount?: number | null;\n currency?: string | null;\n provider_purchase?: ShippingLabelProviderPurchase | null;\n merchant_recovery?: MerchantRecovery | null;\n merchant_credit?: MerchantCredit | null;\n refund?: ShippingLabelRefund | null;\n adjustments: ShippingLabelAdjustment[];\n error?: ShippingLabelPurchaseError | null;\n created_at: number;\n updated_at: number;\n}\n\nexport interface Shipment {\n id: string;\n fulfillment_order_id?: string | null;\n location_id: string;\n rate_id?: string | null;\n lines: ShipmentLine[];\n carrier?: string | null;\n service?: string | null;\n tracking_number?: string | null;\n tracking_url?: string | null;\n label_url?: string | null;\n status: ShippingStatus;\n shipping_label_purchase?: ShippingLabelPurchase | 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: string;\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: \"in\" | \"cm\";\n mass_unit: \"oz\" | \"lb\" | \"g\" | \"kg\";\n}\n\nexport interface PurchaseLabelResult {\n transaction_id?: string | null;\n tracking_number: string;\n tracking_url?: string | null;\n label_url: string;\n carrier: string;\n service: string;\n postage_amount?: number | null;\n postage_currency?: string | null;\n}\n\nexport interface ShipResult {\n shipment_id: string;\n tracking_number?: string | null;\n tracking_url?: string | null;\n label_url?: string | null;\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: string;\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 {\n OrderCheckoutCompatibleItemInput,\n OrderCheckoutItemInput,\n OrderQuoteCompatibleItemInput,\n OrderQuoteItemInput,\n TrustedOrderCheckoutCompatibleItemInput,\n TrustedOrderCheckoutItemInput,\n} from \"../types/api\";\n\nexport function normalizeOrderQuoteItems(\n items: OrderQuoteCompatibleItemInput[],\n): OrderQuoteItemInput[] {\n return items.map((item) => {\n if (\"type\" in item) {\n return item;\n }\n\n if (\"product_id\" in item) {\n return { type: \"product\", ...item };\n }\n\n return { type: \"service\", ...item };\n });\n}\n\nexport function normalizeOrderCheckoutItems(\n items: TrustedOrderCheckoutCompatibleItemInput[],\n): TrustedOrderCheckoutItemInput[] {\n return items.map((item) => {\n if (\"type\" in item) {\n return item;\n }\n\n if (\"product_id\" in item) {\n return { type: \"product\", ...item };\n }\n\n return { type: \"service\", ...item };\n });\n}\n\nexport function normalizePublicCheckoutItems(\n items: OrderCheckoutCompatibleItemInput[],\n): OrderCheckoutItemInput[] {\n return normalizeOrderCheckoutItems(items).map((item) => {\n const { price: _price, ...publicItem } = item;\n return publicItem;\n });\n}\n","import type { ApiConfig, ContactSessionUpdater } from \"../index\";\nimport type {\n RequestOptions,\n GetCollectionParams,\n GetEntryParams,\n GetEntriesParams,\n GetFormParams,\n SubmitFormParams,\n GetTaxonomyParams,\n GetTaxonomyChildrenParams,\n GetProductParams,\n GetProductsParams,\n GetOrderParams,\n GetOrdersParams,\n DownloadDigitalAccessParams,\n GetAvailabilityParams,\n AvailabilityResponse,\n GetServiceParams,\n GetServicesParams,\n FindServiceProvidersParams,\n GetProviderParams,\n GetProvidersParams,\n GetContactListParams,\n FindContactListsParams,\n SubscribeContactListParams,\n ContactListAccessParams,\n ContactListContentAccessParams,\n GetCurrentCartParams,\n GetCartParams,\n UpdateCartParams,\n AddCartItemParams,\n RemoveCartItemParams,\n ClearCartParams,\n QuoteCartParams,\n CheckoutCartParams,\n} from \"../types/api\";\nimport type {\n CollectionEntry,\n Collection,\n Form,\n FormSubmission,\n Taxonomy,\n ContactList,\n ContactListAccessResponse,\n ContactListContentAccessResponse,\n ContactListSubscribeResponse,\n Service,\n Provider,\n Store,\n Location,\n Market,\n OrderQuote,\n Order,\n DigitalAccessDownloadResponse,\n OrderCheckoutResult,\n Product,\n Contact,\n ContactDetail,\n Cart,\n PaginatedResponse,\n} from \"../types\";\nimport {\n getBlockFromArray,\n getBlockObjectValues,\n getImageUrl,\n} from \"../utils/blocks\";\nimport { normalizePublicCheckoutItems } from \"../utils/orderItems\";\n\nexport type ContactToken = {\n id: string;\n token: string;\n created_at: number;\n};\n\nexport type IdentifyResponse = {\n contact: Contact;\n token: ContactToken;\n store: Store;\n market: Market | null;\n code_sent: boolean;\n};\n\nexport type VerifyResponse = ContactToken;\ntype LogoutResponse = void;\ntype Country = {\n code: string;\n name: string;\n states: { code: string; name: string }[];\n};\ntype CountriesResponse = { items: Country[]; cursor: string | null };\n\nexport interface StorefrontAction {\n store_id: string;\n contact_id: string;\n key: string;\n type?: string;\n payload: Record<string, unknown>;\n created_at: number;\n}\n\nexport type TrackActionParams = {\n key: string;\n type?: string;\n payload?: Record<string, unknown>;\n} | {\n type: string;\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 store_id?: 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 const createActionApi = (apiConfig: ApiConfig) => ({\n COMMON_ACTION_KEYS,\n async track(params: TrackActionParams): Promise<void> {\n try {\n const key = \"key\" in params && params.key ? params.key : params.type;\n await apiConfig.httpClient.post<void>(\n `/v1/storefront/${apiConfig.storeId}/actions/track`,\n { key, payload: params.payload },\n );\n } catch {}\n },\n});\n\nexport const createStorefrontApi = (apiConfig: ApiConfig, updateContactSession: ContactSessionUpdater) => {\n const base = (storeId = apiConfig.storeId) =>\n `/v1/storefront/${storeId}`;\n\n return {\n store: {\n getStore(options?: RequestOptions): Promise<Store> {\n return apiConfig.httpClient.get<Store>(base(), options);\n },\n\n location: {\n getCountries(options?: RequestOptions): Promise<CountriesResponse> {\n return apiConfig.httpClient.get<CountriesResponse>(`/v1/platform/countries`, options);\n },\n\n getCountry(countryCode: string, options?: RequestOptions): Promise<Country> {\n return apiConfig.httpClient.get<Country>(\n `/v1/platform/countries/${countryCode}`,\n options,\n );\n },\n\n list(options?: RequestOptions): Promise<Location[]> {\n return apiConfig.httpClient.get<Location[]>(`${base()}/locations`, options);\n },\n\n get(id: string, options?: RequestOptions): Promise<Location> {\n return apiConfig.httpClient.get<Location>(`${base()}/locations/${id}`, options);\n },\n },\n\n market: {\n list(options?: RequestOptions): Promise<Market[]> {\n return apiConfig.httpClient.get<Market[]>(`${base()}/markets`, options);\n },\n\n get(id: string, options?: RequestOptions): Promise<Market> {\n return apiConfig.httpClient.get<Market>(`${base()}/markets/${id}`, options);\n },\n },\n },\n\n cms: {\n collection: {\n get(params: GetCollectionParams, options?: RequestOptions): Promise<Collection> {\n const store_id = params.store_id || apiConfig.storeId;\n if (!params.id) {\n throw new Error(\"GetCollectionParams requires id\");\n }\n return apiConfig.httpClient.get<Collection>(\n `${base(store_id)}/collections/${params.id}`,\n options,\n );\n },\n },\n\n entry: {\n get(params: GetEntryParams, options?: RequestOptions): Promise<CollectionEntry> {\n const 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 `${base(store_id)}/entries/${params.id}`,\n options,\n );\n },\n\n find(params: GetEntriesParams, options?: RequestOptions): Promise<PaginatedResponse<CollectionEntry>> {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<CollectionEntry>>(`${base(store_id)}/entries`, {\n ...options,\n params: queryParams,\n });\n },\n },\n\n form: {\n get(params: GetFormParams, options?: RequestOptions): Promise<Form> {\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.key) {\n identifier = `${store_id}:${params.key}`;\n } else {\n throw new Error(\"GetFormParams requires id or key\");\n }\n\n return apiConfig.httpClient.get<Form>(\n `${base(store_id)}/forms/${identifier}`,\n options,\n );\n },\n\n 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 if (!form_id) {\n throw new Error(\"SubmitFormParams requires form_id\");\n }\n\n return apiConfig.httpClient.post<FormSubmission>(\n `${base(target_store_id)}/forms/${form_id}/submissions`,\n { ...payload, form_id, store_id: target_store_id },\n options,\n );\n },\n },\n\n taxonomy: {\n get(params: GetTaxonomyParams, options?: RequestOptions): Promise<Taxonomy> {\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.key) {\n identifier = `${store_id}:${params.key}`;\n } else {\n throw new Error(\"GetTaxonomyParams requires id or key\");\n }\n\n return apiConfig.httpClient.get<Taxonomy>(\n `${base(store_id)}/taxonomies/${identifier}`,\n options,\n );\n },\n\n getChildren(params: GetTaxonomyChildrenParams, options?: RequestOptions): Promise<PaginatedResponse<Taxonomy>> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<Taxonomy>>(\n `${base(store_id)}/taxonomies/${params.id}/children`,\n options,\n );\n },\n },\n },\n\n eshop: {\n product: {\n get(params: GetProductParams, options?: RequestOptions): Promise<Product> {\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(\"GetProductParams requires id or slug\");\n }\n\n return apiConfig.httpClient.get<Product>(\n `${base(store_id)}/products/${identifier}`,\n options,\n );\n },\n\n find(params: GetProductsParams, options?: RequestOptions): Promise<PaginatedResponse<Product>> {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<Product>>(`${base(store_id)}/products`, {\n ...options,\n params: queryParams,\n });\n },\n },\n\n cart: {\n current(params: GetCurrentCartParams = {}, options?: RequestOptions): Promise<Cart> {\n const store_id = params.store_id || apiConfig.storeId;\n const { store_id: _store_id, ...payload } = params;\n return apiConfig.httpClient.post<Cart>(\n `${base(store_id)}/carts/current`,\n { ...payload, store_id, market: payload.market || apiConfig.market },\n options,\n );\n },\n\n get(params: GetCartParams, options?: RequestOptions): Promise<Cart> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<Cart>(`${base(store_id)}/carts/${params.id}`, {\n ...options,\n params: params.token ? { token: params.token } : options?.params,\n });\n },\n\n update(params: UpdateCartParams, options?: RequestOptions): Promise<Cart> {\n const { store_id, items, ...payload } = params;\n const target = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<Cart>(\n `${base(target)}/carts/${params.id}`,\n {\n ...payload,\n store_id: target,\n ...(items ? { items: normalizePublicCheckoutItems(items) } : {}),\n },\n options,\n );\n },\n\n addItem(params: AddCartItemParams, options?: RequestOptions): Promise<Cart> {\n const { store_id, item, ...payload } = params;\n const target = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Cart>(\n `${base(target)}/carts/${params.id}/items`,\n {\n ...payload,\n store_id: target,\n item: normalizePublicCheckoutItems([item])[0],\n },\n options,\n );\n },\n\n removeItem(params: RemoveCartItemParams, options?: RequestOptions): Promise<Cart> {\n const { store_id, ...payload } = params;\n const target = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Cart>(\n `${base(target)}/carts/${params.id}/items/remove`,\n { ...payload, store_id: target },\n options,\n );\n },\n\n clear(params: ClearCartParams, options?: RequestOptions): Promise<Cart> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Cart>(\n `${base(store_id)}/carts/${params.id}/clear`,\n { id: params.id, store_id },\n options,\n );\n },\n\n quote(params: QuoteCartParams, options?: RequestOptions): Promise<OrderQuote> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<OrderQuote>(\n `${base(store_id)}/carts/${params.id}/quote`,\n { id: params.id, store_id },\n options,\n );\n },\n\n checkout(params: CheckoutCartParams, options?: RequestOptions): Promise<OrderCheckoutResult> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<OrderCheckoutResult>(\n `${base(store_id)}/carts/${params.id}/checkout`,\n {\n id: params.id,\n store_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\n order: {\n get(params: GetOrderParams, options?: RequestOptions): Promise<Order> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<Order>(\n `${base(store_id)}/orders/${params.id}`,\n options,\n );\n },\n\n find(params: GetOrdersParams, options?: RequestOptions): Promise<PaginatedResponse<Order>> {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<Order>>(`${base(store_id)}/orders`, {\n ...options,\n params: queryParams,\n });\n },\n\n downloadDigitalAccess(\n params: DownloadDigitalAccessParams,\n options?: RequestOptions,\n ): Promise<DigitalAccessDownloadResponse> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<DigitalAccessDownloadResponse>(\n `${base(store_id)}/orders/${params.id}/digital-access/${params.grant_id}/download`,\n {},\n options,\n );\n },\n\n },\n\n service: {\n get(params: GetServiceParams, options?: RequestOptions): 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 `${base(store_id)}/services/${identifier}`,\n options,\n );\n },\n\n find(params: GetServicesParams, options?: RequestOptions): Promise<PaginatedResponse<Service>> {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<Service>>(`${base(store_id)}/services`, {\n ...options,\n params: queryParams,\n });\n },\n\n findProviders(params: FindServiceProvidersParams, options?: RequestOptions): Promise<Provider[]> {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get<Provider[]>(`${base(store_id)}/service-providers`, {\n ...options,\n params: queryParams,\n });\n },\n\n getAvailability(params: GetAvailabilityParams, options?: RequestOptions): Promise<AvailabilityResponse> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<AvailabilityResponse>(\n `${base(target_store_id)}/services/availability`,\n { ...options, params: queryParams },\n );\n },\n },\n\n provider: {\n get(params: GetProviderParams, options?: RequestOptions): 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 `${base(store_id)}/providers/${identifier}`,\n options,\n );\n },\n\n find(params: GetProvidersParams, options?: RequestOptions): Promise<PaginatedResponse<Provider>> {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<Provider>>(`${base(store_id)}/providers`, {\n ...options,\n params: queryParams,\n });\n },\n },\n },\n\n crm: {\n contact: {\n async identify(\n params?: { email?: string; verify?: boolean; market?: string },\n options?: RequestOptions,\n ): Promise<IdentifyResponse> {\n const store_id = apiConfig.storeId;\n const result = await apiConfig.httpClient.post<IdentifyResponse>(\n `${base(store_id)}/account/identify`,\n {\n store_id,\n market: params?.market || apiConfig.market || null,\n email: params?.email,\n verify: params?.verify ?? false,\n },\n options,\n );\n if (result?.token?.token) {\n updateContactSession(() => ({\n access_token: result.token.token,\n contact: result.contact,\n store: result.store,\n market: result.market,\n }));\n }\n return result;\n },\n\n async verify(\n params: { code: string },\n options?: RequestOptions,\n ): Promise<VerifyResponse> {\n const store_id = apiConfig.storeId;\n const result = await apiConfig.httpClient.post<VerifyResponse>(\n `${base(store_id)}/account/verify`,\n { store_id, code: params.code },\n options,\n );\n if (result?.token) {\n updateContactSession((prev) =>\n prev ? { ...prev, access_token: result.token } : null,\n );\n }\n return result;\n },\n\n async logout(options?: RequestOptions): Promise<LogoutResponse> {\n const store_id = apiConfig.storeId;\n try {\n await apiConfig.httpClient.post<void>(\n `${base(store_id)}/account/logout`,\n {},\n options,\n );\n } finally {\n updateContactSession(() => null);\n }\n },\n\n getMe(options?: RequestOptions): Promise<ContactDetail> {\n return apiConfig.httpClient.get<ContactDetail>(`${base()}/account/me`, options);\n },\n },\n\n contactList: {\n get(params: GetContactListParams, options?: RequestOptions): Promise<ContactList> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<ContactList>(\n `${base(store_id)}/contact-lists/${params.id}`,\n options,\n );\n },\n\n find(params?: FindContactListsParams, options?: RequestOptions): Promise<PaginatedResponse<ContactList>> {\n const { store_id, ...queryParams } = params || {};\n return apiConfig.httpClient.get<PaginatedResponse<ContactList>>(`${base(store_id)}/contact-lists`, {\n ...options,\n params: queryParams,\n });\n },\n\n subscribe(params: SubscribeContactListParams, options?: RequestOptions): Promise<ContactListSubscribeResponse> {\n const { store_id, id, ...payload } = params;\n return apiConfig.httpClient.post<ContactListSubscribeResponse>(\n `${base(store_id)}/contact-lists/${id}/subscribe`,\n payload,\n options,\n );\n },\n\n checkAccess(params: ContactListAccessParams, options?: RequestOptions): Promise<ContactListAccessResponse> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<ContactListAccessResponse>(\n `${base(store_id)}/contact-lists/${params.id}/access`,\n options,\n );\n },\n\n checkContentAccess(params: ContactListContentAccessParams, options?: RequestOptions): Promise<ContactListContentAccessResponse> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<ContactListContentAccessResponse>(\n `${base(store_id)}/contact-lists/access`,\n payload,\n options,\n );\n },\n\n unsubscribe(token: string, options?: RequestOptions): Promise<{ success: boolean }> {\n return apiConfig.httpClient.post<{ success: boolean }>(\n `${base()}/contact-lists/unsubscribe`,\n { token },\n options,\n );\n },\n\n confirm(token: string, options?: RequestOptions): Promise<{ success: boolean }> {\n return apiConfig.httpClient.post<{ success: boolean }>(\n `${base()}/contact-lists/confirm`,\n { token },\n options,\n );\n },\n },\n },\n\n action: createActionApi(apiConfig),\n experiments: {\n use(params: UseExperimentParams, options?: RequestOptions): Promise<ExperimentUseResponse> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<ExperimentUseResponse>(\n `${base(store_id)}/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 = Omit<RemoveCartItemParams, \"id\"> & { id?: string };\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","\nexport const ERROR_CODES = {\n \n \"GENERAL.001\": \"GENERAL.BAD_REQUEST\",\n \"GENERAL.002\": \"GENERAL.VALIDATION_ERROR\",\n \"GENERAL.003\": \"GENERAL.FORBIDDEN_ERROR\",\n \"GENERAL.004\": \"GENERAL.INTERNAL_SERVER_ERROR\",\n \"GENERAL.005\": \"GENERAL.UNAUTHORIZED\",\n \"GENERAL.006\": \"GENERAL.UNAUTHENTICATED\",\n\n \"GOOGLE.001\": \"GOOGLE.INVALID_ORIGIN_URI\",\n \"GOOGLE.002\": \"GOOGLE.INVALID_REDIRECT_URI\",\n \"GOOGLE.003\": \"GOOGLE.FAILED_TO_CALL_API\",\n \"GOOGLE.004\": \"GOOGLE.FAILED_LOGIN\",\n \"GOOGLE.005\": \"GOOGLE.FAILED_LOGOUT\",\n \"GOOGLE.006\": \"GOOGLE.FAILED_REFRESH_TOKEN\",\n \"GOOGLE.007\": \"GOOGLE.INVALID_PROVIDER_PASSED\",\n\n \"USER.001\": \"USER.NOT_FOUND\",\n \"USER.002\": \"USER.FAILED_TO_CREATE\",\n \"USER.003\": \"USER.FAILED_TO_UPDATE\",\n \"USER.004\": \"USER.FAILED_TO_DELETE\",\n \"USER.005\": \"USER.EMAIL_EXISTS\",\n \"USER.006\": \"USER.FAILED_TO_GET_UPLOAD_URL\",\n\n \"STORE.001\": \"STORE.NOT_FOUND\",\n \"STORE.002\": \"STORE.FAILED_TO_CREATE\",\n \"STORE.003\": \"STORE.FAILED_TO_UPDATE\",\n \"STORE.004\": \"STORE.FAILED_TO_DELETE\",\n \"STORE.005\": \"STORE.FAILED_TO_GET_UPLOAD_URL\",\n \"STORE.006\": \"STORE.NAME_REQUIRED\",\n \"STORE.007\": \"STORE.STORE_ID_REQUIRED\",\n \"STORE.010\": \"STORE.DESCRIPTION_REQUIRED\",\n \"STORE.011\": \"STORE.SLUG_INVALID\",\n\n \"PROVIDER.001\": \"PROVIDER.NOT_FOUND\",\n \"PROVIDER.002\": \"PROVIDER.FAILED_TO_CREATE\",\n \"PROVIDER.003\": \"PROVIDER.FAILED_TO_UPDATE\",\n \"PROVIDER.004\": \"PROVIDER.FAILED_TO_DELETE\",\n \"PROVIDER.005\": \"PROVIDER.FAILED_TO_GET_UPLOAD_URL\",\n \"PROVIDER.006\": \"PROVIDER.NAME_REQUIRED\",\n \"PROVIDER.007\": \"PROVIDER.STORE_ID_REQUIRED\",\n \"PROVIDER.008\": \"PROVIDER.DESCRIPTION_REQUIRED\",\n};\n\nexport const ERROR_CONSTANTS = {\n GENERAL: {\n BAD_REQUEST: \"GENERAL.BAD_REQUEST\",\n VALIDATION_ERROR: \"GENERAL.VALIDATION_ERROR\",\n FORBIDDEN_ERROR: \"GENERAL.FORBIDDEN_ERROR\",\n INTERNAL_SERVER_ERROR: \"GENERAL.INTERNAL_SERVER_ERROR\",\n UNAUTHORIZED: \"GENERAL.UNAUTHORIZED\",\n UNAUTHENTICATED: \"GENERAL.UNAUTHENTICATED\",\n },\n USER: {\n NOT_FOUND: \"USER.NOT_FOUND\",\n FAILED_TO_CREATE: \"USER.FAILED_TO_CREATE\",\n FAILED_TO_UPDATE: \"USER.FAILED_TO_UPDATE\",\n FAILED_TO_DELETE: \"USER.FAILED_TO_DELETE\",\n EMAIL_EXISTS: \"USER.EMAIL_EXISTS\",\n FAILED_TO_GET_UPLOAD_URL: \"USER.FAILED_TO_GET_UPLOAD_URL\",\n },\n STORE: {\n NOT_FOUND: \"STORE.NOT_FOUND\",\n FAILED_TO_CREATE: \"STORE.FAILED_TO_CREATE\",\n FAILED_TO_UPDATE: \"STORE.FAILED_TO_UPDATE\",\n FAILED_TO_DELETE: \"STORE.FAILED_TO_DELETE\",\n FAILED_TO_GET_UPLOAD_URL: \"STORE.FAILED_TO_GET_UPLOAD_URL\",\n NAME_REQUIRED: \"STORE.NAME_REQUIRED\",\n STORE_ID_REQUIRED: \"STORE.STORE_ID_REQUIRED\",\n DESCRIPTION_REQUIRED: \"STORE.DESCRIPTION_REQUIRED\",\n SLUG_INVALID: \"STORE.SLUG_INVALID\",\n },\n};\n\nexport type ServerError = {\n message: string;\n error: string;\n statusCode: number;\n validationErrors: {\n field: string;\n error: string;\n }[];\n};\n\nexport type ValidationError = {\n field: string;\n error: string;\n};\n\nexport type RequestError = {\n validationErrors: ValidationError[];\n};\n\nexport function getErrorMessage(code: string): string {\n return ERROR_CODES[code as keyof typeof ERROR_CODES] || code;\n}\n\nexport function isErrorCode(code: string): boolean {\n return code in ERROR_CODES;\n}\n\nexport const transformErrors = (zodError: any): ValidationError[] => {\n const customErrors: ValidationError[] = [];\n\n if (!zodError.issues) return customErrors;\n\n zodError.issues.forEach((issue: any) => {\n const field = issue.path.join(\".\");\n const error = issue.message;\n\n if (\n !customErrors.some(\n (customError) =>\n customError.field === field && customError.error === error\n )\n ) {\n customErrors.push({ field, error });\n }\n });\n\n return customErrors;\n};\n\nexport const convertServerErrorToRequestError = (\n serverError: ServerError,\n renameRules?: { [key: string]: string }\n): RequestError => {\n const validationErrors = serverError?.validationErrors ?? [];\n\n return {\n ...serverError,\n validationErrors: validationErrors.map((validationError) => {\n const field =\n renameRules && renameRules[validationError.field]\n ? renameRules[validationError.field]\n : validationError.field;\n\n return {\n field: field,\n error: validationError.error || \"GENERAL.VALIDATION_ERROR\",\n };\n }),\n };\n};\n\nexport const errors = ERROR_CONSTANTS;\nexport default ERROR_CODES;\n","\nexport interface QueryParams {\n [key: string]: string | number | boolean | string[] | number[] | null | undefined;\n}\n\nexport function buildQueryString(params: QueryParams): string {\n const queryParts: string[] = [];\n \n Object.entries(params).forEach(([key, value]) => {\n \n if (value === null || value === undefined) {\n return;\n }\n \n if (Array.isArray(value)) {\n const jsonString = JSON.stringify(value);\n queryParts.push(`${key}=${encodeURIComponent(jsonString)}`);\n }\n \n else if (typeof value === 'string') {\n queryParts.push(`${key}=${encodeURIComponent(value)}`);\n }\n \n else if (typeof value === 'number' || typeof value === 'boolean') {\n queryParts.push(`${key}=${value}`);\n }\n \n else if (typeof value === 'object') {\n const jsonString = JSON.stringify(value);\n queryParts.push(`${key}=${encodeURIComponent(jsonString)}`);\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 {\n\tconvertServerErrorToRequestError,\n\ttype ServerError\n} from '../utils/errors';\nimport { buildQueryString, type QueryParams } from '../utils/queryParams';\n\nexport interface TokenSet {\n\taccess_token: string;\n\trefresh_token?: string;\n\taccess_expires_at?: number;\n}\n\nexport interface AuthStorage {\n\tgetTokens(): TokenSet | null;\n\tonTokensRefreshed(tokens: TokenSet): void;\n\tonForcedLogout(): void;\n}\n\nexport interface RequestSuccessContext<T = unknown> {\n\tdata: T;\n\tmethod: string;\n\turl: string;\n\tstatus: number;\n\trequest?: unknown;\n\tduration_ms?: number;\n\trequest_id?: string | null;\n}\n\nexport interface RequestErrorContext {\n\terror: unknown;\n\tmethod: string;\n\turl: string;\n\tstatus?: number;\n\trequest?: unknown;\n\tresponse?: unknown;\n\tduration_ms?: number;\n\trequest_id?: string | null;\n\taborted?: boolean;\n}\n\nexport interface RequestOptions<T = unknown> {\n\theaders?: Record<string, string>;\n\tparams?: QueryParams | Record<string, any>;\n\tsignal?: AbortSignal;\n\ttransformRequest?: (data: unknown) => unknown;\n\tonSuccess?: (ctx: RequestSuccessContext<T>) => void | Promise<void>;\n\tonError?: (ctx: RequestErrorContext) => void | Promise<void>;\n}\n\nexport interface HttpClient {\n\tget<T>(path: string, opts?: RequestOptions<T>): Promise<T>;\n\tpost<T>(path: string, body: unknown, opts?: RequestOptions<T>): Promise<T>;\n\tput<T>(path: string, body: unknown, opts?: RequestOptions<T>): Promise<T>;\n\tpatch<T>(path: string, body: unknown, opts?: RequestOptions<T>): Promise<T>;\n\tdelete<T>(path: string, opts?: RequestOptions<T>): Promise<T>;\n}\n\nexport interface HttpClientConfig {\n\tbaseUrl: string;\n\tstoreId: string;\n\tauthStorage: AuthStorage;\n\trefreshPath?: string | (() => string);\n\tnavigate?: (path: string) => void;\n\tloginFallbackPath?: string;\n}\n\nexport function createHttpClient(cfg: HttpClientConfig): HttpClient {\n\tconst { authStorage } = cfg;\n\tlet refreshPromise: Promise<void> | null = null;\n\n\tfunction getRefreshEndpoint() {\n\t\tconst refreshPath = typeof cfg.refreshPath === \"function\"\n\t\t\t? cfg.refreshPath()\n\t\t\t: cfg.refreshPath || '/v1/auth/refresh';\n\t\treturn `${cfg.baseUrl}${refreshPath}`;\n\t}\n\n\tasync function ensureFreshToken() {\n\t\tif (refreshPromise) {\n\t\t\treturn refreshPromise;\n\t\t}\n\n\t\trefreshPromise = (async () => {\n\t\t\tconst tokens = authStorage.getTokens();\n\t\t\tconst refresh_token = tokens?.refresh_token;\n\t\t\tif (!refresh_token) {\n\t\t\t\tauthStorage.onForcedLogout();\n\t\t\t\tconst err: any = new Error('No refresh token available');\n\t\t\t\terr.name = 'ApiError';\n\t\t\t\terr.statusCode = 401;\n\t\t\t\tthrow err;\n\t\t\t}\n\n\t\t\tconst refRes = await fetch(getRefreshEndpoint(), {\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: { Accept: 'application/json', 'Content-Type': 'application/json' },\n\t\t\t\tbody: JSON.stringify({ refresh_token })\n\t\t\t});\n\n\t\t\tif (!refRes.ok) {\n\t\t\t\tauthStorage.onForcedLogout();\n\t\t\t\tconst err: any = new Error('Token refresh failed');\n\t\t\t\terr.name = 'ApiError';\n\t\t\t\terr.statusCode = 401;\n\t\t\t\tthrow err;\n\t\t\t}\n\n\t\t\tconst data = await refRes.json();\n\t\t\tauthStorage.onTokensRefreshed(data);\n\t\t})().finally(() => {\n\t\t\trefreshPromise = null;\n\t\t});\n\n\t\treturn refreshPromise;\n\t}\n\n\tasync function request<T>(\n\t\tmethod: string,\n\t\tpath: string,\n\t\tbody?: unknown,\n\t\toptions?: RequestOptions<T> & { _retried?: boolean }\n\t): Promise<T> {\n\t\tif (options?.transformRequest) {\n\t\t\tbody = options.transformRequest(body);\n\t\t}\n\n\t\tconst headers: Record<string, string> = {\n\t\t\tAccept: 'application/json',\n\t\t\t'Content-Type': 'application/json',\n\t\t\t...(options?.headers || {})\n\t\t};\n\n\t\tlet tokens = authStorage.getTokens();\n\t\tconst nowSec = Date.now() / 1000;\n\t\tif (tokens?.access_expires_at && nowSec > tokens.access_expires_at) {\n\t\t\tawait ensureFreshToken();\n\t\t\ttokens = authStorage.getTokens();\n\t\t}\n\n\t\tif (tokens?.access_token) {\n\t\t\theaders['Authorization'] = `Bearer ${tokens.access_token}`;\n\t\t}\n\n\t\tconst finalPath = options?.params ? path + buildQueryString(options.params as QueryParams) : path;\n\n\t\tconst fetchOpts: any = { method, headers, signal: options?.signal };\n\t\tif (!['GET', 'DELETE'].includes(method) && body !== undefined) {\n\t\t\tfetchOpts.body = JSON.stringify(body);\n\t\t}\n\n\t\tconst fullUrl = `${cfg.baseUrl}${finalPath}`;\n\t\tlet res: Response;\n\t\tlet data: any;\n\t\tconst startedAt = Date.now();\n\n\t\ttry {\n\t\t\tres = await fetch(fullUrl, fetchOpts);\n\t\t} catch (error) {\n\t\t\tconst aborted =\n\t\t\t\toptions?.signal?.aborted ||\n\t\t\t\t(error instanceof Error && error.name === 'AbortError');\n\t\t\tconst err: any = new Error(error instanceof Error ? error.message : 'Network request failed');\n\t\t\terr.name = aborted ? 'AbortError' : 'NetworkError';\n\t\t\terr.method = method;\n\t\t\terr.url = fullUrl;\n\t\t\terr.aborted = aborted;\n\t\t\tif (options?.onError && method !== 'GET') {\n\t\t\t\tPromise.resolve(\n\t\t\t\t\toptions.onError({ error: err, method, url: fullUrl, aborted })\n\t\t\t\t).catch(() => {});\n\t\t\t}\n\t\t\tthrow err;\n\t\t}\n\n\t\tif (res.status === 401 && !options?.['_retried']) {\n\t\t\ttry {\n\t\t\t\tawait ensureFreshToken();\n\t\t\t\tconst refreshed = authStorage.getTokens();\n\t\t\t\tif (refreshed?.access_token) {\n\t\t\t\t\theaders['Authorization'] = `Bearer ${refreshed.access_token}`;\n\t\t\t\t\tfetchOpts.headers = headers;\n\t\t\t\t}\n\t\t\t\treturn request<T>(method, path, body, { ...options, _retried: true });\n\t\t\t} catch (refreshError) {\n\t\t\t\tthrow refreshError;\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tconst contentLength = res.headers.get('content-length');\n\t\t\tconst contentType = res.headers.get('content-type');\n\t\t\tif (res.status === 204 || contentLength === '0' || !contentType?.includes('application/json')) {\n\t\t\t\tdata = {};\n\t\t\t} else {\n\t\t\t\tdata = await res.json();\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconst err: any = new Error('Failed to parse response');\n\t\t\terr.name = 'ParseError';\n\t\t\terr.method = method;\n\t\t\terr.url = fullUrl;\n\t\t\terr.status = res.status;\n\t\t\tif (options?.onError && method !== 'GET') {\n\t\t\t\tPromise.resolve(\n\t\t\t\t\toptions.onError({ error: err, method, url: fullUrl, status: res.status })\n\t\t\t\t).catch(() => {});\n\t\t\t}\n\t\t\tthrow err;\n\t\t}\n\n\t\tif (!res.ok) {\n\t\t\tconst serverErr: ServerError = data;\n\t\t\tconst reqErr = convertServerErrorToRequestError(serverErr);\n\t\t\tconst err: any = new Error(serverErr.message || 'Request failed');\n\t\t\terr.name = 'ApiError';\n\t\t\terr.statusCode = serverErr.statusCode || res.status;\n\t\t\terr.validationErrors = reqErr.validationErrors;\n\t\t\terr.method = method;\n\t\t\terr.url = fullUrl;\n\t\t\tconst requestId = res.headers.get('x-request-id') || res.headers.get('request-id');\n\t\t\tif (requestId) err.requestId = requestId;\n\t\t\tif (options?.onError && method !== 'GET') {\n\t\t\t\tPromise.resolve(\n\t\t\t\t\toptions.onError({\n\t\t\t\t\t\terror: err,\n\t\t\t\t\t\tmethod,\n\t\t\t\t\t\turl: fullUrl,\n\t\t\t\t\t\tstatus: res.status,\n\t\t\t\t\t\tresponse: serverErr,\n\t\t\t\t\t\trequest_id: requestId || null,\n\t\t\t\t\t\tduration_ms: Date.now() - startedAt\n\t\t\t\t\t})\n\t\t\t\t).catch(() => {});\n\t\t\t}\n\t\t\tthrow err;\n\t\t}\n\n\t\tif (options?.onSuccess && method !== 'GET') {\n\t\t\tconst requestId = res.headers.get('x-request-id') || res.headers.get('request-id');\n\t\t\tPromise.resolve(\n\t\t\t\toptions.onSuccess({\n\t\t\t\t\tdata: data as T,\n\t\t\t\t\tmethod,\n\t\t\t\t\turl: fullUrl,\n\t\t\t\t\tstatus: res.status,\n\t\t\t\t\trequest_id: requestId || null,\n\t\t\t\t\tduration_ms: Date.now() - startedAt\n\t\t\t\t})\n\t\t\t).catch(() => {});\n\t\t}\n\t\treturn data as T;\n\t}\n\n\treturn {\n\t\tget: <T>(path: string, opts?: RequestOptions<T>) => request<T>('GET', path, undefined, opts),\n\t\tpost: <T>(path: string, body: unknown, opts?: RequestOptions<T>) => request<T>('POST', path, body, opts),\n\t\tput: <T>(path: string, body: unknown, opts?: RequestOptions<T>) => request<T>('PUT', path, body, opts),\n\t\tpatch: <T>(path: string, body: unknown, opts?: RequestOptions<T>) => request<T>('PATCH', path, body, opts),\n\t\tdelete: <T>(path: string, opts?: RequestOptions<T>) => request<T>('DELETE', path, undefined, opts)\n\t};\n}\n","import type { ApiConfig } from '../index';\nimport type {\n UpdateAccountContactParams,\n SearchAccountsParams,\n DeleteAccountParams,\n GetMeParams,\n RequestOptions\n} from '../types/api';\nimport type { Account, AccountUpdateResponse } from '../types';\n\nexport const createAccountApi = (apiConfig: ApiConfig) => {\n return {\n async updateAccount(params: UpdateAccountContactParams, options?: RequestOptions): Promise<AccountUpdateResponse> {\n const payload: Record<string, unknown> = {};\n\n if (params.phone_numbers !== undefined) payload.phone_numbers = params.phone_numbers;\n if (params.addresses !== undefined) payload.addresses = params.addresses;\n if (params.api_tokens !== undefined) payload.api_tokens = params.api_tokens;\n\n return apiConfig.httpClient.put<AccountUpdateResponse>('/v1/accounts', payload, options);\n },\n\n async deleteAccount(_params: DeleteAccountParams, options?: RequestOptions): Promise<{ deleted: boolean }> {\n return apiConfig.httpClient.delete<{ deleted: boolean }>('/v1/accounts', options);\n },\n\n async getMe(_params: GetMeParams, options?: RequestOptions): Promise<Account> {\n return apiConfig.httpClient.get<Account>('/v1/accounts/me', options);\n },\n\n async searchAccounts(params: SearchAccountsParams, options?: RequestOptions): Promise<{ items: Account[]; cursor?: string | null }> {\n return apiConfig.httpClient.get<{ items: Account[]; cursor?: string | null }>('/v1/accounts/search', {\n ...options,\n params: {\n ...params,\n store_id: apiConfig.storeId\n }\n });\n },\n };\n};\n","import type { ApiConfig, AdminSessionInternal, AdminSessionUpdater } from '../index';\nimport type {\n MagicLinkVerifyParams,\n AuthToken,\n RequestOptions\n} from '../types/api';\n\nexport const createAuthApi = (apiConfig: ApiConfig, updateSession: AdminSessionUpdater) => {\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<{ sent: boolean }> {\n return apiConfig.httpClient.post<{ sent: boolean }>('/v1/auth/code', params, options);\n },\n\n async verify(params: MagicLinkVerifyParams, 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, params.email);\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<{ sent: boolean }> {\n return apiConfig.httpClient.post<{ sent: boolean }>(`/v1/stores/${storeId}/auth/code`, params, options);\n },\n\n async storeVerify(storeId: string, params: MagicLinkVerifyParams, 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, params.email);\n }\n return result;\n }\n };\n};\n","import type { ApiConfig, AdminSessionUpdater } from \"../index\";\nimport type {\n CreateStoreParams,\n UpdateStoreParams,\n DeleteStoreParams,\n GetStoreParams,\n GetStoresParams,\n GetSubscriptionPlansParams,\n SubscribeParams,\n CreatePortalSessionParams,\n AddMemberParams,\n RemoveMemberParams,\n TestWebhookParams,\n FindStoreMediaParams,\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 Media,\n PaginatedResponse,\n SubscriptionPlan,\n StoreRuntimeConfig,\n BuildHook,\n} from \"../types\";\n\nexport const createStoreApi = (\n apiConfig: ApiConfig,\n _updateSession: AdminSessionUpdater,\n) => {\n return {\n async createStore(\n params: CreateStoreParams,\n options?: RequestOptions,\n ): Promise<Store> {\n return apiConfig.httpClient.post<Store>(`/v1/stores`, params, options);\n },\n\n async updateStore(\n params: UpdateStoreParams,\n options?: RequestOptions,\n ): Promise<Store> {\n return apiConfig.httpClient.put<Store>(\n `/v1/stores/${params.id}`,\n params,\n options,\n );\n },\n\n async deleteStore(\n params: DeleteStoreParams,\n options?: RequestOptions,\n ): Promise<{ deleted: boolean }> {\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${params.id}`,\n options,\n );\n },\n\n async getStore(\n _params: GetStoreParams,\n options?: RequestOptions,\n ): Promise<Store> {\n return apiConfig.httpClient.get<Store>(\n `/v1/stores/${apiConfig.storeId}`,\n options,\n );\n },\n\n async getStores(\n params?: GetStoresParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<Store>> {\n return apiConfig.httpClient.get<PaginatedResponse<Store>>(`/v1/stores`, {\n ...options,\n params,\n });\n },\n\n async getSubscriptionPlans(\n _params: GetSubscriptionPlansParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<SubscriptionPlan>> {\n return apiConfig.httpClient.get<PaginatedResponse<SubscriptionPlan>>(\n \"/v1/stores/plans\",\n options,\n );\n },\n\n async subscribe(\n params: SubscribeParams,\n options?: RequestOptions,\n ): Promise<{ checkout_url?: string }> {\n const { store_id, plan_id, action, success_url, cancel_url } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<{ checkout_url?: string }>(\n `/v1/stores/${target_store_id}/subscribe`,\n { plan_id, action, success_url, cancel_url },\n options,\n );\n },\n\n async createPortalSession(\n params: CreatePortalSessionParams,\n options?: RequestOptions,\n ): 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(\n params: AddMemberParams,\n options?: RequestOptions,\n ): Promise<boolean> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<boolean>(\n `/v1/stores/${store_id || apiConfig.storeId}/members`,\n payload,\n options,\n );\n },\n\n async inviteUser(\n params: AddMemberParams,\n options?: RequestOptions,\n ): Promise<boolean> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<boolean>(\n `/v1/stores/${store_id || apiConfig.storeId}/members`,\n payload,\n options,\n );\n },\n\n async removeMember(\n params: RemoveMemberParams,\n options?: RequestOptions,\n ): Promise<{ removed: boolean }> {\n return apiConfig.httpClient.delete<{ removed: boolean }>(\n `/v1/stores/${apiConfig.storeId}/members/${params.account_id}`,\n options,\n );\n },\n\n async testWebhook(\n params: TestWebhookParams,\n options?: RequestOptions,\n ): Promise<{ tested: boolean }> {\n return apiConfig.httpClient.post<{ tested: boolean }>(\n `/v1/stores/${apiConfig.storeId}/webhooks/test`,\n params,\n options,\n );\n },\n\n async getStoreMedia(\n params: FindStoreMediaParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<Media>> {\n const queryParams: Record<string, unknown> = {\n limit: params.limit,\n };\n if (params.cursor) queryParams.cursor = params.cursor;\n if (params.ids && params.ids.length > 0)\n queryParams.ids = JSON.stringify(params.ids);\n if (params.query) queryParams.query = params.query;\n if (params.mime_type) queryParams.mime_type = params.mime_type;\n if (params.sort_field) queryParams.sort_field = params.sort_field;\n if (params.sort_direction)\n queryParams.sort_direction = params.sort_direction;\n\n return apiConfig.httpClient.get<PaginatedResponse<Media>>(\n `/v1/stores/${params.id}/media`,\n {\n ...options,\n params: queryParams,\n },\n );\n },\n\n async listBuildHooks(\n params: ListBuildHooksParams,\n options?: RequestOptions,\n ): Promise<BuildHook[]> {\n return apiConfig.httpClient.get<BuildHook[]>(\n `/v1/stores/${params.store_id}/build-hooks`,\n options,\n );\n },\n\n async createBuildHook(\n params: CreateBuildHookParams,\n options?: RequestOptions,\n ): Promise<BuildHook> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<BuildHook>(\n `/v1/stores/${store_id}/build-hooks`,\n payload,\n options,\n );\n },\n\n async updateBuildHook(\n params: UpdateBuildHookParams,\n options?: RequestOptions,\n ): Promise<BuildHook> {\n const { store_id, id, ...payload } = params;\n return apiConfig.httpClient.put<BuildHook>(\n `/v1/stores/${store_id}/build-hooks/${id}`,\n payload,\n options,\n );\n },\n\n async deleteBuildHook(\n params: DeleteBuildHookParams,\n options?: RequestOptions,\n ): Promise<{ deleted: boolean }> {\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${params.store_id}/build-hooks/${params.id}`,\n options,\n );\n },\n\n async getStoreConfig(\n params: { store_id: string; type: \"payment\" | \"shipping\" },\n options?: RequestOptions,\n ): Promise<StoreRuntimeConfig> {\n return apiConfig.httpClient.get<StoreRuntimeConfig>(\n `/v1/stores/${params.store_id}/config/${params.type}`,\n options,\n );\n },\n\n async listWebhooks(\n params: ListWebhooksParams,\n options?: RequestOptions,\n ): Promise<Webhook[]> {\n return apiConfig.httpClient.get<Webhook[]>(\n `/v1/stores/${params.store_id}/webhooks`,\n options,\n );\n },\n\n async createWebhook(\n params: CreateWebhookParams,\n options?: RequestOptions,\n ): Promise<Webhook> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<Webhook>(\n `/v1/stores/${store_id}/webhooks`,\n payload,\n options,\n );\n },\n\n async updateWebhook(\n params: UpdateWebhookParams,\n options?: RequestOptions,\n ): Promise<Webhook> {\n const { store_id, id, ...payload } = params;\n return apiConfig.httpClient.put<Webhook>(\n `/v1/stores/${store_id}/webhooks/${id}`,\n payload,\n options,\n );\n },\n\n async deleteWebhook(\n params: DeleteWebhookParams,\n options?: RequestOptions,\n ): Promise<{ deleted: boolean }> {\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${params.store_id}/webhooks/${params.id}`,\n options,\n );\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<{ deleted: boolean }> {\n const { id, media_id } = params;\n\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${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\tTrackEmailOpenParams,\n\tTriggerNotificationParams,\n\tRequestOptions\n} from '../types/api';\n\nexport const createNotificationApi = (apiConfig: ApiConfig) => {\n\treturn {\n\t\tasync trackEmailOpen(params: TrackEmailOpenParams, options?: RequestOptions): Promise<void> {\n\t\t\treturn apiConfig.httpClient.get<void>(\n\t\t\t\t`/v1/notifications/track/pixel/${params.tracking_pixel_id}`,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync trigger(params: TriggerNotificationParams, options?: RequestOptions): Promise<{ success: boolean; message: string }> {\n\t\t\treturn apiConfig.httpClient.post<{ success: boolean; message: string }>(\n\t\t\t\t'/v1/notifications/trigger',\n\t\t\t\tparams,\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 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(\"GetCollectionParams requires id or key\");\n }\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 DownloadDigitalAccessParams,\n ProcessOrderRefundParams,\n ProcessOrderRefundResponse,\n QuoteCartParams,\n RemoveCartItemParams,\n RequestOptions,\n UpdateCartParams,\n} from \"../types/api\";\nimport type {\n Order,\n DigitalAccessDownloadResponse,\n Product,\n Provider,\n Service,\n ServiceProvider,\n OrderQuote,\n Cart,\n PaginatedResponse,\n} from \"../types\";\nimport {\n normalizeOrderCheckoutItems,\n normalizeOrderQuoteItems,\n} from \"../utils/orderItems\";\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: normalizeOrderCheckoutItems(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: normalizeOrderCheckoutItems(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: normalizeOrderCheckoutItems(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: normalizeOrderCheckoutItems([item])[0] },\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: normalizeOrderQuoteItems(items),\n shipping_address,\n market: rest.market || apiConfig.market,\n },\n options,\n );\n },\n\n async processRefund(\n params: ProcessOrderRefundParams,\n options?: RequestOptions,\n ): Promise<ProcessOrderRefundResponse> {\n return apiConfig.httpClient.post<ProcessOrderRefundResponse>(\n `/v1/stores/${apiConfig.storeId}/orders/${params.id}/refund`,\n { amount: params.amount },\n options,\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.id}/digital-access/${params.grant_id}/download`,\n {},\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 options,\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 ContactDetail,\n CreateContactListParams,\n UpdateContactListParams,\n FindContactListsParams,\n GetContactListParams,\n AddContactListContactParams,\n UpdateContactListContactParams,\n RemoveContactListContactParams,\n FindContactListContactsParams,\n ImportContactListPreviewParams,\n ImportContactsIntoContactListParams,\n ImportContactsIntoContactListResult,\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 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 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.query) queryParams.query = params.query;\n if (params.contact_id) queryParams.contact_id = params.contact_id;\n if (params.types && params.types.length > 0) queryParams.types = params.types;\n if (params.from !== undefined) queryParams.from = params.from;\n if (params.to !== undefined) queryParams.to = params.to;\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<ContactDetail> {\n return apiConfig.httpClient.get<ContactDetail>(\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 findActions(\n params?: FindActionsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<Action>> {\n const { store_id, ...queryParams } = params || {};\n return apiConfig.httpClient.get<PaginatedResponse<Action>>(\n `/v1/stores/${store_id || apiConfig.storeId}/actions`,\n {\n ...options,\n params: Object.keys(queryParams).length > 0 ? queryParams : undefined,\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 revokeToken(params: { id: string; token_id: string; store_id?: string }, options?: RequestOptions): Promise<{ deleted: boolean }> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${store_id}/contacts/${params.id}/sessions/${params.token_id}`,\n options\n );\n },\n\n async revokeAllTokens(params: { id: string; store_id?: string }, options?: RequestOptions): Promise<{ deleted: boolean }> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${store_id}/contacts/${params.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 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\n mailbox: {\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 } from \"../index\";\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 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 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 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 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\nexport function createStorefrontSupportApi(config: ApiConfig) {\n const { httpClient, storeId } = config;\n\n return {\n async startConversation(\n params: Omit<StartSupportConversationParams, \"store_id\"> = {},\n opts?: RequestOptions\n ): Promise<SupportConversationResponse> {\n return httpClient.post(\n `/v1/storefront/${storeId}/support/conversations`,\n { store_id: storeId, ...params },\n opts\n );\n },\n\n async sendMessage(\n params: Omit<SendSupportMessageParams, \"store_id\">,\n opts?: RequestOptions\n ): Promise<SupportConversationResponse> {\n return httpClient.post(\n `/v1/storefront/${storeId}/support/conversations/${params.conversation_id}/messages`,\n { store_id: storeId, ...params },\n opts\n );\n },\n\n async getConversation(\n params: Omit<GetSupportConversationParams, \"store_id\">,\n opts?: RequestOptions\n ): Promise<SupportConversationResponse> {\n const qs = supportConversationQuery({ store_id: storeId, ...params });\n return httpClient.get(\n `/v1/storefront/${storeId}/support/conversations/${params.conversation_id}?${qs}`,\n 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(\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(\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(\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(\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(\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(\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(\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(\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(\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(\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(\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(\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(\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(\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(\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(\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(\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 ConnectSocialAccountParams,\n CreateSocialPublicationParams,\n DeleteSocialAccountParams,\n FindSocialPublicationCommentsParams,\n FindSocialPublicationsParams,\n GetSocialCapabilitiesParams,\n GetSocialOAuthAttemptParams,\n GetSocialPublicationCommentThreadParams,\n GetSocialPublicationCommentsParams,\n GetSocialPublicationMetricsParams,\n GetSocialPublicationParams,\n ReplySocialPublicationCommentParams,\n RequestOptions,\n ScheduleSocialPublicationParams,\n SelectSocialDestinationParams,\n ListSocialAccountsParams,\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 SocialAccount,\n SocialPublication,\n SocialPublicationCommentClassificationResult,\n SocialPublicationComment,\n SocialPublicationEngagementSyncResult,\n SocialPublicationCommentReplyResponse,\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 replyToPublicationComment(\n params: ReplySocialPublicationCommentParams,\n options?: RequestOptions,\n ): Promise<SocialPublicationCommentReplyResponse> {\n const { store_id, publication_id, comment_id, text } = params;\n return apiConfig.httpClient.post<SocialPublicationCommentReplyResponse>(\n `/v1/stores/${storeId(store_id)}/social-publications/${publication_id}/comments/${comment_id}/reply`,\n { text },\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-accounts/capabilities`,\n options,\n );\n },\n\n async listAccounts(\n params?: ListSocialAccountsParams,\n options?: RequestOptions,\n ): Promise<SocialAccount[]> {\n return apiConfig.httpClient.get<SocialAccount[]>(\n `/v1/stores/${storeId(params?.store_id)}/social-accounts`,\n options,\n );\n },\n\n async connect(\n params: ConnectSocialAccountParams,\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-accounts/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-accounts/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-accounts/oauth/select-destination`,\n payload,\n options,\n );\n },\n\n async deleteAccount(\n params: DeleteSocialAccountParams,\n options?: RequestOptions,\n ): Promise<{ deleted: boolean }> {\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${storeId(params.store_id)}/social-accounts/${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 GetWorkflowAccountConnectUrlParams,\n GetWorkflowAccountsParams,\n DeleteWorkflowAccountParams,\n RequestOptions,\n} from \"../types/api\";\nimport type {\n Workflow,\n WorkflowAccount,\n WorkflowAccountConnectUrl,\n WorkflowExecution,\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<{ deleted: boolean }> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<{ deleted: 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 getWorkflowAccounts(\n params?: GetWorkflowAccountsParams,\n options?: RequestOptions,\n ): Promise<WorkflowAccount[]> {\n const store_id = params?.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<WorkflowAccount[]>(\n `/v1/stores/${store_id}/workflow-accounts`,\n options,\n );\n },\n\n async getWorkflowAccountConnectUrl(\n params: GetWorkflowAccountConnectUrlParams,\n options?: RequestOptions,\n ): Promise<WorkflowAccountConnectUrl> {\n const { store_id, type, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<WorkflowAccountConnectUrl>(\n `/v1/stores/${target_store_id}/workflow-accounts/connect-url`,\n { ...payload, type, store_id: target_store_id },\n options,\n );\n },\n\n async deleteWorkflowAccount(\n params: DeleteWorkflowAccountParams,\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-accounts/${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\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| 'productivity'\n\t\t| 'payments'\n\t\t| 'crm'\n\t\t| 'ecommerce'\n\t\t| 'developer'\n\t\t| 'storage'\n\t\t| 'analytics'\n\t\t| 'deploy'\n\t\t| 'core';\n\tconfigurationRequired: boolean;\n\twebsite?: string;\n\tdocsUrl?: string;\n\turlPatterns: string[];\n\tresources: WorkflowToolResource[];\n\ttriggers?: Array<{\n\t\tname: string;\n\t\tvalue: string;\n\t\tdescription: string;\n\t\twebhookType: 'incoming' | 'polling';\n\t}>;\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<{ data: string[] }> {\n\t\t\treturn apiConfig.httpClient.get<{ data: string[] }>('/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 GetShippingRatesParams,\n RefundShippingLabelParams,\n ShipParams,\n RequestOptions,\n} from \"../types/api\";\nimport type { ShippingLabelRefund, ShippingRate, ShipResult } from \"../types\";\n\nexport const createShippingApi = (apiConfig: ApiConfig) => {\n return {\n \n async getRates(\n params: GetShippingRatesParams,\n options?: RequestOptions\n ): Promise<{ rates: ShippingRate[] }> {\n const { order_id, ...payload } = params;\n return apiConfig.httpClient.post<{ rates: ShippingRate[] }>(\n `/v1/stores/${apiConfig.storeId}/orders/${order_id}/shipping/rates`,\n payload,\n options\n );\n },\n\n\n async ship(\n params: ShipParams,\n options?: RequestOptions\n ): Promise<ShipResult> {\n const { order_id, ...payload } = params;\n return apiConfig.httpClient.post<ShipResult>(\n `/v1/stores/${apiConfig.storeId}/orders/${order_id}/ship`,\n payload,\n options\n );\n },\n\n async refundLabel(\n params: RefundShippingLabelParams,\n options?: RequestOptions\n ): Promise<{ refund: ShippingLabelRefund }> {\n const { order_id, shipment_id } = params;\n return apiConfig.httpClient.post<{ refund: ShippingLabelRefund }>(\n `/v1/stores/${apiConfig.storeId}/orders/${order_id}/shipments/${shipment_id}/label/refund`,\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","\nexport interface Block {\n id: string;\n key: string;\n type: string;\n properties: any;\n value: any;\n}\n\nexport interface Collection {\n id: string;\n blocks: Block[];\n entity: string;\n}\n\nexport interface CollectionEntry {\n id: string;\n collection_id: string;\n blocks: Block[];\n}\n\nexport function getBlockLabel(block: any): string {\n if (!block) return \"\";\n return block.key?.replace(/_/g, \" \").replace(/\\b\\w/g, (l: string) => l.toUpperCase()) ?? \"\";\n}\n\nexport function formatBlockValue(block: any): string {\n if (!block || block.value === null || block.value === undefined) return \"\";\n\n const value = block.value;\n\n switch (block.type) {\n case \"boolean\":\n return value ? \"Yes\" : \"No\";\n case \"number\":\n if (block.properties?.variant === \"DATE\" || block.properties?.variant === \"DATE_TIME\") {\n return new Date(value).toLocaleDateString();\n }\n return String(value);\n case \"media\":\n if (value && typeof value === 'object') {\n return value.mime_type ? (value.name || value.id) : (value.title || value.name || value.id);\n }\n return String(value);\n default:\n return String(value);\n }\n}\n\nexport function prepareBlocksForSubmission(formData: any, blockTypes?: Record<string, string>): any[] {\n return Object.keys(formData)\n .filter((key) => formData[key] !== null && formData[key] !== undefined)\n .map((key) => ({\n key,\n value:\n ((blockTypes?.[key] || \"text\") === \"array\") && !Array.isArray(formData[key])\n ? [formData[key]]\n : formData[key],\n }));\n}\n\nexport function extractBlockValues(blocks: any[]): Record<string, any> {\n const values: Record<string, any> = {};\n blocks.forEach((block) => {\n values[block.key] = block.value ?? null;\n });\n return values;\n}\n\nexport const getBlockValue = (entry: any, blockKey: string) => {\n const block = entry?.blocks?.find((f: any) => f.key === blockKey);\n return block?.value ?? null;\n};\n\nexport const getBlockTextValue = (block: any, locale: string = \"en\"): string => {\n if (!block || block.value === null || block.value === undefined) return \"\";\n\n const blockType = block.type;\n\n if (blockType === \"localized_text\" || blockType === \"markdown\") {\n if (typeof block.value === \"object\" && block.value !== null) {\n return block.value[locale] ?? block.value[\"en\"] ?? \"\";\n }\n }\n\n \n if (typeof block.value === \"string\") return block.value;\n\n return String(block.value ?? \"\");\n};\n\nexport const getBlockValues = (entry: any, blockKey: string) => {\n const block = entry?.blocks?.find((f: any) => f.key === blockKey);\n if (!block) return [];\n\n if (block.type === \"array\" && Array.isArray(block.value)) {\n return block.value;\n }\n\n return [];\n};\n\nfunction unwrapBlock(block: any, locale: string) {\n if (!block?.type || block.value === undefined) return block;\n\n const blockType = block.type;\n if (blockType === \"array\") {\n return block.value.map((obj: Record<string, any>) => {\n const parsed: Record<string, any> = {};\n for (const [k, v] of Object.entries(obj)) {\n parsed[k] = unwrapBlock(v, locale);\n }\n return parsed;\n });\n }\n\n if (blockType === \"object\") {\n const parsed: Record<string, any> = {};\n for (const [k, v] of Object.entries(block.value || {})) {\n parsed[k] = unwrapBlock(v as any, locale);\n }\n return parsed;\n }\n\n if (blockType === \"localized_text\" || blockType === \"markdown\") {\n return block.value?.[locale];\n }\n\n return block.value;\n}\n\nexport const getBlockObjectValues = (entry: any, blockKey: string, locale = \"en\") => {\n const block = entry?.blocks?.find((f: any) => f.key === blockKey);\n if (!block || block.type !== \"array\" || !Array.isArray(block.value)) return [];\n\n return block.value.map((obj: Record<string, any>) => {\n if (!obj?.value || !Array.isArray(obj.value)) return {};\n return obj.value.reduce((acc: any, current: any) => {\n acc[current.key] = unwrapBlock(current, locale);\n return acc;\n }, {});\n });\n};\n\nexport const getBlockFromArray = (entry: any, blockKey: string, locale = \"en\") => {\n const block = entry?.blocks?.find((f: any) => f.key === blockKey);\n if (!block) return {};\n\n if (block.type === \"array\" && Array.isArray(block.value)) {\n return block.value.reduce((acc: any, current: any) => {\n acc[current.key] = unwrapBlock(current, locale);\n return acc;\n }, {});\n }\n\n if (block.type === \"object\" && block.value && typeof block.value === \"object\") {\n const result: Record<string, any> = {};\n for (const [k, v] of Object.entries(block.value)) {\n result[k] = unwrapBlock(v as any, locale);\n }\n return result;\n }\n\n return { [block.key]: unwrapBlock(block, locale) };\n};\n\nexport const getImageUrl = (imageBlock: any, isBlock = true) => {\n if (!imageBlock) return null;\n\n if (imageBlock.type === \"media\") {\n const mediaValue = imageBlock.value;\n return mediaValue?.resolutions?.original?.url || mediaValue?.url || null;\n }\n\n if (isBlock) {\n if (typeof imageBlock === \"string\") return imageBlock;\n if (imageBlock.url) return imageBlock.url;\n }\n\n return imageBlock.resolutions?.original?.url || null;\n};\n\nexport const translateMap = (labels: any, lang: string) => {\n return labels?.[lang];\n};\n","import type { OrderPayment, Price } from '../types';\n\ntype AnyPayment = Pick<OrderPayment, 'total' | 'currency'>;\n\nfunction formatCurrency(amount: number, currencyCode: string, locale: string = 'en'): string {\n if (!currencyCode) return '';\n return new Intl.NumberFormat(locale, {\n style: 'currency',\n currency: currencyCode.toUpperCase(),\n }).format(amount);\n}\n\nfunction getMinorUnits(currency: string): number {\n try {\n const formatter = new Intl.NumberFormat('en', {\n style: 'currency',\n currency: currency.toUpperCase(),\n });\n const parts = formatter.formatToParts(1.11);\n const fractionPart = parts.find(p => p.type === 'fraction');\n return fractionPart?.value.length ?? 2;\n } catch {\n return 2;\n }\n}\n\nexport function convertToMajor(minorAmount: number, currency: string): number {\n const units = getMinorUnits(currency);\n return minorAmount / Math.pow(10, units);\n}\n\nexport function convertToMinor(majorAmount: number, currency: string): number {\n const units = getMinorUnits(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 (!currency) return '';\n return formatCurrency(convertToMajor(amountMinor, currency), currency);\n}\n\nexport function formatPayment(payment: AnyPayment): string {\n return formatMinor(payment.total, payment.currency);\n}\n\nexport function formatPrice(prices: Price[], marketId?: string): string {\n if (!prices || prices.length === 0) return '';\n\n const price = marketId\n ? prices.find(p => p.market === marketId) || prices[0]\n : prices[0];\n\n if (!price) return '';\n\n return formatMinor(price.amount, price.currency);\n}\n\nexport function getPriceAmount(prices: Price[], marketId: string): number {\n if (!prices || prices.length === 0) return 0;\n const price = prices.find(p => p.market === marketId) || prices[0];\n return price?.amount || 0;\n}\n","\nexport 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 function validateEmail(email: string): ValidationResult {\n if (!email) {\n return { isValid: false, error: 'Email is required' };\n }\n \n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n \n if (!emailRegex.test(email)) {\n return { isValid: false, error: 'Please enter a valid email address' };\n }\n \n return { isValid: true };\n}\n\nexport function validateVerificationCode(code: string): ValidationResult {\n if (!code) {\n return { isValid: false, error: 'Verification code is required' };\n }\n \n const cleaned = code.replace(/\\D/g, '');\n \n if (cleaned.length !== 4) {\n return { isValid: false, error: 'Please enter a 4-digit verification code' };\n }\n \n return { isValid: true };\n}\n\nexport function validateRequired(value: any, fieldName: string = 'This field'): ValidationResult {\n if (value === null || value === undefined || value === '') {\n return { isValid: false, error: `${fieldName} is required` };\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: any): Promise<string | null> {\n\tif (!mediaObject) return null;\n\n\tconst svgUrl = getImageUrl(mediaObject, false);\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: any): 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: any,\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","export type {\n ApiResponse,\n EshopCartItem,\n Cart,\n CartOrigin,\n CartStatus,\n EshopStoreState,\n Store,\n Webhook,\n WebhookEventSubscription,\n BuildHook,\n BuildHookType,\n PaymentStoreConfig,\n StoreRuntimeConfig,\n SocialConnectResponse,\n SocialDestinationMetadata,\n SocialOAuthCallbackResponse,\n SocialOAuthCallbackStatus,\n SocialOAuthCredential,\n SocialOAuthDestinationOption,\n SocialAccount,\n SocialProviderCapability,\n SocialProviderType,\n InstagramPlacement,\n SocialAnalyticsCapabilities,\n SocialEngagementCapabilities,\n SocialPublication,\n SocialPublicationComment,\n SocialPublicationCommentClassificationResult,\n SocialPublicationCommentIntent,\n SocialPublicationCommentPriority,\n SocialPublicationEngagementSyncResult,\n SocialPublicationCommentReply,\n SocialPublicationCommentReplyResponse,\n SocialPublicationCommentReplyError,\n SocialPublicationCommentReplyStatus,\n SocialPublicationCommentStatus,\n SocialPublicationContent,\n SocialPublicationMetricSnapshot,\n SocialPublicationMutationResponse,\n SocialPublicationStatus,\n SocialPublicationValidation,\n TiktokPrivacy,\n ValidationError,\n YoutubePrivacy,\n Block,\n Price,\n OrderPayment,\n PaymentProvider,\n StripePaymentProviderConnectResponse,\n OrderPaymentTax,\n OrderPaymentTaxLine,\n OrderPaymentPromoCode,\n OrderPaymentProvider,\n OrderPaymentRefund,\n RefundType,\n RefundLine,\n TaxLineReversal,\n PaymentTransactionProvider,\n PaymentCaptureMethod,\n PaymentTransactionType,\n PaymentTransactionStatus,\n PaymentTransaction,\n OrderQuote,\n RefundStatus,\n CheckoutPaymentAction,\n StoreSubscription,\n StoreSubscriptionPayment,\n StoreSubscriptionProviderError,\n StoreSubscriptionProviderLifecycle,\n StoreSubscriptionProviderLifecycleStatus,\n StoreSubscriptionProviderOperation,\n StoreSubscriptionProvider,\n StoreSubscriptionStatus,\n StoreSubscriptionSource,\n SubscriptionPlan,\n SubscriptionPrice,\n ContactListMembershipProviderCancellation,\n ContactListMembershipProviderCancellationError,\n ContactListMembershipProviderCancellationStatus,\n ContactListMembershipPayment,\n ContactListMembershipProvider,\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 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 WorkflowAccount,\n WorkflowAccountConnectUrl,\n WorkflowAccountProfile,\n WorkflowAccountType,\n WorkflowSwitchNode,\n WorkflowSwitchRule,\n WorkflowTransformNode,\n WorkflowLoopNode,\n WorkflowHttpMethod,\n WorkflowExecution,\n ExecutionStatus,\n NodeResult,\n ContactListType,\n ContactListPlan,\n ContactListPlanStatus,\n ContactListContentAccess,\n ContactListContentAccessStatus,\n ContactListContentAccessTarget,\n ContactListAccessResponse,\n ContactListContentAccessResponse,\n ContactListSubscribeResponse,\n Event,\n EventAction,\n ShippingStatus,\n OrderShipping,\n ShippingLine,\n FulfillmentOrderStatus,\n FulfillmentOrderRequestStatus,\n FulfillmentOrderLine,\n FulfillmentOrder,\n ShippingRate,\n Parcel,\n PurchaseLabelResult,\n ShipResult,\n ShippingLabelPurchaseStatus,\n ShippingLabelPurchaseError,\n ShippingLabelPurchase,\n ShippingLabelProviderPurchase,\n MerchantRecovery,\n MerchantRecoveryStatus,\n MerchantCredit,\n MerchantCreditStatus,\n MerchantCreditReason,\n ShippingLabelRefund,\n ShippingLabelRefundStatus,\n ShippingLabelProviderRefund,\n ShippingLabelAdjustment,\n ShippingLabelAdjustmentStatus,\n ShipmentLine,\n Shipment,\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 Form,\n FormSubmission,\n FormSchema,\n FormSchemaType,\n FormField,\n FormFieldType,\n FormEntry,\n Taxonomy,\n TaxonomyEntry,\n TaxonomyQuery,\n TaxonomySchema,\n TaxonomySchemaType,\n TaxonomyField,\n TaxonomyFieldQuery,\n PromoCode,\n Contact,\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 SmtpImapMailboxProvider,\n OutreachStep,\n OutreachStepType,\n ManualTaskContinueBehavior,\n CampaignManualTaskOutcome,\n OutreachPersonalizationCounters,\n OutreachPersonalizationState,\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 AccountToken,\n AccountUpdateResponse,\n StoreMembership,\n Discount,\n Condition,\n ServiceStatus,\n ProviderStatus,\n ProductStatus,\n ContactStatus,\n ContactListStatus,\n ContactListSource,\n ContactListMembershipStatus,\n MailboxStatus,\n CampaignStatus,\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 PromoCodeStatus,\n CollectionStatus,\n EntryStatus,\n EmailTemplateStatus,\n EmailTemplateVariable,\n FormStatus,\n TaxonomyStatus,\n} from \"./types\";\nexport { PaymentMethodType } from \"./types\";\n\nexport type {\n GetAvailabilityParams,\n AvailabilitySlot,\n DaySlots,\n ProviderAvailability,\n AvailabilityResponse,\n Slot,\n SlotRange,\n EshopItem,\n EshopQuoteItem,\n ServiceCheckoutPart,\n ServiceQuoteItem,\n ConditionValue,\n ProductQuoteItemInput,\n ServiceQuoteItemInput,\n OrderQuoteItemInput,\n OrderQuoteCompatibleItemInput,\n ProductCheckoutItemInput,\n ServiceCheckoutItemInput,\n OrderCheckoutItemInput,\n OrderCheckoutCompatibleItemInput,\n TrustedProductCheckoutItemInput,\n TrustedServiceCheckoutItemInput,\n TrustedOrderCheckoutItemInput,\n TrustedOrderCheckoutCompatibleItemInput,\n ProcessOrderRefundParams,\n ProcessOrderRefundResponse,\n GetCurrentCartParams,\n GetCartParams,\n FindCartsParams,\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 ShipParams,\n RefundShippingLabelParams,\n CreateContactListParams,\n UpdateContactListParams,\n FindContactListsParams,\n GetContactListParams,\n AddContactListContactParams,\n UpdateContactListContactParams,\n RemoveContactListContactParams,\n FindContactListContactsParams,\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 ConnectSocialAccountParams,\n CreateSocialPublicationParams,\n DeletePaymentProviderParams,\n DeleteSocialAccountParams,\n FindSocialPublicationCommentsParams,\n FindSocialPublicationsParams,\n GetSocialCapabilitiesParams,\n GetSocialOAuthAttemptParams,\n GetSocialPublicationCommentThreadParams,\n GetSocialPublicationCommentsParams,\n GetSocialPublicationMetricsParams,\n GetSocialPublicationParams,\n ListPaymentProvidersParams,\n ListSocialAccountsParams,\n RefreshPaymentProvidersParams,\n ReplySocialPublicationCommentParams,\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} from \"./types/api\";\n\nexport type {\n StorefrontAction,\n TrackActionParams,\n CommonActionKey,\n ExperimentUseResponse,\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 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} from \"./api/platform\";\n\nexport const SDK_VERSION = \"0.9.11\";\nexport const SUPPORTED_FRAMEWORKS = [\n \"astro\",\n \"react\",\n \"vue\",\n \"svelte\",\n \"vanilla\",\n] as const;\n\nimport type {\n Contact as ContactType,\n Store as StoreType,\n Market as MarketType,\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 AdminSessionInternal {\n access_token: string;\n refresh_token: string;\n access_expires_at?: number;\n email?: string;\n}\n\nexport interface ContactSessionInternal {\n access_token: string;\n contact: ContactType;\n store: StoreType;\n market: MarketType | null;\n}\n\nexport interface AdminSession {\n email?: string;\n}\n\nexport interface ContactSession {\n contact: ContactType;\n store: StoreType;\n market: MarketType | null;\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 { createCartController } from \"./cartController\";\nimport {\n getImageUrl,\n getBlockValue,\n getBlockTextValue,\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: ApiConfig) {\n return {\n getImageUrl: (imageBlock: any, isBlock = true) =>\n getImageUrl(imageBlock, isBlock),\n getBlockValue,\n getBlockTextValue,\n getBlockValues,\n getBlockLabel,\n getBlockObjectValues,\n getBlockFromArray,\n formatBlockValue,\n prepareBlocksForSubmission,\n extractBlockValues,\n\n formatPrice: (prices: any[]) => formatPrice(prices, apiConfig.market),\n getPriceAmount: (prices: any[]) => 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 listAccounts: workflowApi.getWorkflowAccounts,\n getAccountConnectUrl: workflowApi.getWorkflowAccountConnectUrl,\n deleteAccount: workflowApi.deleteWorkflowAccount,\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 auth: authApi,\n },\n store: {\n create: storeApi.createStore,\n update: storeApi.updateStore,\n delete: storeApi.deleteStore,\n get: storeApi.getStore,\n find: storeApi.getStores,\n subscription: {\n getPlans: storeApi.getSubscriptionPlans,\n subscribe: storeApi.subscribe,\n createPortalSession: storeApi.createPortalSession,\n },\n member: {\n add: storeApi.addMember,\n invite: storeApi.inviteUser,\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 get: storeApi.getStoreConfig,\n },\n media: {\n find: storeApi.getStoreMedia,\n },\n location: locationApi,\n market: marketApi,\n paymentProvider: storePaymentProviderApi,\n },\n media: createMediaApi(apiConfig),\n notification: {\n email: {\n trackOpen: notificationApi.trackEmailOpen,\n },\n trigger: {\n send: notificationApi.trigger,\n },\n mailbox: crmApi.mailbox,\n },\n platform: platformApi,\n social: {\n account: {\n getCapabilities: socialApi.getCapabilities,\n list: socialApi.listAccounts,\n connect: socialApi.connect,\n getOAuthAttempt: socialApi.getOAuthAttempt,\n selectDestination: socialApi.selectDestination,\n delete: socialApi.deleteAccount,\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 replyToComment: socialApi.replyToPublicationComment,\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 processRefund: eshopApi.processRefund,\n downloadDigitalAccess: eshopApi.downloadDigitalAccess,\n getShippingRates: shippingApi.getRates,\n ship: shippingApi.ship,\n refundShippingLabel: shippingApi.refundLabel,\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 revokeToken: crmApi.revokeToken,\n revokeAllTokens: crmApi.revokeAllTokens,\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 },\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\nconst CONTACT_STORAGE_KEY = \"arky_contact_session\";\n\nfunction readContactSession(): ContactSessionInternal | null {\n if (typeof window === \"undefined\") return null;\n try {\n const raw = localStorage.getItem(CONTACT_STORAGE_KEY);\n return raw ? (JSON.parse(raw) as ContactSessionInternal) : null;\n } catch {\n return null;\n }\n}\n\nfunction writeContactSession(s: ContactSessionInternal | null): void {\n if (typeof window === \"undefined\") return;\n if (s) {\n localStorage.setItem(CONTACT_STORAGE_KEY, JSON.stringify(s));\n } else {\n localStorage.removeItem(CONTACT_STORAGE_KEY);\n }\n}\n\nexport type CreateStorefrontConfig = Omit<\n HttpClientConfig,\n \"authStorage\" | \"storeId\"\n> & {\n storeId: string;\n market?: string;\n locale?: string;\n apiToken?: string;\n};\n\nexport function createStorefront(config: CreateStorefrontConfig) {\n const locale = config.locale || \"en\";\n const initialMarket = config.market || \"\";\n const listeners = new Set<AuthStateListener<ContactSession>>();\n let bareIdentifyPromise: Promise<ContactSession> | null = null;\n\n function toPublic(s: ContactSessionInternal | null): ContactSession | null {\n return s ? { contact: s.contact, store: s.store, market: s.market } : null;\n }\n\n function emit(): void {\n const pub = toPublic(readContactSession());\n for (const l of listeners) {\n Promise.resolve()\n .then(() => l(pub))\n .catch(() => {});\n }\n }\n\n const updateSession: ContactSessionUpdater = (updater) => {\n if (config.apiToken) return;\n const prev = readContactSession();\n const next = updater(prev);\n writeContactSession(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 = readContactSession();\n return s ? { access_token: s.access_token } : null;\n },\n onTokensRefreshed() {\n // Contact tokens are one-shot; no refresh on this flow.\n },\n onForcedLogout() {\n bareIdentifyPromise = null;\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: initialMarket,\n locale,\n authStorage,\n };\n\n const storefrontApi = createStorefrontApi(apiConfig, updateSession);\n const contactApi = storefrontApi.crm.contact;\n\n function identify(params?: {\n email?: string;\n verify?: boolean;\n market?: string;\n }): Promise<ContactSession> {\n if (params?.market !== undefined) apiConfig.market = params.market;\n\n const isBareCall = !params?.email && !params?.verify;\n if (isBareCall && bareIdentifyPromise) return bareIdentifyPromise;\n\n const promise = (async (): Promise<ContactSession> => {\n try {\n const result = await contactApi.identify({\n market: apiConfig.market,\n email: params?.email,\n verify: params?.verify,\n });\n return {\n contact: result.contact,\n store: result.store,\n market: result.market,\n };\n } catch (err: unknown) {\n const e = err as {\n statusCode?: number;\n status?: number;\n response?: { status?: number };\n };\n const status = e?.statusCode || e?.status || e?.response?.status;\n if (isBareCall && status === 401) {\n updateSession(() => null);\n const result = await contactApi.identify({\n market: apiConfig.market,\n });\n return {\n contact: result.contact,\n store: result.store,\n market: result.market,\n };\n }\n throw err;\n }\n })().catch((err) => {\n if (isBareCall) bareIdentifyPromise = null;\n throw err;\n });\n\n if (isBareCall) bareIdentifyPromise = promise;\n\n return promise;\n }\n\n async function verify(params: { code: string }) {\n const result = await contactApi.verify(params);\n bareIdentifyPromise = null;\n return result;\n }\n\n async function logout(): Promise<void> {\n if (config.apiToken) return;\n bareIdentifyPromise = null;\n try {\n await contactApi.logout();\n } catch {\n updateSession(() => null);\n }\n }\n\n return {\n identify,\n verify,\n logout,\n me: () => contactApi.getMe(),\n\n get session(): ContactSession | null {\n if (config.apiToken) return null;\n return toPublic(readContactSession());\n },\n\n get isAuthenticated(): boolean {\n if (config.apiToken) return true;\n const s = readContactSession();\n return s !== null && !!s.access_token;\n },\n\n onAuthStateChanged(\n listener: AuthStateListener<ContactSession>,\n ): () => void {\n listeners.add(listener);\n const current = toPublic(readContactSession());\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 cart: createCartController(storefrontApi.eshop.cart),\n cms: storefrontApi.cms,\n eshop: storefrontApi.eshop,\n crm: storefrontApi.crm,\n action: storefrontApi.action,\n experiments: storefrontApi.experiments,\n support: createStorefrontSupportApi(apiConfig),\n setStoreId: (storeId: string) => {\n apiConfig.storeId = storeId;\n bareIdentifyPromise = null;\n },\n getStoreId: () => apiConfig.storeId,\n setMarket: (key: string) => {\n apiConfig.market = key;\n bareIdentifyPromise = null;\n },\n getMarket: () => apiConfig.market,\n setLocale: (l: string) => {\n apiConfig.locale = l;\n },\n getLocale: () => apiConfig.locale,\n utils: createUtilitySurface(apiConfig),\n };\n}\n\nexport type { HttpClientConfig } from \"./services/createHttpClient\";\n"]}