arky-sdk 0.7.95 → 0.7.102

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/blocks.ts","../src/api/storefront.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/booking.ts","../src/api/location.ts","../src/api/market.ts","../src/api/crm.ts","../src/api/workflow.ts","../src/api/platform.ts","../src/api/shipping.ts","../src/api/agent.ts","../src/api/emailTemplate.ts","../src/api/form.ts","../src/api/taxonomy.ts","../src/api/analytics.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","session","market"],"mappings":"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","file":"index.js","sourcesContent":["export * from './api';\n\nexport enum PaymentMethodType {\n\tCash = \"cash\",\n\tCreditCard = \"credit_card\",\n}\n\nexport interface PaymentTaxLine {\n\trate_bps: number;\n\tamount: number;\n\tlabel?: string;\n\tscope?: string;\n}\n\nexport interface BookingPaymentTax {\n\tamount: number;\n\tmode_snapshot?: string;\n\trate_bps: number;\n\tlines: BookingPaymentTaxLine[];\n}\n\nexport interface BookingPaymentTaxLine {\n\trate_bps: number;\n\tamount: number;\n\tlabel?: string;\n\tscope?: string;\n}\n\nexport interface BookingPaymentPromoCode {\n\tid: string;\n\tcode: string;\n\ttype: string;\n\tvalue: number;\n}\n\n\nexport type BookingPaymentProvider = {\n\ttype: 'stripe';\n\tcustomer_id: string;\n\tpayment_intent_id?: string;\n};\n\nexport interface BookingPaymentRefund {\n\tid: string;\n\ttotal: number;\n\tprovider_refund_id?: string;\n\tstatus: string;\n\tcreated_at: number;\n}\n\nexport interface BookingPayment {\n\tcurrency: string;\n\tmarket: string;\n\tsubtotal: number;\n\tdiscount: number;\n\ttotal: number;\n\tpaid: number;\n\ttax?: BookingPaymentTax;\n\tpromo_code?: BookingPaymentPromoCode;\n\tprovider?: BookingPaymentProvider;\n\trefunds: BookingPaymentRefund[];\n\tpayment_method_id?: string;\n\tmethod_type: PaymentMethodType;\n}\n\nexport interface OrderPaymentTax {\n\tamount: number;\n\tmode_snapshot?: string;\n\trate_bps: number;\n\tlines: OrderPaymentTaxLine[];\n}\n\nexport interface OrderPaymentTaxLine {\n\trate_bps: number;\n\tamount: number;\n\tlabel?: string;\n\tscope?: string;\n}\n\nexport interface OrderPaymentPromoCode {\n\tid: string;\n\tcode: string;\n\ttype: string;\n\tvalue: number;\n}\n\n\nexport type OrderPaymentProvider = {\n\ttype: 'stripe';\n\tcustomer_id: string;\n\tpayment_intent_id?: string;\n};\n\nexport interface OrderPaymentRefund {\n\tid: string;\n\ttotal: number;\n\tprovider_refund_id?: string;\n\tstatus: string;\n\tcreated_at: number;\n}\n\nexport interface OrderPayment {\n\tcurrency: string;\n\tmarket: string;\n\tsubtotal: number;\n\tshipping: number;\n\tdiscount: number;\n\ttotal: number;\n\tpaid: number;\n\ttax?: OrderPaymentTax;\n\tpromo_code?: OrderPaymentPromoCode;\n\tprovider?: OrderPaymentProvider;\n\trefunds: OrderPaymentRefund[];\n\tzone_id?: string;\n\tpayment_method_id?: string;\n\tshipping_method_id?: string;\n\tmethod_type: PaymentMethodType;\n}\n\nexport interface PromoCodeValidation {\n\tpromo_code_id: string;\n\tcode: string;\n\tdiscounts: any[];\n\tconditions: any[];\n}\n\nexport interface BookingQuote {\n\tmarket: string;\n\tzone: Zone | null;\n\tsubtotal: number;\n\tdiscount: number;\n\ttax: number;\n\ttotal: number;\n\tpayment_method: PaymentMethod | null;\n\tpayment_methods: PaymentMethod[];\n\tpromo_code: PromoCodeValidation | null;\n\tpayment: BookingPayment;\n\tcharge_amount: number;\n\tid?: string;\n\texpires_at?: number;\n}\n\nexport interface OrderQuote {\n\tmarket: string;\n\tzone: Zone | null;\n\tsubtotal: number;\n\tshipping: number;\n\tdiscount: number;\n\ttax: number;\n\ttotal: number;\n\tshipping_method: ShippingMethod | null;\n\tpayment_method: PaymentMethod | null;\n\tpayment_methods: PaymentMethod[];\n\tpromo_code: PromoCodeValidation | null;\n\tpayment: OrderPayment;\n\tcharge_amount: number;\n\tid?: string;\n\texpires_at?: number;\n}\n\n\nexport interface Price {\n\tcurrency: string;\n\tmarket: string;\n\tamount: number;\n\tcompare_at?: number;\n\taudience_id?: string;\n}\n\n\nexport type IntervalPeriod = 'month' | 'year';\n\n\nexport interface SubscriptionInterval {\n\tperiod: IntervalPeriod;\n\tcount: number;\n}\n\n\nexport interface PriceProvider {\n\ttype: string;\n\tid: string;\n}\n\n\nexport interface SubscriptionPrice {\n\tcurrency: string;\n\tamount: number;\n\tcompare_at?: number;\n\tinterval?: SubscriptionInterval;\n\tproviders: PriceProvider[];\n}\n\n\nexport interface Address {\n\tname: string;\n\tcompany?: string | null;\n\tstreet1: string;\n\tstreet2?: string | null;\n\tcity: string;\n\tstate: string;\n\tpostal_code: string;\n\tcountry: string;\n\tphone?: string | null;\n\temail?: string | null;\n}\n\n\nexport interface GeoLocation {\n\tcoordinates?: { lat: number; lon: number } | null;\n\tlabel?: string | null;\n}\n\n\nexport interface ZoneLocation {\n\tcountry?: string | null;\n\tstate?: string | null;\n\tcity?: string | null;\n\tpostal_code?: string | null;\n}\n\nexport interface EshopCartItem {\n\tid: string;\n\tproduct_id: string;\n\tvariant_id: string;\n\tproduct_name: string;\n\tproduct_slug: string;\n\tvariant_attributes: Record<string, any>;\n\tprice: Price;\n\tquantity: number;\n\tadded_at: number;\n\tmax_stock?: number;\n}\n\nexport interface BookingCartItem {\n\tid: string;\n\tservice_id: string;\n\tservice_name: string;\n\tdate: string;\n\tfrom: number;\n\tto: number;\n\ttime_text: string;\n\tprovider_id?: string;\n\tforms: any[];\n}\n\n\nexport type IntegrationProvider =\n\t| { type: 'stripe'; secret_key?: string; publishable_key: string; webhook_secret?: string; currency: string }\n\t| { type: 'shippo'; api_token?: string }\n\t| { type: 'google'; client_id?: string; client_secret?: string; access_token?: string; refresh_token?: string;\n\t\ttoken_expires_at?: number; scopes: string[]; account_email?: string | null; connected_at: number }\n\t| { type: 'telegram_bot'; bot_token?: string }\n\t| { type: 'deep_seek'; api_key?: string; model?: string }\n\n\t| { type: 'open_ai'; api_key?: string; model?: string }\n\t| { type: 'slack'; api_key?: string }\n\t| { type: 'discord'; api_key?: string }\n\t| { type: 'whats_app'; api_key?: string }\n\t| { type: 'resend'; api_key?: string }\n\t| { type: 'send_grid'; api_key?: string }\n\t| { type: 'airtable'; api_key?: string }\n\t| { type: 'linear'; api_key?: string }\n\t| { type: 'git_hub'; api_key?: string }\n\t| { type: 'git_lab'; api_key?: string }\n\t| { type: 'dropbox'; api_key?: string }\n\t| { type: 'hub_spot'; api_key?: string }\n\t| { type: 'monday'; api_key?: string }\n\t| { type: 'click_up'; api_key?: string }\n\t| { type: 'pipedrive'; api_key?: string }\n\t| { type: 'calendly'; api_key?: string }\n\t| { type: 'typeform'; api_key?: string }\n\t| { type: 'webflow'; api_key?: string }\n\t| { type: 'trello'; api_key?: string }\n\t| { type: 'replicate'; api_key?: string }\n\t| { type: 'asana'; api_key?: string }\n\t| { type: 'brevo'; api_key?: string }\n\t| { type: 'intercom'; api_key?: string }\n\t| { type: 'notion'; api_key?: string }\n\t| { type: 'eleven_labs'; api_key?: string }\n\t| { type: 'active_campaign'; api_key?: string; account_url: string }\n\t| { type: 'shopify'; api_key?: string; store_domain: string }\n\t| { type: 'supabase'; api_key?: string; project_url: string }\n\t| { type: 'mailchimp'; api_key?: string }\n\n\t| { type: 'twilio'; account_sid?: string; auth_token?: string }\n\t| { type: 'jira'; email?: string; api_token?: string; domain: string }\n\t| { type: 'woo_commerce'; consumer_key?: string; consumer_secret?: string; store_url: string }\n\t| { type: 'freshdesk'; api_key?: string; domain: string }\n\t| { type: 'zendesk'; api_token?: string; email?: string; subdomain: string }\n\n\t| { type: 'salesforce'; access_token?: string; instance_url: string }\n\t| { type: 'zoom'; api_key?: string }\n\t| { type: 'microsoft_teams'; api_key?: string }\n\t| { type: 'firebase'; api_key?: string }\n\t| { type: 'arky'; api_key?: string }\n\n\t| { type: 'vercel_deploy_hook'; url?: string }\n\t| { type: 'netlify_deploy_hook'; url?: string }\n\t| { type: 'cloudflare_deploy_hook'; url?: string }\n\t| { type: 'custom_deploy_hook'; url?: string };\n\n\nexport interface Integration {\n\tid: string;\n\tstore_id: string;\n\tkey: string;\n\tprovider: IntegrationProvider;\n\tcreated_at: number;\n\tupdated_at: number;\n}\n\nexport interface ShippingWeightTier {\n\tup_to_grams: number;\n\tamount: number;\n}\n\nexport interface PaymentMethod {\n\tid: string;\n\tintegration_id?: string;\n}\n\nexport interface ShippingMethod {\n\tid: string;\n\ttaxable: boolean;\n\teta_text: string;\n\tlocation_id?: string;\n\tintegration_id?: string;\n\tamount: number;\n\tfree_above?: number;\n\tweight_tiers?: ShippingWeightTier[];\n}\n\nexport interface Location {\n\tid: string;\n\tstore_id: string;\n\tkey: string;\n\taddress: Address;\n\tis_pickup_location: boolean;\n\tcreated_at: number;\n\tupdated_at: number;\n}\n\nexport interface InventoryLevel {\n\tlocation_id: string;\n\tavailable: number;\n\treserved: number;\n}\n\nexport interface Zone {\n\tid: string;\n\tstore_id: string;\n\tmarket_id: string;\n\tcountries: string[];\n\tstates: string[];\n\tpostal_codes: string[];\n\ttax_bps: number;\n\tshipping_methods: ShippingMethod[];\n}\n\nexport interface Market {\n\tid: string;\n\tstore_id: string;\n\tkey: string;\n\tcurrency: string;\n\ttax_mode: \"exclusive\" | \"inclusive\";\n\tpayment_methods: PaymentMethod[];\n\tzones: Zone[];\n\tcreated_at: number;\n\tupdated_at: number;\n}\n\nexport interface Language {\n\tid: string;\n}\n\nexport interface StoreEmails {\n\tbilling: string;\n\tsupport: string;\n}\n\nexport type WebhookEventSubscription =\n\t| { event: 'node.created'; parent_id?: string }\n\t| { event: 'node.updated'; key?: string }\n\t| { event: 'node.deleted'; key?: string }\n\t| { event: 'order.created' }\n\t| { event: 'order.updated' }\n\t| { event: 'order.confirmed' }\n\t| { event: 'order.payment_received' }\n\t| { event: 'order.payment_failed' }\n\t| { event: 'order.refunded' }\n\t| { event: 'order.cancelled' }\n\t| { event: 'order.shipment_created' }\n\t| { event: 'order.shipment_in_transit' }\n\t| { event: 'order.shipment_out_for_delivery' }\n\t| { event: 'order.shipment_delivered' }\n\t| { event: 'order.shipment_failed' }\n\t| { event: 'order.shipment_returned' }\n\t| { event: 'order.shipment_status_changed' }\n\t| { event: 'booking.created' }\n\t| { event: 'booking.updated' }\n\t| { event: 'booking.payment_received' }\n\t| { event: 'booking.payment_failed' }\n\t| { event: 'booking.refunded' }\n\t| { event: 'booking.cancelled' }\n\t| { event: 'booking.item_cancelled' }\n\t| { event: 'booking.reminder' }\n\t| { event: 'product.created' }\n\t| { event: 'product.updated' }\n\t| { event: 'product.deleted' }\n\t| { event: 'provider.created' }\n\t| { event: 'provider.updated' }\n\t| { event: 'provider.deleted' }\n\t| { event: 'service.created' }\n\t| { event: 'service.updated' }\n\t| { event: 'service.deleted' }\n\t| { event: 'media.created' }\n\t| { event: 'media.deleted' }\n\t| { event: 'store.created' }\n\t| { event: 'store.updated' }\n\t| { event: 'store.deleted' }\n\t| { event: 'audience.created' }\n\t| { event: 'audience.updated' }\n\t| { event: 'audience.deleted' };\n\nexport interface Webhook {\n\tid: string;\n\tstore_id: string;\n\tkey: string;\n\turl: string;\n\tevents: WebhookEventSubscription[];\n\theaders: Record<string, string>;\n\tsecret: string;\n\tenabled: boolean;\n\tcreated_at: number;\n\tupdated_at: number;\n}\n\n\nexport type StoreSubscriptionStatus =\n\t| 'pending'\n\t| 'active'\n\t| 'cancellation_scheduled'\n\t| 'cancelled'\n\t| 'expired';\n\nexport type StoreSubscriptionSource = 'signup' | 'admin' | 'import';\n\nexport type StoreSubscriptionProvider = {\n\ttype: 'stripe';\n\tcustomer_id: string;\n\tsubscription_id?: string;\n\tprice_id?: string;\n};\n\nexport interface StoreSubscriptionPayment {\n\tcurrency: string;\n\tmarket: string;\n\tprovider?: StoreSubscriptionProvider;\n}\n\nexport interface StoreSubscription {\n\tid: string;\n\ttarget: string;\n\tplan_id: string;\n\tpending_plan_id: string | null;\n\tpayment: StoreSubscriptionPayment;\n\tstatus: StoreSubscriptionStatus;\n\tstart_date: number;\n\tend_date: number;\n\ttoken: string;\n\tsource: StoreSubscriptionSource;\n}\n\nexport type AudienceSubscriptionStatus =\n\t| 'pending'\n\t| 'active'\n\t| 'cancellation_scheduled'\n\t| 'cancelled'\n\t| 'expired';\n\nexport type AudienceSubscriptionSource = 'signup' | 'admin' | 'import';\n\nexport type AudienceSubscriptionProvider = {\n\ttype: 'stripe';\n\tcustomer_id: string;\n\tsubscription_id?: string;\n\tprice_id?: string;\n};\n\nexport interface AudienceSubscriptionPayment {\n\tcurrency: string;\n\tmarket: string;\n\tprovider?: AudienceSubscriptionProvider;\n}\n\nexport interface AudienceSubscription {\n\tid: string;\n\tstore_id: string;\n\tcustomer_id: string;\n\taudience_id: string;\n\tplan_id: string;\n\tpending_plan_id: string | null;\n\tpayment: AudienceSubscriptionPayment;\n\tstatus: AudienceSubscriptionStatus;\n\tstart_date: number;\n\tend_date: number;\n\ttoken: string;\n\tsource: AudienceSubscriptionSource;\n\tcreated_at: number;\n\tupdated_at: number;\n}\n\nexport interface Store {\n\tid: string;\n\tkey: string;\n\ttimezone: string;\n\tlanguages?: Language[];\n\temails?: StoreEmails;\n\tsubscription?: StoreSubscription;\n\tcounts?: Record<string, number>;\n}\n\nexport interface EshopStoreState {\n\tstore_id: string;\n\tselected_shipping_method_id: string | null;\n\tuser_token: string | null;\n\tprocessing_checkout: boolean;\n\tloading: boolean;\n\terror: string | null;\n}\n\nexport interface Block {\n\tid: string;\n\tkey: string;\n\ttype: string;\n\tproperties?: any;\n\tvalue?: any;\n}\n\nexport type TaxonomySchemaType = \"text\" | \"number\" | \"boolean\" | \"geo_location\";\n\nexport interface TaxonomySchema {\n\tid: string;\n\tkey: string;\n\ttype: TaxonomySchemaType;\n\tvalue?: string[];\n\tmin?: number | null;\n\tmax?: number | null;\n}\n\nexport interface TaxonomyField {\n\tid: string;\n\tkey: string;\n\ttype: TaxonomySchemaType;\n\tvalue: any;\n}\n\nexport interface TaxonomyFieldQuery {\n\tkey: string;\n\ttype: TaxonomySchemaType;\n\toperation?: string;\n\tvalue: any;\n\tcenter?: { lat: number; lon: number };\n\tradius?: number;\n}\n\nexport interface TaxonomyEntry {\n\ttaxonomy_id: string;\n\tfields: TaxonomyField[];\n}\n\nexport interface TaxonomyQuery {\n\ttaxonomy_id: string;\n\tquery: TaxonomyFieldQuery[];\n}\n\nexport type FormSchemaType = \"text\" | \"number\" | \"boolean\" | \"date\" | \"geo_location\" | \"select\";\n\nexport interface FormSchema {\n\tid: string;\n\tkey: string;\n\ttype: FormSchemaType;\n\trequired?: boolean;\n\tmin?: number | null;\n\tmax?: number | null;\n\toptions?: string[];\n}\n\nexport type FormFieldType = \"text\" | \"number\" | \"boolean\" | \"date\" | \"geo_location\" | \"select\";\n\nexport interface FormField {\n\tid: string;\n\tkey: string;\n\ttype: FormFieldType;\n\tvalue?: any;\n}\n\nexport interface FormEntry {\n\tform_id: string;\n\tfields: FormField[];\n}\n\nexport type BlockType =\n\t| \"text\"\n\t| \"localized_text\"\n\t| \"number\"\n\t| \"boolean\"\n\t| \"list\"\n\t| \"map\"\n\t| \"relationship_entry\"\n\t| \"relationship_media\"\n\t| \"markdown\"\n\t| \"geo_location\";\n\nexport interface GeoLocationBlockProperties {}\n\n\nexport type GeoLocationValue = GeoLocation;\n\nexport interface GeoLocationBlock extends Block {\n\ttype: \"geo_location\";\n\tproperties: GeoLocationBlockProperties;\n\tvalue: GeoLocation | null;\n}\n\nexport type Access = 'public' | 'private';\n\nexport interface MediaResolution {\n\tid: string;\n\tsize: string;\n\turl: string;\n}\n\nexport interface Media {\n\tid: string;\n\tresolutions: { [key: string]: MediaResolution };\n\tmime_type: string;\n\ttitle?: string | null;\n\tdescription?: string | null;\n\talt?: string | null;\n\tentity: string;\n\tmetadata?: string | null;\n\tcreated_at: number;\n\tslug: Record<string, string>;\n}\n\nexport interface ApiResponse<T> {\n\tsuccess: boolean;\n\tdata?: T;\n\terror?: string;\n\tcursor?: string;\n\ttotal?: number;\n}\n\nexport interface PaginatedResponse<T> {\n\tdata: T[];\n\tmeta?: {\n\t\ttotal: number;\n\t\tpage: number;\n\t\tper_page: number;\n\t};\n}\n\nexport interface BookingStoreState {\n\tcurrent_step: number;\n\ttotal_steps: number;\n\tsteps: Record<number, { name: string; label_key: string }>;\n\tweekdays: string[];\n\tmonth_year: string;\n\tdays: any[];\n\tcurrent: Date;\n\tselected_date: string | null;\n\tslots: any[];\n\tselected_slot: any | null;\n\tselected_provider: any | null;\n\tproviders: any[];\n\tloading: boolean;\n\tstart_date: string | null;\n\tend_date: string | null;\n\tguest_token: string | null;\n\tservice: any | null;\n\tstore: Store | null;\n\tcurrency: string;\n\tbooking_forms: FormEntry[];\n\tapi_url: string;\n\tstore_id: string;\n\ttimezone: string;\n\ttz_groups: any;\n\titems: BookingCartItem[];\n\tallowed_payment_methods: string[];\n\tpayment_config: {\n\t\tprovider: { publishable_key: string; currency: string } | null;\n\t\tenabled: boolean;\n\t};\n}\n\nexport type BookingServiceStatus = 'active' | 'draft' | 'archived';\nexport type BookingProviderStatus = 'active' | 'draft' | 'archived';\n\nexport type ProductStatus = 'active' | 'draft' | 'archived';\nexport type CustomerStatus = 'active' | 'draft' | 'archived';\nexport type AudienceStatus = 'active' | 'draft' | 'archived';\nexport type AgentChatStatus = 'active' | 'draft' | 'archived';\nexport type WorkflowStatus = 'active' | 'draft' | 'archived';\nexport type PromoCodeStatus = 'active' | 'draft' | 'archived';\nexport type NodeStatus = 'active' | 'draft' | 'archived';\nexport type EmailTemplateStatus = 'active' | 'draft' | 'archived';\nexport type FormStatus = 'active' | 'draft' | 'archived';\nexport type TaxonomyStatus = 'active' | 'draft' | 'archived';\n\nexport type BookingCancellationReason =\n\t| 'admin_rejected'\n\t| 'customer_cancelled'\n\t| 'payment_failed'\n\t| 'expired'\n\t| 'other';\n\nexport type OrderCancellationReason =\n\t| 'admin_rejected'\n\t| 'customer_cancelled'\n\t| 'payment_failed'\n\t| 'expired'\n\t| 'other';\n\nexport type BookingItemStatus =\n\t| { status: 'pending'; expires_at: number }\n\t| { status: 'confirmed' }\n\t| { status: 'cancelled'; reason: BookingCancellationReason };\n\nexport type OrderItemStatus =\n\t| { status: 'pending'; expires_at: number }\n\t| { status: 'confirmed' }\n\t| { status: 'cancelled'; reason: OrderCancellationReason };\n\nexport type BookingPaymentStatus =\n\t| { status: 'pending'; at: number }\n\t| { status: 'authorized'; at: number; amount: number }\n\t| { status: 'captured'; at: number; amount: number }\n\t| { status: 'failed'; at: number; reason?: string };\n\nexport type OrderPaymentStatus =\n\t| { status: 'pending'; at: number }\n\t| { status: 'authorized'; at: number; amount: number }\n\t| { status: 'captured'; at: number; amount: number }\n\t| { status: 'failed'; at: number; reason?: string };\n\nexport interface BookingItemSnapshot {\n\tservice_key: string;\n\tprovider_key: string;\n\tprice: Price;\n}\n\nexport interface TimeRange {\n\tfrom: number;\n\tto: number;\n}\n\nexport interface BookingItem {\n\tid: string;\n\tservice_id: string;\n\tprovider_id: string;\n\tstore_id: string;\n\tbooking_id: string;\n\tfrom: number;\n\tto: number;\n\tforms: FormEntry[];\n\tsnapshot: BookingItemSnapshot;\n\tstatus: BookingItemStatus;\n}\n\nexport interface Booking {\n\tid: string;\n\tnumber: string;\n\tcustomer_id: string;\n\tverified: boolean;\n\tforms: FormEntry[];\n\tstore_id: string;\n\tservice_ids: string[];\n\tprovider_ids: string[];\n\tpayment: BookingPayment;\n\tstore?: Store;\n\taccount?: any;\n\titems: BookingItem[];\n\taudience_id?: string;\n\thistory?: { action: string; reason?: string; timestamp: number }[];\n\tfired_reminders: number[];\n\tcreated_at: number;\n\tlast_modified: number;\n}\n\nexport interface Node {\n\tid: string;\n\tkey: string;\n\tstore_id: string;\n\tparent_id?: string | null;\n\tblocks: Block[];\n\ttaxonomies: TaxonomyEntry[];\n\tstatus: NodeStatus;\n\tslug: Record<string, string>;\n\tchildren: Node[];\n\tcreated_at: number;\n\tupdated_at: number;\n}\n\nexport interface EmailTemplate {\n\tid: string;\n\tkey: string;\n\tstore_id: string;\n\tsubject: Record<string, string>;\n\tbody: string;\n\tfrom_name: string;\n\tfrom_email: string;\n\treply_to?: string;\n\tpreheader?: string;\n\tstatus: EmailTemplateStatus;\n\tcreated_at: number;\n\tupdated_at: number;\n}\n\nexport interface Form {\n\tid: string;\n\tkey: string;\n\tstore_id: string;\n\tschema: FormSchema[];\n\tstatus: FormStatus;\n\tcreated_at: number;\n\tupdated_at: number;\n}\n\nexport interface FormSubmission {\n\tid: string;\n\tform_id: string;\n\tstore_id: string;\n\tfields: FormField[];\n\tcreated_at: number;\n}\n\nexport interface Taxonomy {\n\tid: string;\n\tkey: string;\n\tstore_id: string;\n\tparent_id?: string | null;\n\tschema?: TaxonomySchema[];\n\tstatus: TaxonomyStatus;\n\tcreated_at: number;\n\tupdated_at: number;\n}\n\nexport interface ServiceDuration {\n\tduration: number;\n\tis_pause?: boolean;\n}\n\nexport interface ServiceProvider {\n\tid: string;\n\tprovider_id: string;\n\tprices: Price[];\n\tdurations: ServiceDuration[];\n\taudience_ids: string[];\n\tworking_days: Array<{ day: string; working_hours: Array<{ from: number; to: number }> }>;\n\tspecific_dates: Array<{ date: number; working_hours: Array<{ from: number; to: number }> }>;\n\tslot_interval: number;\n\tmin_advance: number;\n\tmax_advance: number;\n\treminders: number[];\n\tforms?: FormEntry[];\n}\n\nexport interface Service {\n\tid: string;\n\tkey: string;\n\tslug: Record<string, string>;\n\tstore_id: string;\n\tblocks: Block[];\n\ttaxonomies: TaxonomyEntry[];\n\tcreated_at: number;\n\tupdated_at: number;\n\tstatus: BookingServiceStatus;\n}\n\nexport interface ProviderTimelinePoint {\n\ttimestamp: number;\n\tbooked: number;\n}\n\nexport interface Provider {\n\tid: string;\n\tkey: string;\n\tslug: Record<string, string>;\n\tstore_id: string;\n\tstatus: BookingProviderStatus;\n\taudience_ids: string[];\n\tblocks: Block[];\n\ttaxonomies: TaxonomyEntry[];\n\ttimeline: ProviderTimelinePoint[];\n\tcreated_at: number;\n\tupdated_at: number;\n}\n\nexport interface WorkflowEdge {\n\tsource: string;\n\ttarget: string;\n\toutput: string;\n\tback_edge: boolean;\n}\n\nexport interface Workflow {\n\tid: string;\n\tkey: string;\n\tstore_id: string;\n\tsecret: string;\n\tstatus: WorkflowStatus;\n\tnodes: Record<string, WorkflowNode>;\n\tedges: WorkflowEdge[];\n\n\tschedule?: string;\n\tcreated_at: number;\n\tupdated_at: number;\n}\n\nexport type WorkflowNode =\n\t| WorkflowTriggerNode\n\t| WorkflowHttpNode\n\t| WorkflowSwitchNode\n\t| WorkflowTransformNode\n\t| WorkflowLoopNode;\n\nexport interface WorkflowTriggerNode {\n\ttype: 'trigger';\n\tevent?: string;\n\tdelay_ms?: number;\n\tschema?: Block[];\n}\n\nexport interface WorkflowHttpNode {\n\ttype: 'http';\n\tmethod: WorkflowHttpMethod;\n\turl: string;\n\theaders?: Record<string, string>;\n\tbody?: any;\n\ttimeout_ms?: number;\n\tintegration_id?: string;\n\tintegration_provider_id?: string;\n\tdelay_ms?: number;\n\tretries?: number;\n\tretry_delay_ms?: number;\n}\n\nexport interface WorkflowSwitchRule {\n\tcondition: string;\n}\n\nexport interface WorkflowSwitchNode {\n\ttype: 'switch';\n\trules: WorkflowSwitchRule[];\n\tdelay_ms?: number;\n}\n\nexport interface WorkflowTransformNode {\n\ttype: 'transform';\n\tcode: string;\n\tdelay_ms?: number;\n}\n\nexport interface WorkflowLoopNode {\n\ttype: 'loop';\n\texpression: string;\n\tdelay_ms?: number;\n}\n\nexport type WorkflowHttpMethod = 'get' | 'post' | 'put' | 'patch' | 'delete';\n\nexport type ExecutionStatus = 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';\n\nexport interface NodeResult {\n\toutput: any;\n\troute: string;\n\tstarted_at: number;\n\tcompleted_at: number;\n\tduration_ms: number;\n\terror?: string;\n}\n\nexport interface WorkflowExecution {\n\tid: string;\n\tworkflow_id: string;\n\tstore_id: string;\n\tstatus: ExecutionStatus;\n\tinput: Record<string, any>;\n\tresults: Record<string, NodeResult>;\n\terror?: string;\n\tscheduled_at: number;\n\tstarted_at: number;\n\tcompleted_at?: number;\n\tcreated_at: number;\n\tupdated_at: number;\n}\n\nexport type AudienceType =\n\t| { type: 'standard' }\n\t| { type: 'confirmation'; confirm_template_id: string }\n\t| { type: 'paid'; prices: SubscriptionPrice[]; payment_integration_id?: string };\n\nexport interface Audience {\n\tid: string;\n\tstore_id: string;\n\tkey: string;\n\tstatus: AudienceStatus;\n\ttype: AudienceType;\n}\n\nexport interface AudienceAccessResponse {\n\thas_access: boolean;\n\tsubscription?: AudienceSubscription;\n}\n\nexport interface AudienceSubscribeResponse {\n\tcheckout_url?: string;\n\tsubscription?: AudienceSubscription;\n}\n\nexport type EventAction =\n\t\n\t| { action: 'order_created' }\n\t| { action: 'order_updated' }\n\t| { action: 'order_confirmed' }\n\t| { action: 'order_payment_received'; data: { amount: number; currency: string } }\n\t| { action: 'order_payment_failed'; data: { reason?: string } }\n\t| { action: 'order_refunded'; data: { amount: number; currency: string; reason?: string } }\n\t| { action: 'order_cancelled'; data: { reason?: string } }\n\t\n\t| { action: 'order_shipment_created'; data: { shipment_id: string } }\n\t| { action: 'order_shipment_in_transit'; data: { shipment_id: string } }\n\t| { action: 'order_shipment_out_for_delivery'; data: { shipment_id: string } }\n\t| { action: 'order_shipment_delivered'; data: { shipment_id: string } }\n\t| { action: 'order_shipment_failed'; data: { shipment_id: string; reason?: string } }\n\t| { action: 'order_shipment_returned'; data: { shipment_id: string } }\n\t| { action: 'order_shipment_status_changed'; data: { shipment_id: string; from: string; to: string } }\n\t\n\t| { action: 'booking_created' }\n\t| { action: 'booking_updated' }\n\t| { action: 'booking_payment_received'; data: { amount: number; currency: string } }\n\t| { action: 'booking_payment_failed'; data: { reason?: string } }\n\t| { action: 'booking_refunded'; data: { amount: number; currency: string; reason?: string } }\n\t| { action: 'booking_cancelled'; data: { reason?: string } }\n\t| { action: 'booking_item_cancelled'; data: { item_id: string; refund_amount: number } }\n\t\n\t| { action: 'product_created' }\n\t| { action: 'product_updated' }\n\t| { action: 'product_deleted' }\n\t\n\t| { action: 'node_created' }\n\t| { action: 'node_updated' }\n\t| { action: 'node_deleted' }\n\t\n\t| { action: 'provider_created' }\n\t| { action: 'provider_updated' }\n\t| { action: 'provider_deleted' }\n\t\n\t| { action: 'service_created' }\n\t| { action: 'service_updated' }\n\t| { action: 'service_deleted' }\n\t\n\t| { action: 'account_created' }\n\t| { action: 'account_updated' }\n\t| { action: 'account_deleted' }\n\t\n\t| { action: 'media_created' }\n\t| { action: 'media_deleted' }\n\t\n\t| { action: 'store_created' }\n\t| { action: 'store_updated' }\n\t| { action: 'store_deleted' }\n\t\n\t| { action: 'audience_created' }\n\t| { action: 'audience_updated' }\n\t| { action: 'audience_deleted' };\n\nexport interface Event {\n\tid: string;\n\tentity: string;\n\tevent: EventAction;\n\tactor: string;\n\tcreated_at: number;\n}\n\n\nexport type ShippingStatus =\n\t| 'pending'\n\t| 'label_created'\n\t| 'in_transit'\n\t| 'out_for_delivery'\n\t| 'delivered'\n\t| 'failed'\n\t| 'returned';\n\n\nexport interface OrderShipping {\n\tcarrier: string;\n\tservice: string;\n\ttracking_number?: string | null;\n\ttracking_url?: string | null;\n\tlabel_url?: string | null;\n\tstatus: ShippingStatus;\n}\n\n\nexport interface ShipmentLine {\n\torder_item_id: string;\n\tquantity: number;\n}\n\n\nexport interface Shipment {\n\tid: string;\n\tlocation_id: string;\n\tlines: ShipmentLine[];\n\tcarrier?: string | null;\n\tservice?: string | null;\n\ttracking_number?: string | null;\n\ttracking_url?: string | null;\n\tlabel_url?: string | null;\n\tstatus: ShippingStatus;\n\tcreated_at: number;\n\tupdated_at: number;\n}\n\n\nexport interface ShippingRate {\n\tid: string;\n\tprovider: string;\n\tcarrier: string;\n\tservice: string;\n\tdisplay_name: string;\n\tamount: number;\n\tcurrency: string;\n\testimated_days?: number | null;\n}\n\n\nexport type ShippingAddress = Address;\n\n\nexport interface Parcel {\n\tlength: number;\n\twidth: number;\n\theight: number;\n\tweight: number;\n\tdistance_unit: 'in' | 'cm';\n\tmass_unit: 'oz' | 'lb' | 'g' | 'kg';\n}\n\n\nexport interface PurchaseLabelResult {\n\ttracking_number: string;\n\ttracking_url?: string | null;\n\tlabel_url: string;\n\tcarrier: string;\n\tservice: string;\n}\n\n\nexport interface ShipResult {\n\tshipment_id: string;\n\ttracking_number: string;\n\ttracking_url?: string | null;\n\tlabel_url: string;\n}\n\n\nexport interface CustomsItem {\n\tdescription: string;\n\tquantity: number;\n\tnet_weight: string;\n\tmass_unit: string;\n\tvalue_amount: string;\n\tvalue_currency: string;\n\torigin_country: string;\n\ttariff_number?: string | null;\n}\n\n\nexport interface CustomsDeclaration {\n\tcontents_type: string;\n\tcontents_explanation?: string | null;\n\tnon_delivery_option: string;\n\tcertify: boolean;\n\tcertify_signer: string;\n\titems: CustomsItem[];\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 \"relationship_entry\":\n case \"relationship_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: (blockTypes?.[key] === 'list') && !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 \n if (block.type === \"localized_text\" || block.type === \"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 \n if (block.type === \"list\" && 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 if (block.type === \"list\") {\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 (block.type === \"map\") {\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 (block.type === \"localized_text\" || block.type === \"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 !== \"list\" || !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 === \"list\" && 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 === \"map\" && 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 === \"relationship_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 { ApiConfig } from \"../index\";\nimport type { RequestOptions, Slot } from \"../types/api\";\nimport {\n getBlockFromArray,\n getBlockObjectValues,\n getImageUrl,\n} from \"../utils/blocks\";\n\nexport interface Activity {\n store_id: string;\n customer_id: string;\n type: string;\n payload: Record<string, any>;\n created_at: number;\n}\n\nexport interface TrackParams {\n type: string;\n payload?: Record<string, any>;\n}\n\nexport const COMMON_ACTIVITY_TYPES = [\n \"page_view\",\n \"product_view\",\n \"service_view\",\n \"provider_view\",\n \"cart_added\",\n \"cart_removed\",\n \"checkout_started\",\n \"purchase\",\n \"booking_created\",\n \"signin\",\n \"signup\",\n \"verified_email\",\n \"search\",\n \"share\",\n \"wishlist_added\",\n] as const;\n\nexport type CommonActivityType = (typeof COMMON_ACTIVITY_TYPES)[number];\n\nexport const createActivityApi = (apiConfig: ApiConfig) => ({\n COMMON_ACTIVITY_TYPES,\n async track(params: TrackParams): Promise<void> {\n try {\n await apiConfig.httpClient.post(\n `/v1/storefront/${apiConfig.storeId}/activities/track`,\n { type: params.type, payload: params.payload },\n );\n } catch {}\n },\n});\n\nfunction groupCartToItems(cart: Slot[]) {\n const groups = new Map<\n string,\n { service_id: string; provider_id: string; slots: { from: number; to: number }[] }\n >();\n\n for (const slot of cart) {\n const key = `${slot.service_id}:${slot.provider_id}`;\n if (!groups.has(key)) {\n groups.set(key, {\n service_id: slot.service_id,\n provider_id: slot.provider_id,\n slots: [],\n });\n }\n groups.get(key)!.slots.push({ from: slot.from, to: slot.to });\n }\n\n return [...groups.values()];\n}\n\nexport const createStorefrontApi = (apiConfig: ApiConfig) => {\n const base = (storeId = apiConfig.storeId) =>\n `/v1/storefront/${storeId}`;\n let cart: Slot[] = [];\n\n return {\n store: {\n getStore(options?: RequestOptions) {\n return apiConfig.httpClient.get(base(), options);\n },\n\n location: {\n getCountries(options?: RequestOptions) {\n return apiConfig.httpClient.get(`/v1/platform/countries`, options);\n },\n\n getCountry(countryCode: string, options?: RequestOptions) {\n return apiConfig.httpClient.get(\n `/v1/platform/countries/${countryCode}`,\n options,\n );\n },\n\n list(options?: RequestOptions) {\n return apiConfig.httpClient.get(`${base()}/locations`, options);\n },\n\n get(id: string, options?: RequestOptions) {\n return apiConfig.httpClient.get(`${base()}/locations/${id}`, options);\n },\n },\n\n market: {\n list(options?: RequestOptions) {\n return apiConfig.httpClient.get(`${base()}/markets`, options);\n },\n\n get(id: string, options?: RequestOptions) {\n return apiConfig.httpClient.get(`${base()}/markets/${id}`, options);\n },\n },\n },\n\n cms: {\n node: {\n async get(params: any, options?: RequestOptions) {\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 if (params.key) {\n identifier = `${store_id}:${params.key}`;\n } else {\n throw new Error(\"GetNodeParams requires id, slug, or key\");\n }\n\n const response = await apiConfig.httpClient.get(\n `${base(store_id)}/nodes/${identifier}`,\n options,\n );\n\n return {\n ...response,\n getBlock(key: string) {\n return getBlockFromArray(response, key, apiConfig.locale);\n },\n getBlockValues(key: string) {\n return getBlockObjectValues(response, key, apiConfig.locale);\n },\n getImage(key: string) {\n const block = getBlockFromArray(response, key, apiConfig.locale);\n return getImageUrl(block, true);\n },\n };\n },\n\n find(params: any, options?: RequestOptions) {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get(`${base(store_id)}/nodes`, {\n ...options,\n params: queryParams,\n });\n },\n\n getChildren(params: any, options?: RequestOptions) {\n const { id, store_id, ...queryParams } = params;\n return apiConfig.httpClient.get(`${base(store_id)}/nodes/${id}/children`, {\n ...options,\n params: queryParams,\n });\n },\n },\n\n form: {\n get(params: any, options?: RequestOptions) {\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(\n `${base(store_id)}/forms/${identifier}`,\n options,\n );\n },\n\n submit(params: any, options?: RequestOptions) {\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(\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: any, options?: RequestOptions) {\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(\n `${base(store_id)}/taxonomies/${identifier}`,\n options,\n );\n },\n\n getChildren(params: any, options?: RequestOptions) {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get(\n `${base(store_id)}/taxonomies/${params.id}/children`,\n options,\n );\n },\n },\n },\n\n eshop: {\n product: {\n get(params: any, options?: RequestOptions) {\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(\n `${base(store_id)}/products/${identifier}`,\n options,\n );\n },\n\n find(params: any, options?: RequestOptions) {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get(`${base(store_id)}/products`, {\n ...options,\n params: queryParams,\n });\n },\n },\n\n order: {\n getQuote(params: any, options?: RequestOptions) {\n const store_id = params.store_id || apiConfig.storeId;\n const { location, store_id: _store_id, ...rest } = params;\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 : undefined;\n\n return apiConfig.httpClient.post(\n `${base(store_id)}/orders/quote`,\n { ...rest, shipping_address, market: apiConfig.market },\n options,\n );\n },\n\n checkout(params: any, options?: RequestOptions) {\n const { store_id, ...rest } = params;\n const target = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post(\n `${base(target)}/orders/checkout`,\n { ...rest, store_id: target, market: apiConfig.market },\n options,\n );\n },\n\n get(params: any, options?: RequestOptions) {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get(\n `${base(store_id)}/orders/${params.id}`,\n options,\n );\n },\n\n find(params: any, options?: RequestOptions) {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get(`${base(store_id)}/orders`, {\n ...options,\n params: queryParams,\n });\n },\n },\n },\n\n booking: {\n addToCart(slot: Slot) {\n cart.push(slot);\n },\n\n removeFromCart(slotId: string) {\n cart = cart.filter((slot) => slot.id !== slotId);\n },\n\n getCart() {\n return [...cart];\n },\n\n clearCart() {\n cart = [];\n },\n\n checkout(params?: any, options?: RequestOptions) {\n const { store_id, items: paramItems, ...payload } = params || {};\n const target_store_id = store_id || apiConfig.storeId;\n const items = paramItems || groupCartToItems(cart);\n\n return apiConfig.httpClient.post(\n `${base(target_store_id)}/bookings/checkout`,\n { market: \"booking\", ...payload, items },\n options,\n );\n },\n\n get(params: any, options?: RequestOptions) {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get(\n `${base(store_id)}/bookings/${params.id}`,\n options,\n );\n },\n\n find(params: any, options?: RequestOptions) {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get(`${base(store_id)}/bookings`, {\n ...options,\n params: queryParams,\n });\n },\n\n getQuote(params: any, options?: RequestOptions) {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post(\n `${base(target_store_id)}/bookings/quote`,\n { market: \"booking\", ...payload },\n options,\n );\n },\n\n getAvailability(params: any, options?: RequestOptions) {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get(\n `${base(target_store_id)}/bookings/availability`,\n { ...options, params: queryParams },\n );\n },\n\n cancelItem(params: any, options?: RequestOptions) {\n const { store_id, booking_id, item_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post(\n `${base(target_store_id)}/bookings/${booking_id}/items/${item_id}/cancel`,\n payload,\n options,\n );\n },\n\n service: {\n get(params: any, options?: RequestOptions) {\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(\n `${base(store_id)}/services/${identifier}`,\n options,\n );\n },\n\n find(params: any, options?: RequestOptions) {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get(`${base(store_id)}/services`, {\n ...options,\n params: queryParams,\n });\n },\n\n findProviders(params: any, options?: RequestOptions) {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get(`${base(store_id)}/service-providers`, {\n ...options,\n params: queryParams,\n });\n },\n },\n\n provider: {\n get(params: any, options?: RequestOptions) {\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(\n `${base(store_id)}/providers/${identifier}`,\n options,\n );\n },\n\n find(params: any, options?: RequestOptions) {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get(`${base(store_id)}/providers`, {\n ...options,\n params: queryParams,\n });\n },\n },\n },\n\n crm: {\n customer: {\n async session(params?: { store_id?: string; market?: string }, options?: RequestOptions) {\n const store_id = params?.store_id || apiConfig.storeId;\n const result = await apiConfig.httpClient.post(\n `${base(store_id)}/customers/session`,\n { store_id, market: params?.market || apiConfig.market || null },\n options,\n );\n if (result?.token?.access_token) {\n apiConfig.setToken(result.token);\n }\n return result;\n },\n\n async connect(params: any, options?: RequestOptions) {\n const store_id = params.store_id || apiConfig.storeId;\n const result = await apiConfig.httpClient.post(\n `${base(store_id)}/customers/connect`,\n { email: params.email, store_id },\n options,\n );\n if (result?.access_token) {\n apiConfig.setToken(result);\n }\n return result;\n },\n\n requestCode(\n params: { email: string; store_id?: string },\n options?: RequestOptions,\n ) {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post(\n `${base(store_id)}/customers/auth/code`,\n { email: params.email, store_id },\n options,\n );\n },\n\n async verify(\n params: { email: string; code: string; store_id?: string },\n options?: RequestOptions,\n ) {\n const store_id = params.store_id || apiConfig.storeId;\n const result = await apiConfig.httpClient.post(\n `${base(store_id)}/customers/auth/verify`,\n { email: params.email, code: params.code, store_id },\n options,\n );\n if (result?.access_token) {\n apiConfig.setToken(result);\n }\n return result;\n },\n\n async refreshToken(\n params: { refresh_token: string; store_id?: string },\n options?: RequestOptions,\n ) {\n const store_id = params.store_id || apiConfig.storeId;\n const result = await apiConfig.httpClient.post(\n `${base(store_id)}/customers/auth/refresh`,\n { refresh_token: params.refresh_token },\n options,\n );\n if (result?.access_token) {\n apiConfig.setToken(result);\n }\n return result;\n },\n\n getMe(options?: RequestOptions) {\n return apiConfig.httpClient.get(`${base()}/customers/me`, options);\n },\n },\n\n audience: {\n get(params: any, options?: RequestOptions) {\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.key) {\n identifier = `${apiConfig.storeId}:${params.key}`;\n } else {\n throw new Error(\"GetAudienceParams requires id or key\");\n }\n\n return apiConfig.httpClient.get(\n `${base(apiConfig.storeId)}/audiences/${identifier}`,\n options,\n );\n },\n\n find(params: any, options?: RequestOptions) {\n return apiConfig.httpClient.get(`${base()}/audiences`, {\n ...options,\n params,\n });\n },\n\n subscribe(params: any, options?: RequestOptions) {\n return apiConfig.httpClient.post(\n `${base()}/audiences/${params.id}/subscribe`,\n {\n customer_id: params.customer_id,\n price_id: params.price_id,\n success_url: params.success_url,\n cancel_url: params.cancel_url,\n confirm_url: params.confirm_url,\n },\n options,\n );\n },\n\n checkAccess(params: { id: string }, options?: RequestOptions) {\n return apiConfig.httpClient.get(\n `${base()}/audiences/${params.id}/access`,\n options,\n );\n },\n\n unsubscribe(token: string, options?: RequestOptions) {\n return apiConfig.httpClient.get(`${base()}/audiences/unsubscribe`, {\n ...options,\n params: { token },\n });\n },\n\n confirm(token: string, options?: RequestOptions) {\n return apiConfig.httpClient.get(`${base()}/audiences/confirm`, {\n ...options,\n params: { token },\n });\n },\n },\n },\n\n activity: createActivityApi(apiConfig),\n\n automation: {\n agent: {\n getAgents(params?: any, options?: RequestOptions) {\n const store_id = params?.store_id || apiConfig.storeId;\n const queryParams = { ...(params || {}) };\n delete queryParams.store_id;\n return apiConfig.httpClient.get(`${base(store_id)}/agents`, {\n ...options,\n params: Object.keys(queryParams).length > 0 ? queryParams : undefined,\n });\n },\n\n getAgent(params: { id: string; store_id?: string }, options?: RequestOptions) {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get(\n `${base(store_id)}/agents/${params.id}`,\n options,\n );\n },\n\n sendMessage(\n params: { id: string; message: string; chat_id?: string; store_id?: string },\n options?: RequestOptions,\n ) {\n const store_id = params.store_id || apiConfig.storeId;\n const body: Record<string, any> = { message: params.message };\n if (params.chat_id) body.chat_id = params.chat_id;\n return apiConfig.httpClient.post(\n `${base(store_id)}/agents/${params.id}/chats/messages`,\n body,\n options,\n );\n },\n\n getChat(\n params: { id: string; chat_id: string; store_id?: string },\n options?: RequestOptions,\n ) {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get(\n `${base(store_id)}/agents/${params.id}/chats/${params.chat_id}`,\n options,\n );\n },\n\n getChatMessages(\n params: { id: string; chat_id: string; limit?: number; store_id?: string },\n options?: RequestOptions,\n ) {\n const store_id = params.store_id || apiConfig.storeId;\n const queryParams: Record<string, string> = {};\n if (params.limit) queryParams.limit = String(params.limit);\n return apiConfig.httpClient.get(\n `${base(store_id)}/agents/${params.id}/chats/${params.chat_id}/messages`,\n {\n ...options,\n params: Object.keys(queryParams).length > 0 ? queryParams : undefined,\n },\n );\n },\n\n rateChat(\n params: { id: string; chat_id: string; rating: number; comment?: string; store_id?: string },\n options?: RequestOptions,\n ) {\n const store_id = params.store_id || apiConfig.storeId;\n const body: Record<string, any> = { rating: params.rating };\n if (params.comment) body.comment = params.comment;\n return apiConfig.httpClient.post(\n `${base(store_id)}/agents/${params.id}/chats/${params.chat_id}/rate`,\n body,\n options,\n );\n },\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 AuthTokens {\n\taccess_token: string;\n\trefresh_token?: string;\n\taccess_expires_at?: number;\n\taccount_id?: string;\n}\n\nconst STORAGE_KEYS = {\n\taccess_token: \"arky_token\",\n\trefresh_token: \"arky_refresh\",\n\taccess_expires_at: \"arky_expires_at\",\n};\n\nexport function defaultGetToken(): AuthTokens {\n\tif (typeof window === \"undefined\") return { access_token: \"\" };\n\treturn {\n\t\taccess_token: localStorage.getItem(STORAGE_KEYS.access_token) || \"\",\n\t\trefresh_token: localStorage.getItem(STORAGE_KEYS.refresh_token) || \"\",\n\t\taccess_expires_at: parseInt(localStorage.getItem(STORAGE_KEYS.access_expires_at) || \"0\", 10),\n\t};\n}\n\nexport function defaultSetToken(tokens: AuthTokens): void {\n\tif (typeof window === \"undefined\") return;\n\tif (tokens.access_token) {\n\t\tlocalStorage.setItem(STORAGE_KEYS.access_token, tokens.access_token);\n\t\tlocalStorage.setItem(STORAGE_KEYS.refresh_token, tokens.refresh_token || \"\");\n\t\tlocalStorage.setItem(STORAGE_KEYS.access_expires_at, (tokens.access_expires_at || 0).toString());\n\t} else {\n\t\tObject.values(STORAGE_KEYS).forEach(key => localStorage.removeItem(key));\n\t}\n}\n\nexport function defaultLogout(): void {\n\tif (typeof window === \"undefined\") return;\n\tObject.values(STORAGE_KEYS).forEach(key => localStorage.removeItem(key));\n}\n\nexport function defaultIsAuthenticated(): boolean {\n\tif (typeof window === \"undefined\") return false;\n\tconst token = localStorage.getItem(STORAGE_KEYS.access_token) || \"\";\n\treturn token.startsWith(\"customer_\") || token.startsWith(\"account_\");\n}\n\nexport interface HttpClientConfig {\n\tbaseUrl: string;\n\n\tstoreId: string;\n\n\trefreshPath?: string | (() => string);\n\n\tgetToken?: () => Promise<AuthTokens> | AuthTokens;\n\n\tsetToken?: (tokens: AuthTokens) => void;\n\n\tlogout?: () => void;\n\n\tnavigate?: (path: string) => void;\n\n\tloginFallbackPath?: string;\n\n\tisAuthenticated?: () => boolean;\n}\n\ntype SuccessCallback<T = any> = (ctx: {\n\tdata: T;\n\tmethod: string;\n\turl: string;\n\tstatus: number;\n\trequest?: any;\n\tduration_ms?: number;\n\trequest_id?: string | null;\n}) => void | Promise<void>;\n\ntype ErrorCallback = (ctx: {\n\terror: any;\n\tmethod: string;\n\turl: string;\n\tstatus?: number;\n\trequest?: any;\n\tresponse?: any;\n\tduration_ms?: number;\n\trequest_id?: string | null;\n\taborted?: boolean;\n}) => void | Promise<void>;\n\nexport function createHttpClient(cfg: HttpClientConfig) {\n\tconst getToken = cfg.getToken || defaultGetToken;\n\tconst setToken = cfg.setToken || defaultSetToken;\n\tconst logout = cfg.logout || defaultLogout;\n\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 { refresh_token } = await getToken();\n\t\t\tif (!refresh_token) {\n\t\t\t\tlogout();\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\tlogout();\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\tsetToken(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?: any,\n\t\toptions?: {\n\t\t\tonSuccess?: SuccessCallback<T>;\n\t\t\tonError?: ErrorCallback;\n\t\t\theaders?: Record<string, string>;\n\t\t\ttransformRequest?: (data: any) => any;\n\t\t\tparams?: QueryParams;\n\t\t\t_retried?: boolean;\n\t\t}\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\tlet { access_token, access_expires_at } = await getToken();\n\n\tconst nowSec = Date.now() / 1000;\n\tif (access_expires_at && nowSec > access_expires_at) {\n\t\tawait ensureFreshToken();\n\t\tconst tokens = await getToken();\n\t\taccess_token = tokens.access_token;\n\t}\n\n\tif (access_token) {\n\t\theaders['Authorization'] = `Bearer ${access_token}`;\n\t}\n\n\t\tconst finalPath = options?.params ? path + buildQueryString(options.params) : path;\n\n\t\tconst fetchOpts: any = { method, headers };\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 err: any = new Error(error instanceof Error ? error.message : 'Network request failed');\n\t\t\terr.name = 'NetworkError';\n\t\t\terr.method = method;\n\t\t\terr.url = fullUrl;\nif (options?.onError && method !== 'GET') {\n\t\t\t\tPromise.resolve(\n\t\t\t\t\toptions.onError({ error: err, method, url: fullUrl, aborted: false })\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 tokens = await getToken();\n\t\t\t\theaders['Authorization'] = `Bearer ${tokens.access_token}`;\n\t\t\t\tfetchOpts.headers = headers;\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;\nif (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;\nif (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\nif (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?: any) => request<T>('GET', path, undefined, opts),\n\t\tpost: <T>(path: string, body: any, opts?: any) => request<T>('POST', path, body, opts),\n\t\tput: <T>(path: string, body: any, opts?: any) => request<T>('PUT', path, body, opts),\n\t\tpatch: <T>(path: string, body: any, opts?: any) => request<T>('PATCH', path, body, opts),\n\t\tdelete: <T>(path: string, opts?: any) => request<T>('DELETE', path, undefined, opts)\n\t};\n}\n","import type { ApiConfig } from '../index';\nimport type {\n UpdateAccountProfileParams,\n SearchAccountsParams,\n DeleteAccountParams,\n GetMeParams,\n RequestOptions\n} from '../types/api';\n\nexport const createAccountApi = (apiConfig: ApiConfig) => {\n return {\n async updateAccount(params: UpdateAccountProfileParams, options?: RequestOptions) {\n const payload: any = {};\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('/v1/accounts', payload, options);\n },\n\n async deleteAccount(params: DeleteAccountParams, options?: RequestOptions) {\n return apiConfig.httpClient.delete('/v1/accounts', options);\n },\n\n async getMe(params: GetMeParams, options?: RequestOptions) {\n return apiConfig.httpClient.get('/v1/accounts/me', options);\n },\n\n async searchAccounts(params: SearchAccountsParams, options?: RequestOptions) {\n return apiConfig.httpClient.get('/v1/accounts/search', {\n ...options,\n params: {\n ...params,\n store_id: apiConfig.storeId\n }\n });\n },\n };\n};\n","import type { ApiConfig } from '../index';\nimport type {\n MagicLinkRequestParams,\n MagicLinkVerifyParams,\n RequestOptions\n} from '../types/api';\n\nexport const createAuthApi = (apiConfig: ApiConfig) => {\n return {\n\n async code(params: { email: string }, options?: RequestOptions) {\n return apiConfig.httpClient.post('/v1/auth/code', params, options);\n },\n\n async verify(params: MagicLinkVerifyParams, options?: RequestOptions) {\n const result = await apiConfig.httpClient.post('/v1/auth/verify', params, options);\n if (result?.access_token) {\n apiConfig.setToken({ ...result, email: params.email, is_verified: true });\n }\n return result;\n },\n\n async refresh(params: { refresh_token: string }, options?: RequestOptions) {\n return apiConfig.httpClient.post('/v1/auth/refresh', params, options);\n },\n\n async storeCode(storeId: string, params: { email: string }, options?: RequestOptions) {\n return apiConfig.httpClient.post(`/v1/stores/${storeId}/auth/code`, params, options);\n },\n\n async storeVerify(storeId: string, params: MagicLinkVerifyParams, options?: RequestOptions) {\n const result = await apiConfig.httpClient.post(`/v1/stores/${storeId}/auth/verify`, params, options);\n if (result?.access_token) {\n apiConfig.setToken({ ...result, email: params.email, is_verified: true });\n }\n return result;\n },\n\n async magicLink(params: MagicLinkRequestParams, options?: RequestOptions) {\n return apiConfig.httpClient.post('/v1/auth/code', params, options);\n }\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateStoreParams,\n UpdateStoreParams,\n DeleteStoreParams,\n GetStoreParams,\n GetStoresParams,\n GetSubscriptionPlansParams,\n SubscribeParams,\n CreatePortalSessionParams,\n InviteUserParams,\n RemoveMemberParams,\n HandleInvitationParams,\n TestWebhookParams,\n GetStoreMediaParams2,\n OAuthConnectParams,\n OAuthDisconnectParams,\n ListIntegrationsParams,\n CreateIntegrationParams,\n UpdateIntegrationParams,\n DeleteIntegrationParams,\n ListWebhooksParams,\n CreateWebhookParams,\n UpdateWebhookParams,\n DeleteWebhookParams,\n RequestOptions,\n} from \"../types/api\";\n\nexport const createStoreApi = (apiConfig: ApiConfig) => {\n return {\n async createStore(\n params: CreateStoreParams,\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.post(`/v1/stores`, params, options);\n },\n\n async updateStore(\n params: UpdateStoreParams,\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.put(\n `/v1/stores/${params.id}`,\n params,\n options\n );\n },\n\n async deleteStore(\n params: DeleteStoreParams,\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.delete(\n `/v1/stores/${params.id}`,\n options\n );\n },\n\n async getStore(params: GetStoreParams, options?: RequestOptions) {\n return apiConfig.httpClient.get(\n `/v1/stores/${apiConfig.storeId}`,\n options\n );\n },\n\n async getStores(params?: GetStoresParams, options?: RequestOptions) {\n return apiConfig.httpClient.get(`/v1/stores`, {\n ...options,\n params,\n });\n },\n\n async getSubscriptionPlans(\n params: GetSubscriptionPlansParams,\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.get(\"/v1/stores/plans\", options);\n },\n\n async subscribe(params: SubscribeParams, options?: RequestOptions) {\n const { store_id, plan_id, success_url, cancel_url } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put(\n `/v1/stores/${target_store_id}/subscribe`,\n { plan_id, success_url, cancel_url },\n options\n );\n },\n\n async createPortalSession(\n params: CreatePortalSessionParams,\n options?: RequestOptions\n ) {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post(\n `/v1/stores/${store_id}/subscription/portal`,\n { return_url: params.return_url },\n options\n );\n },\n\n async inviteUser(params: InviteUserParams, options?: RequestOptions) {\n return apiConfig.httpClient.post(\n `/v1/stores/${apiConfig.storeId}/invitation`,\n params,\n options\n );\n },\n\n async removeMember(params: RemoveMemberParams, options?: RequestOptions) {\n return apiConfig.httpClient.delete(\n `/v1/stores/${apiConfig.storeId}/members/${params.account_id}`,\n options\n );\n },\n\n async handleInvitation(\n params: HandleInvitationParams,\n options?: RequestOptions\n ) {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.put(\n `/v1/stores/${store_id || apiConfig.storeId}/invitation`,\n payload,\n options\n );\n },\n\n async testWebhook(params: TestWebhookParams, options?: RequestOptions) {\n return apiConfig.httpClient.post(\n `/v1/stores/${apiConfig.storeId}/webhooks/test`,\n params.webhook,\n options\n );\n },\n\n async getStoreMedia(\n params: GetStoreMediaParams2,\n options?: RequestOptions\n ) {\n const queryParams: Record<string, any> = {\n limit: params.limit,\n };\n if (params.cursor) queryParams.cursor = params.cursor;\n if (params.ids && params.ids.length > 0) queryParams.ids = params.ids.join(',');\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) queryParams.sort_direction = params.sort_direction;\n\n return apiConfig.httpClient.get(`/v1/stores/${params.id}/media`, {\n ...options,\n params: queryParams,\n });\n },\n\n async oauthConnect(\n params: OAuthConnectParams,\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.post(\n `/v1/stores/${params.store_id}/oauth/connect`,\n { provider: params.provider, code: params.code, redirect_uri: params.redirect_uri },\n options\n );\n },\n\n async oauthDisconnect(\n params: OAuthDisconnectParams,\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.post(\n `/v1/stores/${params.store_id}/oauth/disconnect`,\n { provider: params.provider },\n options\n );\n },\n\n\n async listIntegrations(\n params: ListIntegrationsParams,\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.get(\n `/v1/stores/${params.store_id}/integrations`,\n options\n );\n },\n\n async createIntegration(\n params: CreateIntegrationParams,\n options?: RequestOptions\n ) {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post(\n `/v1/stores/${store_id}/integrations`,\n payload,\n options\n );\n },\n\n async updateIntegration(\n params: UpdateIntegrationParams,\n options?: RequestOptions\n ) {\n const { store_id, id, ...payload } = params;\n return apiConfig.httpClient.put(\n `/v1/stores/${store_id}/integrations/${id}`,\n payload,\n options\n );\n },\n\n async deleteIntegration(\n params: DeleteIntegrationParams,\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.delete(\n `/v1/stores/${params.store_id}/integrations/${params.id}`,\n options\n );\n },\n\n async getIntegrationConfig(\n params: { store_id: string; type: 'payment' | 'shipping' },\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.get(\n `/v1/stores/${params.store_id}/integrations/config/${params.type}`,\n options\n );\n },\n\n\n async listWebhooks(\n params: ListWebhooksParams,\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.get(\n `/v1/stores/${params.store_id}/webhooks`,\n options\n );\n },\n\n async createWebhook(\n params: CreateWebhookParams,\n options?: RequestOptions\n ) {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post(\n `/v1/stores/${store_id}/webhooks`,\n payload,\n options\n );\n },\n\n async updateWebhook(\n params: UpdateWebhookParams,\n options?: RequestOptions\n ) {\n const { store_id, id, ...payload } = params;\n return apiConfig.httpClient.put(\n `/v1/stores/${store_id}/webhooks/${id}`,\n payload,\n options\n );\n },\n\n async deleteWebhook(\n params: DeleteWebhookParams,\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.delete(\n `/v1/stores/${params.store_id}/webhooks/${params.id}`,\n options\n );\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';\n\nexport const createMediaApi = (apiConfig: ApiConfig) => {\n return {\n async getMedia(params: GetMediaParams, options?: RequestOptions) {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get(\n `/v1/stores/${target_store_id}/media/${params.media_id}`,\n options\n );\n },\n\n async uploadStoreMedia(params: UploadStoreMediaParams, options?: RequestOptions) {\n const _options = options;\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 = await apiConfig.getToken();\n const response = await fetch(url, {\n method: 'POST',\n body: formData,\n headers: {\n Authorization: `Bearer ${tokens.access_token}`\n }\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) {\n const { id, media_id } = params;\n\n return apiConfig.httpClient.delete(\n `/v1/stores/${id}/media/${media_id}`,\n options\n );\n },\n\n async getStoreMedia(params: GetStoreMediaParams, options?: RequestOptions) {\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 = ids.join(',');\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 = await apiConfig.getToken();\n const response = await fetch(`${url}?${queryString}`, {\n headers: {\n Authorization: `Bearer ${tokens.access_token}`\n }\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) {\n const { media_id, store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n\n return apiConfig.httpClient.put(\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) {\n\t\t\treturn apiConfig.httpClient.get(\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) {\n\t\t\treturn apiConfig.httpClient.post(\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';\n\nexport const createPromoCodeApi = (apiConfig: ApiConfig) => {\n\treturn {\n\t\tasync createPromoCode(params: CreatePromoCodeParams, options?: RequestOptions) {\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(\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) {\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(\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) {\n\t\t\tconst target_store_id = params.store_id || apiConfig.storeId;\n\t\t\treturn apiConfig.httpClient.delete(\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) {\n\t\t\tconst target_store_id = params.store_id || apiConfig.storeId;\n\t\t\treturn apiConfig.httpClient.get(\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) {\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(`/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 CreateNodeParams,\n UpdateNodeParams,\n DeleteNodeParams,\n GetNodeParams,\n GetNodesParams,\n GetNodeChildrenParams,\n RequestOptions,\n} from \"../types/api\";\nimport {\n getBlockFromArray,\n getBlockObjectValues,\n getImageUrl,\n} from \"../utils/blocks\";\n\nexport const createCmsApi = (apiConfig: ApiConfig) => {\n return {\n async createNode(params: CreateNodeParams, options?: RequestOptions) {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post(\n `/v1/stores/${target_store_id}/nodes`,\n payload,\n options\n );\n },\n\n async updateNode(params: UpdateNodeParams, options?: RequestOptions) {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put(\n `/v1/stores/${target_store_id}/nodes/${params.id}`,\n payload,\n options\n );\n },\n\n async deleteNode(params: DeleteNodeParams, options?: RequestOptions) {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete(\n `/v1/stores/${target_store_id}/nodes/${params.id}`,\n options\n );\n },\n\n async getNode(params: GetNodeParams, options?: RequestOptions) {\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 if (params.key) {\n identifier = `${target_store_id}:${params.key}`;\n } else {\n throw new Error(\"GetNodeParams requires id, slug, or key\");\n }\n\n const response = await apiConfig.httpClient.get(\n `/v1/stores/${target_store_id}/nodes/${identifier}`,\n options\n );\n\n return {\n ...response,\n getBlock(key: string) {\n return getBlockFromArray(response, key, apiConfig.locale);\n },\n getBlockValues(key: string) {\n return getBlockObjectValues(response, key, apiConfig.locale);\n },\n getImage(key: string) {\n const block = getBlockFromArray(response, key, apiConfig.locale);\n return getImageUrl(block, true);\n },\n };\n },\n\n async getNodes(params: GetNodesParams, options?: RequestOptions) {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get(\n `/v1/stores/${target_store_id}/nodes`,\n {\n ...options,\n params: queryParams,\n }\n );\n },\n\n async getNodeChildren(params: GetNodeChildrenParams, options?: RequestOptions) {\n const { id, store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get(\n `/v1/stores/${target_store_id}/nodes/${id}/children`,\n {\n ...options,\n params: queryParams,\n }\n );\n },\n\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateProductParams,\n UpdateProductParams,\n DeleteProductParams,\n GetProductParams,\n GetProductsParams,\n GetQuoteParams,\n CreateOrderParams,\n UpdateOrderParams,\n GetOrderParams,\n GetOrdersParams,\n ProcessOrderRefundParams,\n RequestOptions,\n} from \"../types/api\";\n\nexport const createEshopApi = (apiConfig: ApiConfig) => {\n return {\n \n async createProduct(params: CreateProductParams, options?: RequestOptions) {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post(\n `/v1/stores/${target_store_id}/products`,\n payload,\n options,\n );\n },\n\n async updateProduct(params: UpdateProductParams, options?: RequestOptions) {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put(\n `/v1/stores/${target_store_id}/products/${params.id}`,\n payload,\n options,\n );\n },\n\n async deleteProduct(params: DeleteProductParams, options?: RequestOptions) {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete(\n `/v1/stores/${target_store_id}/products/${params.id}`,\n options,\n );\n },\n\n async getProduct(params: GetProductParams, options?: RequestOptions) {\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(\n `/v1/stores/${target_store_id}/products/${identifier}`,\n options,\n );\n },\n\n async getProducts(params: GetProductsParams, options?: RequestOptions) {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get(\n `/v1/stores/${encodeURIComponent(target_store_id)}/products`,\n {\n ...options,\n params: queryParams,\n },\n );\n },\n\n async createOrder(params: CreateOrderParams, options?: RequestOptions) {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post(\n `/v1/stores/${target_store_id}/orders`,\n payload,\n options,\n );\n },\n\n async updateOrder(params: UpdateOrderParams, options?: RequestOptions) {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put(\n `/v1/stores/${target_store_id}/orders/${params.id}`,\n payload,\n options,\n );\n },\n\n async getOrder(params: GetOrderParams, options?: RequestOptions) {\n const target_store_id = params.store_id || apiConfig.storeId;\n \n return apiConfig.httpClient.get(\n `/v1/stores/${target_store_id}/orders/${params.id}`,\n options,\n );\n },\n\n async getOrders(params: GetOrdersParams, options?: RequestOptions) {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get(\n `/v1/stores/${target_store_id}/orders`,\n {\n ...options,\n params: queryParams,\n },\n );\n },\n\n async getQuote(params: GetQuoteParams, options?: RequestOptions) {\n const { location, ...rest } = params;\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 : undefined;\n return apiConfig.httpClient.post(\n `/v1/stores/${apiConfig.storeId}/orders/quote`,\n { ...rest, shipping_address, market: apiConfig.market },\n options,\n );\n },\n\n async processRefund(\n params: ProcessOrderRefundParams,\n options?: RequestOptions,\n ) {\n return apiConfig.httpClient.post(\n `/v1/stores/${apiConfig.storeId}/orders/${params.id}/refund`,\n { amount: params.amount },\n options,\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateBookingParams,\n UpdateBookingParams,\n GetBookingParams,\n SearchBookingsParams,\n CancelBookingItemParams,\n CreateServiceParams,\n UpdateServiceParams,\n DeleteServiceParams,\n GetServiceParams,\n GetServicesParams,\n CreateProviderParams,\n UpdateProviderParams,\n DeleteProviderParams,\n GetProviderParams,\n GetProvidersParams,\n CreateServiceProviderParams,\n UpdateServiceProviderParams,\n DeleteServiceProviderParams,\n FindServiceProvidersParams,\n GetBookingQuoteParams,\n GetAvailabilityParams,\n AvailabilityResponse,\n ProcessBookingRefundParams,\n RequestOptions,\n Slot,\n} from \"../types/api\";\n\nfunction groupCartToItems(cart: Slot[]) {\n const groups = new Map<string, { service_id: string; provider_id: string; slots: { from: number; to: number }[] }>();\n for (const s of cart) {\n const key = `${s.service_id}:${s.provider_id}`;\n if (!groups.has(key)) {\n groups.set(key, { service_id: s.service_id, provider_id: s.provider_id, slots: [] });\n }\n groups.get(key)!.slots.push({ from: s.from, to: s.to });\n }\n return [...groups.values()];\n}\n\nexport const createBookingApi = (apiConfig: ApiConfig) => {\n \n let cart: Slot[] = [];\n\n return {\n \n addToCart(slot: Slot) {\n cart.push(slot);\n },\n\n removeFromCart(slotId: string) {\n cart = cart.filter((s) => s.id !== slotId);\n },\n\n getCart(): Slot[] {\n return [...cart];\n },\n\n clearCart() {\n cart = [];\n },\n\n async createBooking(\n params: CreateBookingParams,\n options?: RequestOptions,\n ) {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n\n return apiConfig.httpClient.post(\n `/v1/stores/${target_store_id}/bookings`,\n { market: \"booking\", ...payload },\n options,\n );\n },\n\n async updateBooking(\n params: UpdateBookingParams,\n options?: RequestOptions,\n ) {\n const { id, ...payload } = params;\n return apiConfig.httpClient.put(\n `/v1/stores/${apiConfig.storeId}/bookings/${id}`,\n payload,\n options,\n );\n },\n\n async getBooking(\n params: GetBookingParams,\n options?: RequestOptions,\n ) {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get(\n `/v1/stores/${target_store_id}/bookings/${params.id}`,\n options,\n );\n },\n\n async searchBookings(\n params: SearchBookingsParams,\n options?: RequestOptions,\n ) {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get(\n `/v1/stores/${target_store_id}/bookings`,\n {\n ...options,\n params: queryParams,\n },\n );\n },\n\n async getQuote(\n params: GetBookingQuoteParams,\n options?: RequestOptions,\n ) {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n\n return apiConfig.httpClient.post(\n `/v1/stores/${target_store_id}/bookings/quote`,\n { market: \"booking\", ...payload },\n options,\n );\n },\n\n async processRefund(\n params: ProcessBookingRefundParams,\n options?: RequestOptions,\n ) {\n return apiConfig.httpClient.post(\n `/v1/stores/${apiConfig.storeId}/bookings/${params.id}/refund`,\n { amount: params.amount },\n options,\n );\n },\n\n async getAvailability(\n params: GetAvailabilityParams,\n options?: RequestOptions,\n ): Promise<AvailabilityResponse> {\n const { store_id, ...query } = params;\n const target_store_id = store_id || apiConfig.storeId;\n\n return apiConfig.httpClient.get(\n `/v1/stores/${target_store_id}/bookings/availability`,\n { ...options, params: query },\n ) as Promise<AvailabilityResponse>;\n },\n\n async createService(params: CreateServiceParams, options?: RequestOptions) {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post(\n `/v1/stores/${target_store_id}/services`,\n payload,\n options,\n );\n },\n\n async updateService(params: UpdateServiceParams, options?: RequestOptions) {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put(\n `/v1/stores/${target_store_id}/services/${params.id}`,\n payload,\n options,\n );\n },\n\n async deleteService(params: DeleteServiceParams, options?: RequestOptions) {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete(\n `/v1/stores/${target_store_id}/services/${params.id}`,\n options,\n );\n },\n\n async getService(params: GetServiceParams, options?: RequestOptions) {\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(\n `/v1/stores/${store_id}/services/${identifier}`,\n options,\n );\n },\n\n async getServices(params: GetServicesParams, options?: RequestOptions) {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get(\n `/v1/stores/${target_store_id}/services`,\n {\n ...options,\n params: queryParams,\n },\n );\n },\n\n async createProvider(\n params: CreateProviderParams,\n options?: RequestOptions,\n ) {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post(\n `/v1/stores/${target_store_id}/providers`,\n payload,\n options,\n );\n },\n\n async updateProvider(\n params: UpdateProviderParams,\n options?: RequestOptions,\n ) {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put(\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 ) {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete(\n `/v1/stores/${target_store_id}/providers/${params.id}`,\n options,\n );\n },\n\n async getProvider(params: GetProviderParams, options?: RequestOptions) {\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(\n `/v1/stores/${store_id}/providers/${identifier}`,\n options,\n );\n },\n\n async getProviders(params: GetProvidersParams, options?: RequestOptions) {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get(\n `/v1/stores/${target_store_id}/providers`,\n {\n ...options,\n params: queryParams,\n },\n );\n },\n\n async cancelBookingItem(\n params: CancelBookingItemParams,\n options?: RequestOptions,\n ) {\n const { store_id, booking_id, item_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post(\n `/v1/stores/${target_store_id}/bookings/${booking_id}/items/${item_id}/cancel`,\n payload,\n options,\n );\n },\n\n async findServiceProviders(\n params: FindServiceProvidersParams,\n options?: RequestOptions,\n ) {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get(\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 ) {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post(\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 ) {\n const { store_id, id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put(\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 ) {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete(\n `/v1/stores/${target_store_id}/service-providers/${params.id}`,\n options,\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateLocationParams,\n DeleteLocationParams,\n RequestOptions,\n UpdateLocationParams,\n} from \"../types/api\";\nimport type { Location } from \"../types\";\n\nexport interface LocationState {\n code: string;\n name: string;\n}\n\nexport interface LocationCountry {\n code: string;\n name: string;\n states: LocationState[];\n}\n\nexport interface GetCountriesResponse {\n items: LocationCountry[];\n cursor: string | null;\n}\n\nexport const createLocationApi = (apiConfig: ApiConfig) => {\n return {\n async getCountries(options?: RequestOptions): Promise<GetCountriesResponse> {\n return apiConfig.httpClient.get(`/v1/platform/countries`, options);\n },\n\n async getCountry(\n countryCode: string,\n options?: RequestOptions,\n ): Promise<LocationCountry> {\n return apiConfig.httpClient.get(\n `/v1/platform/countries/${countryCode}`,\n options,\n );\n },\n\n \n async list(options?: RequestOptions): Promise<Location[]> {\n return apiConfig.httpClient.get(\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(\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(\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(\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(\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(\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(\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(\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(\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(\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 CreateCustomerParams,\n UpdateCustomerParams,\n GetCustomerParams,\n FindCustomersParams,\n MergeCustomersParams,\n Customer,\n CreateAudienceParams,\n UpdateAudienceParams,\n GetAudienceParams,\n GetAudiencesParams,\n GetAudienceSubscribersParams,\n RemoveAudienceSubscriberParams,\n AddAudienceSubscriberParams,\n} from \"../types/api\";\n\nexport interface Activity {\n store_id: string;\n customer_id: string;\n type: string;\n payload: Record<string, any>;\n created_at: number;\n country_code?: string | null;\n city?: string | null;\n region?: string | null;\n timezone?: string | null;\n device_type?: string | null;\n browser?: string | null;\n os?: string | null;\n language?: string | null;\n session_idx?: number | null;\n}\n\nexport interface TimelineParams {\n customer_id: string;\n store_id?: string;\n limit?: number;\n cursor?: string;\n}\n\nexport const createActivityAdminApi = (apiConfig: ApiConfig) => ({\n async timeline(params: TimelineParams, options?: RequestOptions) {\n const store_id = params.store_id || apiConfig.storeId;\n const queryParams: Record<string, any> = { customer_id: params.customer_id };\n if (params.limit !== undefined) queryParams.limit = params.limit;\n if (params.cursor) queryParams.cursor = params.cursor;\n return apiConfig.httpClient.get(\n `/v1/stores/${store_id}/activities/timeline`,\n { ...options, params: queryParams },\n ) as Promise<{ items: Activity[]; cursor: string | null }>;\n },\n});\n\nexport const createCustomerApi = (apiConfig: ApiConfig) => {\n return {\n async create(params: CreateCustomerParams, options?: RequestOptions): Promise<Customer> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post(\n `/v1/stores/${store_id || apiConfig.storeId}/customers`,\n payload,\n options\n );\n },\n\n async get(params: GetCustomerParams, options?: RequestOptions): Promise<Customer> {\n return apiConfig.httpClient.get(\n `/v1/stores/${params.store_id || apiConfig.storeId}/customers/${params.id}`,\n options\n );\n },\n\n async find(params?: FindCustomersParams, options?: RequestOptions): Promise<{ items: Customer[]; cursor?: string }> {\n const store_id = params?.store_id || apiConfig.storeId;\n const queryParams: Record<string, any> = {};\n\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?.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(\n `/v1/stores/${store_id}/customers`,\n {\n ...options,\n params: queryParams,\n }\n );\n },\n\n async update(params: UpdateCustomerParams, options?: RequestOptions): Promise<Customer> {\n const { id, store_id, ...body } = params;\n return apiConfig.httpClient.put(\n `/v1/stores/${store_id || apiConfig.storeId}/customers/${id}`,\n body,\n options\n );\n },\n\n async merge(params: MergeCustomersParams, options?: RequestOptions): Promise<Customer> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post(\n `/v1/stores/${store_id}/customers/${params.target_id}/merge`,\n { source_id: params.source_id, store_id },\n options\n );\n },\n\n async revokeToken(params: { id: string; token_id: string; store_id?: string }, options?: RequestOptions) {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete(\n `/v1/stores/${store_id}/customers/${params.id}/sessions/${params.token_id}`,\n options\n );\n },\n\n async revokeAllTokens(params: { id: string; store_id?: string }, options?: RequestOptions) {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete(\n `/v1/stores/${store_id}/customers/${params.id}/sessions`,\n options\n );\n },\n\n \n audiences: {\n async create(params: CreateAudienceParams, options?: RequestOptions) {\n return apiConfig.httpClient.post(\n `/v1/stores/${apiConfig.storeId}/audiences`,\n params,\n options,\n );\n },\n\n async update(params: UpdateAudienceParams, options?: RequestOptions) {\n return apiConfig.httpClient.put(\n `/v1/stores/${apiConfig.storeId}/audiences/${params.id}`,\n params,\n options,\n );\n },\n\n async get(params: GetAudienceParams, options?: RequestOptions) {\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.key) {\n identifier = `${apiConfig.storeId}:${params.key}`;\n } else {\n throw new Error(\"GetAudienceParams requires id or key\");\n }\n return apiConfig.httpClient.get(\n `/v1/stores/${apiConfig.storeId}/audiences/${identifier}`,\n options,\n );\n },\n\n async find(params: GetAudiencesParams, options?: RequestOptions) {\n return apiConfig.httpClient.get(\n `/v1/stores/${apiConfig.storeId}/audiences`,\n { ...options, params },\n );\n },\n\n async getSubscribers(params: GetAudienceSubscribersParams, options?: RequestOptions) {\n return apiConfig.httpClient.get(\n `/v1/stores/${apiConfig.storeId}/audiences/${params.id}/subscribers`,\n {\n ...options,\n params: { limit: params.limit, cursor: params.cursor },\n },\n );\n },\n\n async addSubscriber(params: AddAudienceSubscriberParams, options?: RequestOptions) {\n return apiConfig.httpClient.post(\n `/v1/stores/${apiConfig.storeId}/audiences/${params.id}/subscribers`,\n { customer_id: params.customer_id },\n options,\n );\n },\n\n async removeSubscriber(params: RemoveAudienceSubscriberParams, options?: RequestOptions) {\n return apiConfig.httpClient.delete(\n `/v1/stores/${apiConfig.storeId}/audiences/${params.id}/subscribers/${params.customer_id}`,\n options,\n );\n },\n },\n\n activity: createActivityAdminApi(apiConfig),\n };\n};\n","import type { ApiConfig } from '../index';\nimport type {\n\tCreateWorkflowParams,\n\tUpdateWorkflowParams,\n\tDeleteWorkflowParams,\n\tGetWorkflowParams,\n\tGetWorkflowsParams,\n\tTriggerWorkflowParams,\n\tGetWorkflowExecutionsParams,\n\tGetWorkflowExecutionParams,\n\tRequestOptions\n} from '../types/api';\n\nexport const createWorkflowApi = (apiConfig: ApiConfig) => {\n\treturn {\n\t\tasync createWorkflow(params: CreateWorkflowParams, options?: RequestOptions) {\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(\n\t\t\t\t`/v1/stores/${target_store_id}/workflows`,\n\t\t\t\t{ ...payload, store_id: target_store_id },\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync updateWorkflow(params: UpdateWorkflowParams, options?: RequestOptions) {\n\t\t\tconst { store_id, id, ...payload } = params;\n\t\t\tconst target_store_id = store_id || apiConfig.storeId;\n\t\t\treturn apiConfig.httpClient.put(\n\t\t\t\t`/v1/stores/${target_store_id}/workflows/${id}`,\n\t\t\t\tpayload,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync deleteWorkflow(params: DeleteWorkflowParams, options?: RequestOptions) {\n\t\t\tconst store_id = params.store_id || apiConfig.storeId;\n\t\t\treturn apiConfig.httpClient.delete(\n\t\t\t\t`/v1/stores/${store_id}/workflows/${params.id}`,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync getWorkflow(params: GetWorkflowParams, options?: RequestOptions) {\n\t\t\tconst store_id = params.store_id || apiConfig.storeId;\n\t\t\treturn apiConfig.httpClient.get(\n\t\t\t\t`/v1/stores/${store_id}/workflows/${params.id}`,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync getWorkflows(params?: GetWorkflowsParams, options?: RequestOptions) {\n\t\t\tconst store_id = params?.store_id || apiConfig.storeId;\n\t\t\t\n\t\t\tconst { store_id: _, ...queryParams } = params || {};\n\t\t\treturn apiConfig.httpClient.get(`/v1/stores/${store_id}/workflows`, {\n\t\t\t\t...options,\n\t\t\t\tparams: Object.keys(queryParams).length > 0 ? queryParams : undefined\n\t\t\t});\n\t\t},\n\n\t\tasync triggerWorkflow(params: TriggerWorkflowParams, options?: RequestOptions) {\n\t\t\tconst { secret, ...payload } = params;\n\t\t\treturn apiConfig.httpClient.post(`/v1/workflows/trigger/${secret}`, payload, options);\n\t\t},\n\n\t\tasync getWorkflowExecutions(params: GetWorkflowExecutionsParams, options?: RequestOptions) {\n\t\t\tconst store_id = params.store_id || apiConfig.storeId;\n\t\t\tconst { store_id: _, workflow_id, ...queryParams } = params;\n\t\t\treturn apiConfig.httpClient.get(\n\t\t\t\t`/v1/stores/${store_id}/workflows/${workflow_id}/executions`,\n\t\t\t\t{\n\t\t\t\t\t...options,\n\t\t\t\t\tparams: Object.keys(queryParams).length > 0 ? queryParams : undefined\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\t\tasync getWorkflowExecution(params: GetWorkflowExecutionParams, options?: RequestOptions) {\n\t\t\tconst store_id = params.store_id || apiConfig.storeId;\n\t\t\treturn apiConfig.httpClient.get(\n\t\t\t\t`/v1/stores/${store_id}/workflows/${params.workflow_id}/executions/${params.execution_id}`,\n\t\t\t\toptions\n\t\t\t);\n\t\t}\n\t};\n};\n","import type { ApiConfig } from '../index';\nimport type { RequestOptions } from '../types/api';\n\nexport const createPlatformApi = (apiConfig: ApiConfig) => {\n\treturn {\n\t\tasync getCurrencies(options?: RequestOptions): Promise<string[]> {\n\t\t\treturn apiConfig.httpClient.get('/v1/platform/currencies', options);\n\t\t},\n\t\tasync getIntegrationServices(options?: RequestOptions): Promise<any[]> {\n\t\t\treturn apiConfig.httpClient.get('/v1/platform/integration-services', options);\n\t\t},\n\t\tasync getWebhookEvents(options?: RequestOptions): Promise<{ data: string[] }> {\n\t\t\treturn apiConfig.httpClient.get('/v1/platform/events', 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(\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(\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\tCreateAgentParams,\n\tUpdateAgentParams,\n\tDeleteAgentParams,\n\tGetAgentParams,\n\tGetAgentsParams,\n\tRunAgentParams,\n\tGetAgentChatsParams,\n\tGetStoreChatsParams,\n\tGetAgentChatParams,\n\tUpdateAgentChatParams,\n\tRateAgentChatParams,\n\tRequestOptions\n} from '../types/api';\n\nexport const createAgentApi = (apiConfig: ApiConfig) => {\n\treturn {\n\t\tasync createAgent(params: CreateAgentParams, options?: RequestOptions) {\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(\n\t\t\t\t`/v1/stores/${target_store_id}/agents`,\n\t\t\t\t{ ...payload, store_id: target_store_id },\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync updateAgent(params: UpdateAgentParams, options?: RequestOptions) {\n\t\t\tconst { store_id, id, ...payload } = params;\n\t\t\tconst target_store_id = store_id || apiConfig.storeId;\n\t\t\treturn apiConfig.httpClient.put(\n\t\t\t\t`/v1/stores/${target_store_id}/agents/${id}`,\n\t\t\t\tpayload,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync deleteAgent(params: DeleteAgentParams, options?: RequestOptions) {\n\t\t\tconst store_id = params.store_id || apiConfig.storeId;\n\t\t\treturn apiConfig.httpClient.delete(\n\t\t\t\t`/v1/stores/${store_id}/agents/${params.id}`,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync getAgent(params: GetAgentParams, options?: RequestOptions) {\n\t\t\tconst store_id = params.store_id || apiConfig.storeId;\n\t\t\treturn apiConfig.httpClient.get(\n\t\t\t\t`/v1/stores/${store_id}/agents/${params.id}`,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync getAgents(params?: GetAgentsParams, options?: RequestOptions) {\n\t\t\tconst store_id = params?.store_id || apiConfig.storeId;\n\t\t\tconst { store_id: _, ...queryParams } = params || {};\n\t\t\treturn apiConfig.httpClient.get(`/v1/stores/${store_id}/agents`, {\n\t\t\t\t...options,\n\t\t\t\tparams: Object.keys(queryParams).length > 0 ? queryParams : undefined\n\t\t\t});\n\t\t},\n\n\t\tasync sendMessage(params: RunAgentParams, options?: RequestOptions) {\n\t\t\tconst store_id = params.store_id || apiConfig.storeId;\n\t\t\tconst body: Record<string, any> = { message: params.message };\n\t\t\tif (params.chat_id) body.chat_id = params.chat_id;\n\t\t\tif (params.direct) body.direct = params.direct;\n\t\t\treturn apiConfig.httpClient.post(\n\t\t\t\t`/v1/stores/${store_id}/agents/${params.id}/chats/messages`,\n\t\t\t\tbody,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync getChats(params: GetAgentChatsParams, options?: RequestOptions) {\n\t\t\tconst store_id = params.store_id || apiConfig.storeId;\n\t\t\tconst queryParams: Record<string, string> = {};\n\t\t\tif (params.limit) queryParams.limit = String(params.limit);\n\t\t\tif (params.cursor) queryParams.cursor = params.cursor;\n\t\t\treturn apiConfig.httpClient.get(\n\t\t\t\t`/v1/stores/${store_id}/agents/${params.id}/chats`,\n\t\t\t\t{\n\t\t\t\t\t...options,\n\t\t\t\t\tparams: Object.keys(queryParams).length > 0 ? queryParams : undefined\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\t\tasync getChat(params: GetAgentChatParams, options?: RequestOptions) {\n\t\t\tconst store_id = params.store_id || apiConfig.storeId;\n\t\t\treturn apiConfig.httpClient.get(\n\t\t\t\t`/v1/stores/${store_id}/agents/${params.id}/chats/${params.chat_id}`,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync updateChat(params: UpdateAgentChatParams, options?: RequestOptions) {\n\t\t\tconst store_id = params.store_id || apiConfig.storeId;\n\t\t\treturn apiConfig.httpClient.put(\n\t\t\t\t`/v1/stores/${store_id}/agents/${params.id}/chats/${params.chat_id}`,\n\t\t\t\t{ status: params.status },\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync rateChat(params: RateAgentChatParams, options?: RequestOptions) {\n\t\t\tconst store_id = params.store_id || apiConfig.storeId;\n\t\t\tconst body: Record<string, any> = { rating: params.rating };\n\t\t\tif (params.comment) body.comment = params.comment;\n\t\t\treturn apiConfig.httpClient.post(\n\t\t\t\t`/v1/stores/${store_id}/agents/${params.id}/chats/${params.chat_id}/rate`,\n\t\t\t\tbody,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync getStoreChats(params: GetStoreChatsParams, options?: RequestOptions) {\n\t\t\tconst store_id = params.store_id || apiConfig.storeId;\n\t\t\tconst { store_id: _, ...queryParams } = params;\n\t\t\treturn apiConfig.httpClient.get(`/v1/stores/${store_id}/chats`, {\n\t\t\t\t...options,\n\t\t\t\tparams: Object.keys(queryParams).length > 0 ? queryParams : undefined\n\t\t\t});\n\t\t},\n\n\t\tasync getChatMessages(params: GetAgentChatParams & { limit?: number }, options?: RequestOptions) {\n\t\t\tconst store_id = params.store_id || apiConfig.storeId;\n\t\t\tconst queryParams: Record<string, string> = {};\n\t\t\tif (params.limit) queryParams.limit = String(params.limit);\n\t\t\treturn apiConfig.httpClient.get(\n\t\t\t\t`/v1/stores/${store_id}/agents/${params.id}/chats/${params.chat_id}/messages`,\n\t\t\t\t{\n\t\t\t\t\t...options,\n\t\t\t\t\tparams: Object.keys(queryParams).length > 0 ? queryParams : undefined\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\n\t};\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateEmailTemplateParams,\n UpdateEmailTemplateParams,\n DeleteEmailTemplateParams,\n GetEmailTemplateParams,\n GetEmailTemplatesParams,\n RequestOptions,\n} from \"../types/api\";\n\nexport const createEmailTemplateApi = (apiConfig: ApiConfig) => {\n return {\n async createEmailTemplate(params: CreateEmailTemplateParams, options?: RequestOptions) {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post(\n `/v1/stores/${target_store_id}/email-templates`,\n payload,\n options\n );\n },\n\n async updateEmailTemplate(params: UpdateEmailTemplateParams, options?: RequestOptions) {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put(\n `/v1/stores/${target_store_id}/email-templates/${params.id}`,\n payload,\n options\n );\n },\n\n async deleteEmailTemplate(params: DeleteEmailTemplateParams, options?: RequestOptions) {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete(\n `/v1/stores/${target_store_id}/email-templates/${params.id}`,\n options\n );\n },\n\n async getEmailTemplate(params: GetEmailTemplateParams, options?: RequestOptions) {\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(\n `/v1/stores/${target_store_id}/email-templates/${identifier}`,\n options\n );\n },\n\n async getEmailTemplates(params: GetEmailTemplatesParams, options?: RequestOptions) {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get(\n `/v1/stores/${target_store_id}/email-templates`,\n {\n ...options,\n params: queryParams,\n }\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\";\n\nexport const createFormApi = (apiConfig: ApiConfig) => {\n return {\n async createForm(params: CreateFormParams, options?: RequestOptions) {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post(\n `/v1/stores/${target_store_id}/forms`,\n payload,\n options\n );\n },\n\n async updateForm(params: UpdateFormParams, options?: RequestOptions) {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put(\n `/v1/stores/${target_store_id}/forms/${params.id}`,\n payload,\n options\n );\n },\n\n async deleteForm(params: DeleteFormParams, options?: RequestOptions) {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete(\n `/v1/stores/${target_store_id}/forms/${params.id}`,\n options\n );\n },\n\n async getForm(params: GetFormParams, options?: RequestOptions) {\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(\n `/v1/stores/${target_store_id}/forms/${identifier}`,\n options\n );\n },\n\n async getForms(params: GetFormsParams, options?: RequestOptions) {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get(\n `/v1/stores/${target_store_id}/forms`,\n {\n ...options,\n params: queryParams,\n }\n );\n },\n\n async submit(params: SubmitFormParams, options?: RequestOptions) {\n const { store_id, form_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post(\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) {\n const { store_id, form_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get(\n `/v1/stores/${target_store_id}/forms/${form_id}/submissions`,\n {\n ...options,\n params: { ...queryParams, form_id, store_id: target_store_id },\n }\n );\n },\n\n async getSubmission(params: GetFormSubmissionParams, options?: RequestOptions) {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get(\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) {\n const { store_id, form_id, id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put(\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\";\n\nexport const createTaxonomyApi = (apiConfig: ApiConfig) => {\n return {\n async createTaxonomy(params: CreateTaxonomyParams, options?: RequestOptions) {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post(\n `/v1/stores/${target_store_id}/taxonomies`,\n payload,\n options\n );\n },\n\n async updateTaxonomy(params: UpdateTaxonomyParams, options?: RequestOptions) {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put(\n `/v1/stores/${target_store_id}/taxonomies/${params.id}`,\n payload,\n options\n );\n },\n\n async deleteTaxonomy(params: DeleteTaxonomyParams, options?: RequestOptions) {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete(\n `/v1/stores/${target_store_id}/taxonomies/${params.id}`,\n options\n );\n },\n\n async getTaxonomy(params: GetTaxonomyParams, options?: RequestOptions) {\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(\n `/v1/stores/${target_store_id}/taxonomies/${identifier}`,\n options\n );\n },\n\n async getTaxonomies(params: GetTaxonomiesParams, options?: RequestOptions) {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get(\n `/v1/stores/${target_store_id}/taxonomies`,\n {\n ...options,\n params: queryParams,\n }\n );\n },\n\n async getTaxonomyChildren(params: GetTaxonomyChildrenParams, options?: RequestOptions) {\n const { id, store_id } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get(\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 type EntityKind =\n | \"product\"\n | \"service\"\n | \"provider\"\n | \"node\"\n | \"customer\"\n | \"audience\"\n | \"agent\"\n | \"workflow\"\n | \"promo_code\"\n | \"email_template\"\n | \"form\"\n | \"taxonomy\"\n | \"media\"\n | \"order\"\n | \"booking\";\n\nexport type Granularity =\n | \"hour\"\n | \"day\"\n | \"week\"\n | \"month\"\n | { minutes: 5 | 10 | 15 | 30 };\n\nexport type Measure =\n | \"count\"\n | \"uniq_customers\"\n | \"orders_created\"\n | \"bookings_created\"\n | \"new_customers\"\n | \"form_submissions\"\n | { entity_state: { entity: EntityKind; status: string } };\n\nexport type Dimension =\n | \"country_code\"\n | \"city\"\n | \"device_type\"\n | \"browser\"\n | \"os\"\n | \"language\"\n | \"activity_type\"\n | \"entity\"\n | \"entity_status\"\n | { time_bucket: { granularity: Granularity } };\n\nexport type FilterField =\n | \"type\"\n | \"country_code\"\n | \"device_type\"\n | \"browser\"\n | \"os\"\n | \"language\"\n | \"entity\"\n | \"action\"\n | \"customer_id\";\n\nexport type FilterOp = \"eq\" | \"neq\" | \"in\" | \"not_in\" | \"contains\";\n\nexport interface Filter {\n field: FilterField;\n op: FilterOp;\n values: string[];\n}\n\nexport type TimeUnit = \"hour\" | \"day\" | \"week\" | \"month\";\n\nexport type TimeRange =\n | { from: number; unit: TimeUnit; to?: number }\n | { from: number; to: number };\n\nexport interface OrderBy {\n field: string;\n dir: \"asc\" | \"desc\";\n}\n\nexport interface AnalyticsQuery {\n measures: Measure[];\n dimensions?: Dimension[];\n filters?: Filter[];\n time_range: TimeRange;\n granularity?: Granularity;\n order_by?: OrderBy[];\n limit?: number;\n}\n\nexport interface AnalyticsRow {\n [key: string]: string | number | null;\n}\n\nexport interface AnalyticsQueryResponse {\n rows: AnalyticsRow[];\n meta: {\n row_count: number;\n execution_ms: number;\n };\n}\n\nexport const createAnalyticsApi = (apiConfig: ApiConfig) => {\n return {\n async query(\n spec: AnalyticsQuery,\n options?: RequestOptions & { store_id?: string },\n ): Promise<AnalyticsQueryResponse> {\n const store_id = options?.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post(\n `/v1/stores/${store_id}/analytics/query`,\n spec,\n options,\n );\n },\n };\n};\n","import type { BookingPayment, OrderPayment, Price } from '../types';\n\ntype AnyPayment = Pick<BookingPayment, 'total' | 'currency'> | 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","\nexport type {\n ApiResponse,\n EshopCartItem,\n EshopStoreState,\n BookingStoreState,\n BookingCartItem,\n Store,\n Webhook,\n WebhookEventSubscription,\n Integration,\n IntegrationProvider,\n Block,\n Price,\n BookingPayment,\n BookingPaymentTax,\n BookingPaymentTaxLine,\n BookingPaymentPromoCode,\n BookingPaymentProvider,\n BookingPaymentRefund,\n BookingQuote,\n OrderPayment,\n OrderPaymentTax,\n OrderPaymentTaxLine,\n OrderPaymentPromoCode,\n OrderPaymentProvider,\n OrderPaymentRefund,\n OrderQuote,\n StoreSubscription,\n StoreSubscriptionPayment,\n StoreSubscriptionProvider,\n StoreSubscriptionStatus,\n StoreSubscriptionSource,\n AudienceSubscription,\n AudienceSubscriptionPayment,\n AudienceSubscriptionProvider,\n AudienceSubscriptionStatus,\n AudienceSubscriptionSource,\n PaymentMethod,\n ShippingMethod,\n ShippingWeightTier,\n Zone,\n Market,\n\n Address,\n GeoLocation,\n ZoneLocation,\n Location,\n PromoCodeValidation,\n PaginatedResponse,\n Language,\n Access,\n Media,\n MediaResolution,\n ProviderWithTimeline,\n Node,\n Workflow,\n WorkflowNode,\n WorkflowEdge,\n WorkflowTriggerNode,\n WorkflowHttpNode,\n WorkflowSwitchNode,\n WorkflowTransformNode,\n WorkflowHttpMethod,\n WorkflowExecution,\n ExecutionStatus,\n NodeResult,\n Audience,\n AudienceAccessResponse,\n AudienceSubscribeResponse,\n AudienceSubscriber,\n Event,\n EventAction,\n \n ShippingStatus,\n OrderShipping,\n ShippingRate,\n ShippingAddress,\n Parcel,\n PurchaseLabelResult,\n ShipResult,\n ShipmentLine,\n Shipment,\n CustomsItem,\n CustomsDeclaration,\n\n GeoLocationBlock,\n\n BookingServiceStatus,\n BookingProviderStatus,\n ProductStatus,\n CustomerStatus,\n AudienceStatus,\n AgentChatStatus,\n WorkflowStatus,\n PromoCodeStatus,\n NodeStatus,\n EmailTemplateStatus,\n FormStatus,\n TaxonomyStatus,\n} from \"./types\";\n\nexport { PaymentMethodType } from \"./types\";\n\nexport type {\n GetAvailabilityParams,\n AvailabilitySlot,\n DaySlots,\n ProviderAvailability,\n AvailabilityResponse,\n Slot,\n SystemTemplateKey,\n \n GetShippingRatesParams,\n ShipParams,\n \n CreateAgentParams,\n UpdateAgentParams,\n GetAgentParams,\n GetAgentsParams,\n AgentStatus,\n} from \"./types/api\";\n\nexport type {\n LocationState,\n LocationCountry,\n GetCountriesResponse,\n} from \"./api/location\";\n\nexport type {\n AnalyticsQuery,\n AnalyticsQueryResponse,\n AnalyticsRow,\n Measure,\n Dimension,\n Filter,\n FilterField,\n FilterOp,\n Granularity,\n EntityKind,\n TimeRange,\n TimeUnit,\n OrderBy,\n} from \"./api/analytics\";\n\nexport type {\n CreateLocationParams,\n UpdateLocationParams,\n DeleteLocationParams,\n} from \"./types/api\";\n\nexport type {\n Activity,\n TrackParams,\n CommonActivityType,\n} from \"./api/storefront\";\nexport { COMMON_ACTIVITY_TYPES } from \"./api/storefront\";\n\nexport type { TimelineParams } from \"./api/crm\";\n\nexport const SDK_VERSION = \"0.7.95\";\nexport const SUPPORTED_FRAMEWORKS = [\n \"astro\",\n \"react\",\n \"vue\",\n \"svelte\",\n \"vanilla\",\n] as const;\n\nexport interface ApiConfig {\n httpClient: any;\n storeId: string;\n baseUrl: string;\n market: string;\n locale: string;\n setToken: (tokens: any) => void;\n getToken: () => Promise<any> | any;\n}\n\nimport {\n createHttpClient,\n defaultGetToken,\n defaultSetToken,\n defaultLogout,\n defaultIsAuthenticated,\n type HttpClientConfig,\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 { createBookingApi } from \"./api/booking\";\nimport { createLocationApi } from \"./api/location\";\nimport { createMarketApi } from \"./api/market\";\nimport { createCustomerApi } from \"./api/crm\";\nimport { createWorkflowApi } from \"./api/workflow\";\nimport { createPlatformApi } from \"./api/platform\";\nimport { createShippingApi } from \"./api/shipping\";\nimport { createAgentApi } from \"./api/agent\";\nimport { createEmailTemplateApi } from \"./api/emailTemplate\";\nimport { createFormApi } from \"./api/form\";\nimport { createTaxonomyApi } from \"./api/taxonomy\";\nimport { createAnalyticsApi } from \"./api/analytics\";\nimport { createStorefrontApi } from \"./api/storefront\";\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\nexport function createAdmin(\n config: HttpClientConfig & {\n market: string;\n locale?: string;\n }\n) {\n const locale = config.locale || \"en\";\n const getToken = config.getToken || defaultGetToken;\n const setToken = config.setToken || defaultSetToken;\n const logout = config.logout || defaultLogout;\n const isAuthenticated = config.isAuthenticated || defaultIsAuthenticated;\n\n const httpClient = createHttpClient({ ...config, getToken, setToken, logout });\n\n const apiConfig: ApiConfig = {\n httpClient,\n storeId: config.storeId,\n baseUrl: config.baseUrl,\n market: config.market,\n locale,\n setToken,\n getToken,\n };\n\n const accountApi = createAccountApi(apiConfig);\n const authApi = createAuthApi(apiConfig);\n const storeApi = createStoreApi(apiConfig);\n const platformApi = createPlatformApi(apiConfig);\n\n const cmsApi = createCmsApi(apiConfig);\n const eshopApi = createEshopApi(apiConfig);\n const bookingApi = createBookingApi(apiConfig);\n const crmApi = createCustomerApi(apiConfig);\n const locationApi = createLocationApi(apiConfig);\n const marketApi = createMarketApi(apiConfig);\n const agentApi = createAgentApi(apiConfig);\n const workflowApi = createWorkflowApi(apiConfig);\n const formApi = createFormApi(apiConfig);\n const taxonomyApi = createTaxonomyApi(apiConfig);\n const emailTemplateApi = createEmailTemplateApi(apiConfig);\n const analyticsApi = createAnalyticsApi(apiConfig);\n\n const sdk = {\n auth: authApi,\n account: accountApi,\n store: {\n ...storeApi,\n location: locationApi,\n market: marketApi,\n },\n media: createMediaApi(apiConfig),\n notification: createNotificationApi(apiConfig),\n promoCode: createPromoCodeApi(apiConfig),\n platform: platformApi,\n shipping: createShippingApi(apiConfig),\n cms: {\n node: {\n create: cmsApi.createNode,\n update: cmsApi.updateNode,\n delete: cmsApi.deleteNode,\n get: cmsApi.getNode,\n find: cmsApi.getNodes,\n getChildren: cmsApi.getNodeChildren,\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 },\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 create: eshopApi.createOrder,\n update: eshopApi.updateOrder,\n get: eshopApi.getOrder,\n find: eshopApi.getOrders,\n getQuote: eshopApi.getQuote,\n processRefund: eshopApi.processRefund,\n },\n },\n booking: {\n addToCart: bookingApi.addToCart,\n removeFromCart: bookingApi.removeFromCart,\n getCart: bookingApi.getCart,\n clearCart: bookingApi.clearCart,\n create: bookingApi.createBooking,\n update: bookingApi.updateBooking,\n get: bookingApi.getBooking,\n find: bookingApi.searchBookings,\n getQuote: bookingApi.getQuote,\n processRefund: bookingApi.processRefund,\n getAvailability: bookingApi.getAvailability,\n cancelItem: bookingApi.cancelBookingItem,\n service: {\n create: bookingApi.createService,\n update: bookingApi.updateService,\n delete: bookingApi.deleteService,\n get: bookingApi.getService,\n find: bookingApi.getServices,\n findProviders: bookingApi.findServiceProviders,\n createProvider: bookingApi.createServiceProvider,\n updateProvider: bookingApi.updateServiceProvider,\n deleteProvider: bookingApi.deleteServiceProvider,\n },\n provider: {\n create: bookingApi.createProvider,\n update: bookingApi.updateProvider,\n delete: bookingApi.deleteProvider,\n get: bookingApi.getProvider,\n find: bookingApi.getProviders,\n },\n },\n crm: {\n customer: {\n create: crmApi.create,\n get: crmApi.get,\n find: crmApi.find,\n update: crmApi.update,\n merge: crmApi.merge,\n revokeToken: crmApi.revokeToken,\n revokeAllTokens: crmApi.revokeAllTokens,\n },\n audience: {\n create: crmApi.audiences.create,\n update: crmApi.audiences.update,\n get: crmApi.audiences.get,\n find: crmApi.audiences.find,\n getSubscribers: crmApi.audiences.getSubscribers,\n addSubscriber: crmApi.audiences.addSubscriber,\n removeSubscriber: crmApi.audiences.removeSubscriber,\n },\n activity: crmApi.activity,\n },\n automation: {\n agent: {\n create: agentApi.createAgent,\n update: agentApi.updateAgent,\n delete: agentApi.deleteAgent,\n get: agentApi.getAgent,\n find: agentApi.getAgents,\n sendMessage: agentApi.sendMessage,\n getChats: agentApi.getChats,\n getChat: agentApi.getChat,\n updateChat: agentApi.updateChat,\n rateChat: agentApi.rateChat,\n getStoreChats: agentApi.getStoreChats,\n getChatMessages: agentApi.getChatMessages,\n },\n workflow: {\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 },\n },\n\n analytics: {\n query: analyticsApi.query,\n },\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 isAuthenticated,\n logout,\n setToken,\n\n extractBlockValues,\n\n utils: createUtilitySurface(apiConfig),\n\n };\n\n return sdk;\n}\n\nexport interface StorefrontSession {\n customer: any;\n store: any;\n market: any;\n}\n\nexport type StorefrontSessionListener = (session: StorefrontSession | null) => void;\n\nexport function createStorefront(\n config: HttpClientConfig & {\n market?: string;\n locale?: string;\n }\n) {\n const locale = config.locale || \"en\";\n const market = config.market || \"\";\n const getToken = config.getToken || defaultGetToken;\n const setToken = config.setToken || defaultSetToken;\n const logout = config.logout || defaultLogout;\n const isAuthenticated = config.isAuthenticated || defaultIsAuthenticated;\n let refresh_store_id = config.storeId;\n\n const httpClient = createHttpClient({\n ...config,\n getToken,\n setToken,\n logout,\n refreshPath: () => `/v1/storefront/${refresh_store_id}/customers/auth/refresh`,\n });\n\n const apiConfig: ApiConfig = {\n httpClient,\n storeId: config.storeId,\n baseUrl: config.baseUrl,\n market,\n locale,\n setToken,\n getToken,\n };\n\n const storefrontApi = createStorefrontApi(apiConfig);\n\n let sessionPromise: Promise<StorefrontSession> | null = null;\n let currentSession: StorefrontSession | null = null;\n const sessionListeners = new Set<StorefrontSessionListener>();\n const customerApi = storefrontApi.crm.customer;\n\n function emitSessionChange(session: StorefrontSession | null) {\n for (const listener of sessionListeners) {\n Promise.resolve()\n .then(() => listener(session))\n .catch(() => {});\n }\n }\n\n function setCurrentSessionFromResult(result: any) {\n const s = {\n customer: result.customer,\n store: result.store,\n market: result.market || null,\n };\n currentSession = s;\n emitSessionChange(s);\n return s;\n }\n\n function clearSession() {\n sessionPromise = null;\n currentSession = null;\n emitSessionChange(null);\n }\n\n async function invalidateAfterAuth<T>(promise: Promise<T>) {\n const result = await promise;\n clearSession();\n return result;\n }\n\n function session(market?: string): Promise<StorefrontSession> {\n if (market !== undefined) apiConfig.market = market;\n if (sessionPromise) return sessionPromise;\n\n sessionPromise = (async (): Promise<StorefrontSession> => {\n try {\n const result = await customerApi.session({\n market: apiConfig.market,\n });\n return setCurrentSessionFromResult(result);\n } catch (err: any) {\n const status = err?.statusCode || err?.status || err?.response?.status;\n if (status === 401) {\n currentSession = null;\n emitSessionChange(null);\n await setToken({ access_token: \"\", refresh_token: \"\", access_expires_at: 0 });\n const result = await customerApi.session({\n market: apiConfig.market,\n });\n return setCurrentSessionFromResult(result);\n }\n throw err;\n }\n })().catch((err) => {\n sessionPromise = null;\n throw err;\n });\n\n return sessionPromise;\n }\n\n function setMarket(key: string) {\n apiConfig.market = key;\n clearSession();\n }\n\n function onSessionChange(listener: StorefrontSessionListener) {\n sessionListeners.add(listener);\n if (currentSession) {\n Promise.resolve()\n .then(() => listener(currentSession))\n .catch(() => {});\n }\n return () => {\n sessionListeners.delete(listener);\n };\n }\n\n function getSession(): StorefrontSession | null {\n return currentSession;\n }\n\n function logoutAndClearSession() {\n clearSession();\n return logout();\n }\n\n function setTokenAndClearSession(tokens: any) {\n setToken(tokens);\n clearSession();\n }\n\n const crm = {\n ...storefrontApi.crm,\n customer: {\n ...customerApi,\n async session(params?: Parameters<typeof customerApi.session>[0], options?: Parameters<typeof customerApi.session>[1]) {\n const result = await customerApi.session(params, options);\n setCurrentSessionFromResult(result);\n return result;\n },\n connect: (params: any, options?: any) =>\n invalidateAfterAuth(customerApi.connect(params, options)),\n verify: (params: any, options?: any) =>\n invalidateAfterAuth(customerApi.verify(params, options)),\n },\n };\n\n return {\n session,\n getSession,\n onSessionChange,\n store: storefrontApi.store,\n cms: storefrontApi.cms,\n eshop: storefrontApi.eshop,\n booking: storefrontApi.booking,\n crm,\n activity: storefrontApi.activity,\n automation: storefrontApi.automation,\n setStoreId: (storeId: string) => {\n refresh_store_id = storeId;\n apiConfig.storeId = storeId;\n clearSession();\n },\n getStoreId: () => apiConfig.storeId,\n setMarket,\n getMarket: () => apiConfig.market,\n setLocale: (locale: string) => {\n apiConfig.locale = locale;\n },\n getLocale: () => apiConfig.locale,\n isAuthenticated,\n logout: logoutAndClearSession,\n setToken: setTokenAndClearSession,\n extractBlockValues,\n utils: createUtilitySurface(apiConfig),\n };\n}\n\nexport type { HttpClientConfig } from \"./services/createHttpClient\";\n"]}
1
+ {"version":3,"sources":["../src/types/index.ts","../src/utils/blocks.ts","../src/api/storefront.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/booking.ts","../src/api/location.ts","../src/api/market.ts","../src/api/crm.ts","../src/api/workflow.ts","../src/api/platform.ts","../src/api/shipping.ts","../src/api/agent.ts","../src/api/emailTemplate.ts","../src/api/form.ts","../src/api/taxonomy.ts","../src/api/analytics.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\tCash = \"cash\",\n\tCreditCard = \"credit_card\",\n}\n\nexport interface PaymentTaxLine {\n\trate_bps: number;\n\tamount: number;\n\tlabel?: string;\n\tscope?: string;\n}\n\nexport interface BookingPaymentTax {\n\tamount: number;\n\tmode_snapshot?: string;\n\trate_bps: number;\n\tlines: BookingPaymentTaxLine[];\n}\n\nexport interface BookingPaymentTaxLine {\n\trate_bps: number;\n\tamount: number;\n\tlabel?: string;\n\tscope?: string;\n}\n\nexport interface BookingPaymentPromoCode {\n\tid: string;\n\tcode: string;\n\ttype: string;\n\tvalue: number;\n}\n\n\nexport type BookingPaymentProvider = {\n\ttype: 'stripe';\n\tcustomer_id: string;\n\tpayment_intent_id?: string;\n};\n\nexport interface BookingPaymentRefund {\n\tid: string;\n\ttotal: number;\n\tprovider_refund_id?: string;\n\tstatus: string;\n\tcreated_at: number;\n}\n\nexport interface BookingPayment {\n\tcurrency: string;\n\tmarket: string;\n\tsubtotal: number;\n\tdiscount: number;\n\ttotal: number;\n\tpaid: number;\n\ttax?: BookingPaymentTax;\n\tpromo_code?: BookingPaymentPromoCode;\n\tprovider?: BookingPaymentProvider;\n\trefunds: BookingPaymentRefund[];\n\tpayment_method_id?: string;\n\tmethod_type: PaymentMethodType;\n}\n\nexport interface OrderPaymentTax {\n\tamount: number;\n\tmode_snapshot?: string;\n\trate_bps: number;\n\tlines: OrderPaymentTaxLine[];\n}\n\nexport interface OrderPaymentTaxLine {\n\trate_bps: number;\n\tamount: number;\n\tlabel?: string;\n\tscope?: string;\n}\n\nexport interface OrderPaymentPromoCode {\n\tid: string;\n\tcode: string;\n\ttype: string;\n\tvalue: number;\n}\n\n\nexport type OrderPaymentProvider = {\n\ttype: 'stripe';\n\tcustomer_id: string;\n\tpayment_intent_id?: string;\n};\n\nexport interface OrderPaymentRefund {\n\tid: string;\n\ttotal: number;\n\tprovider_refund_id?: string;\n\tstatus: string;\n\tcreated_at: number;\n}\n\nexport interface OrderPayment {\n\tcurrency: string;\n\tmarket: string;\n\tsubtotal: number;\n\tshipping: number;\n\tdiscount: number;\n\ttotal: number;\n\tpaid: number;\n\ttax?: OrderPaymentTax;\n\tpromo_code?: OrderPaymentPromoCode;\n\tprovider?: OrderPaymentProvider;\n\trefunds: OrderPaymentRefund[];\n\tzone_id?: string;\n\tpayment_method_id?: string;\n\tshipping_method_id?: string;\n\tmethod_type: PaymentMethodType;\n}\n\nexport interface PromoCodeValidation {\n\tpromo_code_id: string;\n\tcode: string;\n\tdiscounts: import('./api').Discount[];\n\tconditions: import('./api').Condition[];\n}\n\nexport interface BookingQuote {\n\tmarket: string;\n\tzone: Zone | null;\n\tsubtotal: number;\n\tdiscount: number;\n\ttax: number;\n\ttotal: number;\n\tpayment_method: PaymentMethod | null;\n\tpayment_methods: PaymentMethod[];\n\tpromo_code: PromoCodeValidation | null;\n\tpayment: BookingPayment;\n\tcharge_amount: number;\n\tid?: string;\n\texpires_at?: number;\n}\n\nexport interface OrderQuote {\n\tmarket: string;\n\tzone: Zone | null;\n\tsubtotal: number;\n\tshipping: number;\n\tdiscount: number;\n\ttax: number;\n\ttotal: number;\n\tshipping_method: ShippingMethod | null;\n\tpayment_method: PaymentMethod | null;\n\tpayment_methods: PaymentMethod[];\n\tpromo_code: PromoCodeValidation | null;\n\tpayment: OrderPayment;\n\tcharge_amount: number;\n\tid?: string;\n\texpires_at?: number;\n}\n\n\nexport interface Price {\n\tcurrency: string;\n\tmarket: string;\n\tamount: number;\n\tcompare_at?: number;\n\taudience_id?: string;\n}\n\n\nexport type IntervalPeriod = 'month' | 'year';\n\n\nexport interface SubscriptionInterval {\n\tperiod: IntervalPeriod;\n\tcount: number;\n}\n\n\nexport interface PriceProvider {\n\ttype: string;\n\tid: string;\n}\n\n\nexport interface SubscriptionPrice {\n\tcurrency: string;\n\tamount: number;\n\tcompare_at?: number;\n\tinterval?: SubscriptionInterval;\n\tproviders: PriceProvider[];\n}\n\n\nexport interface Address {\n\tname?: string | null;\n\tcompany?: string | null;\n\tstreet1?: string | null;\n\tstreet2?: string | null;\n\tcity?: string | null;\n\tstate?: string | null;\n\tpostal_code?: string | null;\n\tcountry?: string | null;\n\tphone?: string | null;\n\temail?: string | null;\n}\n\n\nexport interface GeoLocation {\n\tcoordinates?: { lat: number; lon: number } | null;\n\tlabel?: string | null;\n}\n\n\nexport interface ZoneLocation {\n\tcountry?: string | null;\n\tstate?: string | null;\n\tcity?: string | null;\n\tpostal_code?: string | null;\n}\n\nexport interface EshopCartItem {\n\tid: string;\n\tproduct_id: string;\n\tvariant_id: string;\n\tproduct_name: string;\n\tproduct_slug: string;\n\tvariant_attributes: Record<string, any>;\n\tprice: Price;\n\tquantity: number;\n\tadded_at: number;\n\tmax_stock?: number;\n}\n\nexport interface BookingCartItem {\n\tid: string;\n\tservice_id: string;\n\tservice_name: string;\n\tdate: string;\n\tfrom: number;\n\tto: number;\n\ttime_text: string;\n\tprovider_id?: string;\n\tforms: FormEntry[];\n}\n\n\nexport type IntegrationProvider =\n\t| { type: 'stripe'; secret_key?: string; publishable_key: string; webhook_secret?: string; currency: string }\n\t| { type: 'shippo'; api_token?: string }\n\t| { type: 'google'; client_id?: string; client_secret?: string; access_token?: string; refresh_token?: string;\n\t\ttoken_expires_at?: number; scopes: string[]; account_email?: string | null; connected_at: number }\n\t| { type: 'telegram_bot'; bot_token?: string }\n\t| { type: 'deep_seek'; api_key?: string; model?: string }\n\n\t| { type: 'open_ai'; api_key?: string; model?: string }\n\t| { type: 'slack'; api_key?: string }\n\t| { type: 'discord'; api_key?: string }\n\t| { type: 'whats_app'; api_key?: string }\n\t| { type: 'resend'; api_key?: string }\n\t| { type: 'send_grid'; api_key?: string }\n\t| { type: 'airtable'; api_key?: string }\n\t| { type: 'linear'; api_key?: string }\n\t| { type: 'git_hub'; api_key?: string }\n\t| { type: 'git_lab'; api_key?: string }\n\t| { type: 'dropbox'; api_key?: string }\n\t| { type: 'hub_spot'; api_key?: string }\n\t| { type: 'monday'; api_key?: string }\n\t| { type: 'click_up'; api_key?: string }\n\t| { type: 'pipedrive'; api_key?: string }\n\t| { type: 'calendly'; api_key?: string }\n\t| { type: 'typeform'; api_key?: string }\n\t| { type: 'webflow'; api_key?: string }\n\t| { type: 'trello'; api_key?: string }\n\t| { type: 'replicate'; api_key?: string }\n\t| { type: 'asana'; api_key?: string }\n\t| { type: 'brevo'; api_key?: string }\n\t| { type: 'intercom'; api_key?: string }\n\t| { type: 'notion'; api_key?: string }\n\t| { type: 'eleven_labs'; api_key?: string }\n\t| { type: 'active_campaign'; api_key?: string; account_url: string }\n\t| { type: 'shopify'; api_key?: string; store_domain: string }\n\t| { type: 'supabase'; api_key?: string; project_url: string }\n\t| { type: 'mailchimp'; api_key?: string }\n\n\t| { type: 'twilio'; account_sid?: string; auth_token?: string }\n\t| { type: 'jira'; email?: string; api_token?: string; domain: string }\n\t| { type: 'woo_commerce'; consumer_key?: string; consumer_secret?: string; store_url: string }\n\t| { type: 'freshdesk'; api_key?: string; domain: string }\n\t| { type: 'zendesk'; api_token?: string; email?: string; subdomain: string }\n\n\t| { type: 'salesforce'; access_token?: string; instance_url: string }\n\t| { type: 'zoom'; api_key?: string }\n\t| { type: 'microsoft_teams'; api_key?: string }\n\t| { type: 'firebase'; api_key?: string }\n\t| { type: 'arky'; api_key?: string }\n\n\t| { type: 'vercel_deploy_hook'; url?: string }\n\t| { type: 'netlify_deploy_hook'; url?: string }\n\t| { type: 'cloudflare_deploy_hook'; url?: string }\n\t| { type: 'custom_deploy_hook'; url?: string };\n\n\nexport interface Integration {\n\tid: string;\n\tstore_id: string;\n\tkey: string;\n\tprovider: IntegrationProvider;\n\tcreated_at: number;\n\tupdated_at: number;\n}\n\nexport interface ShippingWeightTier {\n\tup_to_grams: number;\n\tamount: number;\n}\n\nexport interface PaymentMethod {\n\tid: string;\n\tintegration_id?: string;\n}\n\nexport interface ShippingMethod {\n\tid: string;\n\ttaxable: boolean;\n\teta_text: string;\n\tlocation_id?: string;\n\tintegration_id?: string;\n\tamount: number;\n\tfree_above?: number;\n\tweight_tiers?: ShippingWeightTier[];\n}\n\nexport interface Location {\n\tid: string;\n\tstore_id: string;\n\tkey: string;\n\taddress: Address;\n\tis_pickup_location: boolean;\n\tcreated_at: number;\n\tupdated_at: number;\n}\n\nexport interface InventoryLevel {\n\tlocation_id: string;\n\tavailable: number;\n\treserved: number;\n}\n\nexport interface ProductInventory {\n\tid: string;\n\tstore_id: string;\n\tproduct_id: string;\n\tvariant_id: string;\n\tlocation_id: string;\n\tavailable: number;\n\treserved: number;\n\tupdated_at: number;\n}\n\nexport interface ProductVariant {\n\tid: string;\n\tsku?: string;\n\tprices: Price[];\n\tinventory: ProductInventory[];\n\tattributes: Block[];\n\tweight?: number;\n}\n\nexport interface Product {\n\tid: string;\n\tstore_id: string;\n\tkey: string;\n\tslug: Record<string, string>;\n\tblocks: Block[];\n\ttaxonomies: TaxonomyEntry[];\n\tvariants: ProductVariant[];\n\tstatus: ProductStatus;\n\tcreated_at: number;\n\tupdated_at: number;\n}\n\nexport interface GalleryItem {\n\tid: string;\n\turl: string;\n\talt?: string;\n\tcaption?: string;\n}\n\nexport interface OrderItemSnapshot {\n\tproduct_key: string;\n\tvariant_sku?: string;\n\tvariant_attributes: Block[];\n\tprice: Price;\n}\n\nexport interface OrderItem {\n\tid: string;\n\tproduct_id: string;\n\tvariant_id: string;\n\tquantity: number;\n\tlocation_id?: string;\n\tsnapshot: OrderItemSnapshot;\n\tstatus: OrderItemStatus;\n}\n\nexport interface HistoryEntry {\n\taction: string;\n\treason?: string;\n\ttimestamp: number;\n}\n\nexport interface Order {\n\tid: string;\n\tnumber: string;\n\tstore_id: string;\n\tcustomer_id: string;\n\tverified: boolean;\n\titems: OrderItem[];\n\tpayment: OrderPayment;\n\tshipping_address?: Address;\n\tbilling_address?: Address;\n\tforms: FormEntry[];\n\tshipments: Shipment[];\n\thistory: HistoryEntry[];\n\taudience_id?: string;\n\tcreated_at: number;\n\tupdated_at: number;\n}\n\nexport interface Zone {\n\tid: string;\n\tstore_id: string;\n\tmarket_id: string;\n\tcountries: string[];\n\tstates: string[];\n\tpostal_codes: string[];\n\ttax_bps: number;\n\tshipping_methods: ShippingMethod[];\n}\n\nexport interface Market {\n\tid: string;\n\tstore_id: string;\n\tkey: string;\n\tcurrency: string;\n\ttax_mode: \"exclusive\" | \"inclusive\";\n\tpayment_methods: PaymentMethod[];\n\tzones: Zone[];\n\tcreated_at: number;\n\tupdated_at: number;\n}\n\nexport interface Language {\n\tid: string;\n}\n\nexport interface StoreEmails {\n\tbilling: string;\n\tsupport: string;\n}\n\nexport type WebhookEventSubscription =\n\t| { event: 'node.created'; parent_id?: string }\n\t| { event: 'node.updated'; key?: string }\n\t| { event: 'node.deleted'; key?: string }\n\t| { event: 'order.created' }\n\t| { event: 'order.updated' }\n\t| { event: 'order.confirmed' }\n\t| { event: 'order.payment_received' }\n\t| { event: 'order.payment_failed' }\n\t| { event: 'order.refunded' }\n\t| { event: 'order.cancelled' }\n\t| { event: 'order.shipment_created' }\n\t| { event: 'order.shipment_in_transit' }\n\t| { event: 'order.shipment_out_for_delivery' }\n\t| { event: 'order.shipment_delivered' }\n\t| { event: 'order.shipment_failed' }\n\t| { event: 'order.shipment_returned' }\n\t| { event: 'order.shipment_status_changed' }\n\t| { event: 'booking.created' }\n\t| { event: 'booking.updated' }\n\t| { event: 'booking.payment_received' }\n\t| { event: 'booking.payment_failed' }\n\t| { event: 'booking.refunded' }\n\t| { event: 'booking.cancelled' }\n\t| { event: 'booking.item_cancelled' }\n\t| { event: 'booking.reminder' }\n\t| { event: 'product.created' }\n\t| { event: 'product.updated' }\n\t| { event: 'product.deleted' }\n\t| { event: 'provider.created' }\n\t| { event: 'provider.updated' }\n\t| { event: 'provider.deleted' }\n\t| { event: 'service.created' }\n\t| { event: 'service.updated' }\n\t| { event: 'service.deleted' }\n\t| { event: 'media.created' }\n\t| { event: 'media.deleted' }\n\t| { event: 'store.created' }\n\t| { event: 'store.updated' }\n\t| { event: 'store.deleted' }\n\t| { event: 'audience.created' }\n\t| { event: 'audience.updated' }\n\t| { event: 'audience.deleted' };\n\nexport interface Webhook {\n\tid: string;\n\tstore_id: string;\n\tkey: string;\n\turl: string;\n\tevents: WebhookEventSubscription[];\n\theaders: Record<string, string>;\n\tsecret: string;\n\tenabled: boolean;\n\tcreated_at: number;\n\tupdated_at: number;\n}\n\n\nexport type StoreSubscriptionStatus =\n\t| 'pending'\n\t| 'active'\n\t| 'cancellation_scheduled'\n\t| 'cancelled'\n\t| 'expired';\n\nexport type StoreSubscriptionSource = 'signup' | 'admin' | 'import';\n\nexport type StoreSubscriptionProvider = {\n\ttype: 'stripe';\n\tcustomer_id: string;\n\tsubscription_id?: string;\n\tprice_id?: string;\n};\n\nexport interface StoreSubscriptionPayment {\n\tcurrency: string;\n\tmarket: string;\n\tprovider?: StoreSubscriptionProvider;\n}\n\nexport interface StoreSubscription {\n\tid: string;\n\ttarget: string;\n\tplan_id: string;\n\tpending_plan_id: string | null;\n\tpayment: StoreSubscriptionPayment;\n\tstatus: StoreSubscriptionStatus;\n\tstart_date: number;\n\tend_date: number;\n\ttoken: string;\n\tsource: StoreSubscriptionSource;\n}\n\nexport type AudienceSubscriptionStatus =\n\t| 'pending'\n\t| 'active'\n\t| 'cancellation_scheduled'\n\t| 'cancelled'\n\t| 'expired';\n\nexport type AudienceSubscriptionSource = 'signup' | 'admin' | 'import';\n\nexport type AudienceSubscriptionProvider = {\n\ttype: 'stripe';\n\tcustomer_id: string;\n\tsubscription_id?: string;\n\tprice_id?: string;\n};\n\nexport interface AudienceSubscriptionPayment {\n\tcurrency: string;\n\tmarket: string;\n\tprovider?: AudienceSubscriptionProvider;\n}\n\nexport interface AudienceSubscription {\n\tid: string;\n\tstore_id: string;\n\tcustomer_id: string;\n\taudience_id: string;\n\tplan_id: string;\n\tpending_plan_id: string | null;\n\tpayment: AudienceSubscriptionPayment;\n\tstatus: AudienceSubscriptionStatus;\n\tstart_date: number;\n\tend_date: number;\n\ttoken: string;\n\tsource: AudienceSubscriptionSource;\n\tcreated_at: number;\n\tupdated_at: number;\n}\n\nexport interface Store {\n\tid: string;\n\tkey: string;\n\ttimezone: string;\n\tlanguages?: Language[];\n\temails?: StoreEmails;\n\tsubscription?: StoreSubscription;\n\tcounts?: Record<string, number>;\n}\n\nexport interface EshopStoreState {\n\tstore_id: string;\n\tselected_shipping_method_id: string | null;\n\tuser_token: string | null;\n\tprocessing_checkout: boolean;\n\tloading: boolean;\n\terror: string | null;\n}\n\nexport interface Block {\n\tid: string;\n\tkey: string;\n\ttype: string;\n\tproperties?: any;\n\tvalue?: any;\n}\n\nexport type TaxonomySchemaType = \"text\" | \"number\" | \"boolean\" | \"geo_location\";\n\nexport interface TaxonomySchema {\n\tid: string;\n\tkey: string;\n\ttype: TaxonomySchemaType;\n\tvalue?: string[];\n\tmin?: number | null;\n\tmax?: number | null;\n}\n\nexport interface TaxonomyField {\n\tid: string;\n\tkey: string;\n\ttype: TaxonomySchemaType;\n\tvalue: any;\n}\n\nexport interface TaxonomyFieldQuery {\n\tkey: string;\n\ttype: TaxonomySchemaType;\n\toperation?: string;\n\tvalue: any;\n\tcenter?: { lat: number; lon: number };\n\tradius?: number;\n}\n\nexport interface TaxonomyEntry {\n\ttaxonomy_id: string;\n\tfields: TaxonomyField[];\n}\n\nexport interface TaxonomyQuery {\n\ttaxonomy_id: string;\n\tquery: TaxonomyFieldQuery[];\n}\n\nexport type FormSchemaType = \"text\" | \"number\" | \"boolean\" | \"date\" | \"geo_location\" | \"select\";\n\nexport interface FormSchema {\n\tid: string;\n\tkey: string;\n\ttype: FormSchemaType;\n\trequired?: boolean;\n\tmin?: number | null;\n\tmax?: number | null;\n\toptions?: string[];\n}\n\nexport type FormFieldType = \"text\" | \"number\" | \"boolean\" | \"date\" | \"geo_location\" | \"select\";\n\nexport interface FormField {\n\tid: string;\n\tkey: string;\n\ttype: FormFieldType;\n\tvalue?: any;\n}\n\nexport interface FormEntry {\n\tform_id: string;\n\tfields: FormField[];\n}\n\nexport type BlockType =\n\t| \"text\"\n\t| \"localized_text\"\n\t| \"number\"\n\t| \"boolean\"\n\t| \"list\"\n\t| \"map\"\n\t| \"relationship_entry\"\n\t| \"relationship_media\"\n\t| \"markdown\"\n\t| \"geo_location\";\n\nexport interface GeoLocationBlockProperties {}\n\n\nexport type GeoLocationValue = GeoLocation;\n\nexport interface GeoLocationBlock extends Block {\n\ttype: \"geo_location\";\n\tproperties: GeoLocationBlockProperties;\n\tvalue: GeoLocation | null;\n}\n\nexport type Access = 'public' | 'private';\n\nexport interface MediaResolution {\n\tid: string;\n\tsize: string;\n\turl: string;\n}\n\nexport interface Media {\n\tid: string;\n\tresolutions: { [key: string]: MediaResolution };\n\tmime_type: string;\n\ttitle?: string | null;\n\tdescription?: string | null;\n\talt?: string | null;\n\tentity: string;\n\tmetadata?: string | null;\n\tcreated_at: number;\n\tslug: Record<string, string>;\n}\n\nexport interface ApiResponse<T> {\n\tsuccess: boolean;\n\tdata?: T;\n\terror?: string;\n\tcursor?: string;\n\ttotal?: number;\n}\n\nexport interface PaginatedResponse<T> {\n\tdata: T[];\n\tmeta?: {\n\t\ttotal: number;\n\t\tpage: number;\n\t\tper_page: number;\n\t};\n}\n\nexport interface BookingStoreState {\n\tcurrent_step: number;\n\ttotal_steps: number;\n\tsteps: Record<number, { name: string; label_key: string }>;\n\tweekdays: string[];\n\tmonth_year: string;\n\tdays: any[];\n\tcurrent: Date;\n\tselected_date: string | null;\n\tslots: any[];\n\tselected_slot: any | null;\n\tselected_provider: any | null;\n\tproviders: any[];\n\tloading: boolean;\n\tstart_date: string | null;\n\tend_date: string | null;\n\tguest_token: string | null;\n\tservice: any | null;\n\tstore: Store | null;\n\tcurrency: string;\n\tbooking_forms: FormEntry[];\n\tapi_url: string;\n\tstore_id: string;\n\ttimezone: string;\n\ttz_groups: any;\n\titems: BookingCartItem[];\n\tallowed_payment_methods: string[];\n\tpayment_config: {\n\t\tprovider: { publishable_key: string; currency: string } | null;\n\t\tenabled: boolean;\n\t};\n}\n\nexport type BookingServiceStatus = 'active' | 'draft' | 'archived';\nexport type BookingProviderStatus = 'active' | 'draft' | 'archived';\n\nexport type ProductStatus = 'active' | 'draft' | 'archived';\nexport type CustomerStatus = 'active' | 'draft' | 'archived';\nexport type AudienceStatus = 'active' | 'draft' | 'archived';\nexport type AgentChatStatus = 'active' | 'draft' | 'archived';\nexport type WorkflowStatus = 'active' | 'draft' | 'archived';\nexport type PromoCodeStatus = 'active' | 'draft' | 'archived';\nexport type NodeStatus = 'active' | 'draft' | 'archived';\nexport type EmailTemplateStatus = 'active' | 'draft' | 'archived';\nexport type FormStatus = 'active' | 'draft' | 'archived';\nexport type TaxonomyStatus = 'active' | 'draft' | 'archived';\n\nexport type BookingCancellationReason =\n\t| 'admin_rejected'\n\t| 'customer_cancelled'\n\t| 'payment_failed'\n\t| 'expired'\n\t| 'other';\n\nexport type OrderCancellationReason =\n\t| 'admin_rejected'\n\t| 'customer_cancelled'\n\t| 'payment_failed'\n\t| 'expired'\n\t| 'other';\n\nexport type BookingItemStatus =\n\t| { status: 'pending'; expires_at: number }\n\t| { status: 'confirmed' }\n\t| { status: 'cancelled'; reason: BookingCancellationReason };\n\nexport type OrderItemStatus =\n\t| { status: 'pending'; expires_at: number }\n\t| { status: 'confirmed' }\n\t| { status: 'cancelled'; reason: OrderCancellationReason };\n\nexport type BookingPaymentStatus =\n\t| { status: 'pending'; at: number }\n\t| { status: 'authorized'; at: number; amount: number }\n\t| { status: 'captured'; at: number; amount: number }\n\t| { status: 'failed'; at: number; reason?: string };\n\nexport type OrderPaymentStatus =\n\t| { status: 'pending'; at: number }\n\t| { status: 'authorized'; at: number; amount: number }\n\t| { status: 'captured'; at: number; amount: number }\n\t| { status: 'failed'; at: number; reason?: string };\n\nexport interface BookingItemSnapshot {\n\tservice_key: string;\n\tprovider_key: string;\n\tprice: Price;\n}\n\nexport interface TimeRange {\n\tfrom: number;\n\tto: number;\n}\n\nexport interface BookingItem {\n\tid: string;\n\tservice_id: string;\n\tprovider_id: string;\n\tstore_id: string;\n\tbooking_id: string;\n\tfrom: number;\n\tto: number;\n\tforms: FormEntry[];\n\tsnapshot: BookingItemSnapshot;\n\tstatus: BookingItemStatus;\n}\n\nexport interface Booking {\n\tid: string;\n\tnumber: string;\n\tcustomer_id: string;\n\tverified: boolean;\n\tforms: FormEntry[];\n\tstore_id: string;\n\tservice_ids: string[];\n\tprovider_ids: string[];\n\tpayment: BookingPayment;\n\tstore?: Store;\n\taccount?: any;\n\titems: BookingItem[];\n\taudience_id?: string;\n\thistory?: { action: string; reason?: string; timestamp: number }[];\n\tfired_reminders: number[];\n\tcreated_at: number;\n\tlast_modified: number;\n}\n\nexport interface Node {\n\tid: string;\n\tkey: string;\n\tstore_id: string;\n\tparent_id?: string | null;\n\tblocks: Block[];\n\ttaxonomies: TaxonomyEntry[];\n\tstatus: NodeStatus;\n\tslug: Record<string, string>;\n\tchildren: Node[];\n\tcreated_at: number;\n\tupdated_at: number;\n}\n\nexport interface EmailTemplate {\n\tid: string;\n\tkey: string;\n\tstore_id: string;\n\tsubject: Record<string, string>;\n\tbody: string;\n\tfrom_name: string;\n\tfrom_email: string;\n\treply_to?: string;\n\tpreheader?: string;\n\tstatus: EmailTemplateStatus;\n\tcreated_at: number;\n\tupdated_at: number;\n}\n\nexport interface Form {\n\tid: string;\n\tkey: string;\n\tstore_id: string;\n\tschema: FormSchema[];\n\tstatus: FormStatus;\n\tcreated_at: number;\n\tupdated_at: number;\n}\n\nexport interface FormSubmission {\n\tid: string;\n\tform_id: string;\n\tstore_id: string;\n\tfields: FormField[];\n\tcreated_at: number;\n}\n\nexport interface Taxonomy {\n\tid: string;\n\tkey: string;\n\tstore_id: string;\n\tparent_id?: string | null;\n\tschema?: TaxonomySchema[];\n\tstatus: TaxonomyStatus;\n\tcreated_at: number;\n\tupdated_at: number;\n}\n\nexport interface ServiceDuration {\n\tduration: number;\n\tis_pause: boolean;\n}\n\nexport interface WorkingHour {\n\tfrom: number;\n\tto: number;\n}\n\nexport interface WorkingDay {\n\tday: string;\n\tworking_hours: WorkingHour[];\n}\n\nexport interface SpecificDate {\n\tdate: number;\n\tworking_hours: WorkingHour[];\n}\n\nexport interface ServiceProvider {\n\tid: string;\n\tservice_id: string;\n\tprovider_id: string;\n\tstore_id: string;\n\tworking_days: WorkingDay[];\n\tspecific_dates: SpecificDate[];\n\tprices: Price[];\n\tdurations: ServiceDuration[];\n\tslot_interval: number;\n\tforms: FormEntry[];\n\treminders: number[];\n\tmin_advance: number;\n\tmax_advance: number;\n\tcreated_at: number;\n\tupdated_at: number;\n}\n\nexport interface BookingService {\n\tid: string;\n\tkey: string;\n\tslug: Record<string, string>;\n\tstore_id: string;\n\tblocks: Block[];\n\ttaxonomies: TaxonomyEntry[];\n\tcreated_at: number;\n\tupdated_at: number;\n\tstatus: BookingServiceStatus;\n}\n\n\nexport type Service = BookingService;\n\nexport interface ProviderTimelinePoint {\n\ttimestamp: number;\n\tbooked: number;\n}\n\nexport interface BookingProvider {\n\tid: string;\n\tkey: string;\n\tslug: Record<string, string>;\n\tstore_id: string;\n\tstatus: BookingProviderStatus;\n\tblocks: Block[];\n\ttaxonomies: TaxonomyEntry[];\n\ttimeline: ProviderTimelinePoint[];\n\tcreated_at: number;\n\tupdated_at: number;\n}\n\n\nexport type Provider = BookingProvider;\n\nexport interface WorkflowEdge {\n\tsource: string;\n\ttarget: string;\n\toutput: string;\n\tback_edge: boolean;\n}\n\nexport interface Workflow {\n\tid: string;\n\tkey: string;\n\tstore_id: string;\n\tsecret: string;\n\tstatus: WorkflowStatus;\n\tnodes: Record<string, WorkflowNode>;\n\tedges: WorkflowEdge[];\n\n\tschedule?: string;\n\tcreated_at: number;\n\tupdated_at: number;\n}\n\nexport type WorkflowNode =\n\t| WorkflowTriggerNode\n\t| WorkflowHttpNode\n\t| WorkflowSwitchNode\n\t| WorkflowTransformNode\n\t| WorkflowLoopNode;\n\nexport interface WorkflowTriggerNode {\n\ttype: 'trigger';\n\tevent?: string;\n\tdelay_ms?: number;\n\tschema?: Block[];\n}\n\nexport interface WorkflowHttpNode {\n\ttype: 'http';\n\tmethod: WorkflowHttpMethod;\n\turl: string;\n\theaders?: Record<string, string>;\n\tbody?: any;\n\ttimeout_ms?: number;\n\tintegration_id?: string;\n\tintegration_provider_id?: string;\n\tdelay_ms?: number;\n\tretries?: number;\n\tretry_delay_ms?: number;\n}\n\nexport interface WorkflowSwitchRule {\n\tcondition: string;\n}\n\nexport interface WorkflowSwitchNode {\n\ttype: 'switch';\n\trules: WorkflowSwitchRule[];\n\tdelay_ms?: number;\n}\n\nexport interface WorkflowTransformNode {\n\ttype: 'transform';\n\tcode: string;\n\tdelay_ms?: number;\n}\n\nexport interface WorkflowLoopNode {\n\ttype: 'loop';\n\texpression: string;\n\tdelay_ms?: number;\n}\n\nexport type WorkflowHttpMethod = 'get' | 'post' | 'put' | 'patch' | 'delete';\n\nexport type ExecutionStatus = 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';\n\nexport interface NodeResult {\n\toutput: any;\n\troute: string;\n\tstarted_at: number;\n\tcompleted_at: number;\n\tduration_ms: number;\n\terror?: string;\n}\n\nexport interface WorkflowExecution {\n\tid: string;\n\tworkflow_id: string;\n\tstore_id: string;\n\tstatus: ExecutionStatus;\n\tinput: Record<string, any>;\n\tresults: Record<string, NodeResult>;\n\terror?: string;\n\tscheduled_at: number;\n\tstarted_at: number;\n\tcompleted_at?: number;\n\tcreated_at: number;\n\tupdated_at: number;\n}\n\nexport type AudienceType =\n\t| { type: 'standard' }\n\t| { type: 'confirmation'; confirm_template_id: string }\n\t| { type: 'paid'; prices: SubscriptionPrice[]; payment_integration_id?: string };\n\nexport interface Audience {\n\tid: string;\n\tstore_id: string;\n\tkey: string;\n\tstatus: AudienceStatus;\n\ttype: AudienceType;\n}\n\nexport interface AudienceAccessResponse {\n\thas_access: boolean;\n\tsubscription?: AudienceSubscription;\n}\n\nexport interface AudienceSubscribeResponse {\n\tcheckout_url?: string;\n\tsubscription?: AudienceSubscription;\n}\n\nexport type EventAction =\n\t\n\t| { action: 'order_created' }\n\t| { action: 'order_updated' }\n\t| { action: 'order_confirmed' }\n\t| { action: 'order_payment_received'; data: { amount: number; currency: string } }\n\t| { action: 'order_payment_failed'; data: { reason?: string } }\n\t| { action: 'order_refunded'; data: { amount: number; currency: string; reason?: string } }\n\t| { action: 'order_cancelled'; data: { reason?: string } }\n\t\n\t| { action: 'order_shipment_created'; data: { shipment_id: string } }\n\t| { action: 'order_shipment_in_transit'; data: { shipment_id: string } }\n\t| { action: 'order_shipment_out_for_delivery'; data: { shipment_id: string } }\n\t| { action: 'order_shipment_delivered'; data: { shipment_id: string } }\n\t| { action: 'order_shipment_failed'; data: { shipment_id: string; reason?: string } }\n\t| { action: 'order_shipment_returned'; data: { shipment_id: string } }\n\t| { action: 'order_shipment_status_changed'; data: { shipment_id: string; from: string; to: string } }\n\t\n\t| { action: 'booking_created' }\n\t| { action: 'booking_updated' }\n\t| { action: 'booking_payment_received'; data: { amount: number; currency: string } }\n\t| { action: 'booking_payment_failed'; data: { reason?: string } }\n\t| { action: 'booking_refunded'; data: { amount: number; currency: string; reason?: string } }\n\t| { action: 'booking_cancelled'; data: { reason?: string } }\n\t| { action: 'booking_item_cancelled'; data: { item_id: string; refund_amount: number } }\n\t\n\t| { action: 'product_created' }\n\t| { action: 'product_updated' }\n\t| { action: 'product_deleted' }\n\t\n\t| { action: 'node_created' }\n\t| { action: 'node_updated' }\n\t| { action: 'node_deleted' }\n\t\n\t| { action: 'provider_created' }\n\t| { action: 'provider_updated' }\n\t| { action: 'provider_deleted' }\n\t\n\t| { action: 'service_created' }\n\t| { action: 'service_updated' }\n\t| { action: 'service_deleted' }\n\t\n\t| { action: 'account_created' }\n\t| { action: 'account_updated' }\n\t| { action: 'account_deleted' }\n\t\n\t| { action: 'media_created' }\n\t| { action: 'media_deleted' }\n\t\n\t| { action: 'store_created' }\n\t| { action: 'store_updated' }\n\t| { action: 'store_deleted' }\n\t\n\t| { action: 'audience_created' }\n\t| { action: 'audience_updated' }\n\t| { action: 'audience_deleted' };\n\nexport interface Event {\n\tid: string;\n\tentity: string;\n\tevent: EventAction;\n\tactor: string;\n\tcreated_at: number;\n}\n\n\nexport type ShippingStatus =\n\t| 'pending'\n\t| 'label_created'\n\t| 'in_transit'\n\t| 'out_for_delivery'\n\t| 'delivered'\n\t| 'failed'\n\t| 'returned';\n\n\nexport interface OrderShipping {\n\tcarrier: string;\n\tservice: string;\n\ttracking_number?: string | null;\n\ttracking_url?: string | null;\n\tlabel_url?: string | null;\n\tstatus: ShippingStatus;\n}\n\n\nexport interface ShipmentLine {\n\torder_item_id: string;\n\tquantity: number;\n}\n\n\nexport interface Shipment {\n\tid: string;\n\tlocation_id: string;\n\tlines: ShipmentLine[];\n\tcarrier?: string | null;\n\tservice?: string | null;\n\ttracking_number?: string | null;\n\ttracking_url?: string | null;\n\tlabel_url?: string | null;\n\tstatus: ShippingStatus;\n\tcreated_at: number;\n\tupdated_at: number;\n}\n\n\nexport interface ShippingRate {\n\tid: string;\n\tprovider: string;\n\tcarrier: string;\n\tservice: string;\n\tdisplay_name: string;\n\tamount: number;\n\tcurrency: string;\n\testimated_days?: number | null;\n}\n\n\nexport type ShippingAddress = Address;\n\n\nexport interface Parcel {\n\tlength: number;\n\twidth: number;\n\theight: number;\n\tweight: number;\n\tdistance_unit: 'in' | 'cm';\n\tmass_unit: 'oz' | 'lb' | 'g' | 'kg';\n}\n\n\nexport interface PurchaseLabelResult {\n\ttracking_number: string;\n\ttracking_url?: string | null;\n\tlabel_url: string;\n\tcarrier: string;\n\tservice: string;\n}\n\n\nexport interface ShipResult {\n\tshipment_id: string;\n\ttracking_number: string;\n\ttracking_url?: string | null;\n\tlabel_url: string;\n}\n\n\nexport interface CustomsItem {\n\tdescription: string;\n\tquantity: number;\n\tnet_weight: string;\n\tmass_unit: string;\n\tvalue_amount: string;\n\tvalue_currency: string;\n\torigin_country: string;\n\ttariff_number?: string | null;\n}\n\n\nexport interface CustomsDeclaration {\n\tcontents_type: string;\n\tcontents_explanation?: string | null;\n\tnon_delivery_option: string;\n\tcertify: boolean;\n\tcertify_signer: string;\n\titems: CustomsItem[];\n}\n\nexport interface Agent {\n\tid: string;\n\tstore_id: string;\n\tkey: string;\n\tprompt: string;\n\tstatus: import('./api').AgentStatus;\n\tmodel_id: string;\n\tchannel_ids: string[];\n\tcreated_at: number;\n\tupdated_at: number;\n}\n\nexport interface AgentChat {\n\tid: string;\n\tstore_id: string;\n\tagent_id: string;\n\taccount_id: string;\n\tstatus: AgentChatStatus;\n\trating?: number;\n\trating_comment?: string;\n\tcreated_at: number;\n\tupdated_at: number;\n}\n\nexport interface AgentChatMessage {\n\tid: string;\n\tstore_id: string;\n\tagent_id?: string;\n\tchat_id?: string;\n\tmessage: string;\n\tcreated_at: number;\n}\n\nexport interface PromoCode {\n\tid: string;\n\tstore_id: string;\n\tcode: string;\n\tdiscounts: import('./api').Discount[];\n\tconditions: import('./api').Condition[];\n\tstatus: PromoCodeStatus;\n\tuses: number;\n\tcreated_at: number;\n\tupdated_at: number;\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 \"relationship_entry\":\n case \"relationship_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: (blockTypes?.[key] === 'list') && !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 \n if (block.type === \"localized_text\" || block.type === \"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 \n if (block.type === \"list\" && 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 if (block.type === \"list\") {\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 (block.type === \"map\") {\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 (block.type === \"localized_text\" || block.type === \"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 !== \"list\" || !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 === \"list\" && 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 === \"map\" && 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 === \"relationship_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 { ApiConfig } from \"../index\";\nimport type {\n RequestOptions,\n Slot,\n GetNodeParams,\n GetNodesParams,\n GetNodeChildrenParams,\n GetFormParams,\n SubmitFormParams,\n GetTaxonomyParams,\n GetTaxonomyChildrenParams,\n GetProductParams,\n GetProductsParams,\n GetQuoteParams,\n OrderCheckoutParams,\n GetOrderParams,\n GetOrdersParams,\n GetBookingParams,\n SearchBookingsParams,\n GetBookingQuoteParams,\n GetAvailabilityParams,\n AvailabilityResponse,\n CancelBookingItemParams,\n GetServiceParams,\n GetServicesParams,\n FindServiceProvidersParams,\n GetProviderParams,\n GetProvidersParams,\n GetAudienceParams,\n GetAudiencesParams,\n SubscribeAudienceParams,\n GetAgentsParams,\n BookingCheckoutParams,\n} from \"../types/api\";\nimport type {\n Node,\n Form,\n FormSubmission,\n Taxonomy,\n Audience,\n AudienceAccessResponse,\n AudienceSubscribeResponse,\n Booking,\n BookingQuote,\n Service,\n Provider,\n Store,\n Location,\n Market,\n OrderQuote,\n Order,\n Product,\n Agent,\n AgentChat,\n AgentChatMessage,\n Customer,\n CustomerDetail,\n PaginatedResponse,\n} from \"../types\";\nimport {\n getBlockFromArray,\n getBlockObjectValues,\n getImageUrl,\n} from \"../utils/blocks\";\n\nexport type CustomerToken = {\n id: string;\n token: string;\n created_at: number;\n};\n\nexport type IdentifyResponse = {\n customer: Customer;\n token: CustomerToken;\n store: Store;\n market: Market | null;\n code_sent: boolean;\n};\n\nexport type VerifyResponse = CustomerToken;\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 Activity {\n store_id: string;\n customer_id: string;\n type: string;\n payload: Record<string, unknown>;\n created_at: number;\n}\n\nexport interface TrackParams {\n type: string;\n payload?: Record<string, unknown>;\n}\n\nexport const COMMON_ACTIVITY_TYPES = [\n \"page_view\",\n \"product_view\",\n \"service_view\",\n \"provider_view\",\n \"cart_added\",\n \"cart_removed\",\n \"checkout_started\",\n \"purchase\",\n \"booking_created\",\n \"signin\",\n \"signup\",\n \"verified_email\",\n \"search\",\n \"share\",\n \"wishlist_added\",\n] as const;\n\nexport type CommonActivityType = (typeof COMMON_ACTIVITY_TYPES)[number];\n\nexport const createActivityApi = (apiConfig: ApiConfig) => ({\n COMMON_ACTIVITY_TYPES,\n async track(params: TrackParams): Promise<void> {\n try {\n await apiConfig.httpClient.post<void>(\n `/v1/storefront/${apiConfig.storeId}/activities/track`,\n { type: params.type, payload: params.payload },\n );\n } catch {}\n },\n});\n\nfunction groupCartToItems(cart: Slot[]) {\n const groups = new Map<\n string,\n { service_id: string; provider_id: string; slots: { from: number; to: number }[] }\n >();\n\n for (const slot of cart) {\n const key = `${slot.service_id}:${slot.provider_id}`;\n if (!groups.has(key)) {\n groups.set(key, {\n service_id: slot.service_id,\n provider_id: slot.provider_id,\n slots: [],\n });\n }\n groups.get(key)!.slots.push({ from: slot.from, to: slot.to });\n }\n\n return [...groups.values()];\n}\n\nexport const createStorefrontApi = (apiConfig: ApiConfig) => {\n const base = (storeId = apiConfig.storeId) =>\n `/v1/storefront/${storeId}`;\n let cart: Slot[] = [];\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 node: {\n async get(params: GetNodeParams, options?: RequestOptions) {\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 if (params.key) {\n identifier = `${store_id}:${params.key}`;\n } else {\n throw new Error(\"GetNodeParams requires id, slug, or key\");\n }\n\n const response = await apiConfig.httpClient.get<Node>(\n `${base(store_id)}/nodes/${identifier}`,\n options,\n );\n\n return {\n ...response,\n getBlock(key: string) {\n return getBlockFromArray(response, key, apiConfig.locale);\n },\n getBlockValues(key: string) {\n return getBlockObjectValues(response, key, apiConfig.locale);\n },\n getImage(key: string) {\n const block = getBlockFromArray(response, key, apiConfig.locale);\n return getImageUrl(block, true);\n },\n };\n },\n\n find(params: GetNodesParams, options?: RequestOptions): Promise<PaginatedResponse<Node>> {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<Node>>(`${base(store_id)}/nodes`, {\n ...options,\n params: queryParams,\n });\n },\n\n getChildren(params: GetNodeChildrenParams, options?: RequestOptions): Promise<PaginatedResponse<Node>> {\n const { id, store_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<Node>>(`${base(store_id)}/nodes/${id}/children`, {\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 order: {\n getQuote(params: GetQuoteParams & { store_id?: string }, options?: RequestOptions): Promise<OrderQuote> {\n const store_id = params.store_id || apiConfig.storeId;\n const { location, store_id: _store_id, ...rest } = params;\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 : undefined;\n\n return apiConfig.httpClient.post<OrderQuote>(\n `${base(store_id)}/orders/quote`,\n { ...rest, shipping_address, market: apiConfig.market },\n options,\n );\n },\n\n checkout(params: OrderCheckoutParams & { store_id?: string }, options?: RequestOptions): Promise<Order> {\n const { store_id, ...rest } = params;\n const target = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Order>(\n `${base(target)}/orders/checkout`,\n { ...rest, store_id: target, market: apiConfig.market },\n options,\n );\n },\n\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 },\n\n booking: {\n addToCart(slot: Slot) {\n cart.push(slot);\n },\n\n removeFromCart(slotId: string) {\n cart = cart.filter((slot) => slot.id !== slotId);\n },\n\n getCart() {\n return [...cart];\n },\n\n clearCart() {\n cart = [];\n },\n\n checkout(params?: Partial<BookingCheckoutParams>, options?: RequestOptions): Promise<Booking> {\n const { store_id, items: paramItems, ...payload } = params || {};\n const target_store_id = store_id || apiConfig.storeId;\n const items = paramItems || groupCartToItems(cart);\n\n return apiConfig.httpClient.post<Booking>(\n `${base(target_store_id)}/bookings/checkout`,\n { market: apiConfig.market, ...payload, items },\n options,\n );\n },\n\n get(params: GetBookingParams, options?: RequestOptions): Promise<Booking> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<Booking>(\n `${base(store_id)}/bookings/${params.id}`,\n options,\n );\n },\n\n find(params: SearchBookingsParams, options?: RequestOptions): Promise<PaginatedResponse<Booking>> {\n const { store_id, ...queryParams } = params;\n return apiConfig.httpClient.get<PaginatedResponse<Booking>>(`${base(store_id)}/bookings`, {\n ...options,\n params: queryParams,\n });\n },\n\n getQuote(params: GetBookingQuoteParams, options?: RequestOptions): Promise<BookingQuote> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<BookingQuote>(\n `${base(target_store_id)}/bookings/quote`,\n { market: apiConfig.market, ...payload },\n options,\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)}/bookings/availability`,\n { ...options, params: queryParams },\n );\n },\n\n cancelItem(params: CancelBookingItemParams, options?: RequestOptions): Promise<Booking> {\n const { store_id, booking_id, item_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Booking>(\n `${base(target_store_id)}/bookings/${booking_id}/items/${item_id}/cancel`,\n payload,\n options,\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\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 customer: {\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)}/customers/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 apiConfig.setToken({ access_token: result.token.token });\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)}/customers/verify`,\n { store_id, code: params.code },\n options,\n );\n if (result?.token) {\n apiConfig.setToken({ access_token: result.token });\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)}/customers/logout`,\n {},\n options,\n );\n } finally {\n apiConfig.setToken({ access_token: \"\" });\n }\n },\n\n getMe(options?: RequestOptions): Promise<CustomerDetail> {\n return apiConfig.httpClient.get<CustomerDetail>(`${base()}/customers/me`, options);\n },\n },\n\n audience: {\n get(params: GetAudienceParams, options?: RequestOptions): Promise<Audience> {\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.key) {\n identifier = `${apiConfig.storeId}:${params.key}`;\n } else {\n throw new Error(\"GetAudienceParams requires id or key\");\n }\n\n return apiConfig.httpClient.get<Audience>(\n `${base(apiConfig.storeId)}/audiences/${identifier}`,\n options,\n );\n },\n\n find(params: GetAudiencesParams, options?: RequestOptions): Promise<PaginatedResponse<Audience>> {\n return apiConfig.httpClient.get<PaginatedResponse<Audience>>(`${base()}/audiences`, {\n ...options,\n params,\n });\n },\n\n subscribe(params: SubscribeAudienceParams, options?: RequestOptions): Promise<AudienceSubscribeResponse> {\n return apiConfig.httpClient.post<AudienceSubscribeResponse>(\n `${base()}/audiences/${params.id}/subscribe`,\n {\n customer_id: params.customer_id,\n price_id: params.price_id,\n success_url: params.success_url,\n cancel_url: params.cancel_url,\n confirm_url: params.confirm_url,\n },\n options,\n );\n },\n\n checkAccess(params: { id: string }, options?: RequestOptions): Promise<AudienceAccessResponse> {\n return apiConfig.httpClient.get<AudienceAccessResponse>(\n `${base()}/audiences/${params.id}/access`,\n options,\n );\n },\n\n unsubscribe(token: string, options?: RequestOptions): Promise<{ unsubscribed: boolean }> {\n return apiConfig.httpClient.get<{ unsubscribed: boolean }>(`${base()}/audiences/unsubscribe`, {\n ...options,\n params: { token },\n });\n },\n\n confirm(token: string, options?: RequestOptions): Promise<{ confirmed: boolean }> {\n return apiConfig.httpClient.get<{ confirmed: boolean }>(`${base()}/audiences/confirm`, {\n ...options,\n params: { token },\n });\n },\n },\n },\n\n activity: createActivityApi(apiConfig),\n\n automation: {\n agent: {\n getAgents(params?: GetAgentsParams, options?: RequestOptions): Promise<PaginatedResponse<Agent>> {\n const store_id = params?.store_id || apiConfig.storeId;\n const queryParams: Record<string, unknown> = { ...(params || {}) };\n delete queryParams.store_id;\n return apiConfig.httpClient.get<PaginatedResponse<Agent>>(`${base(store_id)}/agents`, {\n ...options,\n params: Object.keys(queryParams).length > 0 ? queryParams : undefined,\n });\n },\n\n getAgent(params: { id: string; store_id?: string }, options?: RequestOptions): Promise<Agent> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<Agent>(\n `${base(store_id)}/agents/${params.id}`,\n options,\n );\n },\n\n sendMessage(\n params: { id: string; message: string; chat_id?: string; store_id?: string },\n options?: RequestOptions,\n ): Promise<AgentChatMessage> {\n const store_id = params.store_id || apiConfig.storeId;\n const body: Record<string, unknown> = { message: params.message };\n if (params.chat_id) body.chat_id = params.chat_id;\n return apiConfig.httpClient.post<AgentChatMessage>(\n `${base(store_id)}/agents/${params.id}/chats/messages`,\n body,\n options,\n );\n },\n\n getChat(\n params: { id: string; chat_id: string; store_id?: string },\n options?: RequestOptions,\n ): Promise<AgentChat> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<AgentChat>(\n `${base(store_id)}/agents/${params.id}/chats/${params.chat_id}`,\n options,\n );\n },\n\n getChatMessages(\n params: { id: string; chat_id: string; limit?: number; store_id?: string },\n options?: RequestOptions,\n ): Promise<PaginatedResponse<AgentChatMessage>> {\n const store_id = params.store_id || apiConfig.storeId;\n const queryParams: Record<string, string> = {};\n if (params.limit) queryParams.limit = String(params.limit);\n return apiConfig.httpClient.get<PaginatedResponse<AgentChatMessage>>(\n `${base(store_id)}/agents/${params.id}/chats/${params.chat_id}/messages`,\n {\n ...options,\n params: Object.keys(queryParams).length > 0 ? queryParams : undefined,\n },\n );\n },\n\n rateChat(\n params: { id: string; chat_id: string; rating: number; comment?: string; store_id?: string },\n options?: RequestOptions,\n ): Promise<AgentChat> {\n const store_id = params.store_id || apiConfig.storeId;\n const body: Record<string, unknown> = { rating: params.rating };\n if (params.comment) body.comment = params.comment;\n return apiConfig.httpClient.post<AgentChat>(\n `${base(store_id)}/agents/${params.id}/chats/${params.chat_id}/rate`,\n body,\n options,\n );\n },\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 AuthTokens {\n\taccess_token: string;\n\trefresh_token?: string;\n\taccess_expires_at?: number;\n\taccount_id?: string;\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\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\nconst TOKEN_KEY = \"arky_token\";\nconst LEGACY_KEYS = [\"arky_refresh\", \"arky_expires_at\"];\n\nexport function defaultGetToken(): AuthTokens {\n\tif (typeof window === \"undefined\") return { access_token: \"\" };\n\treturn {\n\t\taccess_token: localStorage.getItem(TOKEN_KEY) || \"\",\n\t};\n}\n\nexport function defaultSetToken(tokens: AuthTokens): void {\n\tif (typeof window === \"undefined\") return;\n\tif (tokens.access_token) {\n\t\tlocalStorage.setItem(TOKEN_KEY, tokens.access_token);\n\t} else {\n\t\tlocalStorage.removeItem(TOKEN_KEY);\n\t}\n\tLEGACY_KEYS.forEach((key) => localStorage.removeItem(key));\n}\n\nexport function defaultLogout(): void {\n\tif (typeof window === \"undefined\") return;\n\tlocalStorage.removeItem(TOKEN_KEY);\n\tLEGACY_KEYS.forEach((key) => localStorage.removeItem(key));\n}\n\nexport function defaultIsAuthenticated(): boolean {\n\tif (typeof window === \"undefined\") return false;\n\tconst token = localStorage.getItem(TOKEN_KEY) || \"\";\n\treturn token.startsWith(\"customer_\") || token.startsWith(\"account_\");\n}\n\nexport interface HttpClientConfig {\n\tbaseUrl: string;\n\n\tstoreId: string;\n\n\trefreshPath?: string | (() => string);\n\n\tgetToken?: () => Promise<AuthTokens> | AuthTokens;\n\n\tsetToken?: (tokens: AuthTokens) => void;\n\n\tlogout?: () => void;\n\n\tnavigate?: (path: string) => void;\n\n\tloginFallbackPath?: string;\n\n\tisAuthenticated?: () => boolean;\n}\n\ntype SuccessCallback<T = unknown> = (ctx: RequestSuccessContext<T>) => void | Promise<void>;\n\ntype ErrorCallback = (ctx: RequestErrorContext) => void | Promise<void>;\n\nexport function createHttpClient(cfg: HttpClientConfig): HttpClient {\n\tconst getToken = cfg.getToken || defaultGetToken;\n\tconst setToken = cfg.setToken || defaultSetToken;\n\tconst logout = cfg.logout || defaultLogout;\n\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 { refresh_token } = await getToken();\n\t\t\tif (!refresh_token) {\n\t\t\t\tlogout();\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\tlogout();\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\tsetToken(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\tlet { access_token, access_expires_at } = await getToken();\n\n\tconst nowSec = Date.now() / 1000;\n\tif (access_expires_at && nowSec > access_expires_at) {\n\t\tawait ensureFreshToken();\n\t\tconst tokens = await getToken();\n\t\taccess_token = tokens.access_token;\n\t}\n\n\tif (access_token) {\n\t\theaders['Authorization'] = `Bearer ${access_token}`;\n\t}\n\n\t\tconst finalPath = options?.params ? path + buildQueryString(options.params as QueryParams) : path;\n\n\t\tconst fetchOpts: any = { method, headers };\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 err: any = new Error(error instanceof Error ? error.message : 'Network request failed');\n\t\t\terr.name = 'NetworkError';\n\t\t\terr.method = method;\n\t\t\terr.url = fullUrl;\nif (options?.onError && method !== 'GET') {\n\t\t\t\tPromise.resolve(\n\t\t\t\t\toptions.onError({ error: err, method, url: fullUrl, aborted: false })\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 tokens = await getToken();\n\t\t\t\theaders['Authorization'] = `Bearer ${tokens.access_token}`;\n\t\t\t\tfetchOpts.headers = headers;\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;\nif (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;\nif (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\nif (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 UpdateAccountProfileParams,\n SearchAccountsParams,\n DeleteAccountParams,\n GetMeParams,\n RequestOptions\n} from '../types/api';\n\n// TODO: type as Account once exported from types/index.ts\ntype Account = unknown;\n\nexport const createAccountApi = (apiConfig: ApiConfig) => {\n return {\n async updateAccount(params: UpdateAccountProfileParams, options?: RequestOptions): Promise<Account> {\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<Account>('/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 } from '../index';\nimport type {\n MagicLinkRequestParams,\n MagicLinkVerifyParams,\n AuthToken,\n RequestOptions\n} from '../types/api';\n\nexport const createAuthApi = (apiConfig: ApiConfig) => {\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 & { access_token?: string }>(\n '/v1/auth/verify',\n params,\n options,\n );\n if (result?.access_token) {\n apiConfig.setToken({ access_token: result.access_token, refresh_token: result.refresh_token });\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 & { access_token?: string }>(\n `/v1/stores/${storeId}/auth/verify`,\n params,\n options,\n );\n if (result?.access_token) {\n apiConfig.setToken({ access_token: result.access_token, refresh_token: result.refresh_token });\n }\n return result;\n },\n\n async magicLink(params: MagicLinkRequestParams, options?: RequestOptions): Promise<{ sent: boolean }> {\n return apiConfig.httpClient.post<{ sent: boolean }>('/v1/auth/code', params, options);\n }\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateStoreParams,\n UpdateStoreParams,\n DeleteStoreParams,\n GetStoreParams,\n GetStoresParams,\n GetSubscriptionPlansParams,\n SubscribeParams,\n CreatePortalSessionParams,\n InviteUserParams,\n RemoveMemberParams,\n HandleInvitationParams,\n TestWebhookParams,\n GetStoreMediaParams2,\n OAuthConnectParams,\n OAuthDisconnectParams,\n ListIntegrationsParams,\n CreateIntegrationParams,\n UpdateIntegrationParams,\n DeleteIntegrationParams,\n ListWebhooksParams,\n CreateWebhookParams,\n UpdateWebhookParams,\n DeleteWebhookParams,\n RequestOptions,\n} from \"../types/api\";\nimport type {\n Store,\n Integration,\n Webhook,\n Media,\n PaginatedResponse,\n} from \"../types\";\n\n// TODO: type as SubscriptionPlan once exported from types/index.ts\ntype SubscriptionPlan = unknown;\n// TODO: type as IntegrationConfig once exported from types/index.ts\ntype IntegrationConfig = unknown;\n\nexport const createStoreApi = (apiConfig: ApiConfig) => {\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(_params: GetStoreParams, options?: RequestOptions): Promise<Store> {\n return apiConfig.httpClient.get<Store>(\n `/v1/stores/${apiConfig.storeId}`,\n options\n );\n },\n\n async getStores(params?: GetStoresParams, options?: RequestOptions): Promise<PaginatedResponse<Store>> {\n return apiConfig.httpClient.get<PaginatedResponse<Store>>(`/v1/stores`, {\n ...options,\n params,\n });\n },\n\n async getSubscriptionPlans(\n _params: GetSubscriptionPlansParams,\n options?: RequestOptions\n ): Promise<SubscriptionPlan[]> {\n return apiConfig.httpClient.get<SubscriptionPlan[]>(\"/v1/stores/plans\", options);\n },\n\n async subscribe(params: SubscribeParams, options?: RequestOptions): Promise<{ checkout_url?: string }> {\n const { store_id, plan_id, 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, success_url, cancel_url },\n options\n );\n },\n\n async createPortalSession(\n params: CreatePortalSessionParams,\n options?: RequestOptions\n ): Promise<{ url: string }> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<{ url: string }>(\n `/v1/stores/${store_id}/subscription/portal`,\n { return_url: params.return_url },\n options\n );\n },\n\n async inviteUser(params: InviteUserParams, options?: RequestOptions): Promise<{ invited: boolean }> {\n return apiConfig.httpClient.post<{ invited: boolean }>(\n `/v1/stores/${apiConfig.storeId}/invitation`,\n params,\n options\n );\n },\n\n async removeMember(params: RemoveMemberParams, options?: RequestOptions): 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 handleInvitation(\n params: HandleInvitationParams,\n options?: RequestOptions\n ): Promise<{ handled: boolean }> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.put<{ handled: boolean }>(\n `/v1/stores/${store_id || apiConfig.storeId}/invitation`,\n payload,\n options\n );\n },\n\n async testWebhook(params: TestWebhookParams, options?: RequestOptions): Promise<{ tested: boolean }> {\n return apiConfig.httpClient.post<{ tested: boolean }>(\n `/v1/stores/${apiConfig.storeId}/webhooks/test`,\n params.webhook,\n options\n );\n },\n\n async getStoreMedia(\n params: GetStoreMediaParams2,\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) queryParams.ids = params.ids.join(',');\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) queryParams.sort_direction = params.sort_direction;\n\n return apiConfig.httpClient.get<PaginatedResponse<Media>>(`/v1/stores/${params.id}/media`, {\n ...options,\n params: queryParams,\n });\n },\n\n async oauthConnect(\n params: OAuthConnectParams,\n options?: RequestOptions\n ): Promise<Integration> {\n return apiConfig.httpClient.post<Integration>(\n `/v1/stores/${params.store_id}/oauth/connect`,\n { provider: params.provider, code: params.code, redirect_uri: params.redirect_uri },\n options\n );\n },\n\n async oauthDisconnect(\n params: OAuthDisconnectParams,\n options?: RequestOptions\n ): Promise<{ disconnected: boolean }> {\n return apiConfig.httpClient.post<{ disconnected: boolean }>(\n `/v1/stores/${params.store_id}/oauth/disconnect`,\n { provider: params.provider },\n options\n );\n },\n\n\n async listIntegrations(\n params: ListIntegrationsParams,\n options?: RequestOptions\n ): Promise<Integration[]> {\n return apiConfig.httpClient.get<Integration[]>(\n `/v1/stores/${params.store_id}/integrations`,\n options\n );\n },\n\n async createIntegration(\n params: CreateIntegrationParams,\n options?: RequestOptions\n ): Promise<Integration> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<Integration>(\n `/v1/stores/${store_id}/integrations`,\n payload,\n options\n );\n },\n\n async updateIntegration(\n params: UpdateIntegrationParams,\n options?: RequestOptions\n ): Promise<Integration> {\n const { store_id, id, ...payload } = params;\n return apiConfig.httpClient.put<Integration>(\n `/v1/stores/${store_id}/integrations/${id}`,\n payload,\n options\n );\n },\n\n async deleteIntegration(\n params: DeleteIntegrationParams,\n options?: RequestOptions\n ): Promise<{ deleted: boolean }> {\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${params.store_id}/integrations/${params.id}`,\n options\n );\n },\n\n async getIntegrationConfig(\n params: { store_id: string; type: 'payment' | 'shipping' },\n options?: RequestOptions\n ): Promise<IntegrationConfig> {\n return apiConfig.httpClient.get<IntegrationConfig>(\n `/v1/stores/${params.store_id}/integrations/config/${params.type}`,\n options\n );\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};\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 = await apiConfig.getToken();\n const response = await fetch(url, {\n method: 'POST',\n body: formData,\n headers: {\n Authorization: `Bearer ${tokens.access_token}`\n }\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 = ids.join(',');\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 = await apiConfig.getToken();\n const response = await fetch(`${url}?${queryString}`, {\n headers: {\n Authorization: `Bearer ${tokens.access_token}`\n }\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<{ triggered: boolean }> {\n\t\t\treturn apiConfig.httpClient.post<{ triggered: boolean }>(\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 CreateNodeParams,\n UpdateNodeParams,\n DeleteNodeParams,\n GetNodeParams,\n GetNodesParams,\n GetNodeChildrenParams,\n RequestOptions,\n} from \"../types/api\";\nimport type { Node, PaginatedResponse } from \"../types\";\nimport {\n getBlockFromArray,\n getBlockObjectValues,\n getImageUrl,\n} from \"../utils/blocks\";\n\nexport const createCmsApi = (apiConfig: ApiConfig) => {\n return {\n async createNode(params: CreateNodeParams, options?: RequestOptions): Promise<Node> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Node>(\n `/v1/stores/${target_store_id}/nodes`,\n payload,\n options\n );\n },\n\n async updateNode(params: UpdateNodeParams, options?: RequestOptions): Promise<Node> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<Node>(\n `/v1/stores/${target_store_id}/nodes/${params.id}`,\n payload,\n options\n );\n },\n\n async deleteNode(params: DeleteNodeParams, 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}/nodes/${params.id}`,\n options\n );\n },\n\n async getNode(params: GetNodeParams, options?: RequestOptions) {\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 if (params.key) {\n identifier = `${target_store_id}:${params.key}`;\n } else {\n throw new Error(\"GetNodeParams requires id, slug, or key\");\n }\n\n const response = await apiConfig.httpClient.get<Node>(\n `/v1/stores/${target_store_id}/nodes/${identifier}`,\n options\n );\n\n return {\n ...response,\n getBlock(key: string) {\n return getBlockFromArray(response, key, apiConfig.locale);\n },\n getBlockValues(key: string) {\n return getBlockObjectValues(response, key, apiConfig.locale);\n },\n getImage(key: string) {\n const block = getBlockFromArray(response, key, apiConfig.locale);\n return getImageUrl(block, true);\n },\n };\n },\n\n async getNodes(params: GetNodesParams, options?: RequestOptions): Promise<PaginatedResponse<Node>> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<Node>>(\n `/v1/stores/${target_store_id}/nodes`,\n {\n ...options,\n params: queryParams,\n }\n );\n },\n\n async getNodeChildren(params: GetNodeChildrenParams, options?: RequestOptions): Promise<PaginatedResponse<Node>> {\n const { id, store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<Node>>(\n `/v1/stores/${target_store_id}/nodes/${id}/children`,\n {\n ...options,\n params: queryParams,\n }\n );\n },\n\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateProductParams,\n UpdateProductParams,\n DeleteProductParams,\n GetProductParams,\n GetProductsParams,\n GetQuoteParams,\n CreateOrderParams,\n UpdateOrderParams,\n GetOrderParams,\n GetOrdersParams,\n ProcessOrderRefundParams,\n RequestOptions,\n} from \"../types/api\";\nimport type { Order, Product, OrderQuote, PaginatedResponse } from \"../types\";\n\nexport const createEshopApi = (apiConfig: ApiConfig) => {\n return {\n\n async createProduct(params: CreateProductParams, options?: RequestOptions): Promise<Product> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Product>(\n `/v1/stores/${target_store_id}/products`,\n payload,\n options,\n );\n },\n\n async updateProduct(params: UpdateProductParams, options?: RequestOptions): Promise<Product> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.put<Product>(\n `/v1/stores/${target_store_id}/products/${params.id}`,\n payload,\n options,\n );\n },\n\n async deleteProduct(params: DeleteProductParams, options?: RequestOptions): Promise<{ deleted: boolean }> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${target_store_id}/products/${params.id}`,\n options,\n );\n },\n\n async getProduct(params: GetProductParams, options?: RequestOptions): Promise<Product> {\n const target_store_id = params.store_id || apiConfig.storeId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.slug) {\n identifier = `${target_store_id}:${apiConfig.locale}:${params.slug}`;\n } else {\n throw new Error(\"GetProductParams requires id or slug\");\n }\n\n return apiConfig.httpClient.get<Product>(\n `/v1/stores/${target_store_id}/products/${identifier}`,\n options,\n );\n },\n\n async getProducts(params: GetProductsParams, options?: RequestOptions): Promise<PaginatedResponse<Product>> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<Product>>(\n `/v1/stores/${encodeURIComponent(target_store_id)}/products`,\n {\n ...options,\n params: queryParams,\n },\n );\n },\n\n async createOrder(params: CreateOrderParams, options?: RequestOptions): Promise<Order> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Order>(\n `/v1/stores/${target_store_id}/orders`,\n payload,\n options,\n );\n },\n\n async updateOrder(params: UpdateOrderParams, options?: RequestOptions): Promise<Order> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\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 getQuote(params: GetQuoteParams, options?: RequestOptions): Promise<OrderQuote> {\n const { location, ...rest } = params;\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 : undefined;\n return apiConfig.httpClient.post<OrderQuote>(\n `/v1/stores/${apiConfig.storeId}/orders/quote`,\n { ...rest, shipping_address, market: apiConfig.market },\n options,\n );\n },\n\n async processRefund(\n params: ProcessOrderRefundParams,\n options?: RequestOptions,\n ): Promise<Order> {\n return apiConfig.httpClient.post<Order>(\n `/v1/stores/${apiConfig.storeId}/orders/${params.id}/refund`,\n { amount: params.amount },\n options,\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateBookingParams,\n UpdateBookingParams,\n GetBookingParams,\n SearchBookingsParams,\n CancelBookingItemParams,\n CreateServiceParams,\n UpdateServiceParams,\n DeleteServiceParams,\n GetServiceParams,\n GetServicesParams,\n CreateProviderParams,\n UpdateProviderParams,\n DeleteProviderParams,\n GetProviderParams,\n GetProvidersParams,\n CreateServiceProviderParams,\n UpdateServiceProviderParams,\n DeleteServiceProviderParams,\n FindServiceProvidersParams,\n GetBookingQuoteParams,\n GetAvailabilityParams,\n AvailabilityResponse,\n ProcessBookingRefundParams,\n RequestOptions,\n Slot,\n} from \"../types/api\";\nimport type {\n Booking,\n BookingQuote,\n PaginatedResponse,\n Service,\n Provider,\n ServiceProvider,\n} from \"../types\";\n\nfunction groupCartToItems(cart: Slot[]) {\n const groups = new Map<string, { service_id: string; provider_id: string; slots: { from: number; to: number }[] }>();\n for (const s of cart) {\n const key = `${s.service_id}:${s.provider_id}`;\n if (!groups.has(key)) {\n groups.set(key, { service_id: s.service_id, provider_id: s.provider_id, slots: [] });\n }\n groups.get(key)!.slots.push({ from: s.from, to: s.to });\n }\n return [...groups.values()];\n}\n\nexport const createBookingApi = (apiConfig: ApiConfig) => {\n\n let cart: Slot[] = [];\n\n return {\n\n addToCart(slot: Slot) {\n cart.push(slot);\n },\n\n removeFromCart(slotId: string) {\n cart = cart.filter((s) => s.id !== slotId);\n },\n\n getCart(): Slot[] {\n return [...cart];\n },\n\n clearCart() {\n cart = [];\n },\n\n async createBooking(\n params: CreateBookingParams,\n options?: RequestOptions,\n ): Promise<Booking> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n\n return apiConfig.httpClient.post<Booking>(\n `/v1/stores/${target_store_id}/bookings`,\n { market: apiConfig.market, ...payload },\n options,\n );\n },\n\n async updateBooking(\n params: UpdateBookingParams,\n options?: RequestOptions,\n ): Promise<Booking> {\n const { id, ...payload } = params;\n return apiConfig.httpClient.put<Booking>(\n `/v1/stores/${apiConfig.storeId}/bookings/${id}`,\n payload,\n options,\n );\n },\n\n async getBooking(\n params: GetBookingParams,\n options?: RequestOptions,\n ): Promise<Booking> {\n const target_store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<Booking>(\n `/v1/stores/${target_store_id}/bookings/${params.id}`,\n options,\n );\n },\n\n async searchBookings(\n params: SearchBookingsParams,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<Booking>> {\n const { store_id, ...queryParams } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.get<PaginatedResponse<Booking>>(\n `/v1/stores/${target_store_id}/bookings`,\n {\n ...options,\n params: queryParams,\n },\n );\n },\n\n async getQuote(\n params: GetBookingQuoteParams,\n options?: RequestOptions,\n ): Promise<BookingQuote> {\n const { store_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n\n return apiConfig.httpClient.post<BookingQuote>(\n `/v1/stores/${target_store_id}/bookings/quote`,\n { market: apiConfig.market, ...payload },\n options,\n );\n },\n\n async processRefund(\n params: ProcessBookingRefundParams,\n options?: RequestOptions,\n ): Promise<Booking> {\n return apiConfig.httpClient.post<Booking>(\n `/v1/stores/${apiConfig.storeId}/bookings/${params.id}/refund`,\n { amount: params.amount },\n options,\n );\n },\n\n async getAvailability(\n params: GetAvailabilityParams,\n options?: RequestOptions,\n ): Promise<AvailabilityResponse> {\n const { store_id, ...query } = params;\n const target_store_id = store_id || apiConfig.storeId;\n\n return apiConfig.httpClient.get<AvailabilityResponse>(\n `/v1/stores/${target_store_id}/bookings/availability`,\n { ...options, params: query },\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 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 cancelBookingItem(\n params: CancelBookingItemParams,\n options?: RequestOptions,\n ): Promise<Booking> {\n const { store_id, booking_id, item_id, ...payload } = params;\n const target_store_id = store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Booking>(\n `/v1/stores/${target_store_id}/bookings/${booking_id}/items/${item_id}/cancel`,\n payload,\n options,\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};\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 CreateCustomerParams,\n UpdateCustomerParams,\n GetCustomerParams,\n FindCustomersParams,\n MergeCustomersParams,\n Customer,\n CreateAudienceParams,\n UpdateAudienceParams,\n GetAudienceParams,\n GetAudiencesParams,\n GetAudienceSubscribersParams,\n RemoveAudienceSubscriberParams,\n AddAudienceSubscriberParams,\n AddAudienceSubscriberResponse,\n AudienceSubscriber,\n} from \"../types/api\";\nimport type { Audience, PaginatedResponse } from \"../types\";\n\nexport interface Activity {\n store_id: string;\n customer_id: string;\n type: string;\n payload: Record<string, unknown>;\n created_at: number;\n country_code?: string | null;\n city?: string | null;\n region?: string | null;\n timezone?: string | null;\n device_type?: string | null;\n browser?: string | null;\n os?: string | null;\n language?: string | null;\n session_idx?: number | null;\n}\n\nexport interface TimelineParams {\n customer_id: string;\n store_id?: string;\n limit?: number;\n cursor?: string;\n}\n\nexport const createActivityAdminApi = (apiConfig: ApiConfig) => ({\n async timeline(params: TimelineParams, options?: RequestOptions): Promise<{ items: Activity[]; cursor: string | null }> {\n const store_id = params.store_id || apiConfig.storeId;\n const queryParams: Record<string, unknown> = { customer_id: params.customer_id };\n if (params.limit !== undefined) queryParams.limit = params.limit;\n if (params.cursor) queryParams.cursor = params.cursor;\n return apiConfig.httpClient.get<{ items: Activity[]; cursor: string | null }>(\n `/v1/stores/${store_id}/activities/timeline`,\n { ...options, params: queryParams },\n );\n },\n});\n\nexport const createCustomerApi = (apiConfig: ApiConfig) => {\n return {\n async create(params: CreateCustomerParams, options?: RequestOptions): Promise<Customer> {\n const { store_id, ...payload } = params;\n return apiConfig.httpClient.post<Customer>(\n `/v1/stores/${store_id || apiConfig.storeId}/customers`,\n payload,\n options\n );\n },\n\n async get(params: GetCustomerParams, options?: RequestOptions): Promise<Customer> {\n return apiConfig.httpClient.get<Customer>(\n `/v1/stores/${params.store_id || apiConfig.storeId}/customers/${params.id}`,\n options\n );\n },\n\n async find(params?: FindCustomersParams, options?: RequestOptions): Promise<{ items: Customer[]; cursor?: string }> {\n const store_id = params?.store_id || apiConfig.storeId;\n const queryParams: Record<string, unknown> = {};\n\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?.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: Customer[]; cursor?: string }>(\n `/v1/stores/${store_id}/customers`,\n {\n ...options,\n params: queryParams,\n }\n );\n },\n\n async update(params: UpdateCustomerParams, options?: RequestOptions): Promise<Customer> {\n const { id, store_id, ...body } = params;\n return apiConfig.httpClient.put<Customer>(\n `/v1/stores/${store_id || apiConfig.storeId}/customers/${id}`,\n body,\n options\n );\n },\n\n async merge(params: MergeCustomersParams, options?: RequestOptions): Promise<Customer> {\n const store_id = params.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<Customer>(\n `/v1/stores/${store_id}/customers/${params.target_id}/merge`,\n { source_id: params.source_id, store_id },\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}/customers/${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}/customers/${params.id}/sessions`,\n options\n );\n },\n\n\n audiences: {\n async create(params: CreateAudienceParams, options?: RequestOptions): Promise<Audience> {\n return apiConfig.httpClient.post<Audience>(\n `/v1/stores/${apiConfig.storeId}/audiences`,\n params,\n options,\n );\n },\n\n async update(params: UpdateAudienceParams, options?: RequestOptions): Promise<Audience> {\n return apiConfig.httpClient.put<Audience>(\n `/v1/stores/${apiConfig.storeId}/audiences/${params.id}`,\n params,\n options,\n );\n },\n\n async get(params: GetAudienceParams, options?: RequestOptions): Promise<Audience> {\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.key) {\n identifier = `${apiConfig.storeId}:${params.key}`;\n } else {\n throw new Error(\"GetAudienceParams requires id or key\");\n }\n return apiConfig.httpClient.get<Audience>(\n `/v1/stores/${apiConfig.storeId}/audiences/${identifier}`,\n options,\n );\n },\n\n async find(params: GetAudiencesParams, options?: RequestOptions): Promise<PaginatedResponse<Audience>> {\n return apiConfig.httpClient.get<PaginatedResponse<Audience>>(\n `/v1/stores/${apiConfig.storeId}/audiences`,\n { ...options, params },\n );\n },\n\n async getSubscribers(params: GetAudienceSubscribersParams, options?: RequestOptions): Promise<{ items: AudienceSubscriber[]; cursor?: string | null }> {\n return apiConfig.httpClient.get<{ items: AudienceSubscriber[]; cursor?: string | null }>(\n `/v1/stores/${apiConfig.storeId}/audiences/${params.id}/subscribers`,\n {\n ...options,\n params: { limit: params.limit, cursor: params.cursor },\n },\n );\n },\n\n async addSubscriber(params: AddAudienceSubscriberParams, options?: RequestOptions): Promise<AddAudienceSubscriberResponse> {\n return apiConfig.httpClient.post<AddAudienceSubscriberResponse>(\n `/v1/stores/${apiConfig.storeId}/audiences/${params.id}/subscribers`,\n { customer_id: params.customer_id },\n options,\n );\n },\n\n async removeSubscriber(params: RemoveAudienceSubscriberParams, options?: RequestOptions): Promise<{ deleted: boolean }> {\n return apiConfig.httpClient.delete<{ deleted: boolean }>(\n `/v1/stores/${apiConfig.storeId}/audiences/${params.id}/subscribers/${params.customer_id}`,\n options,\n );\n },\n },\n\n activity: createActivityAdminApi(apiConfig),\n };\n};\n","import type { ApiConfig } from '../index';\nimport type {\n\tCreateWorkflowParams,\n\tUpdateWorkflowParams,\n\tDeleteWorkflowParams,\n\tGetWorkflowParams,\n\tGetWorkflowsParams,\n\tTriggerWorkflowParams,\n\tGetWorkflowExecutionsParams,\n\tGetWorkflowExecutionParams,\n\tRequestOptions\n} from '../types/api';\nimport type { Workflow, WorkflowExecution, PaginatedResponse } from '../types';\n\nexport const createWorkflowApi = (apiConfig: ApiConfig) => {\n\treturn {\n\t\tasync createWorkflow(params: CreateWorkflowParams, options?: RequestOptions): Promise<Workflow> {\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<Workflow>(\n\t\t\t\t`/v1/stores/${target_store_id}/workflows`,\n\t\t\t\t{ ...payload, store_id: target_store_id },\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync updateWorkflow(params: UpdateWorkflowParams, options?: RequestOptions): Promise<Workflow> {\n\t\t\tconst { store_id, id, ...payload } = params;\n\t\t\tconst target_store_id = store_id || apiConfig.storeId;\n\t\t\treturn apiConfig.httpClient.put<Workflow>(\n\t\t\t\t`/v1/stores/${target_store_id}/workflows/${id}`,\n\t\t\t\tpayload,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync deleteWorkflow(params: DeleteWorkflowParams, options?: RequestOptions): Promise<{ deleted: boolean }> {\n\t\t\tconst store_id = params.store_id || apiConfig.storeId;\n\t\t\treturn apiConfig.httpClient.delete<{ deleted: boolean }>(\n\t\t\t\t`/v1/stores/${store_id}/workflows/${params.id}`,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync getWorkflow(params: GetWorkflowParams, options?: RequestOptions): Promise<Workflow> {\n\t\t\tconst store_id = params.store_id || apiConfig.storeId;\n\t\t\treturn apiConfig.httpClient.get<Workflow>(\n\t\t\t\t`/v1/stores/${store_id}/workflows/${params.id}`,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync getWorkflows(params?: GetWorkflowsParams, options?: RequestOptions): Promise<PaginatedResponse<Workflow>> {\n\t\t\tconst store_id = params?.store_id || apiConfig.storeId;\n\n\t\t\tconst { store_id: _, ...queryParams } = params || {};\n\t\t\treturn apiConfig.httpClient.get<PaginatedResponse<Workflow>>(`/v1/stores/${store_id}/workflows`, {\n\t\t\t\t...options,\n\t\t\t\tparams: Object.keys(queryParams).length > 0 ? queryParams : undefined\n\t\t\t});\n\t\t},\n\n\t\tasync triggerWorkflow(params: TriggerWorkflowParams, options?: RequestOptions): Promise<WorkflowExecution> {\n\t\t\tconst { secret, ...payload } = params;\n\t\t\treturn apiConfig.httpClient.post<WorkflowExecution>(`/v1/workflows/trigger/${secret}`, payload, options);\n\t\t},\n\n\t\tasync getWorkflowExecutions(params: GetWorkflowExecutionsParams, options?: RequestOptions): Promise<PaginatedResponse<WorkflowExecution>> {\n\t\t\tconst store_id = params.store_id || apiConfig.storeId;\n\t\t\tconst { store_id: _, workflow_id, ...queryParams } = params;\n\t\t\treturn apiConfig.httpClient.get<PaginatedResponse<WorkflowExecution>>(\n\t\t\t\t`/v1/stores/${store_id}/workflows/${workflow_id}/executions`,\n\t\t\t\t{\n\t\t\t\t\t...options,\n\t\t\t\t\tparams: Object.keys(queryParams).length > 0 ? queryParams : undefined\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\t\tasync getWorkflowExecution(params: GetWorkflowExecutionParams, options?: RequestOptions): Promise<WorkflowExecution> {\n\t\t\tconst store_id = params.store_id || apiConfig.storeId;\n\t\t\treturn apiConfig.httpClient.get<WorkflowExecution>(\n\t\t\t\t`/v1/stores/${store_id}/workflows/${params.workflow_id}/executions/${params.execution_id}`,\n\t\t\t\toptions\n\t\t\t);\n\t\t}\n\t};\n};\n","import type { ApiConfig } from '../index';\nimport type { RequestOptions } from '../types/api';\n\n// TODO: type as IntegrationService once exported from types/index.ts\ntype IntegrationService = unknown;\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 getIntegrationServices(options?: RequestOptions): Promise<IntegrationService[]> {\n\t\t\treturn apiConfig.httpClient.get<IntegrationService[]>('/v1/platform/integration-services', 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};\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\tCreateAgentParams,\n\tUpdateAgentParams,\n\tDeleteAgentParams,\n\tGetAgentParams,\n\tGetAgentsParams,\n\tRunAgentParams,\n\tGetAgentChatsParams,\n\tGetStoreChatsParams,\n\tGetAgentChatParams,\n\tUpdateAgentChatParams,\n\tRateAgentChatParams,\n\tRequestOptions\n} from '../types/api';\nimport type { PaginatedResponse, Agent, AgentChat, AgentChatMessage } from '../types';\n\nexport const createAgentApi = (apiConfig: ApiConfig) => {\n\treturn {\n\t\tasync createAgent(params: CreateAgentParams, options?: RequestOptions): Promise<Agent> {\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<Agent>(\n\t\t\t\t`/v1/stores/${target_store_id}/agents`,\n\t\t\t\t{ ...payload, store_id: target_store_id },\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync updateAgent(params: UpdateAgentParams, options?: RequestOptions): Promise<Agent> {\n\t\t\tconst { store_id, id, ...payload } = params;\n\t\t\tconst target_store_id = store_id || apiConfig.storeId;\n\t\t\treturn apiConfig.httpClient.put<Agent>(\n\t\t\t\t`/v1/stores/${target_store_id}/agents/${id}`,\n\t\t\t\tpayload,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync deleteAgent(params: DeleteAgentParams, options?: RequestOptions): Promise<{ deleted: boolean }> {\n\t\t\tconst store_id = params.store_id || apiConfig.storeId;\n\t\t\treturn apiConfig.httpClient.delete<{ deleted: boolean }>(\n\t\t\t\t`/v1/stores/${store_id}/agents/${params.id}`,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync getAgent(params: GetAgentParams, options?: RequestOptions): Promise<Agent> {\n\t\t\tconst store_id = params.store_id || apiConfig.storeId;\n\t\t\treturn apiConfig.httpClient.get<Agent>(\n\t\t\t\t`/v1/stores/${store_id}/agents/${params.id}`,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync getAgents(params?: GetAgentsParams, options?: RequestOptions): Promise<PaginatedResponse<Agent>> {\n\t\t\tconst store_id = params?.store_id || apiConfig.storeId;\n\t\t\tconst { store_id: _, ...queryParams } = params || {};\n\t\t\treturn apiConfig.httpClient.get<PaginatedResponse<Agent>>(`/v1/stores/${store_id}/agents`, {\n\t\t\t\t...options,\n\t\t\t\tparams: Object.keys(queryParams).length > 0 ? queryParams : undefined\n\t\t\t});\n\t\t},\n\n\t\tasync sendMessage(params: RunAgentParams, options?: RequestOptions): Promise<AgentChatMessage> {\n\t\t\tconst store_id = params.store_id || apiConfig.storeId;\n\t\t\tconst body: Record<string, unknown> = { message: params.message };\n\t\t\tif (params.chat_id) body.chat_id = params.chat_id;\n\t\t\tif (params.direct) body.direct = params.direct;\n\t\t\treturn apiConfig.httpClient.post<AgentChatMessage>(\n\t\t\t\t`/v1/stores/${store_id}/agents/${params.id}/chats/messages`,\n\t\t\t\tbody,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync getChats(params: GetAgentChatsParams, options?: RequestOptions): Promise<PaginatedResponse<AgentChat>> {\n\t\t\tconst store_id = params.store_id || apiConfig.storeId;\n\t\t\tconst queryParams: Record<string, string> = {};\n\t\t\tif (params.limit) queryParams.limit = String(params.limit);\n\t\t\tif (params.cursor) queryParams.cursor = params.cursor;\n\t\t\treturn apiConfig.httpClient.get<PaginatedResponse<AgentChat>>(\n\t\t\t\t`/v1/stores/${store_id}/agents/${params.id}/chats`,\n\t\t\t\t{\n\t\t\t\t\t...options,\n\t\t\t\t\tparams: Object.keys(queryParams).length > 0 ? queryParams : undefined\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\t\tasync getChat(params: GetAgentChatParams, options?: RequestOptions): Promise<AgentChat> {\n\t\t\tconst store_id = params.store_id || apiConfig.storeId;\n\t\t\treturn apiConfig.httpClient.get<AgentChat>(\n\t\t\t\t`/v1/stores/${store_id}/agents/${params.id}/chats/${params.chat_id}`,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync updateChat(params: UpdateAgentChatParams, options?: RequestOptions): Promise<AgentChat> {\n\t\t\tconst store_id = params.store_id || apiConfig.storeId;\n\t\t\treturn apiConfig.httpClient.put<AgentChat>(\n\t\t\t\t`/v1/stores/${store_id}/agents/${params.id}/chats/${params.chat_id}`,\n\t\t\t\t{ status: params.status },\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync rateChat(params: RateAgentChatParams, options?: RequestOptions): Promise<AgentChat> {\n\t\t\tconst store_id = params.store_id || apiConfig.storeId;\n\t\t\tconst body: Record<string, unknown> = { rating: params.rating };\n\t\t\tif (params.comment) body.comment = params.comment;\n\t\t\treturn apiConfig.httpClient.post<AgentChat>(\n\t\t\t\t`/v1/stores/${store_id}/agents/${params.id}/chats/${params.chat_id}/rate`,\n\t\t\t\tbody,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync getStoreChats(params: GetStoreChatsParams, options?: RequestOptions): Promise<PaginatedResponse<AgentChat>> {\n\t\t\tconst store_id = params.store_id || apiConfig.storeId;\n\t\t\tconst { store_id: _, ...queryParams } = params;\n\t\t\treturn apiConfig.httpClient.get<PaginatedResponse<AgentChat>>(`/v1/stores/${store_id}/chats`, {\n\t\t\t\t...options,\n\t\t\t\tparams: Object.keys(queryParams).length > 0 ? queryParams : undefined\n\t\t\t});\n\t\t},\n\n\t\tasync getChatMessages(params: GetAgentChatParams & { limit?: number }, options?: RequestOptions): Promise<PaginatedResponse<AgentChatMessage>> {\n\t\t\tconst store_id = params.store_id || apiConfig.storeId;\n\t\t\tconst queryParams: Record<string, string> = {};\n\t\t\tif (params.limit) queryParams.limit = String(params.limit);\n\t\t\treturn apiConfig.httpClient.get<PaginatedResponse<AgentChatMessage>>(\n\t\t\t\t`/v1/stores/${store_id}/agents/${params.id}/chats/${params.chat_id}/messages`,\n\t\t\t\t{\n\t\t\t\t\t...options,\n\t\t\t\t\tparams: Object.keys(queryParams).length > 0 ? queryParams : undefined\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\n\n\t};\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateEmailTemplateParams,\n UpdateEmailTemplateParams,\n DeleteEmailTemplateParams,\n GetEmailTemplateParams,\n GetEmailTemplatesParams,\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};\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, form_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/${form_id}/submissions`,\n {\n ...options,\n params: { ...queryParams, form_id, store_id: target_store_id },\n }\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 type EntityKind =\n | \"product\"\n | \"service\"\n | \"provider\"\n | \"node\"\n | \"customer\"\n | \"audience\"\n | \"agent\"\n | \"workflow\"\n | \"promo_code\"\n | \"email_template\"\n | \"form\"\n | \"taxonomy\"\n | \"media\"\n | \"order\"\n | \"booking\";\n\nexport type Granularity =\n | \"hour\"\n | \"day\"\n | \"week\"\n | \"month\"\n | { minutes: 5 | 10 | 15 | 30 };\n\nexport type Measure =\n | \"count\"\n | \"uniq_customers\"\n | \"orders_created\"\n | \"bookings_created\"\n | \"new_customers\"\n | \"form_submissions\"\n | { entity_state: { entity: EntityKind; status: string } };\n\nexport type Dimension =\n | \"country_code\"\n | \"city\"\n | \"device_type\"\n | \"browser\"\n | \"os\"\n | \"language\"\n | \"activity_type\"\n | \"entity\"\n | \"entity_status\"\n | { time_bucket: { granularity: Granularity } };\n\nexport type FilterField =\n | \"type\"\n | \"country_code\"\n | \"device_type\"\n | \"browser\"\n | \"os\"\n | \"language\"\n | \"entity\"\n | \"action\"\n | \"customer_id\";\n\nexport type FilterOp = \"eq\" | \"neq\" | \"in\" | \"not_in\" | \"contains\";\n\nexport interface Filter {\n field: FilterField;\n op: FilterOp;\n values: string[];\n}\n\nexport type TimeUnit = \"hour\" | \"day\" | \"week\" | \"month\";\n\nexport type TimeRange =\n | { from: number; unit: TimeUnit; to?: number }\n | { from: number; to: number };\n\nexport interface OrderBy {\n field: string;\n dir: \"asc\" | \"desc\";\n}\n\nexport interface AnalyticsQuery {\n measures: Measure[];\n dimensions?: Dimension[];\n filters?: Filter[];\n time_range: TimeRange;\n granularity?: Granularity;\n order_by?: OrderBy[];\n limit?: number;\n}\n\nexport interface AnalyticsRow {\n [key: string]: string | number | null;\n}\n\nexport interface AnalyticsQueryResponse {\n rows: AnalyticsRow[];\n meta: {\n row_count: number;\n execution_ms: number;\n };\n}\n\nexport const createAnalyticsApi = (apiConfig: ApiConfig) => {\n return {\n async query(\n spec: AnalyticsQuery,\n options?: RequestOptions & { store_id?: string },\n ): Promise<AnalyticsQueryResponse> {\n const store_id = options?.store_id || apiConfig.storeId;\n return apiConfig.httpClient.post<AnalyticsQueryResponse>(\n `/v1/stores/${store_id}/analytics/query`,\n spec,\n options,\n );\n },\n };\n};\n","import type { BookingPayment, OrderPayment, Price } from '../types';\n\ntype AnyPayment = Pick<BookingPayment, 'total' | 'currency'> | 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","\nexport type {\n ApiResponse,\n EshopCartItem,\n EshopStoreState,\n BookingStoreState,\n BookingCartItem,\n Store,\n Webhook,\n WebhookEventSubscription,\n Integration,\n IntegrationProvider,\n Block,\n Price,\n BookingPayment,\n BookingPaymentTax,\n BookingPaymentTaxLine,\n BookingPaymentPromoCode,\n BookingPaymentProvider,\n BookingPaymentRefund,\n BookingQuote,\n OrderPayment,\n OrderPaymentTax,\n OrderPaymentTaxLine,\n OrderPaymentPromoCode,\n OrderPaymentProvider,\n OrderPaymentRefund,\n OrderQuote,\n StoreSubscription,\n StoreSubscriptionPayment,\n StoreSubscriptionProvider,\n StoreSubscriptionStatus,\n StoreSubscriptionSource,\n AudienceSubscription,\n AudienceSubscriptionPayment,\n AudienceSubscriptionProvider,\n AudienceSubscriptionStatus,\n AudienceSubscriptionSource,\n PaymentMethod,\n ShippingMethod,\n ShippingWeightTier,\n Zone,\n Market,\n\n Address,\n GeoLocation,\n ZoneLocation,\n Location,\n PromoCodeValidation,\n PaginatedResponse,\n Language,\n Access,\n Media,\n MediaResolution,\n ProviderWithTimeline,\n Node,\n Workflow,\n WorkflowNode,\n WorkflowEdge,\n WorkflowTriggerNode,\n WorkflowHttpNode,\n WorkflowSwitchNode,\n WorkflowSwitchRule,\n WorkflowTransformNode,\n WorkflowLoopNode,\n WorkflowHttpMethod,\n WorkflowExecution,\n ExecutionStatus,\n NodeResult,\n Audience,\n AudienceType,\n AudienceAccessResponse,\n AudienceSubscribeResponse,\n AudienceSubscriber,\n Event,\n EventAction,\n\n ShippingStatus,\n OrderShipping,\n ShippingRate,\n ShippingAddress,\n Parcel,\n PurchaseLabelResult,\n ShipResult,\n ShipmentLine,\n Shipment,\n CustomsItem,\n CustomsDeclaration,\n\n GeoLocationBlock,\n\n Booking,\n BookingItem,\n BookingItemSnapshot,\n BookingItemStatus,\n BookingPaymentStatus,\n BookingCancellationReason,\n BookingService,\n BookingProvider,\n Service,\n Provider,\n ServiceProvider,\n ServiceDuration,\n ProviderTimelinePoint,\n TimelinePoint,\n WorkingHour,\n WorkingDay,\n SpecificDate,\n\n Order,\n OrderItem,\n OrderItemSnapshot,\n OrderItemStatus,\n OrderPaymentStatus,\n OrderCancellationReason,\n HistoryEntry,\n\n Product,\n ProductVariant,\n ProductInventory,\n InventoryLevel,\n GalleryItem,\n\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\n Agent,\n AgentChat,\n AgentChatMessage,\n PromoCode,\n\n Customer,\n Discount,\n Condition,\n\n BookingServiceStatus,\n BookingProviderStatus,\n ProductStatus,\n CustomerStatus,\n AudienceStatus,\n AgentChatStatus,\n WorkflowStatus,\n PromoCodeStatus,\n NodeStatus,\n EmailTemplateStatus,\n FormStatus,\n TaxonomyStatus,\n} from \"./types\";\n\nexport { PaymentMethodType } from \"./types\";\n\nexport type {\n GetAvailabilityParams,\n AvailabilitySlot,\n DaySlots,\n ProviderAvailability,\n AvailabilityResponse,\n Slot,\n SystemTemplateKey,\n \n GetShippingRatesParams,\n ShipParams,\n \n CreateAgentParams,\n UpdateAgentParams,\n GetAgentParams,\n GetAgentsParams,\n AgentStatus,\n} from \"./types/api\";\n\nexport type {\n LocationState,\n LocationCountry,\n GetCountriesResponse,\n} from \"./api/location\";\n\nexport type {\n AnalyticsQuery,\n AnalyticsQueryResponse,\n AnalyticsRow,\n Measure,\n Dimension,\n Filter,\n FilterField,\n FilterOp,\n Granularity,\n EntityKind,\n TimeRange,\n TimeUnit,\n OrderBy,\n} from \"./api/analytics\";\n\nexport type {\n CreateLocationParams,\n UpdateLocationParams,\n DeleteLocationParams,\n} from \"./types/api\";\n\nexport type {\n Activity,\n TrackParams,\n CommonActivityType,\n} from \"./api/storefront\";\nexport { COMMON_ACTIVITY_TYPES } from \"./api/storefront\";\n\nexport type { TimelineParams } from \"./api/crm\";\n\nexport const SDK_VERSION = \"0.7.102\";\nexport const SUPPORTED_FRAMEWORKS = [\n \"astro\",\n \"react\",\n \"vue\",\n \"svelte\",\n \"vanilla\",\n] as const;\n\nexport interface ApiConfig {\n httpClient: HttpClient;\n storeId: string;\n baseUrl: string;\n market: string;\n locale: string;\n setToken: (tokens: AuthTokens) => void;\n getToken: () => Promise<AuthTokens> | AuthTokens;\n}\n\nimport {\n createHttpClient,\n defaultGetToken,\n defaultSetToken,\n defaultLogout,\n defaultIsAuthenticated,\n type HttpClientConfig,\n type HttpClient,\n type AuthTokens,\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 { createBookingApi } from \"./api/booking\";\nimport { createLocationApi } from \"./api/location\";\nimport { createMarketApi } from \"./api/market\";\nimport { createCustomerApi } from \"./api/crm\";\nimport { createWorkflowApi } from \"./api/workflow\";\nimport { createPlatformApi } from \"./api/platform\";\nimport { createShippingApi } from \"./api/shipping\";\nimport { createAgentApi } from \"./api/agent\";\nimport { createEmailTemplateApi } from \"./api/emailTemplate\";\nimport { createFormApi } from \"./api/form\";\nimport { createTaxonomyApi } from \"./api/taxonomy\";\nimport { createAnalyticsApi } from \"./api/analytics\";\nimport { createStorefrontApi } from \"./api/storefront\";\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\nexport function createAdmin(\n config: HttpClientConfig & {\n market: string;\n locale?: string;\n }\n) {\n const locale = config.locale || \"en\";\n const getToken = config.getToken || defaultGetToken;\n const setToken = config.setToken || defaultSetToken;\n const logout = config.logout || defaultLogout;\n const isAuthenticated = config.isAuthenticated || defaultIsAuthenticated;\n\n const httpClient = createHttpClient({ ...config, getToken, setToken, logout });\n\n const apiConfig: ApiConfig = {\n httpClient,\n storeId: config.storeId,\n baseUrl: config.baseUrl,\n market: config.market,\n locale,\n setToken,\n getToken,\n };\n\n const accountApi = createAccountApi(apiConfig);\n const authApi = createAuthApi(apiConfig);\n const storeApi = createStoreApi(apiConfig);\n const platformApi = createPlatformApi(apiConfig);\n\n const cmsApi = createCmsApi(apiConfig);\n const eshopApi = createEshopApi(apiConfig);\n const bookingApi = createBookingApi(apiConfig);\n const crmApi = createCustomerApi(apiConfig);\n const locationApi = createLocationApi(apiConfig);\n const marketApi = createMarketApi(apiConfig);\n const agentApi = createAgentApi(apiConfig);\n const workflowApi = createWorkflowApi(apiConfig);\n const formApi = createFormApi(apiConfig);\n const taxonomyApi = createTaxonomyApi(apiConfig);\n const emailTemplateApi = createEmailTemplateApi(apiConfig);\n const analyticsApi = createAnalyticsApi(apiConfig);\n\n const sdk = {\n auth: authApi,\n account: accountApi,\n store: {\n ...storeApi,\n location: locationApi,\n market: marketApi,\n },\n media: createMediaApi(apiConfig),\n notification: createNotificationApi(apiConfig),\n promoCode: createPromoCodeApi(apiConfig),\n platform: platformApi,\n shipping: createShippingApi(apiConfig),\n cms: {\n node: {\n create: cmsApi.createNode,\n update: cmsApi.updateNode,\n delete: cmsApi.deleteNode,\n get: cmsApi.getNode,\n find: cmsApi.getNodes,\n getChildren: cmsApi.getNodeChildren,\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 },\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 create: eshopApi.createOrder,\n update: eshopApi.updateOrder,\n get: eshopApi.getOrder,\n find: eshopApi.getOrders,\n getQuote: eshopApi.getQuote,\n processRefund: eshopApi.processRefund,\n },\n },\n booking: {\n addToCart: bookingApi.addToCart,\n removeFromCart: bookingApi.removeFromCart,\n getCart: bookingApi.getCart,\n clearCart: bookingApi.clearCart,\n create: bookingApi.createBooking,\n update: bookingApi.updateBooking,\n get: bookingApi.getBooking,\n find: bookingApi.searchBookings,\n getQuote: bookingApi.getQuote,\n processRefund: bookingApi.processRefund,\n getAvailability: bookingApi.getAvailability,\n cancelItem: bookingApi.cancelBookingItem,\n service: {\n create: bookingApi.createService,\n update: bookingApi.updateService,\n delete: bookingApi.deleteService,\n get: bookingApi.getService,\n find: bookingApi.getServices,\n findProviders: bookingApi.findServiceProviders,\n createProvider: bookingApi.createServiceProvider,\n updateProvider: bookingApi.updateServiceProvider,\n deleteProvider: bookingApi.deleteServiceProvider,\n },\n provider: {\n create: bookingApi.createProvider,\n update: bookingApi.updateProvider,\n delete: bookingApi.deleteProvider,\n get: bookingApi.getProvider,\n find: bookingApi.getProviders,\n },\n },\n crm: {\n customer: {\n create: crmApi.create,\n get: crmApi.get,\n find: crmApi.find,\n update: crmApi.update,\n merge: crmApi.merge,\n revokeToken: crmApi.revokeToken,\n revokeAllTokens: crmApi.revokeAllTokens,\n },\n audience: {\n create: crmApi.audiences.create,\n update: crmApi.audiences.update,\n get: crmApi.audiences.get,\n find: crmApi.audiences.find,\n getSubscribers: crmApi.audiences.getSubscribers,\n addSubscriber: crmApi.audiences.addSubscriber,\n removeSubscriber: crmApi.audiences.removeSubscriber,\n },\n activity: crmApi.activity,\n },\n automation: {\n agent: {\n create: agentApi.createAgent,\n update: agentApi.updateAgent,\n delete: agentApi.deleteAgent,\n get: agentApi.getAgent,\n find: agentApi.getAgents,\n sendMessage: agentApi.sendMessage,\n getChats: agentApi.getChats,\n getChat: agentApi.getChat,\n updateChat: agentApi.updateChat,\n rateChat: agentApi.rateChat,\n getStoreChats: agentApi.getStoreChats,\n getChatMessages: agentApi.getChatMessages,\n },\n workflow: {\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 },\n },\n\n analytics: {\n query: analyticsApi.query,\n },\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 isAuthenticated,\n logout,\n setToken,\n\n extractBlockValues,\n\n utils: createUtilitySurface(apiConfig),\n\n };\n\n return sdk;\n}\n\nimport type { Customer as StorefrontCustomer, Market as StorefrontMarket, Store as StorefrontStore } from \"./types\";\n\nexport interface StorefrontSession {\n customer: StorefrontCustomer;\n store: StorefrontStore;\n market: StorefrontMarket | null;\n}\n\nexport type StorefrontSessionListener = (session: StorefrontSession | null) => void;\n\nexport function createStorefront(\n config: HttpClientConfig & {\n market?: string;\n locale?: string;\n }\n) {\n const locale = config.locale || \"en\";\n const market = config.market || \"\";\n const getToken = config.getToken || defaultGetToken;\n const setToken = config.setToken || defaultSetToken;\n const logout = config.logout || defaultLogout;\n const isAuthenticated = config.isAuthenticated || defaultIsAuthenticated;\n\n const httpClient = createHttpClient({\n ...config,\n getToken,\n setToken,\n logout,\n });\n\n const apiConfig: ApiConfig = {\n httpClient,\n storeId: config.storeId,\n baseUrl: config.baseUrl,\n market,\n locale,\n setToken,\n getToken,\n };\n\n const storefrontApi = createStorefrontApi(apiConfig);\n\n let sessionPromise: Promise<StorefrontSession> | null = null;\n let currentSession: StorefrontSession | null = null;\n const sessionListeners = new Set<StorefrontSessionListener>();\n const customerApi = storefrontApi.crm.customer;\n\n function emitSessionChange(session: StorefrontSession | null) {\n for (const listener of sessionListeners) {\n Promise.resolve()\n .then(() => listener(session))\n .catch(() => {});\n }\n }\n\n function setCurrentSessionFromResult(result: {\n customer: StorefrontCustomer;\n store: StorefrontStore;\n market: StorefrontMarket | null;\n }): StorefrontSession {\n const s: StorefrontSession = {\n customer: result.customer,\n store: result.store,\n market: result.market || null,\n };\n currentSession = s;\n emitSessionChange(s);\n return s;\n }\n\n function clearSession() {\n sessionPromise = null;\n currentSession = null;\n emitSessionChange(null);\n }\n\n async function invalidateAfterAuth<T>(promise: Promise<T>) {\n const result = await promise;\n clearSession();\n return result;\n }\n\n function identify(\n params?: { email?: string; verify?: boolean; market?: string },\n ): Promise<StorefrontSession> {\n if (params?.market !== undefined) apiConfig.market = params.market;\n\n // Cache only the bare bootstrap (no email, no verify).\n const isBareCall = !params?.email && !params?.verify;\n if (isBareCall && sessionPromise) return sessionPromise;\n\n const promise = (async (): Promise<StorefrontSession> => {\n try {\n const result = await customerApi.identify({\n market: apiConfig.market,\n email: params?.email,\n verify: params?.verify,\n });\n return setCurrentSessionFromResult(result);\n } catch (err: unknown) {\n const e = err as { statusCode?: number; status?: number; response?: { status?: number } };\n const status = e?.statusCode || e?.status || e?.response?.status;\n if (isBareCall && status === 401) {\n currentSession = null;\n emitSessionChange(null);\n await setToken({ access_token: \"\" });\n const result = await customerApi.identify({\n market: apiConfig.market,\n });\n return setCurrentSessionFromResult(result);\n }\n throw err;\n }\n })().catch((err) => {\n if (isBareCall) sessionPromise = null;\n throw err;\n });\n\n if (isBareCall) sessionPromise = promise;\n\n return promise;\n }\n\n function setMarket(key: string) {\n apiConfig.market = key;\n clearSession();\n }\n\n function onSessionChange(listener: StorefrontSessionListener) {\n sessionListeners.add(listener);\n if (currentSession) {\n Promise.resolve()\n .then(() => listener(currentSession))\n .catch(() => {});\n }\n return () => {\n sessionListeners.delete(listener);\n };\n }\n\n function getSession(): StorefrontSession | null {\n return currentSession;\n }\n\n function logoutAndClearSession() {\n clearSession();\n return logout();\n }\n\n function setTokenAndClearSession(tokens: AuthTokens) {\n setToken(tokens);\n clearSession();\n }\n\n const crm = {\n ...storefrontApi.crm,\n customer: {\n ...customerApi,\n async identify(\n params?: Parameters<typeof customerApi.identify>[0],\n options?: Parameters<typeof customerApi.identify>[1],\n ) {\n const result = await customerApi.identify(params, options);\n setCurrentSessionFromResult(result);\n return result;\n },\n verify: (\n params: Parameters<typeof customerApi.verify>[0],\n options?: Parameters<typeof customerApi.verify>[1],\n ) => invalidateAfterAuth(customerApi.verify(params, options)),\n },\n };\n\n async function verify(params: { code: string }) {\n const result = await invalidateAfterAuth(customerApi.verify(params));\n return result;\n }\n\n async function me() {\n return customerApi.getMe();\n }\n\n async function logoutCustomer() {\n try {\n await customerApi.logout();\n } finally {\n clearSession();\n }\n }\n\n return {\n identify,\n verify,\n me,\n logout: logoutCustomer,\n getSession,\n onSessionChange,\n store: storefrontApi.store,\n cms: storefrontApi.cms,\n eshop: storefrontApi.eshop,\n booking: storefrontApi.booking,\n crm,\n activity: storefrontApi.activity,\n automation: storefrontApi.automation,\n setStoreId: (storeId: string) => {\n apiConfig.storeId = storeId;\n clearSession();\n },\n getStoreId: () => apiConfig.storeId,\n setMarket,\n getMarket: () => apiConfig.market,\n setLocale: (locale: string) => {\n apiConfig.locale = locale;\n },\n getLocale: () => apiConfig.locale,\n isAuthenticated,\n setToken: setTokenAndClearSession,\n extractBlockValues,\n utils: createUtilitySurface(apiConfig),\n };\n}\n\nexport type { HttpClientConfig } from \"./services/createHttpClient\";\n"]}