arky-sdk 0.7.67 → 0.7.68
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.cjs.map +1 -1
- package/dist/index.d.cts +4 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types/index.ts","../src/utils/errors.ts","../src/utils/queryParams.ts","../src/services/createHttpClient.ts","../src/api/account.ts","../src/api/auth.ts","../src/api/business.ts","../src/api/media.ts","../src/api/notification.ts","../src/api/promoCode.ts","../src/utils/blocks.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/reaction.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/api/storefront.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/analytics.ts","../src/utils/inventory.ts","../src/index.ts"],"names":["PaymentMethodType","url","locale"],"mappings":"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","file":"index.cjs","sourcesContent":["export * from './api';\n\nexport enum PaymentMethodType {\n\tCash = \"cash\",\n\tCreditCard = \"credit_card\",\n}\n\nexport interface PaymentTaxLine {\n\trateBps: number;\n\tamount: number;\n\tlabel?: string;\n\tscope?: string;\n}\n\nexport interface BookingPaymentTax {\n\tamount: number;\n\tmodeSnapshot?: string;\n\trateBps: number;\n\tlines: BookingPaymentTaxLine[];\n}\n\nexport interface BookingPaymentTaxLine {\n\trateBps: 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\nexport type BookingPaymentProvider = {\n\ttype: 'stripe';\n\tcustomerId: string;\n\tpaymentIntentId?: string;\n};\n\nexport interface BookingPaymentRefund {\n\tid: string;\n\ttotal: number;\n\tproviderRefundId?: string;\n\tstatus: string;\n\tcreatedAt: 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\tpromoCode?: BookingPaymentPromoCode;\n\tprovider?: BookingPaymentProvider;\n\trefunds: BookingPaymentRefund[];\n\tpaymentMethodId?: string;\n\tmethodType: PaymentMethodType;\n}\n\nexport interface OrderPaymentTax {\n\tamount: number;\n\tmodeSnapshot?: string;\n\trateBps: number;\n\tlines: OrderPaymentTaxLine[];\n}\n\nexport interface OrderPaymentTaxLine {\n\trateBps: 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\nexport type OrderPaymentProvider = {\n\ttype: 'stripe';\n\tcustomerId: string;\n\tpaymentIntentId?: string;\n};\n\nexport interface OrderPaymentRefund {\n\tid: string;\n\ttotal: number;\n\tproviderRefundId?: string;\n\tstatus: string;\n\tcreatedAt: 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\tpromoCode?: OrderPaymentPromoCode;\n\tprovider?: OrderPaymentProvider;\n\trefunds: OrderPaymentRefund[];\n\tzoneId?: string;\n\tpaymentMethodId?: string;\n\tshippingMethodId?: string;\n\tmethodType: PaymentMethodType;\n}\n\nexport interface PromoCodeValidation {\n\tpromoCodeId: 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\tpaymentMethod: PaymentMethod | null;\n\tpaymentMethods: PaymentMethod[];\n\tpromoCode: PromoCodeValidation | null;\n\tpayment: BookingPayment;\n\tchargeAmount: number;\n\tid?: string;\n\texpiresAt?: 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\tshippingMethod: ShippingMethod | null;\n\tpaymentMethod: PaymentMethod | null;\n\tpaymentMethods: PaymentMethod[];\n\tpromoCode: PromoCodeValidation | null;\n\tpayment: OrderPayment;\n\tchargeAmount: number;\n\tid?: string;\n\texpiresAt?: number;\n}\n\n\nexport interface Price {\n\tcurrency: string;\n\tmarket: string;\n\tamount: number;\n\tcompareAt?: number;\n\taudienceId?: 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\tcompareAt?: 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\tpostalCode: 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\tpostalCode?: string | null;\n}\n\nexport interface EshopCartItem {\n\tid: string;\n\tproductId: string;\n\tvariantId: string;\n\tproductName: string;\n\tproductSlug: string;\n\tvariantAttributes: Record<string, any>;\n\tprice: Price;\n\tquantity: number;\n\taddedAt: number;\n\tmaxStock?: number;\n}\n\nexport interface BookingCartItem {\n\tid: string;\n\tserviceId: string;\n\tserviceName: string;\n\tdate: string;\n\tfrom: number;\n\tto: number;\n\ttimeText: string;\n\tproviderId?: string;\n\tforms: any[];\n}\n\n\nexport type IntegrationProvider =\n\t| { type: 'stripe'; secretKey?: string; publishableKey: string; webhookSecret?: string; currency: string }\n\t| { type: 'shippo'; apiToken?: string }\n\t| { type: 'google'; clientId?: string; clientSecret?: string; accessToken?: string; refreshToken?: string;\n\t\ttokenExpiresAt?: number; scopes: string[]; accountEmail?: string | null; connectedAt: number }\n\t| { type: 'google_analytics4'; measurementId: string }\n\t| { type: 'telegram_bot'; botToken?: string }\n\t| { type: 'deep_seek'; apiKey?: string; model?: string }\n\t\n\t| { type: 'open_ai'; apiKey?: string; model?: string }\n\t| { type: 'slack'; apiKey?: string }\n\t| { type: 'discord'; apiKey?: string }\n\t| { type: 'whats_app'; apiKey?: string }\n\t| { type: 'resend'; apiKey?: string }\n\t| { type: 'send_grid'; apiKey?: string }\n\t| { type: 'airtable'; apiKey?: string }\n\t| { type: 'linear'; apiKey?: string }\n\t| { type: 'git_hub'; apiKey?: string }\n\t| { type: 'git_lab'; apiKey?: string }\n\t| { type: 'dropbox'; apiKey?: string }\n\t| { type: 'hub_spot'; apiKey?: string }\n\t| { type: 'monday'; apiKey?: string }\n\t| { type: 'click_up'; apiKey?: string }\n\t| { type: 'pipedrive'; apiKey?: string }\n\t| { type: 'calendly'; apiKey?: string }\n\t| { type: 'typeform'; apiKey?: string }\n\t| { type: 'webflow'; apiKey?: string }\n\t| { type: 'trello'; apiKey?: string }\n\t| { type: 'replicate'; apiKey?: string }\n\t| { type: 'asana'; apiKey?: string }\n\t| { type: 'brevo'; apiKey?: string }\n\t| { type: 'intercom'; apiKey?: string }\n\t| { type: 'notion'; apiKey?: string }\n\t| { type: 'eleven_labs'; apiKey?: string }\n\t| { type: 'active_campaign'; apiKey?: string; accountUrl: string }\n\t| { type: 'shopify'; apiKey?: string; storeDomain: string }\n\t| { type: 'supabase'; apiKey?: string; projectUrl: string }\n\t| { type: 'mailchimp'; apiKey?: string }\n\t\n\t| { type: 'twilio'; accountSid?: string; authToken?: string }\n\t| { type: 'jira'; email?: string; apiToken?: string; domain: string }\n\t| { type: 'woo_commerce'; consumerKey?: string; consumerSecret?: string; storeUrl: string }\n\t| { type: 'freshdesk'; apiKey?: string; domain: string }\n\t| { type: 'zendesk'; apiToken?: string; email?: string; subdomain: string }\n\t\n\t| { type: 'salesforce'; accessToken?: string; instanceUrl: string }\n\t| { type: 'zoom'; apiKey?: string }\n\t| { type: 'microsoft_teams'; apiKey?: string }\n\t| { type: 'firebase'; apiKey?: string }\n\t| { type: 'arky'; apiKey?: string }\n\t\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\tbusinessId: string;\n\tkey: string;\n\tprovider: IntegrationProvider;\n\tcreatedAt: number;\n\tupdatedAt: number;\n}\n\nexport interface ShippingWeightTier {\n\tupToGrams: number;\n\tamount: number;\n}\n\nexport interface PaymentMethod {\n\tid: string;\n\tintegrationId?: string;\n}\n\nexport interface ShippingMethod {\n\tid: string;\n\ttaxable: boolean;\n\tetaText: string;\n\tlocationId?: string;\n\tintegrationId?: string;\n\tamount: number;\n\tfreeAbove?: number;\n\tweightTiers?: ShippingWeightTier[];\n}\n\nexport interface Location {\n\tid: string;\n\tbusinessId: string;\n\tkey: string;\n\taddress: Address;\n\tisPickupLocation: boolean;\n\tcreatedAt: number;\n\tupdatedAt: number;\n}\n\nexport interface InventoryLevel {\n\tlocationId: string;\n\tavailable: number;\n\treserved: number;\n}\n\nexport interface Zone {\n\tid: string;\n\tbusinessId: string;\n\tmarketId: string;\n\tcountries: string[];\n\tstates: string[];\n\tpostalCodes: string[];\n\ttaxBps: number;\n\tshippingMethods: ShippingMethod[];\n}\n\nexport interface Market {\n\tid: string;\n\tbusinessId: string;\n\tkey: string;\n\tcurrency: string;\n\ttaxMode: \"exclusive\" | \"inclusive\";\n\tpaymentMethods: PaymentMethod[];\n\tzones: Zone[];\n\tcreatedAt: number;\n\tupdatedAt: number;\n}\n\nexport interface Language {\n\tid: string;\n}\n\nexport interface BusinessEmails {\n\tbilling: string;\n\tsupport: string;\n}\n\nexport type WebhookEventSubscription =\n\t| { event: 'node.created'; parentId?: 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: 'business.created' }\n\t| { event: 'business.updated' }\n\t| { event: 'business.deleted' }\n\t| { event: 'audience.created' }\n\t| { event: 'audience.updated' }\n\t| { event: 'audience.deleted' };\n\nexport interface Webhook {\n\tid: string;\n\tbusinessId: string;\n\tkey: string;\n\turl: string;\n\tevents: WebhookEventSubscription[];\n\theaders: Record<string, string>;\n\tsecret: string;\n\tenabled: boolean;\n\tcreatedAt: number;\n\tupdatedAt: number;\n}\n\n\nexport type BusinessSubscriptionStatus =\n\t| 'pending'\n\t| 'active'\n\t| 'cancellation_scheduled'\n\t| 'cancelled'\n\t| 'expired';\n\nexport type BusinessSubscriptionSource = 'signup' | 'admin' | 'import';\n\nexport type BusinessSubscriptionProvider = {\n\ttype: 'stripe';\n\tcustomerId: string;\n\tsubscriptionId?: string;\n\tpriceId?: string;\n};\n\nexport interface BusinessSubscriptionPayment {\n\tcurrency: string;\n\tmarket: string;\n\tprovider?: BusinessSubscriptionProvider;\n}\n\nexport interface BusinessSubscription {\n\tid: string;\n\ttarget: string;\n\tplanId: string;\n\tpendingPlanId: string | null;\n\tpayment: BusinessSubscriptionPayment;\n\tstatus: BusinessSubscriptionStatus;\n\tstartDate: number;\n\tendDate: number;\n\ttoken: string;\n\tsource: BusinessSubscriptionSource;\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\tcustomerId: string;\n\tsubscriptionId?: string;\n\tpriceId?: string;\n};\n\nexport interface AudienceSubscriptionPayment {\n\tcurrency: string;\n\tmarket: string;\n\tprovider?: AudienceSubscriptionProvider;\n}\n\nexport interface AudienceSubscription {\n\tid: string;\n\tbusinessId: string;\n\tcustomerId: string;\n\taudienceId: string;\n\tplanId: string;\n\tpendingPlanId: string | null;\n\tpayment: AudienceSubscriptionPayment;\n\tstatus: AudienceSubscriptionStatus;\n\tstartDate: number;\n\tendDate: number;\n\ttoken: string;\n\tsource: AudienceSubscriptionSource;\n\tcreatedAt: number;\n\tupdatedAt: number;\n}\n\nexport interface Business {\n\tid: string;\n\tkey: string;\n\ttimezone: string;\n\tlanguages?: Language[];\n\temails?: BusinessEmails;\n\tsubscription?: BusinessSubscription;\n\tcounts?: Record<string, number>;\n}\n\nexport interface EshopStoreState {\n\tbusinessId: string;\n\tselectedShippingMethodId: string | null;\n\tuserToken: string | null;\n\tprocessingCheckout: 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\ttaxonomyId: string;\n\tfields: TaxonomyField[];\n}\n\nexport interface TaxonomyQuery {\n\ttaxonomyId: 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\tformId: 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\tmimeType: string;\n\ttitle?: string | null;\n\tdescription?: string | null;\n\talt?: string | null;\n\tentity: string;\n\tmetadata?: string | null;\n\tuploadedAt: string;\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\tcurrentStep: number;\n\ttotalSteps: number;\n\tsteps: Record<number, { name: string; labelKey: string }>;\n\tweekdays: string[];\n\tmonthYear: string;\n\tdays: any[];\n\tcurrent: Date;\n\tselectedDate: string | null;\n\tslots: any[];\n\tselectedSlot: any | null;\n\tselectedProvider: any | null;\n\tproviders: any[];\n\tloading: boolean;\n\tstartDate: string | null;\n\tendDate: string | null;\n\tguestToken: string | null;\n\tservice: any | null;\n\tbusiness: Business | null;\n\tcurrency: string;\n\tbookingForms: FormEntry[];\n\tapiUrl: string;\n\tbusinessId: string;\n\ttimezone: string;\n\ttzGroups: any;\n\titems: BookingCartItem[];\n\tallowedPaymentMethods: string[];\n\tpaymentConfig: {\n\t\tprovider: { publishableKey: 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\tserviceKey: string;\n\tproviderKey: string;\n\tprice: Price;\n}\n\nexport interface TimeRange {\n\tfrom: number;\n\tto: number;\n}\n\nexport interface BookingItem {\n\tid: string;\n\tserviceId: string;\n\tproviderId: string;\n\tbusinessId: string;\n\tbookingId: 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\tcustomerId: string;\n\tverified: boolean;\n\tforms: FormEntry[];\n\tbusinessId: string;\n\tserviceIds: string[];\n\tproviderIds: string[];\n\tpayment: BookingPayment;\n\tbusiness?: Business;\n\taccount?: any;\n\titems: BookingItem[];\n\taudienceId?: string;\n\thistory?: { action: string; reason?: string; timestamp: number }[];\n\tfiredReminders: number[];\n\tcreatedAt: number;\n\tlastModified: number;\n}\n\nexport interface Node {\n\tid: string;\n\tkey: string;\n\tbusinessId: string;\n\tparentId?: string | null;\n\tblocks: Block[];\n\ttaxonomies: TaxonomyEntry[];\n\tstatus: NodeStatus;\n\tslug: Record<string, string>;\n\tchildren: Node[];\n\tcreatedAt: number;\n\tupdatedAt: number;\n}\n\nexport interface EmailTemplate {\n\tid: string;\n\tkey: string;\n\tbusinessId: string;\n\tsubject: Record<string, string>;\n\tbody: string;\n\tfromName: string;\n\tfromEmail: string;\n\treplyTo?: string;\n\tpreheader?: string;\n\tstatus: EmailTemplateStatus;\n\tcreatedAt: number;\n\tupdatedAt: number;\n}\n\nexport interface Form {\n\tid: string;\n\tkey: string;\n\tbusinessId: string;\n\tschema: FormSchema[];\n\tstatus: FormStatus;\n\tcreatedAt: number;\n\tupdatedAt: number;\n}\n\nexport interface FormSubmission {\n\tid: string;\n\tformId: string;\n\tbusinessId: string;\n\tfields: FormField[];\n\tcreatedAt: number;\n}\n\nexport interface Taxonomy {\n\tid: string;\n\tkey: string;\n\tbusinessId: string;\n\tparentId?: string | null;\n\tschema?: TaxonomySchema[];\n\tstatus: TaxonomyStatus;\n\tcreatedAt: number;\n\tupdatedAt: number;\n}\n\nexport interface ServiceDuration {\n\tduration: number;\n\tisPause?: boolean;\n}\n\nexport interface ServiceProvider {\n\tid: string;\n\tproviderId: string;\n\tprices: Price[];\n\tdurations: ServiceDuration[];\n\taudienceIds: string[];\n\tworkingDays: Array<{ day: string; workingHours: Array<{ from: number; to: number }> }>;\n\tspecificDates: Array<{ date: number; workingHours: Array<{ from: number; to: number }> }>;\n\tslotInterval: number;\n\tminAdvance: number;\n\tmaxAdvance: number;\n\treminders: number[];\n\tforms?: FormEntry[];\n}\n\nexport interface Service {\n\tid: string;\n\tkey: string;\n\tslug: Record<string, string>;\n\tbusinessId: string;\n\tblocks: Block[];\n\ttaxonomies: TaxonomyEntry[];\n\tcreatedAt: number;\n\tupdatedAt: 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\tbusinessId: string;\n\tstatus: BookingProviderStatus;\n\taudienceIds: string[];\n\tblocks: Block[];\n\ttaxonomies: TaxonomyEntry[];\n\ttimeline: ProviderTimelinePoint[];\n\tcreatedAt: number;\n\tupdatedAt: number;\n}\n\nexport interface WorkflowEdge {\n\tsource: string;\n\ttarget: string;\n\toutput: string;\n\tbackEdge: boolean;\n}\n\nexport interface Workflow {\n\tid: string;\n\tkey: string;\n\tbusinessId: string;\n\tsecret: string;\n\tstatus: WorkflowStatus;\n\tnodes: Record<string, WorkflowNode>;\n\tedges: WorkflowEdge[];\n\n\tschedule?: string;\n\tcreatedAt: number;\n\tupdatedAt: 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\tdelayMs?: 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\ttimeoutMs?: number;\n\tintegrationId?: string;\n\tintegrationProviderId?: string;\n\tdelayMs?: number;\n\tretries?: number;\n\tretryDelayMs?: number;\n}\n\nexport interface WorkflowSwitchRule {\n\tcondition: string;\n}\n\nexport interface WorkflowSwitchNode {\n\ttype: 'switch';\n\trules: WorkflowSwitchRule[];\n\tdelayMs?: number;\n}\n\nexport interface WorkflowTransformNode {\n\ttype: 'transform';\n\tcode: string;\n\tdelayMs?: number;\n}\n\nexport interface WorkflowLoopNode {\n\ttype: 'loop';\n\texpression: string;\n\tdelayMs?: 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\tstartedAt: number;\n\tcompletedAt: number;\n\tdurationMs: number;\n\terror?: string;\n}\n\nexport interface WorkflowExecution {\n\tid: string;\n\tworkflowId: string;\n\tbusinessId: string;\n\tstatus: ExecutionStatus;\n\tinput: Record<string, any>;\n\tresults: Record<string, NodeResult>;\n\terror?: string;\n\tscheduledAt: number;\n\tstartedAt: number;\n\tcompletedAt?: number;\n\tcreatedAt: number;\n\tupdatedAt: number;\n}\n\nexport type AudienceType =\n\t| { type: 'standard' }\n\t| { type: 'confirmation'; confirmTemplateId: string }\n\t| { type: 'paid'; prices: SubscriptionPrice[]; paymentIntegrationId?: string };\n\nexport interface Audience {\n\tid: string;\n\tbusinessId: string;\n\tkey: string;\n\tstatus: AudienceStatus;\n\ttype: AudienceType;\n}\n\nexport interface AudienceAccessResponse {\n\thasAccess: boolean;\n\tsubscription?: AudienceSubscription;\n}\n\nexport interface AudienceSubscribeResponse {\n\tcheckoutUrl?: 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: { itemId: string; refundAmount: 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: 'business_created' }\n\t| { action: 'business_updated' }\n\t| { action: 'business_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\tcreatedAt: 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\ttrackingNumber?: string | null;\n\ttrackingUrl?: string | null;\n\tlabelUrl?: string | null;\n\tstatus: ShippingStatus;\n}\n\n\nexport interface ShipmentLine {\n\torderItemId: string;\n\tquantity: number;\n}\n\n\nexport interface Shipment {\n\tid: string;\n\tlocationId: string;\n\tlines: ShipmentLine[];\n\tcarrier?: string | null;\n\tservice?: string | null;\n\ttrackingNumber?: string | null;\n\ttrackingUrl?: string | null;\n\tlabelUrl?: string | null;\n\tstatus: ShippingStatus;\n\tcreatedAt: number;\n\tupdatedAt: number;\n}\n\n\nexport interface ShippingRate {\n\tid: string;\n\tprovider: string;\n\tcarrier: string;\n\tservice: string;\n\tdisplayName: string;\n\tamount: number;\n\tcurrency: string;\n\testimatedDays?: 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\tdistanceUnit: 'in' | 'cm';\n\tmassUnit: 'oz' | 'lb' | 'g' | 'kg';\n}\n\n\nexport interface PurchaseLabelResult {\n\ttrackingNumber: string;\n\ttrackingUrl?: string | null;\n\tlabelUrl: string;\n\tcarrier: string;\n\tservice: string;\n}\n\n\nexport interface ShipResult {\n\tshipmentId: string;\n\ttrackingNumber: string;\n\ttrackingUrl?: string | null;\n\tlabelUrl: string;\n}\n\n\nexport interface CustomsItem {\n\tdescription: string;\n\tquantity: number;\n\tnetWeight: string;\n\tmassUnit: string;\n\tvalueAmount: string;\n\tvalueCurrency: string;\n\toriginCountry: string;\n\ttariffNumber?: string | null;\n}\n\n\nexport interface CustomsDeclaration {\n\tcontentsType: string;\n\tcontentsExplanation?: string | null;\n\tnonDeliveryOption: string;\n\tcertify: boolean;\n\tcertifySigner: string;\n\titems: CustomsItem[];\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 \"BUSINESS.001\": \"BUSINESS.NOT_FOUND\",\n \"BUSINESS.002\": \"BUSINESS.FAILED_TO_CREATE\",\n \"BUSINESS.003\": \"BUSINESS.FAILED_TO_UPDATE\",\n \"BUSINESS.004\": \"BUSINESS.FAILED_TO_DELETE\",\n \"BUSINESS.005\": \"BUSINESS.FAILED_TO_GET_UPLOAD_URL\",\n \"BUSINESS.006\": \"BUSINESS.NAME_REQUIRED\",\n \"BUSINESS.007\": \"BUSINESS.BUSINESS_ID_REQUIRED\",\n \"BUSINESS.010\": \"BUSINESS.DESCRIPTION_REQUIRED\",\n \"BUSINESS.011\": \"BUSINESS.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.BUSINESS_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 BUSINESS: {\n NOT_FOUND: \"BUSINESS.NOT_FOUND\",\n FAILED_TO_CREATE: \"BUSINESS.FAILED_TO_CREATE\",\n FAILED_TO_UPDATE: \"BUSINESS.FAILED_TO_UPDATE\",\n FAILED_TO_DELETE: \"BUSINESS.FAILED_TO_DELETE\",\n FAILED_TO_GET_UPLOAD_URL: \"BUSINESS.FAILED_TO_GET_UPLOAD_URL\",\n NAME_REQUIRED: \"BUSINESS.NAME_REQUIRED\",\n BUSINESS_ID_REQUIRED: \"BUSINESS.BUSINESS_ID_REQUIRED\",\n DESCRIPTION_REQUIRED: \"BUSINESS.DESCRIPTION_REQUIRED\",\n SLUG_INVALID: \"BUSINESS.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\taccessToken: string;\n\trefreshToken?: string;\n\taccessExpiresAt?: number;\n\taccountId?: string;\n}\n\nconst STORAGE_KEYS = {\n\taccessToken: \"arky_token\",\n\trefreshToken: \"arky_refresh\",\n\taccessExpiresAt: \"arky_expires_at\",\n};\n\nexport function defaultGetToken(): AuthTokens {\n\tif (typeof window === \"undefined\") return { accessToken: \"\" };\n\treturn {\n\t\taccessToken: localStorage.getItem(STORAGE_KEYS.accessToken) || \"\",\n\t\trefreshToken: localStorage.getItem(STORAGE_KEYS.refreshToken) || \"\",\n\t\taccessExpiresAt: parseInt(localStorage.getItem(STORAGE_KEYS.accessExpiresAt) || \"0\", 10),\n\t};\n}\n\nexport function defaultSetToken(tokens: AuthTokens): void {\n\tif (typeof window === \"undefined\") return;\n\tif (tokens.accessToken) {\n\t\tlocalStorage.setItem(STORAGE_KEYS.accessToken, tokens.accessToken);\n\t\tlocalStorage.setItem(STORAGE_KEYS.refreshToken, tokens.refreshToken || \"\");\n\t\tlocalStorage.setItem(STORAGE_KEYS.accessExpiresAt, (tokens.accessExpiresAt || 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.accessToken) || \"\";\n\treturn token.startsWith(\"customer_\") || token.startsWith(\"account_\");\n}\n\nexport interface HttpClientConfig {\n\tbaseUrl: string;\n\n\tbusinessId: string;\n\n\trefreshPath?: 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\tdurationMs?: number;\n\trequestId?: 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\tdurationMs?: number;\n\trequestId?: 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\tconst refreshEndpoint = `${cfg.baseUrl}${cfg.refreshPath || '/v1/auth/refresh'}`;\n\tlet refreshPromise: Promise<void> | null = null;\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 { refreshToken } = await getToken();\n\t\t\tif (!refreshToken) {\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(refreshEndpoint, {\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({ refreshToken })\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 { accessToken, accessExpiresAt } = await getToken();\n\n\tconst nowSec = Date.now() / 1000;\n\tif (accessExpiresAt && nowSec > accessExpiresAt) {\n\t\tawait ensureFreshToken();\n\t\tconst tokens = await getToken();\n\t\taccessToken = tokens.accessToken;\n\t}\n\n\tif (accessToken) {\n\t\theaders['Authorization'] = `Bearer ${accessToken}`;\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.accessToken}`;\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\t\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\trequestId: requestId || null,\n\t\t\t\t\t\tdurationMs: 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\trequestId: requestId || null,\n\t\t\t\t\tdurationMs: 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.phoneNumbers !== undefined) payload.phoneNumbers = params.phoneNumbers;\n if (params.addresses !== undefined) payload.addresses = params.addresses;\n if (params.apiTokens !== undefined) payload.apiTokens = params.apiTokens;\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 businessId: apiConfig.businessId\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?.accessToken) {\n apiConfig.setToken({ ...result, email: params.email, isVerified: true });\n }\n return result;\n },\n\n async refresh(params: { refreshToken: string }, options?: RequestOptions) {\n return apiConfig.httpClient.post('/v1/auth/refresh', params, options);\n },\n\n async businessCode(businessId: string, params: { email: string }, options?: RequestOptions) {\n return apiConfig.httpClient.post(`/v1/businesses/${businessId}/auth/code`, params, options);\n },\n\n async businessVerify(businessId: string, params: MagicLinkVerifyParams, options?: RequestOptions) {\n const result = await apiConfig.httpClient.post(`/v1/businesses/${businessId}/auth/verify`, params, options);\n if (result?.accessToken) {\n apiConfig.setToken({ ...result, email: params.email, isVerified: 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 CreateBusinessParams,\n UpdateBusinessParams,\n DeleteBusinessParams,\n GetBusinessParams,\n GetBusinessesParams,\n GetSubscriptionPlansParams,\n SubscribeParams,\n CreatePortalSessionParams,\n InviteUserParams,\n RemoveMemberParams,\n HandleInvitationParams,\n TestWebhookParams,\n GetBusinessMediaParams2,\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 createBusinessApi = (apiConfig: ApiConfig) => {\n return {\n async createBusiness(\n params: CreateBusinessParams,\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.post(`/v1/businesses`, params, options);\n },\n\n async updateBusiness(\n params: UpdateBusinessParams,\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.put(\n `/v1/businesses/${params.id}`,\n params,\n options\n );\n },\n\n async deleteBusiness(\n params: DeleteBusinessParams,\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.delete(\n `/v1/businesses/${params.id}`,\n options\n );\n },\n\n async getBusiness(params: GetBusinessParams, options?: RequestOptions) {\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}`,\n options\n );\n },\n\n async getBusinesses(params?: GetBusinessesParams, options?: RequestOptions) {\n return apiConfig.httpClient.get(`/v1/businesses`, {\n ...options,\n params,\n });\n },\n\n async getSubscriptionPlans(\n params: GetSubscriptionPlansParams,\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.get(\"/v1/businesses/plans\", options);\n },\n\n async subscribe(params: SubscribeParams, options?: RequestOptions) {\n return apiConfig.httpClient.put(\n `/v1/businesses/${apiConfig.businessId}/subscribe`,\n params,\n options\n );\n },\n\n async createPortalSession(\n params: CreatePortalSessionParams,\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.post(\n `/v1/businesses/${apiConfig.businessId}/subscription/portal`,\n params,\n options\n );\n },\n\n async inviteUser(params: InviteUserParams, options?: RequestOptions) {\n return apiConfig.httpClient.post(\n `/v1/businesses/${apiConfig.businessId}/invitation`,\n params,\n options\n );\n },\n\n async removeMember(params: RemoveMemberParams, options?: RequestOptions) {\n return apiConfig.httpClient.delete(\n `/v1/businesses/${apiConfig.businessId}/members/${params.accountId}`,\n options\n );\n },\n\n async handleInvitation(\n params: HandleInvitationParams,\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.put(\n `/v1/businesses/${apiConfig.businessId}/invitation`,\n params,\n options\n );\n },\n\n async testWebhook(params: TestWebhookParams, options?: RequestOptions) {\n return apiConfig.httpClient.post(\n `/v1/businesses/${apiConfig.businessId}/webhooks/test`,\n params.webhook,\n options\n );\n },\n\n async getBusinessMedia(\n params: GetBusinessMediaParams2,\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.mimeType) queryParams.mimeType = params.mimeType;\n if (params.sortField) queryParams.sortField = params.sortField;\n if (params.sortDirection) queryParams.sortDirection = params.sortDirection;\n\n return apiConfig.httpClient.get(`/v1/businesses/${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/businesses/${params.businessId}/oauth/connect`,\n { provider: params.provider, code: params.code, redirectUri: params.redirectUri },\n options\n );\n },\n\n async oauthDisconnect(\n params: OAuthDisconnectParams,\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.post(\n `/v1/businesses/${params.businessId}/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/businesses/${params.businessId}/integrations`,\n options\n );\n },\n\n async createIntegration(\n params: CreateIntegrationParams,\n options?: RequestOptions\n ) {\n const { businessId, ...payload } = params;\n return apiConfig.httpClient.post(\n `/v1/businesses/${businessId}/integrations`,\n payload,\n options\n );\n },\n\n async updateIntegration(\n params: UpdateIntegrationParams,\n options?: RequestOptions\n ) {\n const { businessId, id, ...payload } = params;\n return apiConfig.httpClient.put(\n `/v1/businesses/${businessId}/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/businesses/${params.businessId}/integrations/${params.id}`,\n options\n );\n },\n\n async getIntegrationConfig(\n params: { businessId: string; type: 'payment' | 'shipping' | 'analytics' },\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.get(\n `/v1/businesses/${params.businessId}/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/businesses/${params.businessId}/webhooks`,\n options\n );\n },\n\n async createWebhook(\n params: CreateWebhookParams,\n options?: RequestOptions\n ) {\n const { businessId, ...payload } = params;\n return apiConfig.httpClient.post(\n `/v1/businesses/${businessId}/webhooks`,\n payload,\n options\n );\n },\n\n async updateWebhook(\n params: UpdateWebhookParams,\n options?: RequestOptions\n ) {\n const { businessId, id, ...payload } = params;\n return apiConfig.httpClient.put(\n `/v1/businesses/${businessId}/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/businesses/${params.businessId}/webhooks/${params.id}`,\n options\n );\n },\n\n };\n};\n","import type { ApiConfig } from '../index';\nimport type {\n UploadBusinessMediaParams,\n DeleteBusinessMediaParams,\n GetBusinessMediaParams,\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 targetBusinessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/media/${params.mediaId}`,\n options\n );\n },\n\n async uploadBusinessMedia(params: UploadBusinessMediaParams, options?: RequestOptions) {\n const _options = options;\n const { businessId, files = [], urls = [] } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n const url = `${apiConfig.baseUrl}/v1/businesses/${targetBusinessId}/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.accessToken}`\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 deleteBusinessMedia(params: DeleteBusinessMediaParams, options?: RequestOptions) {\n const { id, mediaId } = params;\n\n return apiConfig.httpClient.delete(\n `/v1/businesses/${id}/media/${mediaId}`,\n options\n );\n },\n\n async getBusinessMedia(params: GetBusinessMediaParams, options?: RequestOptions) {\n const { businessId, cursor, limit, ids, query, mimeType, sortField, sortDirection } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n const url = `${apiConfig.baseUrl}/v1/businesses/${targetBusinessId}/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 (mimeType) queryParams.mimeType = mimeType;\n if (sortField) queryParams.sortField = sortField;\n if (sortDirection) queryParams.sortDirection = sortDirection;\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.accessToken}`\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 { mediaId, businessId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n\n return apiConfig.httpClient.put(\n `/v1/businesses/${targetBusinessId}/media/${mediaId}`,\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.trackingPixelId}`,\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\treturn apiConfig.httpClient.post(\n\t\t\t\t`/v1/businesses/${apiConfig.businessId}/promo-codes`,\n\t\t\t\tparams,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync updatePromoCode(params: UpdatePromoCodeParams, options?: RequestOptions) {\n\t\t\treturn apiConfig.httpClient.put(\n\t\t\t\t`/v1/businesses/${apiConfig.businessId}/promo-codes/${params.id}`,\n\t\t\t\tparams,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync deletePromoCode(params: DeletePromoCodeParams, options?: RequestOptions) {\n\t\t\treturn apiConfig.httpClient.delete(\n\t\t\t\t`/v1/businesses/${apiConfig.businessId}/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\treturn apiConfig.httpClient.get(\n\t\t\t\t`/v1/businesses/${apiConfig.businessId}/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\treturn apiConfig.httpClient.get(`/v1/businesses/${apiConfig.businessId}/promo-codes`, {\n\t\t\t\t...options,\n\t\t\t\tparams\n\t\t\t});\n\t\t}\n\t};\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.mimeType ? (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 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 { businessId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `/v1/businesses/${targetBusinessId}/nodes`,\n payload,\n options\n );\n },\n\n async updateNode(params: UpdateNodeParams, options?: RequestOptions) {\n const { businessId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.put(\n `/v1/businesses/${targetBusinessId}/nodes/${params.id}`,\n payload,\n options\n );\n },\n\n async deleteNode(params: DeleteNodeParams, options?: RequestOptions) {\n const targetBusinessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.delete(\n `/v1/businesses/${targetBusinessId}/nodes/${params.id}`,\n options\n );\n },\n\n async getNode(params: GetNodeParams, options?: RequestOptions) {\n const targetBusinessId = params.businessId || apiConfig.businessId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.slug) {\n identifier = `${targetBusinessId}:${apiConfig.locale}:${params.slug}`;\n } else if (params.key) {\n identifier = `${targetBusinessId}:${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/businesses/${targetBusinessId}/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 { businessId, ...queryParams } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/nodes`,\n {\n ...options,\n params: queryParams,\n }\n );\n },\n\n async getNodeChildren(params: GetNodeChildrenParams, options?: RequestOptions) {\n const { id, businessId, ...queryParams } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/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 return apiConfig.httpClient.post(\n `/v1/businesses/${apiConfig.businessId}/products`,\n params,\n options,\n );\n },\n\n async updateProduct(params: UpdateProductParams, options?: RequestOptions) {\n return apiConfig.httpClient.put(\n `/v1/businesses/${apiConfig.businessId}/products/${params.id}`,\n params,\n options,\n );\n },\n\n async deleteProduct(params: DeleteProductParams, options?: RequestOptions) {\n return apiConfig.httpClient.delete(\n `/v1/businesses/${apiConfig.businessId}/products/${params.id}`,\n options,\n );\n },\n\n async getProduct(params: GetProductParams, options?: RequestOptions) {\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.slug) {\n identifier = `${apiConfig.businessId}:${apiConfig.locale}:${params.slug}`;\n } else {\n throw new Error(\"GetProductParams requires id or slug\");\n }\n\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/products/${identifier}`,\n options,\n );\n },\n\n async getProducts(params: GetProductsParams, options?: RequestOptions) {\n return apiConfig.httpClient.get(\n `/v1/businesses/${encodeURIComponent(apiConfig.businessId)}/products`,\n {\n ...options,\n params,\n },\n );\n },\n\n async createOrder(params: CreateOrderParams, options?: RequestOptions) {\n return apiConfig.httpClient.post(\n `/v1/businesses/${apiConfig.businessId}/orders`,\n params,\n options,\n );\n },\n\n async updateOrder(params: UpdateOrderParams, options?: RequestOptions) {\n return apiConfig.httpClient.put(\n `/v1/businesses/${apiConfig.businessId}/orders/${params.id}`,\n params,\n options,\n );\n },\n\n async getOrder(params: GetOrderParams, options?: RequestOptions) {\n \n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/orders/${params.id}`,\n options,\n );\n },\n\n async getOrders(params: GetOrdersParams, options?: RequestOptions) {\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/orders`,\n {\n ...options,\n params,\n },\n );\n },\n\n async getQuote(params: GetQuoteParams, options?: RequestOptions) {\n const { location, ...rest } = params;\n const shippingAddress = location\n ? {\n country: location.country || \"\",\n state: location.state || \"\",\n city: location.city || \"\",\n postalCode: location.postalCode || \"\",\n name: \"\",\n street1: \"\",\n street2: null,\n }\n : undefined;\n return apiConfig.httpClient.post(\n `/v1/businesses/${apiConfig.businessId}/orders/quote`,\n { ...rest, shippingAddress, 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/businesses/${apiConfig.businessId}/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, { serviceId: string; providerId: string; slots: { from: number; to: number }[] }>();\n for (const s of cart) {\n const key = `${s.serviceId}:${s.providerId}`;\n if (!groups.has(key)) {\n groups.set(key, { serviceId: s.serviceId, providerId: s.providerId, 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 { businessId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n\n return apiConfig.httpClient.post(\n `/v1/businesses/${targetBusinessId}/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/businesses/${apiConfig.businessId}/bookings/${id}`,\n payload,\n options,\n );\n },\n\n async getBooking(\n params: GetBookingParams,\n options?: RequestOptions,\n ) {\n const targetBusinessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/bookings/${params.id}`,\n options,\n );\n },\n\n async searchBookings(\n params: SearchBookingsParams,\n options?: RequestOptions,\n ) {\n const { businessId, ...queryParams } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/bookings`,\n {\n ...options,\n params: queryParams,\n },\n );\n },\n\n async getQuote(\n params: GetBookingQuoteParams,\n options?: RequestOptions,\n ) {\n const { businessId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n\n return apiConfig.httpClient.post(\n `/v1/businesses/${targetBusinessId}/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/businesses/${apiConfig.businessId}/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 { businessId, ...query } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n\n return apiConfig.httpClient.get<AvailabilityResponse>(\n `/v1/businesses/${targetBusinessId}/bookings/availability`,\n { ...options, params: query },\n );\n },\n\n async createService(params: CreateServiceParams, options?: RequestOptions) {\n const { businessId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `/v1/businesses/${targetBusinessId}/services`,\n payload,\n options,\n );\n },\n\n async updateService(params: UpdateServiceParams, options?: RequestOptions) {\n const { businessId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.put(\n `/v1/businesses/${targetBusinessId}/services/${params.id}`,\n payload,\n options,\n );\n },\n\n async deleteService(params: DeleteServiceParams, options?: RequestOptions) {\n const targetBusinessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.delete(\n `/v1/businesses/${targetBusinessId}/services/${params.id}`,\n options,\n );\n },\n\n async getService(params: GetServiceParams, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.slug) {\n identifier = `${businessId}:${apiConfig.locale}:${params.slug}`;\n } else {\n throw new Error(\"GetServiceParams requires id or slug\");\n }\n\n return apiConfig.httpClient.get(\n `/v1/businesses/${businessId}/services/${identifier}`,\n options,\n );\n },\n\n async getServices(params: GetServicesParams, options?: RequestOptions) {\n const { businessId, ...queryParams } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/services`,\n {\n ...options,\n params: queryParams,\n },\n );\n },\n\n async createProvider(\n params: CreateProviderParams,\n options?: RequestOptions,\n ) {\n const { businessId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `/v1/businesses/${targetBusinessId}/providers`,\n payload,\n options,\n );\n },\n\n async updateProvider(\n params: UpdateProviderParams,\n options?: RequestOptions,\n ) {\n const { businessId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.put(\n `/v1/businesses/${targetBusinessId}/providers/${params.id}`,\n payload,\n options,\n );\n },\n\n async deleteProvider(\n params: DeleteProviderParams,\n options?: RequestOptions,\n ) {\n const targetBusinessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.delete(\n `/v1/businesses/${targetBusinessId}/providers/${params.id}`,\n options,\n );\n },\n\n async getProvider(params: GetProviderParams, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.slug) {\n identifier = `${businessId}:${apiConfig.locale}:${params.slug}`;\n } else {\n throw new Error(\"GetProviderParams requires id or slug\");\n }\n\n return apiConfig.httpClient.get(\n `/v1/businesses/${businessId}/providers/${identifier}`,\n options,\n );\n },\n\n async getProviders(params: GetProvidersParams, options?: RequestOptions) {\n const { businessId, ...queryParams } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/providers`,\n {\n ...options,\n params: queryParams,\n },\n );\n },\n\n async cancelBookingItem(\n params: CancelBookingItemParams,\n options?: RequestOptions,\n ) {\n const { businessId, bookingId, itemId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `/v1/businesses/${targetBusinessId}/bookings/${bookingId}/items/${itemId}/cancel`,\n payload,\n options,\n );\n },\n\n async findServiceProviders(\n params: FindServiceProvidersParams,\n options?: RequestOptions,\n ) {\n const { businessId, ...queryParams } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/service-providers`,\n { ...options, params: queryParams },\n );\n },\n\n async createServiceProvider(\n params: CreateServiceProviderParams,\n options?: RequestOptions,\n ) {\n const { businessId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `/v1/businesses/${targetBusinessId}/service-providers`,\n payload,\n options,\n );\n },\n\n async updateServiceProvider(\n params: UpdateServiceProviderParams,\n options?: RequestOptions,\n ) {\n const { businessId, id, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.put(\n `/v1/businesses/${targetBusinessId}/service-providers/${id}`,\n payload,\n options,\n );\n },\n\n async deleteServiceProvider(\n params: DeleteServiceProviderParams,\n options?: RequestOptions,\n ) {\n const targetBusinessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.delete(\n `/v1/businesses/${targetBusinessId}/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/businesses/${apiConfig.businessId}/locations`,\n options,\n );\n },\n\n async get(id: string, options?: RequestOptions): Promise<Location> {\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/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/businesses/${apiConfig.businessId}/locations`,\n { ...params, businessId: apiConfig.businessId },\n options,\n );\n },\n\n async update(\n params: UpdateLocationParams,\n options?: RequestOptions,\n ): Promise<Location> {\n return apiConfig.httpClient.put(\n `/v1/businesses/${apiConfig.businessId}/locations/${params.id}`,\n { ...params, businessId: apiConfig.businessId },\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/businesses/${apiConfig.businessId}/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/businesses/${apiConfig.businessId}/markets`,\n options,\n );\n },\n\n async get(id: string, options?: RequestOptions): Promise<Market> {\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/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/businesses/${apiConfig.businessId}/markets`,\n { ...params, businessId: apiConfig.businessId },\n options,\n );\n },\n\n async update(\n params: UpdateMarketParams,\n options?: RequestOptions,\n ): Promise<Market> {\n return apiConfig.httpClient.put(\n `/v1/businesses/${apiConfig.businessId}/markets/${params.id}`,\n { ...params, businessId: apiConfig.businessId },\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/businesses/${apiConfig.businessId}/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 const createCustomerApi = (apiConfig: ApiConfig) => {\n return {\n async create(params: CreateCustomerParams, options?: RequestOptions) {\n return apiConfig.httpClient.post<Customer>(\n `/v1/businesses/${params.businessId || apiConfig.businessId}/customers`,\n params,\n options\n );\n },\n\n async get(params: GetCustomerParams, options?: RequestOptions) {\n return apiConfig.httpClient.get<Customer>(\n `/v1/businesses/${params.businessId || apiConfig.businessId}/customers/${params.id}`,\n options\n );\n },\n\n async find(params?: FindCustomersParams, options?: RequestOptions) {\n const businessId = params?.businessId || apiConfig.businessId;\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?.sortField) queryParams.sortField = params.sortField;\n if (params?.sortDirection) queryParams.sortDirection = params.sortDirection;\n\n return apiConfig.httpClient.get<{ items: Customer[]; cursor?: string }>(\n `/v1/businesses/${businessId}/customers`,\n {\n ...options,\n params: queryParams,\n }\n );\n },\n\n async update(params: UpdateCustomerParams, options?: RequestOptions) {\n const { id, businessId, ...body } = params;\n return apiConfig.httpClient.put<Customer>(\n `/v1/businesses/${businessId || apiConfig.businessId}/customers/${id}`,\n body,\n options\n );\n },\n\n async merge(params: MergeCustomersParams, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.post<Customer>(\n `/v1/businesses/${businessId}/customers/${params.targetId}/merge`,\n { sourceId: params.sourceId, businessId },\n options\n );\n },\n\n async revokeToken(params: { id: string; tokenId: string; businessId?: string }, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.delete(\n `/v1/businesses/${businessId}/customers/${params.id}/sessions/${params.tokenId}`,\n options\n );\n },\n\n async revokeAllTokens(params: { id: string; businessId?: string }, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.delete(\n `/v1/businesses/${businessId}/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/businesses/${apiConfig.businessId}/audiences`,\n params,\n options,\n );\n },\n\n async update(params: UpdateAudienceParams, options?: RequestOptions) {\n return apiConfig.httpClient.put(\n `/v1/businesses/${apiConfig.businessId}/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.businessId}:${params.key}`;\n } else {\n throw new Error(\"GetAudienceParams requires id or key\");\n }\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/audiences/${identifier}`,\n options,\n );\n },\n\n async find(params: GetAudiencesParams, options?: RequestOptions) {\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/audiences`,\n { ...options, params },\n );\n },\n\n async getSubscribers(params: GetAudienceSubscribersParams, options?: RequestOptions) {\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/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/businesses/${apiConfig.businessId}/audiences/${params.id}/subscribers`,\n { customerId: params.customerId },\n options,\n );\n },\n\n async removeSubscriber(params: RemoveAudienceSubscriberParams, options?: RequestOptions) {\n return apiConfig.httpClient.delete(\n `/v1/businesses/${apiConfig.businessId}/audiences/${params.id}/subscribers/${params.customerId}`,\n options,\n );\n },\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type { RequestOptions } from \"../types/api\";\nimport type { Block } from \"../types\";\n\nexport type ReactionTargetType =\n | \"product\"\n | \"service\"\n | \"provider\"\n | \"booking\"\n | \"node\";\n\nexport type ReactionStatus = \"pending\" | \"published\" | \"hidden\" | \"removed\";\n\nexport interface ReactionTarget {\n type: ReactionTargetType;\n id: string;\n}\n\nexport interface Reaction {\n id: string;\n businessId: string;\n customerId: string;\n verified: boolean;\n target: ReactionTarget;\n parentId?: string | null;\n kind: string;\n blocks: Block[];\n taxonomies: any[];\n status: ReactionStatus;\n createdAt: number;\n updatedAt: number;\n}\n\nexport interface CreateReactionParams {\n businessId?: string;\n target: ReactionTarget;\n kind: string;\n blocks?: Block[];\n parentId?: string;\n taxonomies?: any[];\n customerId?: string;\n}\n\nexport interface UpdateReactionParams {\n id: string;\n businessId?: string;\n blocks?: Block[];\n taxonomies?: any[];\n}\n\nexport interface GetReactionParams {\n id: string;\n businessId?: string;\n}\n\nexport interface FindReactionsParams {\n businessId?: string;\n targetType?: ReactionTargetType;\n targetId?: string;\n parentId?: string;\n customerId?: string;\n kind?: string;\n status?: ReactionStatus;\n contentOnly?: boolean;\n verified?: boolean;\n query?: string;\n limit?: number;\n cursor?: string;\n}\n\nexport interface ModerateReactionParams {\n id: string;\n businessId?: string;\n status: ReactionStatus;\n}\n\nexport interface EngagementSummaryParams {\n businessId?: string;\n targetType: ReactionTargetType;\n targetId: string;\n parentId?: string;\n}\n\nexport interface EngagementSummary {\n counts: Record<string, number>;\n mine: Reaction[];\n}\n\nexport const DEFAULT_REACTION_KINDS = [\n \"like\",\n \"love\",\n \"laugh\",\n \"wow\",\n \"sad\",\n \"insightful\",\n \"review\",\n \"comment\",\n \"star_1\",\n \"star_2\",\n \"star_3\",\n \"star_4\",\n \"star_5\",\n] as const;\n\nexport const REACTION_KIND_REGEX = /^[a-z0-9_]{1,32}$/;\n\nexport function isValidReactionKind(kind: string): boolean {\n return REACTION_KIND_REGEX.test(kind);\n}\n\nexport function computeAverageStars(\n counts: Record<string, number>\n): { average: number; count: number } {\n let total = 0;\n let weighted = 0;\n for (let i = 1; i <= 5; i++) {\n const c = counts[`star_${i}`] ?? 0;\n total += c;\n weighted += c * i;\n }\n return {\n average: total > 0 ? weighted / total : 0,\n count: total,\n };\n}\n\nexport const createReactionApi = (apiConfig: ApiConfig) => {\n const base = (businessId?: string) =>\n `/v1/businesses/${businessId || apiConfig.businessId}/reactions`;\n\n return {\n DEFAULT_REACTION_KINDS,\n isValidReactionKind,\n computeAverageStars,\n\n async create(params: CreateReactionParams, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n base(businessId),\n {\n businessId,\n target: params.target,\n kind: params.kind,\n blocks: params.blocks || [],\n parentId: params.parentId,\n taxonomies: params.taxonomies || [],\n },\n options\n );\n },\n\n async get(params: GetReactionParams, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `${base(businessId)}/${params.id}`,\n options\n );\n },\n\n async find(params?: FindReactionsParams, options?: RequestOptions) {\n const businessId = params?.businessId || apiConfig.businessId;\n const queryParams: Record<string, any> = {};\n if (params?.targetType) queryParams.targetType = params.targetType;\n if (params?.targetId) queryParams.targetId = params.targetId;\n if (params?.parentId) queryParams.parentId = params.parentId;\n if (params?.customerId) queryParams.customerId = params.customerId;\n if (params?.kind) queryParams.kind = params.kind;\n if (params?.status) queryParams.status = params.status;\n if (params?.contentOnly !== undefined)\n queryParams.contentOnly = params.contentOnly;\n if (params?.verified !== undefined)\n queryParams.verified = params.verified;\n if (params?.query) queryParams.query = params.query;\n if (params?.limit !== undefined) queryParams.limit = params.limit;\n if (params?.cursor) queryParams.cursor = params.cursor;\n\n return apiConfig.httpClient.get(\n base(businessId),\n { ...options, params: queryParams }\n );\n },\n\n async update(params: UpdateReactionParams, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.put(\n `${base(businessId)}/${params.id}`,\n {\n id: params.id,\n businessId,\n blocks: params.blocks,\n taxonomies: params.taxonomies,\n },\n options\n );\n },\n\n async remove(params: { id: string; businessId?: string }, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.delete(\n `${base(businessId)}/${params.id}`,\n options\n );\n },\n\n async moderate(params: ModerateReactionParams, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `${base(businessId)}/${params.id}/moderate`,\n {\n id: params.id,\n businessId,\n status: params.status,\n },\n options\n );\n },\n\n async listAdmin(\n params: { businessId?: string; limit?: number; cursor?: string },\n options?: RequestOptions\n ) {\n const businessId = params.businessId || apiConfig.businessId;\n const queryParams: Record<string, any> = { businessId };\n if (params.limit !== undefined) queryParams.limit = params.limit;\n if (params.cursor) queryParams.cursor = params.cursor;\n return apiConfig.httpClient.get(\n `${base(businessId)}/admin`,\n { ...options, params: queryParams }\n );\n },\n\n async summary(params: EngagementSummaryParams, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `${base(businessId)}/summary`,\n {\n ...options,\n params: {\n businessId,\n targetType: params.targetType,\n targetId: params.targetId,\n parentId: params.parentId,\n },\n }\n );\n },\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 businessId = params.businessId || apiConfig.businessId;\n\t\t\treturn apiConfig.httpClient.post(\n\t\t\t\t`/v1/businesses/${businessId}/workflows`,\n\t\t\t\t{ ...params, businessId },\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync updateWorkflow(params: UpdateWorkflowParams, options?: RequestOptions) {\n\t\t\treturn apiConfig.httpClient.put(\n\t\t\t\t`/v1/businesses/${apiConfig.businessId}/workflows/${params.id}`,\n\t\t\t\tparams,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync deleteWorkflow(params: DeleteWorkflowParams, options?: RequestOptions) {\n\t\t\treturn apiConfig.httpClient.delete(\n\t\t\t\t`/v1/businesses/${apiConfig.businessId}/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\treturn apiConfig.httpClient.get(\n\t\t\t\t`/v1/businesses/${apiConfig.businessId}/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 businessId = params?.businessId || apiConfig.businessId;\n\t\t\t\n\t\t\tconst { businessId: _, ...queryParams } = params || {};\n\t\t\treturn apiConfig.httpClient.get(`/v1/businesses/${businessId}/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 businessId = params.businessId || apiConfig.businessId;\n\t\t\tconst { businessId: _, workflowId, ...queryParams } = params;\n\t\t\treturn apiConfig.httpClient.get(\n\t\t\t\t`/v1/businesses/${businessId}/workflows/${workflowId}/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 businessId = params.businessId || apiConfig.businessId;\n\t\t\treturn apiConfig.httpClient.get(\n\t\t\t\t`/v1/businesses/${businessId}/workflows/${params.workflowId}/executions/${params.executionId}`,\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 { orderId, ...payload } = params;\n return apiConfig.httpClient.post(\n `/v1/businesses/${apiConfig.businessId}/orders/${orderId}/shipping/rates`,\n payload,\n options\n );\n },\n\n \n async ship(\n params: ShipParams,\n options?: RequestOptions\n ): Promise<ShipResult> {\n const { orderId, ...payload } = params;\n return apiConfig.httpClient.post(\n `/v1/businesses/${apiConfig.businessId}/orders/${orderId}/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\tGetBusinessChatsParams,\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 businessId = params.businessId || apiConfig.businessId;\n\t\t\treturn apiConfig.httpClient.post(\n\t\t\t\t`/v1/businesses/${businessId}/agents`,\n\t\t\t\t{ ...params, businessId },\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync updateAgent(params: UpdateAgentParams, options?: RequestOptions) {\n\t\t\treturn apiConfig.httpClient.put(\n\t\t\t\t`/v1/businesses/${apiConfig.businessId}/agents/${params.id}`,\n\t\t\t\tparams,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync deleteAgent(params: DeleteAgentParams, options?: RequestOptions) {\n\t\t\treturn apiConfig.httpClient.delete(\n\t\t\t\t`/v1/businesses/${apiConfig.businessId}/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\treturn apiConfig.httpClient.get(\n\t\t\t\t`/v1/businesses/${apiConfig.businessId}/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 businessId = params?.businessId || apiConfig.businessId;\n\t\t\tconst { businessId: _, ...queryParams } = params || {};\n\t\t\treturn apiConfig.httpClient.get(`/v1/businesses/${businessId}/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 body: Record<string, any> = { message: params.message };\n\t\t\tif (params.chatId) body.chatId = params.chatId;\n\t\t\tif (params.direct) body.direct = params.direct;\n\t\t\treturn apiConfig.httpClient.post(\n\t\t\t\t`/v1/businesses/${apiConfig.businessId}/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 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/businesses/${apiConfig.businessId}/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\treturn apiConfig.httpClient.get(\n\t\t\t\t`/v1/businesses/${apiConfig.businessId}/agents/${params.id}/chats/${params.chatId}`,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync updateChat(params: UpdateAgentChatParams, options?: RequestOptions) {\n\t\t\treturn apiConfig.httpClient.put(\n\t\t\t\t`/v1/businesses/${apiConfig.businessId}/agents/${params.id}/chats/${params.chatId}`,\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 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/businesses/${apiConfig.businessId}/agents/${params.id}/chats/${params.chatId}/rate`,\n\t\t\t\tbody,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync getBusinessChats(params: GetBusinessChatsParams, options?: RequestOptions) {\n\t\t\tconst businessId = params.businessId || apiConfig.businessId;\n\t\t\tconst { businessId: _, ...queryParams } = params;\n\t\t\treturn apiConfig.httpClient.get(`/v1/businesses/${businessId}/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 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/businesses/${apiConfig.businessId}/agents/${params.id}/chats/${params.chatId}/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 { businessId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `/v1/businesses/${targetBusinessId}/email-templates`,\n payload,\n options\n );\n },\n\n async updateEmailTemplate(params: UpdateEmailTemplateParams, options?: RequestOptions) {\n const { businessId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.put(\n `/v1/businesses/${targetBusinessId}/email-templates/${params.id}`,\n payload,\n options\n );\n },\n\n async deleteEmailTemplate(params: DeleteEmailTemplateParams, options?: RequestOptions) {\n const targetBusinessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.delete(\n `/v1/businesses/${targetBusinessId}/email-templates/${params.id}`,\n options\n );\n },\n\n async getEmailTemplate(params: GetEmailTemplateParams, options?: RequestOptions) {\n const targetBusinessId = params.businessId || apiConfig.businessId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.key) {\n identifier = `${targetBusinessId}:${params.key}`;\n } else {\n throw new Error(\"GetEmailTemplateParams requires id or key\");\n }\n\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/email-templates/${identifier}`,\n options\n );\n },\n\n async getEmailTemplates(params: GetEmailTemplatesParams, options?: RequestOptions) {\n const { businessId, ...queryParams } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/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 { businessId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `/v1/businesses/${targetBusinessId}/forms`,\n payload,\n options\n );\n },\n\n async updateForm(params: UpdateFormParams, options?: RequestOptions) {\n const { businessId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.put(\n `/v1/businesses/${targetBusinessId}/forms/${params.id}`,\n payload,\n options\n );\n },\n\n async deleteForm(params: DeleteFormParams, options?: RequestOptions) {\n const targetBusinessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.delete(\n `/v1/businesses/${targetBusinessId}/forms/${params.id}`,\n options\n );\n },\n\n async getForm(params: GetFormParams, options?: RequestOptions) {\n const targetBusinessId = params.businessId || apiConfig.businessId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.key) {\n identifier = `${targetBusinessId}:${params.key}`;\n } else {\n throw new Error(\"GetFormParams requires id or key\");\n }\n\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/forms/${identifier}`,\n options\n );\n },\n\n async getForms(params: GetFormsParams, options?: RequestOptions) {\n const { businessId, ...queryParams } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/forms`,\n {\n ...options,\n params: queryParams,\n }\n );\n },\n\n async submit(params: SubmitFormParams, options?: RequestOptions) {\n const { businessId, formId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `/v1/businesses/${targetBusinessId}/forms/${formId}/submissions`,\n { ...payload, formId, businessId: targetBusinessId },\n options\n );\n },\n\n async getSubmissions(params: GetFormSubmissionsParams, options?: RequestOptions) {\n const { businessId, formId, ...queryParams } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/forms/${formId}/submissions`,\n {\n ...options,\n params: { ...queryParams, formId, businessId: targetBusinessId },\n }\n );\n },\n\n async getSubmission(params: GetFormSubmissionParams, options?: RequestOptions) {\n const targetBusinessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/forms/${params.formId}/submissions/${params.id}`,\n options\n );\n },\n\n async updateSubmission(params: UpdateFormSubmissionParams, options?: RequestOptions) {\n const { businessId, formId, id, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.put(\n `/v1/businesses/${targetBusinessId}/forms/${formId}/submissions/${id}`,\n { ...payload, formId, businessId: targetBusinessId, 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 { businessId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `/v1/businesses/${targetBusinessId}/taxonomies`,\n payload,\n options\n );\n },\n\n async updateTaxonomy(params: UpdateTaxonomyParams, options?: RequestOptions) {\n const { businessId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.put(\n `/v1/businesses/${targetBusinessId}/taxonomies/${params.id}`,\n payload,\n options\n );\n },\n\n async deleteTaxonomy(params: DeleteTaxonomyParams, options?: RequestOptions) {\n const targetBusinessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.delete(\n `/v1/businesses/${targetBusinessId}/taxonomies/${params.id}`,\n options\n );\n },\n\n async getTaxonomy(params: GetTaxonomyParams, options?: RequestOptions) {\n const targetBusinessId = params.businessId || apiConfig.businessId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.key) {\n identifier = `${targetBusinessId}:${params.key}`;\n } else {\n throw new Error(\"GetTaxonomyParams requires id or key\");\n }\n\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/taxonomies/${identifier}`,\n options\n );\n },\n\n async getTaxonomies(params: GetTaxonomiesParams, options?: RequestOptions) {\n const { businessId, ...queryParams } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/taxonomies`,\n {\n ...options,\n params: queryParams,\n }\n );\n },\n\n async getTaxonomyChildren(params: GetTaxonomyChildrenParams, options?: RequestOptions) {\n const { id, businessId } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/taxonomies/${id}/children`,\n options\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type { RequestOptions } from \"../types/api\";\n\nexport interface AnalyticsSummary {\n revenue: number;\n revenueChange: number;\n orders: number;\n ordersChange: number;\n bookings: number;\n bookingsChange: number;\n newCustomers: number;\n newCustomersChange: number;\n formSubmissions: number;\n formSubmissionsChange: number;\n activeProducts: number;\n activeServices: number;\n activeProviders: number;\n}\n\nexport interface TimeSeriesPoint {\n date: string;\n value: number;\n}\n\nexport interface TimeSeriesResponse {\n period: { start: string; end: string };\n interval: string;\n series: Record<string, TimeSeriesPoint[]>;\n}\n\nexport interface TopEntity {\n entityId: string;\n label: string;\n count: number;\n revenue: number;\n}\n\nexport interface StatusBreakdown {\n status: string;\n count: number;\n}\n\nexport const createAnalyticsApi = (apiConfig: ApiConfig) => {\n return {\n async getSummary(params?: { period?: string }, options?: RequestOptions): Promise<AnalyticsSummary> {\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/analytics/summary`,\n {\n ...options,\n params: params || {},\n },\n );\n },\n\n async getSeries(\n params: { metrics: string[]; period?: string; interval?: string },\n options?: RequestOptions,\n ): Promise<TimeSeriesResponse> {\n const { metrics, ...rest } = params;\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/analytics/series`,\n {\n ...options,\n params: { ...rest, metrics: metrics.join(\",\") },\n },\n );\n },\n\n async getTopEntities(\n params: { entity: string; period?: string; limit?: number },\n options?: RequestOptions,\n ): Promise<TopEntity[]> {\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/analytics/top`,\n {\n ...options,\n params,\n },\n );\n },\n\n async getStatusBreakdown(\n params: { entity: string; period?: string },\n options?: RequestOptions,\n ): Promise<StatusBreakdown[]> {\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/analytics/status`,\n {\n ...options,\n params,\n },\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type { RequestOptions, Slot } from \"../types/api\";\nimport {\n computeAverageStars,\n DEFAULT_REACTION_KINDS,\n isValidReactionKind,\n} from \"./reaction\";\nimport {\n getBlockFromArray,\n getBlockObjectValues,\n getImageUrl,\n} from \"../utils/blocks\";\n\nfunction groupCartToItems(cart: Slot[]) {\n const groups = new Map<\n string,\n { serviceId: string; providerId: string; slots: { from: number; to: number }[] }\n >();\n\n for (const slot of cart) {\n const key = `${slot.serviceId}:${slot.providerId}`;\n if (!groups.has(key)) {\n groups.set(key, {\n serviceId: slot.serviceId,\n providerId: slot.providerId,\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 = (businessId = apiConfig.businessId) =>\n `/v1/storefront/${businessId}`;\n let cart: Slot[] = [];\n\n return {\n business: {\n getBusiness(options?: RequestOptions) {\n return apiConfig.httpClient.get(base(), options);\n },\n\n getIntegrationConfig(\n params: { businessId?: string; type: \"payment\" | \"shipping\" | \"analytics\" },\n options?: RequestOptions,\n ) {\n return apiConfig.httpClient.get(\n `${base(params.businessId)}/integrations/config/${params.type}`,\n options,\n );\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 businessId = params.businessId || apiConfig.businessId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.slug) {\n identifier = `${businessId}:${apiConfig.locale}:${params.slug}`;\n } else if (params.key) {\n identifier = `${businessId}:${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(businessId)}/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 { businessId, ...queryParams } = params;\n return apiConfig.httpClient.get(`${base(businessId)}/nodes`, {\n ...options,\n params: queryParams,\n });\n },\n\n getChildren(params: any, options?: RequestOptions) {\n const { id, businessId, ...queryParams } = params;\n return apiConfig.httpClient.get(`${base(businessId)}/nodes/${id}/children`, {\n ...options,\n params: queryParams,\n });\n },\n },\n\n form: {\n get(params: any, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.key) {\n identifier = `${businessId}:${params.key}`;\n } else {\n throw new Error(\"GetFormParams requires id or key\");\n }\n\n return apiConfig.httpClient.get(\n `${base(businessId)}/forms/${identifier}`,\n options,\n );\n },\n\n submit(params: any, options?: RequestOptions) {\n const { businessId, formId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `${base(targetBusinessId)}/forms/${formId}/submissions`,\n { ...payload, formId, businessId: targetBusinessId },\n options,\n );\n },\n },\n\n taxonomy: {\n get(params: any, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.key) {\n identifier = `${businessId}:${params.key}`;\n } else {\n throw new Error(\"GetTaxonomyParams requires id or key\");\n }\n\n return apiConfig.httpClient.get(\n `${base(businessId)}/taxonomies/${identifier}`,\n options,\n );\n },\n\n getChildren(params: any, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `${base(businessId)}/taxonomies/${params.id}/children`,\n options,\n );\n },\n },\n },\n\n eshop: {\n product: {\n get(params: any, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.slug) {\n identifier = `${businessId}:${apiConfig.locale}:${params.slug}`;\n } else {\n throw new Error(\"GetProductParams requires id or slug\");\n }\n\n return apiConfig.httpClient.get(\n `${base(businessId)}/products/${identifier}`,\n options,\n );\n },\n\n find(params: any, options?: RequestOptions) {\n const { businessId, ...queryParams } = params;\n return apiConfig.httpClient.get(`${base(businessId)}/products`, {\n ...options,\n params: queryParams,\n });\n },\n },\n\n order: {\n getQuote(params: any, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n const { location, businessId: _businessId, ...rest } = params;\n const shippingAddress = location\n ? {\n country: location.country || \"\",\n state: location.state || \"\",\n city: location.city || \"\",\n postalCode: location.postalCode || \"\",\n name: \"\",\n street1: \"\",\n street2: null,\n }\n : undefined;\n\n return apiConfig.httpClient.post(\n `${base(businessId)}/orders/quote`,\n { ...rest, shippingAddress, market: apiConfig.market },\n options,\n );\n },\n\n checkout(params: any, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `${base(businessId)}/orders/checkout`,\n { ...params, businessId, market: apiConfig.market },\n options,\n );\n },\n\n get(params: any, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `${base(businessId)}/orders/${params.id}`,\n options,\n );\n },\n\n find(params: any, options?: RequestOptions) {\n const { businessId, ...queryParams } = params;\n return apiConfig.httpClient.get(`${base(businessId)}/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 { businessId, items: paramItems, ...payload } = params || {};\n const targetBusinessId = businessId || apiConfig.businessId;\n const items = paramItems || groupCartToItems(cart);\n\n return apiConfig.httpClient.post(\n `${base(targetBusinessId)}/bookings/checkout`,\n { market: \"booking\", ...payload, items },\n options,\n );\n },\n\n get(params: any, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `${base(businessId)}/bookings/${params.id}`,\n options,\n );\n },\n\n find(params: any, options?: RequestOptions) {\n const { businessId, ...queryParams } = params;\n return apiConfig.httpClient.get(`${base(businessId)}/bookings`, {\n ...options,\n params: queryParams,\n });\n },\n\n getQuote(params: any, options?: RequestOptions) {\n const { businessId, ...payload } = params;\n return apiConfig.httpClient.post(\n `${base(businessId)}/bookings/quote`,\n { market: \"booking\", ...payload },\n options,\n );\n },\n\n getAvailability(params: any, options?: RequestOptions) {\n const { businessId, ...queryParams } = params;\n return apiConfig.httpClient.get(\n `${base(businessId)}/bookings/availability`,\n { ...options, params: queryParams },\n );\n },\n\n cancelItem(params: any, options?: RequestOptions) {\n const { businessId, bookingId, itemId, ...payload } = params;\n return apiConfig.httpClient.post(\n `${base(businessId)}/bookings/${bookingId}/items/${itemId}/cancel`,\n payload,\n options,\n );\n },\n\n service: {\n get(params: any, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.slug) {\n identifier = `${businessId}:${apiConfig.locale}:${params.slug}`;\n } else {\n throw new Error(\"GetServiceParams requires id or slug\");\n }\n\n return apiConfig.httpClient.get(\n `${base(businessId)}/services/${identifier}`,\n options,\n );\n },\n\n find(params: any, options?: RequestOptions) {\n const { businessId, ...queryParams } = params;\n return apiConfig.httpClient.get(`${base(businessId)}/services`, {\n ...options,\n params: queryParams,\n });\n },\n\n findProviders(params: any, options?: RequestOptions) {\n const { businessId, ...queryParams } = params;\n return apiConfig.httpClient.get(`${base(businessId)}/service-providers`, {\n ...options,\n params: queryParams,\n });\n },\n },\n\n provider: {\n get(params: any, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.slug) {\n identifier = `${businessId}:${apiConfig.locale}:${params.slug}`;\n } else {\n throw new Error(\"GetProviderParams requires id or slug\");\n }\n\n return apiConfig.httpClient.get(\n `${base(businessId)}/providers/${identifier}`,\n options,\n );\n },\n\n find(params: any, options?: RequestOptions) {\n const { businessId, ...queryParams } = params;\n return apiConfig.httpClient.get(`${base(businessId)}/providers`, {\n ...options,\n params: queryParams,\n });\n },\n },\n },\n\n crm: {\n customer: {\n initialize(params?: { businessId?: string }, options?: RequestOptions) {\n const businessId = params?.businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `${base(businessId)}/customers/initialize`,\n { businessId },\n options,\n );\n },\n\n signInAnonymously(params?: { businessId?: string }, options?: RequestOptions) {\n const businessId = params?.businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `${base(businessId)}/customers/initialize`,\n { businessId },\n options,\n );\n },\n\n connect(params: any, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `${base(businessId)}/customers/connect`,\n { email: params.email, businessId },\n options,\n );\n },\n\n requestCode(\n params: { email: string; businessId?: string },\n options?: RequestOptions,\n ) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `${base(businessId)}/customers/auth/code`,\n { email: params.email, businessId },\n options,\n );\n },\n\n verify(\n params: { email: string; code: string; businessId?: string },\n options?: RequestOptions,\n ) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `${base(businessId)}/customers/auth/verify`,\n { email: params.email, code: params.code, businessId },\n options,\n );\n },\n\n refreshToken(\n params: { refreshToken: string; businessId?: string },\n options?: RequestOptions,\n ) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `${base(businessId)}/customers/auth/refresh`,\n { refreshToken: params.refreshToken },\n options,\n );\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.businessId}:${params.key}`;\n } else {\n throw new Error(\"GetAudienceParams requires id or key\");\n }\n\n return apiConfig.httpClient.get(\n `${base(apiConfig.businessId)}/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 customerId: params.customerId,\n priceId: params.priceId,\n successUrl: params.successUrl,\n cancelUrl: params.cancelUrl,\n confirmUrl: params.confirmUrl,\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 reaction: {\n DEFAULT_REACTION_KINDS,\n isValidReactionKind,\n computeAverageStars,\n\n create(params: any, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `${base(businessId)}/reactions`,\n {\n businessId,\n target: params.target,\n kind: params.kind,\n blocks: params.blocks || [],\n parentId: params.parentId,\n taxonomies: params.taxonomies || [],\n },\n options,\n );\n },\n\n get(params: any, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `${base(businessId)}/reactions/${params.id}`,\n options,\n );\n },\n\n find(params?: any, options?: RequestOptions) {\n const businessId = params?.businessId || apiConfig.businessId;\n const queryParams = { ...(params || {}) };\n delete queryParams.businessId;\n return apiConfig.httpClient.get(`${base(businessId)}/reactions`, {\n ...options,\n params: queryParams,\n });\n },\n\n update(params: any, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.put(\n `${base(businessId)}/reactions/${params.id}`,\n {\n id: params.id,\n businessId,\n blocks: params.blocks,\n taxonomies: params.taxonomies,\n },\n options,\n );\n },\n\n remove(params: { id: string; businessId?: string }, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.delete(\n `${base(businessId)}/reactions/${params.id}`,\n options,\n );\n },\n\n summary(params: any, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(`${base(businessId)}/reactions/summary`, {\n ...options,\n params: {\n businessId,\n targetType: params.targetType,\n targetId: params.targetId,\n parentId: params.parentId,\n },\n });\n },\n },\n },\n\n automation: {\n agent: {\n getAgents(params?: any, options?: RequestOptions) {\n const businessId = params?.businessId || apiConfig.businessId;\n const queryParams = { ...(params || {}) };\n delete queryParams.businessId;\n return apiConfig.httpClient.get(`${base(businessId)}/agents`, {\n ...options,\n params: Object.keys(queryParams).length > 0 ? queryParams : undefined,\n });\n },\n\n getAgent(params: { id: string; businessId?: string }, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `${base(businessId)}/agents/${params.id}`,\n options,\n );\n },\n\n sendMessage(\n params: { id: string; message: string; chatId?: string; businessId?: string },\n options?: RequestOptions,\n ) {\n const businessId = params.businessId || apiConfig.businessId;\n const body: Record<string, any> = { message: params.message };\n if (params.chatId) body.chatId = params.chatId;\n return apiConfig.httpClient.post(\n `${base(businessId)}/agents/${params.id}/chats/messages`,\n body,\n options,\n );\n },\n\n getChat(\n params: { id: string; chatId: string; businessId?: string },\n options?: RequestOptions,\n ) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `${base(businessId)}/agents/${params.id}/chats/${params.chatId}`,\n options,\n );\n },\n\n getChatMessages(\n params: { id: string; chatId: string; limit?: number; businessId?: string },\n options?: RequestOptions,\n ) {\n const businessId = params.businessId || apiConfig.businessId;\n const queryParams: Record<string, string> = {};\n if (params.limit) queryParams.limit = String(params.limit);\n return apiConfig.httpClient.get(\n `${base(businessId)}/agents/${params.id}/chats/${params.chatId}/messages`,\n {\n ...options,\n params: Object.keys(queryParams).length > 0 ? queryParams : undefined,\n },\n );\n },\n\n rateChat(\n params: { id: string; chatId: string; rating: number; comment?: string; businessId?: string },\n options?: RequestOptions,\n ) {\n const businessId = params.businessId || apiConfig.businessId;\n const body: Record<string, any> = { rating: params.rating };\n if (params.comment) body.comment = params.comment;\n return apiConfig.httpClient.post(\n `${base(businessId)}/agents/${params.id}/chats/${params.chatId}/rate`,\n body,\n options,\n );\n },\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 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 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","\ndeclare global {\n interface Window {\n dataLayer: any[];\n gtag: (...args: any[]) => void;\n }\n}\n\nexport function injectGA4Script(measurementId: string): void {\n if (typeof window === \"undefined\") return;\n\n if (document.querySelector(`script[src*=\"${measurementId}\"]`)) return;\n\n window.dataLayer = window.dataLayer || [];\n\n window.gtag = function gtag(...args: any[]) {\n window.dataLayer.push(args);\n };\n\n window.gtag(\"js\", new Date());\n\n window.gtag(\"config\", measurementId);\n\n const script = document.createElement(\"script\");\n script.async = true;\n script.src = `https://www.googletagmanager.com/gtag/js?id=${measurementId}`;\n document.head.appendChild(script);\n}\n\nexport function track(\n eventName: string,\n params?: Record<string, any>\n): void {\n if (typeof window === \"undefined\") return;\n\n if (window.gtag) {\n window.gtag(\"event\", eventName, params);\n }\n\n}\n\nexport function isAnalyticsReady(): boolean {\n if (typeof window === \"undefined\") return false;\n return typeof window.gtag === \"function\";\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.locationId === 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?.locationId;\n}\n","\nexport type {\n ApiResponse,\n EshopCartItem,\n EshopStoreState,\n BookingStoreState,\n BookingCartItem,\n Business,\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 BusinessSubscription,\n BusinessSubscriptionPayment,\n BusinessSubscriptionProvider,\n BusinessSubscriptionStatus,\n BusinessSubscriptionSource,\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 AnalyticsSummary,\n TimeSeriesPoint,\n TimeSeriesResponse,\n TopEntity,\n StatusBreakdown,\n} from \"./api/analytics\";\n\nexport type {\n CreateLocationParams,\n UpdateLocationParams,\n DeleteLocationParams,\n} from \"./types/api\";\n\nexport const SDK_VERSION = \"0.7.67\";\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 businessId: 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 { createBusinessApi } from \"./api/business\";\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 { createReactionApi } from \"./api/reaction\";\nexport {\n DEFAULT_REACTION_KINDS,\n REACTION_KIND_REGEX,\n isValidReactionKind,\n computeAverageStars,\n} from \"./api/reaction\";\nexport type {\n Reaction,\n ReactionTarget,\n ReactionTargetType,\n ReactionStatus,\n CreateReactionParams,\n UpdateReactionParams,\n GetReactionParams,\n FindReactionsParams,\n ModerateReactionParams,\n EngagementSummary,\n EngagementSummaryParams,\n} from \"./api/reaction\";\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 { injectGA4Script, track } from \"./utils/analytics\";\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 track,\n\n getAvailableStock,\n getReservedStock,\n hasStock,\n getInventoryAt,\n getFirstAvailableFCId,\n };\n}\n\nexport async 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 businessId: config.businessId,\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 businessApi = createBusinessApi(apiConfig);\n const platformApi = createPlatformApi(apiConfig);\n\n if (typeof window !== \"undefined\" && apiConfig.businessId) {\n businessApi.getIntegrationConfig({ businessId: apiConfig.businessId, type: 'analytics' }).then((configs: any[]) => {\n if (!configs) return;\n for (const c of Array.isArray(configs) ? configs : [configs]) {\n if (c.measurementId) {\n injectGA4Script(c.measurementId);\n }\n }\n }).catch(() => {});\n }\n\n const cmsApi = createCmsApi(apiConfig);\n const eshopApi = createEshopApi(apiConfig);\n const bookingApi = createBookingApi(apiConfig);\n const crmApi = createCustomerApi(apiConfig);\n const reactionApi = createReactionApi(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 business: {\n ...businessApi,\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 reaction: reactionApi,\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 getBusinessChats: agentApi.getBusinessChats,\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 track,\n getSummary: analyticsApi.getSummary,\n getSeries: analyticsApi.getSeries,\n getTopEntities: analyticsApi.getTopEntities,\n getStatusBreakdown: analyticsApi.getStatusBreakdown,\n },\n\n setBusinessId: (businessId: string) => {\n apiConfig.businessId = businessId;\n },\n\n getBusinessId: () => apiConfig.businessId,\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 async function createStorefront(\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({\n ...config,\n getToken,\n setToken,\n logout,\n refreshPath: `/v1/storefront/${config.businessId}/customers/auth/refresh`,\n });\n\n const apiConfig: ApiConfig = {\n httpClient,\n businessId: config.businessId,\n baseUrl: config.baseUrl,\n market: config.market,\n locale,\n setToken,\n getToken,\n };\n\n const storefrontApi = createStorefrontApi(apiConfig);\n\n let sessionPromise: Promise<void> | null = null;\n\n function ensureSession(): Promise<void> {\n if (typeof window === \"undefined\") return Promise.resolve();\n if (sessionPromise) return sessionPromise;\n\n sessionPromise = (async () => {\n const tokens = await apiConfig.getToken();\n if (tokens.accessToken) return;\n\n const result = await storefrontApi.crm.customer.initialize();\n if (result?.accessToken) {\n apiConfig.setToken(result);\n }\n })().finally(() => {\n sessionPromise = null;\n });\n\n return sessionPromise;\n }\n\n if (typeof window !== \"undefined\") {\n ensureSession().catch(() => {});\n if (apiConfig.businessId) {\n storefrontApi.business.getIntegrationConfig({ businessId: apiConfig.businessId, type: 'analytics' }).then((configs: any[]) => {\n if (!configs) return;\n for (const c of Array.isArray(configs) ? configs : [configs]) {\n if (c.measurementId) {\n injectGA4Script(c.measurementId);\n }\n }\n }).catch(() => {});\n }\n }\n\n return {\n business: storefrontApi.business,\n cms: storefrontApi.cms,\n eshop: storefrontApi.eshop,\n booking: storefrontApi.booking,\n crm: storefrontApi.crm,\n automation: storefrontApi.automation,\n analytics: {\n track,\n },\n setBusinessId: (businessId: string) => {\n apiConfig.businessId = businessId;\n },\n getBusinessId: () => apiConfig.businessId,\n setMarket: (market: string) => {\n apiConfig.market = market;\n },\n getMarket: () => apiConfig.market,\n setLocale: (locale: string) => {\n apiConfig.locale = locale;\n },\n getLocale: () => apiConfig.locale,\n isAuthenticated,\n logout,\n setToken,\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/errors.ts","../src/utils/queryParams.ts","../src/services/createHttpClient.ts","../src/api/account.ts","../src/api/auth.ts","../src/api/business.ts","../src/api/media.ts","../src/api/notification.ts","../src/api/promoCode.ts","../src/utils/blocks.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/reaction.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/api/storefront.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/analytics.ts","../src/utils/inventory.ts","../src/index.ts"],"names":["PaymentMethodType","url","locale"],"mappings":"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","file":"index.cjs","sourcesContent":["export * from './api';\n\nexport enum PaymentMethodType {\n\tCash = \"cash\",\n\tCreditCard = \"credit_card\",\n}\n\nexport interface PaymentTaxLine {\n\trateBps: number;\n\tamount: number;\n\tlabel?: string;\n\tscope?: string;\n}\n\nexport interface BookingPaymentTax {\n\tamount: number;\n\tmodeSnapshot?: string;\n\trateBps: number;\n\tlines: BookingPaymentTaxLine[];\n}\n\nexport interface BookingPaymentTaxLine {\n\trateBps: 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\nexport type BookingPaymentProvider = {\n\ttype: 'stripe';\n\tcustomerId: string;\n\tpaymentIntentId?: string;\n};\n\nexport interface BookingPaymentRefund {\n\tid: string;\n\ttotal: number;\n\tproviderRefundId?: string;\n\tstatus: string;\n\tcreatedAt: 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\tpromoCode?: BookingPaymentPromoCode;\n\tprovider?: BookingPaymentProvider;\n\trefunds: BookingPaymentRefund[];\n\tpaymentMethodId?: string;\n\tmethodType: PaymentMethodType;\n}\n\nexport interface OrderPaymentTax {\n\tamount: number;\n\tmodeSnapshot?: string;\n\trateBps: number;\n\tlines: OrderPaymentTaxLine[];\n}\n\nexport interface OrderPaymentTaxLine {\n\trateBps: 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\nexport type OrderPaymentProvider = {\n\ttype: 'stripe';\n\tcustomerId: string;\n\tpaymentIntentId?: string;\n};\n\nexport interface OrderPaymentRefund {\n\tid: string;\n\ttotal: number;\n\tproviderRefundId?: string;\n\tstatus: string;\n\tcreatedAt: 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\tpromoCode?: OrderPaymentPromoCode;\n\tprovider?: OrderPaymentProvider;\n\trefunds: OrderPaymentRefund[];\n\tzoneId?: string;\n\tpaymentMethodId?: string;\n\tshippingMethodId?: string;\n\tmethodType: PaymentMethodType;\n}\n\nexport interface PromoCodeValidation {\n\tpromoCodeId: 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\tpaymentMethod: PaymentMethod | null;\n\tpaymentMethods: PaymentMethod[];\n\tpromoCode: PromoCodeValidation | null;\n\tpayment: BookingPayment;\n\tchargeAmount: number;\n\tid?: string;\n\texpiresAt?: 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\tshippingMethod: ShippingMethod | null;\n\tpaymentMethod: PaymentMethod | null;\n\tpaymentMethods: PaymentMethod[];\n\tpromoCode: PromoCodeValidation | null;\n\tpayment: OrderPayment;\n\tchargeAmount: number;\n\tid?: string;\n\texpiresAt?: number;\n}\n\n\nexport interface Price {\n\tcurrency: string;\n\tmarket: string;\n\tamount: number;\n\tcompareAt?: number;\n\taudienceId?: 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\tcompareAt?: 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\tpostalCode: 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\tpostalCode?: string | null;\n}\n\nexport interface EshopCartItem {\n\tid: string;\n\tproductId: string;\n\tvariantId: string;\n\tproductName: string;\n\tproductSlug: string;\n\tvariantAttributes: Record<string, any>;\n\tprice: Price;\n\tquantity: number;\n\taddedAt: number;\n\tmaxStock?: number;\n}\n\nexport interface BookingCartItem {\n\tid: string;\n\tserviceId: string;\n\tserviceName: string;\n\tdate: string;\n\tfrom: number;\n\tto: number;\n\ttimeText: string;\n\tproviderId?: string;\n\tforms: any[];\n}\n\n\nexport type IntegrationProvider =\n\t| { type: 'stripe'; secretKey?: string; publishableKey: string; webhookSecret?: string; currency: string }\n\t| { type: 'shippo'; apiToken?: string }\n\t| { type: 'google'; clientId?: string; clientSecret?: string; accessToken?: string; refreshToken?: string;\n\t\ttokenExpiresAt?: number; scopes: string[]; accountEmail?: string | null; connectedAt: number }\n\t| { type: 'google_analytics4'; measurementId: string }\n\t| { type: 'telegram_bot'; botToken?: string }\n\t| { type: 'deep_seek'; apiKey?: string; model?: string }\n\t\n\t| { type: 'open_ai'; apiKey?: string; model?: string }\n\t| { type: 'slack'; apiKey?: string }\n\t| { type: 'discord'; apiKey?: string }\n\t| { type: 'whats_app'; apiKey?: string }\n\t| { type: 'resend'; apiKey?: string }\n\t| { type: 'send_grid'; apiKey?: string }\n\t| { type: 'airtable'; apiKey?: string }\n\t| { type: 'linear'; apiKey?: string }\n\t| { type: 'git_hub'; apiKey?: string }\n\t| { type: 'git_lab'; apiKey?: string }\n\t| { type: 'dropbox'; apiKey?: string }\n\t| { type: 'hub_spot'; apiKey?: string }\n\t| { type: 'monday'; apiKey?: string }\n\t| { type: 'click_up'; apiKey?: string }\n\t| { type: 'pipedrive'; apiKey?: string }\n\t| { type: 'calendly'; apiKey?: string }\n\t| { type: 'typeform'; apiKey?: string }\n\t| { type: 'webflow'; apiKey?: string }\n\t| { type: 'trello'; apiKey?: string }\n\t| { type: 'replicate'; apiKey?: string }\n\t| { type: 'asana'; apiKey?: string }\n\t| { type: 'brevo'; apiKey?: string }\n\t| { type: 'intercom'; apiKey?: string }\n\t| { type: 'notion'; apiKey?: string }\n\t| { type: 'eleven_labs'; apiKey?: string }\n\t| { type: 'active_campaign'; apiKey?: string; accountUrl: string }\n\t| { type: 'shopify'; apiKey?: string; storeDomain: string }\n\t| { type: 'supabase'; apiKey?: string; projectUrl: string }\n\t| { type: 'mailchimp'; apiKey?: string }\n\t\n\t| { type: 'twilio'; accountSid?: string; authToken?: string }\n\t| { type: 'jira'; email?: string; apiToken?: string; domain: string }\n\t| { type: 'woo_commerce'; consumerKey?: string; consumerSecret?: string; storeUrl: string }\n\t| { type: 'freshdesk'; apiKey?: string; domain: string }\n\t| { type: 'zendesk'; apiToken?: string; email?: string; subdomain: string }\n\t\n\t| { type: 'salesforce'; accessToken?: string; instanceUrl: string }\n\t| { type: 'zoom'; apiKey?: string }\n\t| { type: 'microsoft_teams'; apiKey?: string }\n\t| { type: 'firebase'; apiKey?: string }\n\t| { type: 'arky'; apiKey?: string }\n\t\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\tbusinessId: string;\n\tkey: string;\n\tprovider: IntegrationProvider;\n\tcreatedAt: number;\n\tupdatedAt: number;\n}\n\nexport interface ShippingWeightTier {\n\tupToGrams: number;\n\tamount: number;\n}\n\nexport interface PaymentMethod {\n\tid: string;\n\tintegrationId?: string;\n}\n\nexport interface ShippingMethod {\n\tid: string;\n\ttaxable: boolean;\n\tetaText: string;\n\tlocationId?: string;\n\tintegrationId?: string;\n\tamount: number;\n\tfreeAbove?: number;\n\tweightTiers?: ShippingWeightTier[];\n}\n\nexport interface Location {\n\tid: string;\n\tbusinessId: string;\n\tkey: string;\n\taddress: Address;\n\tisPickupLocation: boolean;\n\tcreatedAt: number;\n\tupdatedAt: number;\n}\n\nexport interface InventoryLevel {\n\tlocationId: string;\n\tavailable: number;\n\treserved: number;\n}\n\nexport interface Zone {\n\tid: string;\n\tbusinessId: string;\n\tmarketId: string;\n\tcountries: string[];\n\tstates: string[];\n\tpostalCodes: string[];\n\ttaxBps: number;\n\tshippingMethods: ShippingMethod[];\n}\n\nexport interface Market {\n\tid: string;\n\tbusinessId: string;\n\tkey: string;\n\tcurrency: string;\n\ttaxMode: \"exclusive\" | \"inclusive\";\n\tpaymentMethods: PaymentMethod[];\n\tzones: Zone[];\n\tcreatedAt: number;\n\tupdatedAt: number;\n}\n\nexport interface Language {\n\tid: string;\n}\n\nexport interface BusinessEmails {\n\tbilling: string;\n\tsupport: string;\n}\n\nexport type WebhookEventSubscription =\n\t| { event: 'node.created'; parentId?: 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: 'business.created' }\n\t| { event: 'business.updated' }\n\t| { event: 'business.deleted' }\n\t| { event: 'audience.created' }\n\t| { event: 'audience.updated' }\n\t| { event: 'audience.deleted' };\n\nexport interface Webhook {\n\tid: string;\n\tbusinessId: string;\n\tkey: string;\n\turl: string;\n\tevents: WebhookEventSubscription[];\n\theaders: Record<string, string>;\n\tsecret: string;\n\tenabled: boolean;\n\tcreatedAt: number;\n\tupdatedAt: number;\n}\n\n\nexport type BusinessSubscriptionStatus =\n\t| 'pending'\n\t| 'active'\n\t| 'cancellation_scheduled'\n\t| 'cancelled'\n\t| 'expired';\n\nexport type BusinessSubscriptionSource = 'signup' | 'admin' | 'import';\n\nexport type BusinessSubscriptionProvider = {\n\ttype: 'stripe';\n\tcustomerId: string;\n\tsubscriptionId?: string;\n\tpriceId?: string;\n};\n\nexport interface BusinessSubscriptionPayment {\n\tcurrency: string;\n\tmarket: string;\n\tprovider?: BusinessSubscriptionProvider;\n}\n\nexport interface BusinessSubscription {\n\tid: string;\n\ttarget: string;\n\tplanId: string;\n\tpendingPlanId: string | null;\n\tpayment: BusinessSubscriptionPayment;\n\tstatus: BusinessSubscriptionStatus;\n\tstartDate: number;\n\tendDate: number;\n\ttoken: string;\n\tsource: BusinessSubscriptionSource;\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\tcustomerId: string;\n\tsubscriptionId?: string;\n\tpriceId?: string;\n};\n\nexport interface AudienceSubscriptionPayment {\n\tcurrency: string;\n\tmarket: string;\n\tprovider?: AudienceSubscriptionProvider;\n}\n\nexport interface AudienceSubscription {\n\tid: string;\n\tbusinessId: string;\n\tcustomerId: string;\n\taudienceId: string;\n\tplanId: string;\n\tpendingPlanId: string | null;\n\tpayment: AudienceSubscriptionPayment;\n\tstatus: AudienceSubscriptionStatus;\n\tstartDate: number;\n\tendDate: number;\n\ttoken: string;\n\tsource: AudienceSubscriptionSource;\n\tcreatedAt: number;\n\tupdatedAt: number;\n}\n\nexport interface Business {\n\tid: string;\n\tkey: string;\n\ttimezone: string;\n\tlanguages?: Language[];\n\temails?: BusinessEmails;\n\tsubscription?: BusinessSubscription;\n\tcounts?: Record<string, number>;\n}\n\nexport interface EshopStoreState {\n\tbusinessId: string;\n\tselectedShippingMethodId: string | null;\n\tuserToken: string | null;\n\tprocessingCheckout: 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\ttaxonomyId: string;\n\tfields: TaxonomyField[];\n}\n\nexport interface TaxonomyQuery {\n\ttaxonomyId: 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\tformId: 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\tmimeType: string;\n\ttitle?: string | null;\n\tdescription?: string | null;\n\talt?: string | null;\n\tentity: string;\n\tmetadata?: string | null;\n\tuploadedAt: string;\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\tcurrentStep: number;\n\ttotalSteps: number;\n\tsteps: Record<number, { name: string; labelKey: string }>;\n\tweekdays: string[];\n\tmonthYear: string;\n\tdays: any[];\n\tcurrent: Date;\n\tselectedDate: string | null;\n\tslots: any[];\n\tselectedSlot: any | null;\n\tselectedProvider: any | null;\n\tproviders: any[];\n\tloading: boolean;\n\tstartDate: string | null;\n\tendDate: string | null;\n\tguestToken: string | null;\n\tservice: any | null;\n\tbusiness: Business | null;\n\tcurrency: string;\n\tbookingForms: FormEntry[];\n\tapiUrl: string;\n\tbusinessId: string;\n\ttimezone: string;\n\ttzGroups: any;\n\titems: BookingCartItem[];\n\tallowedPaymentMethods: string[];\n\tpaymentConfig: {\n\t\tprovider: { publishableKey: 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\tserviceKey: string;\n\tproviderKey: string;\n\tprice: Price;\n}\n\nexport interface TimeRange {\n\tfrom: number;\n\tto: number;\n}\n\nexport interface BookingItem {\n\tid: string;\n\tserviceId: string;\n\tproviderId: string;\n\tbusinessId: string;\n\tbookingId: 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\tcustomerId: string;\n\tverified: boolean;\n\tforms: FormEntry[];\n\tbusinessId: string;\n\tserviceIds: string[];\n\tproviderIds: string[];\n\tpayment: BookingPayment;\n\tbusiness?: Business;\n\taccount?: any;\n\titems: BookingItem[];\n\taudienceId?: string;\n\thistory?: { action: string; reason?: string; timestamp: number }[];\n\tfiredReminders: number[];\n\tcreatedAt: number;\n\tlastModified: number;\n}\n\nexport interface Node {\n\tid: string;\n\tkey: string;\n\tbusinessId: string;\n\tparentId?: string | null;\n\tblocks: Block[];\n\ttaxonomies: TaxonomyEntry[];\n\tstatus: NodeStatus;\n\tslug: Record<string, string>;\n\tchildren: Node[];\n\tcreatedAt: number;\n\tupdatedAt: number;\n}\n\nexport interface EmailTemplate {\n\tid: string;\n\tkey: string;\n\tbusinessId: string;\n\tsubject: Record<string, string>;\n\tbody: string;\n\tfromName: string;\n\tfromEmail: string;\n\treplyTo?: string;\n\tpreheader?: string;\n\tstatus: EmailTemplateStatus;\n\tcreatedAt: number;\n\tupdatedAt: number;\n}\n\nexport interface Form {\n\tid: string;\n\tkey: string;\n\tbusinessId: string;\n\tschema: FormSchema[];\n\tstatus: FormStatus;\n\tcreatedAt: number;\n\tupdatedAt: number;\n}\n\nexport interface FormSubmission {\n\tid: string;\n\tformId: string;\n\tbusinessId: string;\n\tfields: FormField[];\n\tcreatedAt: number;\n}\n\nexport interface Taxonomy {\n\tid: string;\n\tkey: string;\n\tbusinessId: string;\n\tparentId?: string | null;\n\tschema?: TaxonomySchema[];\n\tstatus: TaxonomyStatus;\n\tcreatedAt: number;\n\tupdatedAt: number;\n}\n\nexport interface ServiceDuration {\n\tduration: number;\n\tisPause?: boolean;\n}\n\nexport interface ServiceProvider {\n\tid: string;\n\tproviderId: string;\n\tprices: Price[];\n\tdurations: ServiceDuration[];\n\taudienceIds: string[];\n\tworkingDays: Array<{ day: string; workingHours: Array<{ from: number; to: number }> }>;\n\tspecificDates: Array<{ date: number; workingHours: Array<{ from: number; to: number }> }>;\n\tslotInterval: number;\n\tminAdvance: number;\n\tmaxAdvance: number;\n\treminders: number[];\n\tforms?: FormEntry[];\n}\n\nexport interface Service {\n\tid: string;\n\tkey: string;\n\tslug: Record<string, string>;\n\tbusinessId: string;\n\tblocks: Block[];\n\ttaxonomies: TaxonomyEntry[];\n\tcreatedAt: number;\n\tupdatedAt: 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\tbusinessId: string;\n\tstatus: BookingProviderStatus;\n\taudienceIds: string[];\n\tblocks: Block[];\n\ttaxonomies: TaxonomyEntry[];\n\ttimeline: ProviderTimelinePoint[];\n\tcreatedAt: number;\n\tupdatedAt: number;\n}\n\nexport interface WorkflowEdge {\n\tsource: string;\n\ttarget: string;\n\toutput: string;\n\tbackEdge: boolean;\n}\n\nexport interface Workflow {\n\tid: string;\n\tkey: string;\n\tbusinessId: string;\n\tsecret: string;\n\tstatus: WorkflowStatus;\n\tnodes: Record<string, WorkflowNode>;\n\tedges: WorkflowEdge[];\n\n\tschedule?: string;\n\tcreatedAt: number;\n\tupdatedAt: 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\tdelayMs?: 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\ttimeoutMs?: number;\n\tintegrationId?: string;\n\tintegrationProviderId?: string;\n\tdelayMs?: number;\n\tretries?: number;\n\tretryDelayMs?: number;\n}\n\nexport interface WorkflowSwitchRule {\n\tcondition: string;\n}\n\nexport interface WorkflowSwitchNode {\n\ttype: 'switch';\n\trules: WorkflowSwitchRule[];\n\tdelayMs?: number;\n}\n\nexport interface WorkflowTransformNode {\n\ttype: 'transform';\n\tcode: string;\n\tdelayMs?: number;\n}\n\nexport interface WorkflowLoopNode {\n\ttype: 'loop';\n\texpression: string;\n\tdelayMs?: 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\tstartedAt: number;\n\tcompletedAt: number;\n\tdurationMs: number;\n\terror?: string;\n}\n\nexport interface WorkflowExecution {\n\tid: string;\n\tworkflowId: string;\n\tbusinessId: string;\n\tstatus: ExecutionStatus;\n\tinput: Record<string, any>;\n\tresults: Record<string, NodeResult>;\n\terror?: string;\n\tscheduledAt: number;\n\tstartedAt: number;\n\tcompletedAt?: number;\n\tcreatedAt: number;\n\tupdatedAt: number;\n}\n\nexport type AudienceType =\n\t| { type: 'standard' }\n\t| { type: 'confirmation'; confirmTemplateId: string }\n\t| { type: 'paid'; prices: SubscriptionPrice[]; paymentIntegrationId?: string };\n\nexport interface Audience {\n\tid: string;\n\tbusinessId: string;\n\tkey: string;\n\tstatus: AudienceStatus;\n\ttype: AudienceType;\n}\n\nexport interface AudienceAccessResponse {\n\thasAccess: boolean;\n\tsubscription?: AudienceSubscription;\n}\n\nexport interface AudienceSubscribeResponse {\n\tcheckoutUrl?: 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: { itemId: string; refundAmount: 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: 'business_created' }\n\t| { action: 'business_updated' }\n\t| { action: 'business_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\tcreatedAt: 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\ttrackingNumber?: string | null;\n\ttrackingUrl?: string | null;\n\tlabelUrl?: string | null;\n\tstatus: ShippingStatus;\n}\n\n\nexport interface ShipmentLine {\n\torderItemId: string;\n\tquantity: number;\n}\n\n\nexport interface Shipment {\n\tid: string;\n\tlocationId: string;\n\tlines: ShipmentLine[];\n\tcarrier?: string | null;\n\tservice?: string | null;\n\ttrackingNumber?: string | null;\n\ttrackingUrl?: string | null;\n\tlabelUrl?: string | null;\n\tstatus: ShippingStatus;\n\tcreatedAt: number;\n\tupdatedAt: number;\n}\n\n\nexport interface ShippingRate {\n\tid: string;\n\tprovider: string;\n\tcarrier: string;\n\tservice: string;\n\tdisplayName: string;\n\tamount: number;\n\tcurrency: string;\n\testimatedDays?: 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\tdistanceUnit: 'in' | 'cm';\n\tmassUnit: 'oz' | 'lb' | 'g' | 'kg';\n}\n\n\nexport interface PurchaseLabelResult {\n\ttrackingNumber: string;\n\ttrackingUrl?: string | null;\n\tlabelUrl: string;\n\tcarrier: string;\n\tservice: string;\n}\n\n\nexport interface ShipResult {\n\tshipmentId: string;\n\ttrackingNumber: string;\n\ttrackingUrl?: string | null;\n\tlabelUrl: string;\n}\n\n\nexport interface CustomsItem {\n\tdescription: string;\n\tquantity: number;\n\tnetWeight: string;\n\tmassUnit: string;\n\tvalueAmount: string;\n\tvalueCurrency: string;\n\toriginCountry: string;\n\ttariffNumber?: string | null;\n}\n\n\nexport interface CustomsDeclaration {\n\tcontentsType: string;\n\tcontentsExplanation?: string | null;\n\tnonDeliveryOption: string;\n\tcertify: boolean;\n\tcertifySigner: string;\n\titems: CustomsItem[];\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 \"BUSINESS.001\": \"BUSINESS.NOT_FOUND\",\n \"BUSINESS.002\": \"BUSINESS.FAILED_TO_CREATE\",\n \"BUSINESS.003\": \"BUSINESS.FAILED_TO_UPDATE\",\n \"BUSINESS.004\": \"BUSINESS.FAILED_TO_DELETE\",\n \"BUSINESS.005\": \"BUSINESS.FAILED_TO_GET_UPLOAD_URL\",\n \"BUSINESS.006\": \"BUSINESS.NAME_REQUIRED\",\n \"BUSINESS.007\": \"BUSINESS.BUSINESS_ID_REQUIRED\",\n \"BUSINESS.010\": \"BUSINESS.DESCRIPTION_REQUIRED\",\n \"BUSINESS.011\": \"BUSINESS.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.BUSINESS_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 BUSINESS: {\n NOT_FOUND: \"BUSINESS.NOT_FOUND\",\n FAILED_TO_CREATE: \"BUSINESS.FAILED_TO_CREATE\",\n FAILED_TO_UPDATE: \"BUSINESS.FAILED_TO_UPDATE\",\n FAILED_TO_DELETE: \"BUSINESS.FAILED_TO_DELETE\",\n FAILED_TO_GET_UPLOAD_URL: \"BUSINESS.FAILED_TO_GET_UPLOAD_URL\",\n NAME_REQUIRED: \"BUSINESS.NAME_REQUIRED\",\n BUSINESS_ID_REQUIRED: \"BUSINESS.BUSINESS_ID_REQUIRED\",\n DESCRIPTION_REQUIRED: \"BUSINESS.DESCRIPTION_REQUIRED\",\n SLUG_INVALID: \"BUSINESS.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\taccessToken: string;\n\trefreshToken?: string;\n\taccessExpiresAt?: number;\n\taccountId?: string;\n}\n\nconst STORAGE_KEYS = {\n\taccessToken: \"arky_token\",\n\trefreshToken: \"arky_refresh\",\n\taccessExpiresAt: \"arky_expires_at\",\n};\n\nexport function defaultGetToken(): AuthTokens {\n\tif (typeof window === \"undefined\") return { accessToken: \"\" };\n\treturn {\n\t\taccessToken: localStorage.getItem(STORAGE_KEYS.accessToken) || \"\",\n\t\trefreshToken: localStorage.getItem(STORAGE_KEYS.refreshToken) || \"\",\n\t\taccessExpiresAt: parseInt(localStorage.getItem(STORAGE_KEYS.accessExpiresAt) || \"0\", 10),\n\t};\n}\n\nexport function defaultSetToken(tokens: AuthTokens): void {\n\tif (typeof window === \"undefined\") return;\n\tif (tokens.accessToken) {\n\t\tlocalStorage.setItem(STORAGE_KEYS.accessToken, tokens.accessToken);\n\t\tlocalStorage.setItem(STORAGE_KEYS.refreshToken, tokens.refreshToken || \"\");\n\t\tlocalStorage.setItem(STORAGE_KEYS.accessExpiresAt, (tokens.accessExpiresAt || 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.accessToken) || \"\";\n\treturn token.startsWith(\"customer_\") || token.startsWith(\"account_\");\n}\n\nexport interface HttpClientConfig {\n\tbaseUrl: string;\n\n\tbusinessId: string;\n\n\trefreshPath?: 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\tdurationMs?: number;\n\trequestId?: 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\tdurationMs?: number;\n\trequestId?: 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\tconst refreshEndpoint = `${cfg.baseUrl}${cfg.refreshPath || '/v1/auth/refresh'}`;\n\tlet refreshPromise: Promise<void> | null = null;\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 { refreshToken } = await getToken();\n\t\t\tif (!refreshToken) {\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(refreshEndpoint, {\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({ refreshToken })\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 { accessToken, accessExpiresAt } = await getToken();\n\n\tconst nowSec = Date.now() / 1000;\n\tif (accessExpiresAt && nowSec > accessExpiresAt) {\n\t\tawait ensureFreshToken();\n\t\tconst tokens = await getToken();\n\t\taccessToken = tokens.accessToken;\n\t}\n\n\tif (accessToken) {\n\t\theaders['Authorization'] = `Bearer ${accessToken}`;\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.accessToken}`;\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\t\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\trequestId: requestId || null,\n\t\t\t\t\t\tdurationMs: 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\trequestId: requestId || null,\n\t\t\t\t\tdurationMs: 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.phoneNumbers !== undefined) payload.phoneNumbers = params.phoneNumbers;\n if (params.addresses !== undefined) payload.addresses = params.addresses;\n if (params.apiTokens !== undefined) payload.apiTokens = params.apiTokens;\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 businessId: apiConfig.businessId\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?.accessToken) {\n apiConfig.setToken({ ...result, email: params.email, isVerified: true });\n }\n return result;\n },\n\n async refresh(params: { refreshToken: string }, options?: RequestOptions) {\n return apiConfig.httpClient.post('/v1/auth/refresh', params, options);\n },\n\n async businessCode(businessId: string, params: { email: string }, options?: RequestOptions) {\n return apiConfig.httpClient.post(`/v1/businesses/${businessId}/auth/code`, params, options);\n },\n\n async businessVerify(businessId: string, params: MagicLinkVerifyParams, options?: RequestOptions) {\n const result = await apiConfig.httpClient.post(`/v1/businesses/${businessId}/auth/verify`, params, options);\n if (result?.accessToken) {\n apiConfig.setToken({ ...result, email: params.email, isVerified: 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 CreateBusinessParams,\n UpdateBusinessParams,\n DeleteBusinessParams,\n GetBusinessParams,\n GetBusinessesParams,\n GetSubscriptionPlansParams,\n SubscribeParams,\n CreatePortalSessionParams,\n InviteUserParams,\n RemoveMemberParams,\n HandleInvitationParams,\n TestWebhookParams,\n GetBusinessMediaParams2,\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 createBusinessApi = (apiConfig: ApiConfig) => {\n return {\n async createBusiness(\n params: CreateBusinessParams,\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.post(`/v1/businesses`, params, options);\n },\n\n async updateBusiness(\n params: UpdateBusinessParams,\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.put(\n `/v1/businesses/${params.id}`,\n params,\n options\n );\n },\n\n async deleteBusiness(\n params: DeleteBusinessParams,\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.delete(\n `/v1/businesses/${params.id}`,\n options\n );\n },\n\n async getBusiness(params: GetBusinessParams, options?: RequestOptions) {\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}`,\n options\n );\n },\n\n async getBusinesses(params?: GetBusinessesParams, options?: RequestOptions) {\n return apiConfig.httpClient.get(`/v1/businesses`, {\n ...options,\n params,\n });\n },\n\n async getSubscriptionPlans(\n params: GetSubscriptionPlansParams,\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.get(\"/v1/businesses/plans\", options);\n },\n\n async subscribe(params: SubscribeParams, options?: RequestOptions) {\n return apiConfig.httpClient.put(\n `/v1/businesses/${apiConfig.businessId}/subscribe`,\n params,\n options\n );\n },\n\n async createPortalSession(\n params: CreatePortalSessionParams,\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.post(\n `/v1/businesses/${apiConfig.businessId}/subscription/portal`,\n params,\n options\n );\n },\n\n async inviteUser(params: InviteUserParams, options?: RequestOptions) {\n return apiConfig.httpClient.post(\n `/v1/businesses/${apiConfig.businessId}/invitation`,\n params,\n options\n );\n },\n\n async removeMember(params: RemoveMemberParams, options?: RequestOptions) {\n return apiConfig.httpClient.delete(\n `/v1/businesses/${apiConfig.businessId}/members/${params.accountId}`,\n options\n );\n },\n\n async handleInvitation(\n params: HandleInvitationParams,\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.put(\n `/v1/businesses/${apiConfig.businessId}/invitation`,\n params,\n options\n );\n },\n\n async testWebhook(params: TestWebhookParams, options?: RequestOptions) {\n return apiConfig.httpClient.post(\n `/v1/businesses/${apiConfig.businessId}/webhooks/test`,\n params.webhook,\n options\n );\n },\n\n async getBusinessMedia(\n params: GetBusinessMediaParams2,\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.mimeType) queryParams.mimeType = params.mimeType;\n if (params.sortField) queryParams.sortField = params.sortField;\n if (params.sortDirection) queryParams.sortDirection = params.sortDirection;\n\n return apiConfig.httpClient.get(`/v1/businesses/${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/businesses/${params.businessId}/oauth/connect`,\n { provider: params.provider, code: params.code, redirectUri: params.redirectUri },\n options\n );\n },\n\n async oauthDisconnect(\n params: OAuthDisconnectParams,\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.post(\n `/v1/businesses/${params.businessId}/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/businesses/${params.businessId}/integrations`,\n options\n );\n },\n\n async createIntegration(\n params: CreateIntegrationParams,\n options?: RequestOptions\n ) {\n const { businessId, ...payload } = params;\n return apiConfig.httpClient.post(\n `/v1/businesses/${businessId}/integrations`,\n payload,\n options\n );\n },\n\n async updateIntegration(\n params: UpdateIntegrationParams,\n options?: RequestOptions\n ) {\n const { businessId, id, ...payload } = params;\n return apiConfig.httpClient.put(\n `/v1/businesses/${businessId}/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/businesses/${params.businessId}/integrations/${params.id}`,\n options\n );\n },\n\n async getIntegrationConfig(\n params: { businessId: string; type: 'payment' | 'shipping' | 'analytics' },\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.get(\n `/v1/businesses/${params.businessId}/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/businesses/${params.businessId}/webhooks`,\n options\n );\n },\n\n async createWebhook(\n params: CreateWebhookParams,\n options?: RequestOptions\n ) {\n const { businessId, ...payload } = params;\n return apiConfig.httpClient.post(\n `/v1/businesses/${businessId}/webhooks`,\n payload,\n options\n );\n },\n\n async updateWebhook(\n params: UpdateWebhookParams,\n options?: RequestOptions\n ) {\n const { businessId, id, ...payload } = params;\n return apiConfig.httpClient.put(\n `/v1/businesses/${businessId}/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/businesses/${params.businessId}/webhooks/${params.id}`,\n options\n );\n },\n\n };\n};\n","import type { ApiConfig } from '../index';\nimport type {\n UploadBusinessMediaParams,\n DeleteBusinessMediaParams,\n GetBusinessMediaParams,\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 targetBusinessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/media/${params.mediaId}`,\n options\n );\n },\n\n async uploadBusinessMedia(params: UploadBusinessMediaParams, options?: RequestOptions) {\n const _options = options;\n const { businessId, files = [], urls = [] } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n const url = `${apiConfig.baseUrl}/v1/businesses/${targetBusinessId}/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.accessToken}`\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 deleteBusinessMedia(params: DeleteBusinessMediaParams, options?: RequestOptions) {\n const { id, mediaId } = params;\n\n return apiConfig.httpClient.delete(\n `/v1/businesses/${id}/media/${mediaId}`,\n options\n );\n },\n\n async getBusinessMedia(params: GetBusinessMediaParams, options?: RequestOptions) {\n const { businessId, cursor, limit, ids, query, mimeType, sortField, sortDirection } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n const url = `${apiConfig.baseUrl}/v1/businesses/${targetBusinessId}/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 (mimeType) queryParams.mimeType = mimeType;\n if (sortField) queryParams.sortField = sortField;\n if (sortDirection) queryParams.sortDirection = sortDirection;\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.accessToken}`\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 { mediaId, businessId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n\n return apiConfig.httpClient.put(\n `/v1/businesses/${targetBusinessId}/media/${mediaId}`,\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.trackingPixelId}`,\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\treturn apiConfig.httpClient.post(\n\t\t\t\t`/v1/businesses/${apiConfig.businessId}/promo-codes`,\n\t\t\t\tparams,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync updatePromoCode(params: UpdatePromoCodeParams, options?: RequestOptions) {\n\t\t\treturn apiConfig.httpClient.put(\n\t\t\t\t`/v1/businesses/${apiConfig.businessId}/promo-codes/${params.id}`,\n\t\t\t\tparams,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync deletePromoCode(params: DeletePromoCodeParams, options?: RequestOptions) {\n\t\t\treturn apiConfig.httpClient.delete(\n\t\t\t\t`/v1/businesses/${apiConfig.businessId}/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\treturn apiConfig.httpClient.get(\n\t\t\t\t`/v1/businesses/${apiConfig.businessId}/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\treturn apiConfig.httpClient.get(`/v1/businesses/${apiConfig.businessId}/promo-codes`, {\n\t\t\t\t...options,\n\t\t\t\tparams\n\t\t\t});\n\t\t}\n\t};\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.mimeType ? (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 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 { businessId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `/v1/businesses/${targetBusinessId}/nodes`,\n payload,\n options\n );\n },\n\n async updateNode(params: UpdateNodeParams, options?: RequestOptions) {\n const { businessId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.put(\n `/v1/businesses/${targetBusinessId}/nodes/${params.id}`,\n payload,\n options\n );\n },\n\n async deleteNode(params: DeleteNodeParams, options?: RequestOptions) {\n const targetBusinessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.delete(\n `/v1/businesses/${targetBusinessId}/nodes/${params.id}`,\n options\n );\n },\n\n async getNode(params: GetNodeParams, options?: RequestOptions) {\n const targetBusinessId = params.businessId || apiConfig.businessId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.slug) {\n identifier = `${targetBusinessId}:${apiConfig.locale}:${params.slug}`;\n } else if (params.key) {\n identifier = `${targetBusinessId}:${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/businesses/${targetBusinessId}/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 { businessId, ...queryParams } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/nodes`,\n {\n ...options,\n params: queryParams,\n }\n );\n },\n\n async getNodeChildren(params: GetNodeChildrenParams, options?: RequestOptions) {\n const { id, businessId, ...queryParams } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/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 return apiConfig.httpClient.post(\n `/v1/businesses/${apiConfig.businessId}/products`,\n params,\n options,\n );\n },\n\n async updateProduct(params: UpdateProductParams, options?: RequestOptions) {\n return apiConfig.httpClient.put(\n `/v1/businesses/${apiConfig.businessId}/products/${params.id}`,\n params,\n options,\n );\n },\n\n async deleteProduct(params: DeleteProductParams, options?: RequestOptions) {\n return apiConfig.httpClient.delete(\n `/v1/businesses/${apiConfig.businessId}/products/${params.id}`,\n options,\n );\n },\n\n async getProduct(params: GetProductParams, options?: RequestOptions) {\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.slug) {\n identifier = `${apiConfig.businessId}:${apiConfig.locale}:${params.slug}`;\n } else {\n throw new Error(\"GetProductParams requires id or slug\");\n }\n\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/products/${identifier}`,\n options,\n );\n },\n\n async getProducts(params: GetProductsParams, options?: RequestOptions) {\n return apiConfig.httpClient.get(\n `/v1/businesses/${encodeURIComponent(apiConfig.businessId)}/products`,\n {\n ...options,\n params,\n },\n );\n },\n\n async createOrder(params: CreateOrderParams, options?: RequestOptions) {\n return apiConfig.httpClient.post(\n `/v1/businesses/${apiConfig.businessId}/orders`,\n params,\n options,\n );\n },\n\n async updateOrder(params: UpdateOrderParams, options?: RequestOptions) {\n return apiConfig.httpClient.put(\n `/v1/businesses/${apiConfig.businessId}/orders/${params.id}`,\n params,\n options,\n );\n },\n\n async getOrder(params: GetOrderParams, options?: RequestOptions) {\n \n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/orders/${params.id}`,\n options,\n );\n },\n\n async getOrders(params: GetOrdersParams, options?: RequestOptions) {\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/orders`,\n {\n ...options,\n params,\n },\n );\n },\n\n async getQuote(params: GetQuoteParams, options?: RequestOptions) {\n const { location, ...rest } = params;\n const shippingAddress = location\n ? {\n country: location.country || \"\",\n state: location.state || \"\",\n city: location.city || \"\",\n postalCode: location.postalCode || \"\",\n name: \"\",\n street1: \"\",\n street2: null,\n }\n : undefined;\n return apiConfig.httpClient.post(\n `/v1/businesses/${apiConfig.businessId}/orders/quote`,\n { ...rest, shippingAddress, 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/businesses/${apiConfig.businessId}/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, { serviceId: string; providerId: string; slots: { from: number; to: number }[] }>();\n for (const s of cart) {\n const key = `${s.serviceId}:${s.providerId}`;\n if (!groups.has(key)) {\n groups.set(key, { serviceId: s.serviceId, providerId: s.providerId, 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 { businessId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n\n return apiConfig.httpClient.post(\n `/v1/businesses/${targetBusinessId}/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/businesses/${apiConfig.businessId}/bookings/${id}`,\n payload,\n options,\n );\n },\n\n async getBooking(\n params: GetBookingParams,\n options?: RequestOptions,\n ) {\n const targetBusinessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/bookings/${params.id}`,\n options,\n );\n },\n\n async searchBookings(\n params: SearchBookingsParams,\n options?: RequestOptions,\n ) {\n const { businessId, ...queryParams } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/bookings`,\n {\n ...options,\n params: queryParams,\n },\n );\n },\n\n async getQuote(\n params: GetBookingQuoteParams,\n options?: RequestOptions,\n ) {\n const { businessId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n\n return apiConfig.httpClient.post(\n `/v1/businesses/${targetBusinessId}/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/businesses/${apiConfig.businessId}/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 { businessId, ...query } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n\n return apiConfig.httpClient.get<AvailabilityResponse>(\n `/v1/businesses/${targetBusinessId}/bookings/availability`,\n { ...options, params: query },\n );\n },\n\n async createService(params: CreateServiceParams, options?: RequestOptions) {\n const { businessId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `/v1/businesses/${targetBusinessId}/services`,\n payload,\n options,\n );\n },\n\n async updateService(params: UpdateServiceParams, options?: RequestOptions) {\n const { businessId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.put(\n `/v1/businesses/${targetBusinessId}/services/${params.id}`,\n payload,\n options,\n );\n },\n\n async deleteService(params: DeleteServiceParams, options?: RequestOptions) {\n const targetBusinessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.delete(\n `/v1/businesses/${targetBusinessId}/services/${params.id}`,\n options,\n );\n },\n\n async getService(params: GetServiceParams, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.slug) {\n identifier = `${businessId}:${apiConfig.locale}:${params.slug}`;\n } else {\n throw new Error(\"GetServiceParams requires id or slug\");\n }\n\n return apiConfig.httpClient.get(\n `/v1/businesses/${businessId}/services/${identifier}`,\n options,\n );\n },\n\n async getServices(params: GetServicesParams, options?: RequestOptions) {\n const { businessId, ...queryParams } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/services`,\n {\n ...options,\n params: queryParams,\n },\n );\n },\n\n async createProvider(\n params: CreateProviderParams,\n options?: RequestOptions,\n ) {\n const { businessId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `/v1/businesses/${targetBusinessId}/providers`,\n payload,\n options,\n );\n },\n\n async updateProvider(\n params: UpdateProviderParams,\n options?: RequestOptions,\n ) {\n const { businessId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.put(\n `/v1/businesses/${targetBusinessId}/providers/${params.id}`,\n payload,\n options,\n );\n },\n\n async deleteProvider(\n params: DeleteProviderParams,\n options?: RequestOptions,\n ) {\n const targetBusinessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.delete(\n `/v1/businesses/${targetBusinessId}/providers/${params.id}`,\n options,\n );\n },\n\n async getProvider(params: GetProviderParams, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.slug) {\n identifier = `${businessId}:${apiConfig.locale}:${params.slug}`;\n } else {\n throw new Error(\"GetProviderParams requires id or slug\");\n }\n\n return apiConfig.httpClient.get(\n `/v1/businesses/${businessId}/providers/${identifier}`,\n options,\n );\n },\n\n async getProviders(params: GetProvidersParams, options?: RequestOptions) {\n const { businessId, ...queryParams } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/providers`,\n {\n ...options,\n params: queryParams,\n },\n );\n },\n\n async cancelBookingItem(\n params: CancelBookingItemParams,\n options?: RequestOptions,\n ) {\n const { businessId, bookingId, itemId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `/v1/businesses/${targetBusinessId}/bookings/${bookingId}/items/${itemId}/cancel`,\n payload,\n options,\n );\n },\n\n async findServiceProviders(\n params: FindServiceProvidersParams,\n options?: RequestOptions,\n ) {\n const { businessId, ...queryParams } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/service-providers`,\n { ...options, params: queryParams },\n );\n },\n\n async createServiceProvider(\n params: CreateServiceProviderParams,\n options?: RequestOptions,\n ) {\n const { businessId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `/v1/businesses/${targetBusinessId}/service-providers`,\n payload,\n options,\n );\n },\n\n async updateServiceProvider(\n params: UpdateServiceProviderParams,\n options?: RequestOptions,\n ) {\n const { businessId, id, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.put(\n `/v1/businesses/${targetBusinessId}/service-providers/${id}`,\n payload,\n options,\n );\n },\n\n async deleteServiceProvider(\n params: DeleteServiceProviderParams,\n options?: RequestOptions,\n ) {\n const targetBusinessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.delete(\n `/v1/businesses/${targetBusinessId}/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/businesses/${apiConfig.businessId}/locations`,\n options,\n );\n },\n\n async get(id: string, options?: RequestOptions): Promise<Location> {\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/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/businesses/${apiConfig.businessId}/locations`,\n { ...params, businessId: apiConfig.businessId },\n options,\n );\n },\n\n async update(\n params: UpdateLocationParams,\n options?: RequestOptions,\n ): Promise<Location> {\n return apiConfig.httpClient.put(\n `/v1/businesses/${apiConfig.businessId}/locations/${params.id}`,\n { ...params, businessId: apiConfig.businessId },\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/businesses/${apiConfig.businessId}/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/businesses/${apiConfig.businessId}/markets`,\n options,\n );\n },\n\n async get(id: string, options?: RequestOptions): Promise<Market> {\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/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/businesses/${apiConfig.businessId}/markets`,\n { ...params, businessId: apiConfig.businessId },\n options,\n );\n },\n\n async update(\n params: UpdateMarketParams,\n options?: RequestOptions,\n ): Promise<Market> {\n return apiConfig.httpClient.put(\n `/v1/businesses/${apiConfig.businessId}/markets/${params.id}`,\n { ...params, businessId: apiConfig.businessId },\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/businesses/${apiConfig.businessId}/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 const createCustomerApi = (apiConfig: ApiConfig) => {\n return {\n async create(params: CreateCustomerParams, options?: RequestOptions) {\n return apiConfig.httpClient.post<Customer>(\n `/v1/businesses/${params.businessId || apiConfig.businessId}/customers`,\n params,\n options\n );\n },\n\n async get(params: GetCustomerParams, options?: RequestOptions) {\n return apiConfig.httpClient.get<Customer>(\n `/v1/businesses/${params.businessId || apiConfig.businessId}/customers/${params.id}`,\n options\n );\n },\n\n async find(params?: FindCustomersParams, options?: RequestOptions) {\n const businessId = params?.businessId || apiConfig.businessId;\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?.sortField) queryParams.sortField = params.sortField;\n if (params?.sortDirection) queryParams.sortDirection = params.sortDirection;\n\n return apiConfig.httpClient.get<{ items: Customer[]; cursor?: string }>(\n `/v1/businesses/${businessId}/customers`,\n {\n ...options,\n params: queryParams,\n }\n );\n },\n\n async update(params: UpdateCustomerParams, options?: RequestOptions) {\n const { id, businessId, ...body } = params;\n return apiConfig.httpClient.put<Customer>(\n `/v1/businesses/${businessId || apiConfig.businessId}/customers/${id}`,\n body,\n options\n );\n },\n\n async merge(params: MergeCustomersParams, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.post<Customer>(\n `/v1/businesses/${businessId}/customers/${params.targetId}/merge`,\n { sourceId: params.sourceId, businessId },\n options\n );\n },\n\n async revokeToken(params: { id: string; tokenId: string; businessId?: string }, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.delete(\n `/v1/businesses/${businessId}/customers/${params.id}/sessions/${params.tokenId}`,\n options\n );\n },\n\n async revokeAllTokens(params: { id: string; businessId?: string }, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.delete(\n `/v1/businesses/${businessId}/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/businesses/${apiConfig.businessId}/audiences`,\n params,\n options,\n );\n },\n\n async update(params: UpdateAudienceParams, options?: RequestOptions) {\n return apiConfig.httpClient.put(\n `/v1/businesses/${apiConfig.businessId}/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.businessId}:${params.key}`;\n } else {\n throw new Error(\"GetAudienceParams requires id or key\");\n }\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/audiences/${identifier}`,\n options,\n );\n },\n\n async find(params: GetAudiencesParams, options?: RequestOptions) {\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/audiences`,\n { ...options, params },\n );\n },\n\n async getSubscribers(params: GetAudienceSubscribersParams, options?: RequestOptions) {\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/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/businesses/${apiConfig.businessId}/audiences/${params.id}/subscribers`,\n { customerId: params.customerId },\n options,\n );\n },\n\n async removeSubscriber(params: RemoveAudienceSubscriberParams, options?: RequestOptions) {\n return apiConfig.httpClient.delete(\n `/v1/businesses/${apiConfig.businessId}/audiences/${params.id}/subscribers/${params.customerId}`,\n options,\n );\n },\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type { RequestOptions } from \"../types/api\";\nimport type { Block } from \"../types\";\n\nexport type ReactionTargetType =\n | \"product\"\n | \"service\"\n | \"provider\"\n | \"booking\"\n | \"node\";\n\nexport type ReactionStatus = \"pending\" | \"published\" | \"hidden\" | \"removed\";\n\nexport interface ReactionTarget {\n type: ReactionTargetType;\n id: string;\n}\n\nexport interface Reaction {\n id: string;\n businessId: string;\n customerId: string;\n verified: boolean;\n target: ReactionTarget;\n parentId?: string | null;\n kind: string;\n blocks: Block[];\n taxonomies: any[];\n status: ReactionStatus;\n createdAt: number;\n updatedAt: number;\n}\n\nexport interface CreateReactionParams {\n businessId?: string;\n target: ReactionTarget;\n kind: string;\n blocks?: Block[];\n parentId?: string;\n taxonomies?: any[];\n customerId?: string;\n}\n\nexport interface UpdateReactionParams {\n id: string;\n businessId?: string;\n blocks?: Block[];\n taxonomies?: any[];\n}\n\nexport interface GetReactionParams {\n id: string;\n businessId?: string;\n}\n\nexport interface FindReactionsParams {\n businessId?: string;\n targetType?: ReactionTargetType;\n targetId?: string;\n parentId?: string;\n customerId?: string;\n kind?: string;\n status?: ReactionStatus;\n contentOnly?: boolean;\n verified?: boolean;\n query?: string;\n limit?: number;\n cursor?: string;\n}\n\nexport interface ModerateReactionParams {\n id: string;\n businessId?: string;\n status: ReactionStatus;\n}\n\nexport interface EngagementSummaryParams {\n businessId?: string;\n targetType: ReactionTargetType;\n targetId: string;\n parentId?: string;\n}\n\nexport interface EngagementSummary {\n counts: Record<string, number>;\n mine: Reaction[];\n}\n\nexport const DEFAULT_REACTION_KINDS = [\n \"like\",\n \"love\",\n \"laugh\",\n \"wow\",\n \"sad\",\n \"insightful\",\n \"review\",\n \"comment\",\n \"star_1\",\n \"star_2\",\n \"star_3\",\n \"star_4\",\n \"star_5\",\n] as const;\n\nexport const REACTION_KIND_REGEX = /^[a-z0-9_]{1,32}$/;\n\nexport function isValidReactionKind(kind: string): boolean {\n return REACTION_KIND_REGEX.test(kind);\n}\n\nexport function computeAverageStars(\n counts: Record<string, number>\n): { average: number; count: number } {\n let total = 0;\n let weighted = 0;\n for (let i = 1; i <= 5; i++) {\n const c = counts[`star_${i}`] ?? 0;\n total += c;\n weighted += c * i;\n }\n return {\n average: total > 0 ? weighted / total : 0,\n count: total,\n };\n}\n\nexport const createReactionApi = (apiConfig: ApiConfig) => {\n const base = (businessId?: string) =>\n `/v1/businesses/${businessId || apiConfig.businessId}/reactions`;\n\n return {\n DEFAULT_REACTION_KINDS,\n isValidReactionKind,\n computeAverageStars,\n\n async create(params: CreateReactionParams, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n base(businessId),\n {\n businessId,\n target: params.target,\n kind: params.kind,\n blocks: params.blocks || [],\n parentId: params.parentId,\n taxonomies: params.taxonomies || [],\n },\n options\n );\n },\n\n async get(params: GetReactionParams, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `${base(businessId)}/${params.id}`,\n options\n );\n },\n\n async find(params?: FindReactionsParams, options?: RequestOptions) {\n const businessId = params?.businessId || apiConfig.businessId;\n const queryParams: Record<string, any> = {};\n if (params?.targetType) queryParams.targetType = params.targetType;\n if (params?.targetId) queryParams.targetId = params.targetId;\n if (params?.parentId) queryParams.parentId = params.parentId;\n if (params?.customerId) queryParams.customerId = params.customerId;\n if (params?.kind) queryParams.kind = params.kind;\n if (params?.status) queryParams.status = params.status;\n if (params?.contentOnly !== undefined)\n queryParams.contentOnly = params.contentOnly;\n if (params?.verified !== undefined)\n queryParams.verified = params.verified;\n if (params?.query) queryParams.query = params.query;\n if (params?.limit !== undefined) queryParams.limit = params.limit;\n if (params?.cursor) queryParams.cursor = params.cursor;\n\n return apiConfig.httpClient.get(\n base(businessId),\n { ...options, params: queryParams }\n );\n },\n\n async update(params: UpdateReactionParams, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.put(\n `${base(businessId)}/${params.id}`,\n {\n id: params.id,\n businessId,\n blocks: params.blocks,\n taxonomies: params.taxonomies,\n },\n options\n );\n },\n\n async remove(params: { id: string; businessId?: string }, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.delete(\n `${base(businessId)}/${params.id}`,\n options\n );\n },\n\n async moderate(params: ModerateReactionParams, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `${base(businessId)}/${params.id}/moderate`,\n {\n id: params.id,\n businessId,\n status: params.status,\n },\n options\n );\n },\n\n async listAdmin(\n params: { businessId?: string; limit?: number; cursor?: string },\n options?: RequestOptions\n ) {\n const businessId = params.businessId || apiConfig.businessId;\n const queryParams: Record<string, any> = { businessId };\n if (params.limit !== undefined) queryParams.limit = params.limit;\n if (params.cursor) queryParams.cursor = params.cursor;\n return apiConfig.httpClient.get(\n `${base(businessId)}/admin`,\n { ...options, params: queryParams }\n );\n },\n\n async summary(params: EngagementSummaryParams, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `${base(businessId)}/summary`,\n {\n ...options,\n params: {\n businessId,\n targetType: params.targetType,\n targetId: params.targetId,\n parentId: params.parentId,\n },\n }\n );\n },\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 businessId = params.businessId || apiConfig.businessId;\n\t\t\treturn apiConfig.httpClient.post(\n\t\t\t\t`/v1/businesses/${businessId}/workflows`,\n\t\t\t\t{ ...params, businessId },\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync updateWorkflow(params: UpdateWorkflowParams, options?: RequestOptions) {\n\t\t\treturn apiConfig.httpClient.put(\n\t\t\t\t`/v1/businesses/${apiConfig.businessId}/workflows/${params.id}`,\n\t\t\t\tparams,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync deleteWorkflow(params: DeleteWorkflowParams, options?: RequestOptions) {\n\t\t\treturn apiConfig.httpClient.delete(\n\t\t\t\t`/v1/businesses/${apiConfig.businessId}/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\treturn apiConfig.httpClient.get(\n\t\t\t\t`/v1/businesses/${apiConfig.businessId}/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 businessId = params?.businessId || apiConfig.businessId;\n\t\t\t\n\t\t\tconst { businessId: _, ...queryParams } = params || {};\n\t\t\treturn apiConfig.httpClient.get(`/v1/businesses/${businessId}/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 businessId = params.businessId || apiConfig.businessId;\n\t\t\tconst { businessId: _, workflowId, ...queryParams } = params;\n\t\t\treturn apiConfig.httpClient.get(\n\t\t\t\t`/v1/businesses/${businessId}/workflows/${workflowId}/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 businessId = params.businessId || apiConfig.businessId;\n\t\t\treturn apiConfig.httpClient.get(\n\t\t\t\t`/v1/businesses/${businessId}/workflows/${params.workflowId}/executions/${params.executionId}`,\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 { orderId, ...payload } = params;\n return apiConfig.httpClient.post(\n `/v1/businesses/${apiConfig.businessId}/orders/${orderId}/shipping/rates`,\n payload,\n options\n );\n },\n\n \n async ship(\n params: ShipParams,\n options?: RequestOptions\n ): Promise<ShipResult> {\n const { orderId, ...payload } = params;\n return apiConfig.httpClient.post(\n `/v1/businesses/${apiConfig.businessId}/orders/${orderId}/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\tGetBusinessChatsParams,\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 businessId = params.businessId || apiConfig.businessId;\n\t\t\treturn apiConfig.httpClient.post(\n\t\t\t\t`/v1/businesses/${businessId}/agents`,\n\t\t\t\t{ ...params, businessId },\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync updateAgent(params: UpdateAgentParams, options?: RequestOptions) {\n\t\t\treturn apiConfig.httpClient.put(\n\t\t\t\t`/v1/businesses/${apiConfig.businessId}/agents/${params.id}`,\n\t\t\t\tparams,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync deleteAgent(params: DeleteAgentParams, options?: RequestOptions) {\n\t\t\treturn apiConfig.httpClient.delete(\n\t\t\t\t`/v1/businesses/${apiConfig.businessId}/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\treturn apiConfig.httpClient.get(\n\t\t\t\t`/v1/businesses/${apiConfig.businessId}/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 businessId = params?.businessId || apiConfig.businessId;\n\t\t\tconst { businessId: _, ...queryParams } = params || {};\n\t\t\treturn apiConfig.httpClient.get(`/v1/businesses/${businessId}/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 body: Record<string, any> = { message: params.message };\n\t\t\tif (params.chatId) body.chatId = params.chatId;\n\t\t\tif (params.direct) body.direct = params.direct;\n\t\t\treturn apiConfig.httpClient.post(\n\t\t\t\t`/v1/businesses/${apiConfig.businessId}/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 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/businesses/${apiConfig.businessId}/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\treturn apiConfig.httpClient.get(\n\t\t\t\t`/v1/businesses/${apiConfig.businessId}/agents/${params.id}/chats/${params.chatId}`,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync updateChat(params: UpdateAgentChatParams, options?: RequestOptions) {\n\t\t\treturn apiConfig.httpClient.put(\n\t\t\t\t`/v1/businesses/${apiConfig.businessId}/agents/${params.id}/chats/${params.chatId}`,\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 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/businesses/${apiConfig.businessId}/agents/${params.id}/chats/${params.chatId}/rate`,\n\t\t\t\tbody,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync getBusinessChats(params: GetBusinessChatsParams, options?: RequestOptions) {\n\t\t\tconst businessId = params.businessId || apiConfig.businessId;\n\t\t\tconst { businessId: _, ...queryParams } = params;\n\t\t\treturn apiConfig.httpClient.get(`/v1/businesses/${businessId}/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 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/businesses/${apiConfig.businessId}/agents/${params.id}/chats/${params.chatId}/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 { businessId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `/v1/businesses/${targetBusinessId}/email-templates`,\n payload,\n options\n );\n },\n\n async updateEmailTemplate(params: UpdateEmailTemplateParams, options?: RequestOptions) {\n const { businessId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.put(\n `/v1/businesses/${targetBusinessId}/email-templates/${params.id}`,\n payload,\n options\n );\n },\n\n async deleteEmailTemplate(params: DeleteEmailTemplateParams, options?: RequestOptions) {\n const targetBusinessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.delete(\n `/v1/businesses/${targetBusinessId}/email-templates/${params.id}`,\n options\n );\n },\n\n async getEmailTemplate(params: GetEmailTemplateParams, options?: RequestOptions) {\n const targetBusinessId = params.businessId || apiConfig.businessId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.key) {\n identifier = `${targetBusinessId}:${params.key}`;\n } else {\n throw new Error(\"GetEmailTemplateParams requires id or key\");\n }\n\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/email-templates/${identifier}`,\n options\n );\n },\n\n async getEmailTemplates(params: GetEmailTemplatesParams, options?: RequestOptions) {\n const { businessId, ...queryParams } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/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 { businessId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `/v1/businesses/${targetBusinessId}/forms`,\n payload,\n options\n );\n },\n\n async updateForm(params: UpdateFormParams, options?: RequestOptions) {\n const { businessId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.put(\n `/v1/businesses/${targetBusinessId}/forms/${params.id}`,\n payload,\n options\n );\n },\n\n async deleteForm(params: DeleteFormParams, options?: RequestOptions) {\n const targetBusinessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.delete(\n `/v1/businesses/${targetBusinessId}/forms/${params.id}`,\n options\n );\n },\n\n async getForm(params: GetFormParams, options?: RequestOptions) {\n const targetBusinessId = params.businessId || apiConfig.businessId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.key) {\n identifier = `${targetBusinessId}:${params.key}`;\n } else {\n throw new Error(\"GetFormParams requires id or key\");\n }\n\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/forms/${identifier}`,\n options\n );\n },\n\n async getForms(params: GetFormsParams, options?: RequestOptions) {\n const { businessId, ...queryParams } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/forms`,\n {\n ...options,\n params: queryParams,\n }\n );\n },\n\n async submit(params: SubmitFormParams, options?: RequestOptions) {\n const { businessId, formId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `/v1/businesses/${targetBusinessId}/forms/${formId}/submissions`,\n { ...payload, formId, businessId: targetBusinessId },\n options\n );\n },\n\n async getSubmissions(params: GetFormSubmissionsParams, options?: RequestOptions) {\n const { businessId, formId, ...queryParams } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/forms/${formId}/submissions`,\n {\n ...options,\n params: { ...queryParams, formId, businessId: targetBusinessId },\n }\n );\n },\n\n async getSubmission(params: GetFormSubmissionParams, options?: RequestOptions) {\n const targetBusinessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/forms/${params.formId}/submissions/${params.id}`,\n options\n );\n },\n\n async updateSubmission(params: UpdateFormSubmissionParams, options?: RequestOptions) {\n const { businessId, formId, id, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.put(\n `/v1/businesses/${targetBusinessId}/forms/${formId}/submissions/${id}`,\n { ...payload, formId, businessId: targetBusinessId, 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 { businessId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `/v1/businesses/${targetBusinessId}/taxonomies`,\n payload,\n options\n );\n },\n\n async updateTaxonomy(params: UpdateTaxonomyParams, options?: RequestOptions) {\n const { businessId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.put(\n `/v1/businesses/${targetBusinessId}/taxonomies/${params.id}`,\n payload,\n options\n );\n },\n\n async deleteTaxonomy(params: DeleteTaxonomyParams, options?: RequestOptions) {\n const targetBusinessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.delete(\n `/v1/businesses/${targetBusinessId}/taxonomies/${params.id}`,\n options\n );\n },\n\n async getTaxonomy(params: GetTaxonomyParams, options?: RequestOptions) {\n const targetBusinessId = params.businessId || apiConfig.businessId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.key) {\n identifier = `${targetBusinessId}:${params.key}`;\n } else {\n throw new Error(\"GetTaxonomyParams requires id or key\");\n }\n\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/taxonomies/${identifier}`,\n options\n );\n },\n\n async getTaxonomies(params: GetTaxonomiesParams, options?: RequestOptions) {\n const { businessId, ...queryParams } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/taxonomies`,\n {\n ...options,\n params: queryParams,\n }\n );\n },\n\n async getTaxonomyChildren(params: GetTaxonomyChildrenParams, options?: RequestOptions) {\n const { id, businessId } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/taxonomies/${id}/children`,\n options\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type { RequestOptions } from \"../types/api\";\n\nexport interface AnalyticsSummary {\n revenue: number;\n revenueChange: number;\n orders: number;\n ordersChange: number;\n bookings: number;\n bookingsChange: number;\n newCustomers: number;\n newCustomersChange: number;\n formSubmissions: number;\n formSubmissionsChange: number;\n activeProducts: number;\n activeServices: number;\n activeProviders: number;\n}\n\nexport interface TimeSeriesPoint {\n date: string;\n value: number;\n}\n\nexport interface TimeSeriesResponse {\n period: { start: string; end: string };\n interval: string;\n series: Record<string, TimeSeriesPoint[]>;\n}\n\nexport interface TopEntity {\n entityId: string;\n label: string;\n count: number;\n revenue: number;\n}\n\nexport interface StatusBreakdown {\n status: string;\n count: number;\n}\n\nexport const createAnalyticsApi = (apiConfig: ApiConfig) => {\n return {\n async getSummary(params?: { market?: string; period?: string }, options?: RequestOptions): Promise<AnalyticsSummary> {\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/analytics/summary`,\n {\n ...options,\n params: params || {},\n },\n );\n },\n\n async getSeries(\n params: { metrics: string[]; market?: string; period?: string; interval?: string },\n options?: RequestOptions,\n ): Promise<TimeSeriesResponse> {\n const { metrics, ...rest } = params;\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/analytics/series`,\n {\n ...options,\n params: { ...rest, metrics: metrics.join(\",\") },\n },\n );\n },\n\n async getTopEntities(\n params: { entity: string; market?: string; period?: string; limit?: number },\n options?: RequestOptions,\n ): Promise<TopEntity[]> {\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/analytics/top`,\n {\n ...options,\n params,\n },\n );\n },\n\n async getStatusBreakdown(\n params: { entity: string; market?: string; period?: string },\n options?: RequestOptions,\n ): Promise<StatusBreakdown[]> {\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/analytics/status`,\n {\n ...options,\n params,\n },\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type { RequestOptions, Slot } from \"../types/api\";\nimport {\n computeAverageStars,\n DEFAULT_REACTION_KINDS,\n isValidReactionKind,\n} from \"./reaction\";\nimport {\n getBlockFromArray,\n getBlockObjectValues,\n getImageUrl,\n} from \"../utils/blocks\";\n\nfunction groupCartToItems(cart: Slot[]) {\n const groups = new Map<\n string,\n { serviceId: string; providerId: string; slots: { from: number; to: number }[] }\n >();\n\n for (const slot of cart) {\n const key = `${slot.serviceId}:${slot.providerId}`;\n if (!groups.has(key)) {\n groups.set(key, {\n serviceId: slot.serviceId,\n providerId: slot.providerId,\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 = (businessId = apiConfig.businessId) =>\n `/v1/storefront/${businessId}`;\n let cart: Slot[] = [];\n\n return {\n business: {\n getBusiness(options?: RequestOptions) {\n return apiConfig.httpClient.get(base(), options);\n },\n\n getIntegrationConfig(\n params: { businessId?: string; type: \"payment\" | \"shipping\" | \"analytics\" },\n options?: RequestOptions,\n ) {\n return apiConfig.httpClient.get(\n `${base(params.businessId)}/integrations/config/${params.type}`,\n options,\n );\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 businessId = params.businessId || apiConfig.businessId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.slug) {\n identifier = `${businessId}:${apiConfig.locale}:${params.slug}`;\n } else if (params.key) {\n identifier = `${businessId}:${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(businessId)}/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 { businessId, ...queryParams } = params;\n return apiConfig.httpClient.get(`${base(businessId)}/nodes`, {\n ...options,\n params: queryParams,\n });\n },\n\n getChildren(params: any, options?: RequestOptions) {\n const { id, businessId, ...queryParams } = params;\n return apiConfig.httpClient.get(`${base(businessId)}/nodes/${id}/children`, {\n ...options,\n params: queryParams,\n });\n },\n },\n\n form: {\n get(params: any, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.key) {\n identifier = `${businessId}:${params.key}`;\n } else {\n throw new Error(\"GetFormParams requires id or key\");\n }\n\n return apiConfig.httpClient.get(\n `${base(businessId)}/forms/${identifier}`,\n options,\n );\n },\n\n submit(params: any, options?: RequestOptions) {\n const { businessId, formId, ...payload } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `${base(targetBusinessId)}/forms/${formId}/submissions`,\n { ...payload, formId, businessId: targetBusinessId },\n options,\n );\n },\n },\n\n taxonomy: {\n get(params: any, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.key) {\n identifier = `${businessId}:${params.key}`;\n } else {\n throw new Error(\"GetTaxonomyParams requires id or key\");\n }\n\n return apiConfig.httpClient.get(\n `${base(businessId)}/taxonomies/${identifier}`,\n options,\n );\n },\n\n getChildren(params: any, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `${base(businessId)}/taxonomies/${params.id}/children`,\n options,\n );\n },\n },\n },\n\n eshop: {\n product: {\n get(params: any, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.slug) {\n identifier = `${businessId}:${apiConfig.locale}:${params.slug}`;\n } else {\n throw new Error(\"GetProductParams requires id or slug\");\n }\n\n return apiConfig.httpClient.get(\n `${base(businessId)}/products/${identifier}`,\n options,\n );\n },\n\n find(params: any, options?: RequestOptions) {\n const { businessId, ...queryParams } = params;\n return apiConfig.httpClient.get(`${base(businessId)}/products`, {\n ...options,\n params: queryParams,\n });\n },\n },\n\n order: {\n getQuote(params: any, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n const { location, businessId: _businessId, ...rest } = params;\n const shippingAddress = location\n ? {\n country: location.country || \"\",\n state: location.state || \"\",\n city: location.city || \"\",\n postalCode: location.postalCode || \"\",\n name: \"\",\n street1: \"\",\n street2: null,\n }\n : undefined;\n\n return apiConfig.httpClient.post(\n `${base(businessId)}/orders/quote`,\n { ...rest, shippingAddress, market: apiConfig.market },\n options,\n );\n },\n\n checkout(params: any, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `${base(businessId)}/orders/checkout`,\n { ...params, businessId, market: apiConfig.market },\n options,\n );\n },\n\n get(params: any, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `${base(businessId)}/orders/${params.id}`,\n options,\n );\n },\n\n find(params: any, options?: RequestOptions) {\n const { businessId, ...queryParams } = params;\n return apiConfig.httpClient.get(`${base(businessId)}/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 { businessId, items: paramItems, ...payload } = params || {};\n const targetBusinessId = businessId || apiConfig.businessId;\n const items = paramItems || groupCartToItems(cart);\n\n return apiConfig.httpClient.post(\n `${base(targetBusinessId)}/bookings/checkout`,\n { market: \"booking\", ...payload, items },\n options,\n );\n },\n\n get(params: any, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `${base(businessId)}/bookings/${params.id}`,\n options,\n );\n },\n\n find(params: any, options?: RequestOptions) {\n const { businessId, ...queryParams } = params;\n return apiConfig.httpClient.get(`${base(businessId)}/bookings`, {\n ...options,\n params: queryParams,\n });\n },\n\n getQuote(params: any, options?: RequestOptions) {\n const { businessId, ...payload } = params;\n return apiConfig.httpClient.post(\n `${base(businessId)}/bookings/quote`,\n { market: \"booking\", ...payload },\n options,\n );\n },\n\n getAvailability(params: any, options?: RequestOptions) {\n const { businessId, ...queryParams } = params;\n return apiConfig.httpClient.get(\n `${base(businessId)}/bookings/availability`,\n { ...options, params: queryParams },\n );\n },\n\n cancelItem(params: any, options?: RequestOptions) {\n const { businessId, bookingId, itemId, ...payload } = params;\n return apiConfig.httpClient.post(\n `${base(businessId)}/bookings/${bookingId}/items/${itemId}/cancel`,\n payload,\n options,\n );\n },\n\n service: {\n get(params: any, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.slug) {\n identifier = `${businessId}:${apiConfig.locale}:${params.slug}`;\n } else {\n throw new Error(\"GetServiceParams requires id or slug\");\n }\n\n return apiConfig.httpClient.get(\n `${base(businessId)}/services/${identifier}`,\n options,\n );\n },\n\n find(params: any, options?: RequestOptions) {\n const { businessId, ...queryParams } = params;\n return apiConfig.httpClient.get(`${base(businessId)}/services`, {\n ...options,\n params: queryParams,\n });\n },\n\n findProviders(params: any, options?: RequestOptions) {\n const { businessId, ...queryParams } = params;\n return apiConfig.httpClient.get(`${base(businessId)}/service-providers`, {\n ...options,\n params: queryParams,\n });\n },\n },\n\n provider: {\n get(params: any, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n let identifier: string;\n if (params.id) {\n identifier = params.id;\n } else if (params.slug) {\n identifier = `${businessId}:${apiConfig.locale}:${params.slug}`;\n } else {\n throw new Error(\"GetProviderParams requires id or slug\");\n }\n\n return apiConfig.httpClient.get(\n `${base(businessId)}/providers/${identifier}`,\n options,\n );\n },\n\n find(params: any, options?: RequestOptions) {\n const { businessId, ...queryParams } = params;\n return apiConfig.httpClient.get(`${base(businessId)}/providers`, {\n ...options,\n params: queryParams,\n });\n },\n },\n },\n\n crm: {\n customer: {\n initialize(params?: { businessId?: string }, options?: RequestOptions) {\n const businessId = params?.businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `${base(businessId)}/customers/initialize`,\n { businessId },\n options,\n );\n },\n\n signInAnonymously(params?: { businessId?: string }, options?: RequestOptions) {\n const businessId = params?.businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `${base(businessId)}/customers/initialize`,\n { businessId },\n options,\n );\n },\n\n connect(params: any, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `${base(businessId)}/customers/connect`,\n { email: params.email, businessId },\n options,\n );\n },\n\n requestCode(\n params: { email: string; businessId?: string },\n options?: RequestOptions,\n ) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `${base(businessId)}/customers/auth/code`,\n { email: params.email, businessId },\n options,\n );\n },\n\n verify(\n params: { email: string; code: string; businessId?: string },\n options?: RequestOptions,\n ) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `${base(businessId)}/customers/auth/verify`,\n { email: params.email, code: params.code, businessId },\n options,\n );\n },\n\n refreshToken(\n params: { refreshToken: string; businessId?: string },\n options?: RequestOptions,\n ) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `${base(businessId)}/customers/auth/refresh`,\n { refreshToken: params.refreshToken },\n options,\n );\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.businessId}:${params.key}`;\n } else {\n throw new Error(\"GetAudienceParams requires id or key\");\n }\n\n return apiConfig.httpClient.get(\n `${base(apiConfig.businessId)}/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 customerId: params.customerId,\n priceId: params.priceId,\n successUrl: params.successUrl,\n cancelUrl: params.cancelUrl,\n confirmUrl: params.confirmUrl,\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 reaction: {\n DEFAULT_REACTION_KINDS,\n isValidReactionKind,\n computeAverageStars,\n\n create(params: any, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.post(\n `${base(businessId)}/reactions`,\n {\n businessId,\n target: params.target,\n kind: params.kind,\n blocks: params.blocks || [],\n parentId: params.parentId,\n taxonomies: params.taxonomies || [],\n },\n options,\n );\n },\n\n get(params: any, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `${base(businessId)}/reactions/${params.id}`,\n options,\n );\n },\n\n find(params?: any, options?: RequestOptions) {\n const businessId = params?.businessId || apiConfig.businessId;\n const queryParams = { ...(params || {}) };\n delete queryParams.businessId;\n return apiConfig.httpClient.get(`${base(businessId)}/reactions`, {\n ...options,\n params: queryParams,\n });\n },\n\n update(params: any, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.put(\n `${base(businessId)}/reactions/${params.id}`,\n {\n id: params.id,\n businessId,\n blocks: params.blocks,\n taxonomies: params.taxonomies,\n },\n options,\n );\n },\n\n remove(params: { id: string; businessId?: string }, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.delete(\n `${base(businessId)}/reactions/${params.id}`,\n options,\n );\n },\n\n summary(params: any, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(`${base(businessId)}/reactions/summary`, {\n ...options,\n params: {\n businessId,\n targetType: params.targetType,\n targetId: params.targetId,\n parentId: params.parentId,\n },\n });\n },\n },\n },\n\n automation: {\n agent: {\n getAgents(params?: any, options?: RequestOptions) {\n const businessId = params?.businessId || apiConfig.businessId;\n const queryParams = { ...(params || {}) };\n delete queryParams.businessId;\n return apiConfig.httpClient.get(`${base(businessId)}/agents`, {\n ...options,\n params: Object.keys(queryParams).length > 0 ? queryParams : undefined,\n });\n },\n\n getAgent(params: { id: string; businessId?: string }, options?: RequestOptions) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `${base(businessId)}/agents/${params.id}`,\n options,\n );\n },\n\n sendMessage(\n params: { id: string; message: string; chatId?: string; businessId?: string },\n options?: RequestOptions,\n ) {\n const businessId = params.businessId || apiConfig.businessId;\n const body: Record<string, any> = { message: params.message };\n if (params.chatId) body.chatId = params.chatId;\n return apiConfig.httpClient.post(\n `${base(businessId)}/agents/${params.id}/chats/messages`,\n body,\n options,\n );\n },\n\n getChat(\n params: { id: string; chatId: string; businessId?: string },\n options?: RequestOptions,\n ) {\n const businessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `${base(businessId)}/agents/${params.id}/chats/${params.chatId}`,\n options,\n );\n },\n\n getChatMessages(\n params: { id: string; chatId: string; limit?: number; businessId?: string },\n options?: RequestOptions,\n ) {\n const businessId = params.businessId || apiConfig.businessId;\n const queryParams: Record<string, string> = {};\n if (params.limit) queryParams.limit = String(params.limit);\n return apiConfig.httpClient.get(\n `${base(businessId)}/agents/${params.id}/chats/${params.chatId}/messages`,\n {\n ...options,\n params: Object.keys(queryParams).length > 0 ? queryParams : undefined,\n },\n );\n },\n\n rateChat(\n params: { id: string; chatId: string; rating: number; comment?: string; businessId?: string },\n options?: RequestOptions,\n ) {\n const businessId = params.businessId || apiConfig.businessId;\n const body: Record<string, any> = { rating: params.rating };\n if (params.comment) body.comment = params.comment;\n return apiConfig.httpClient.post(\n `${base(businessId)}/agents/${params.id}/chats/${params.chatId}/rate`,\n body,\n options,\n );\n },\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 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 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","\ndeclare global {\n interface Window {\n dataLayer: any[];\n gtag: (...args: any[]) => void;\n }\n}\n\nexport function injectGA4Script(measurementId: string): void {\n if (typeof window === \"undefined\") return;\n\n if (document.querySelector(`script[src*=\"${measurementId}\"]`)) return;\n\n window.dataLayer = window.dataLayer || [];\n\n window.gtag = function gtag(...args: any[]) {\n window.dataLayer.push(args);\n };\n\n window.gtag(\"js\", new Date());\n\n window.gtag(\"config\", measurementId);\n\n const script = document.createElement(\"script\");\n script.async = true;\n script.src = `https://www.googletagmanager.com/gtag/js?id=${measurementId}`;\n document.head.appendChild(script);\n}\n\nexport function track(\n eventName: string,\n params?: Record<string, any>\n): void {\n if (typeof window === \"undefined\") return;\n\n if (window.gtag) {\n window.gtag(\"event\", eventName, params);\n }\n\n}\n\nexport function isAnalyticsReady(): boolean {\n if (typeof window === \"undefined\") return false;\n return typeof window.gtag === \"function\";\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.locationId === 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?.locationId;\n}\n","\nexport type {\n ApiResponse,\n EshopCartItem,\n EshopStoreState,\n BookingStoreState,\n BookingCartItem,\n Business,\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 BusinessSubscription,\n BusinessSubscriptionPayment,\n BusinessSubscriptionProvider,\n BusinessSubscriptionStatus,\n BusinessSubscriptionSource,\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 AnalyticsSummary,\n TimeSeriesPoint,\n TimeSeriesResponse,\n TopEntity,\n StatusBreakdown,\n} from \"./api/analytics\";\n\nexport type {\n CreateLocationParams,\n UpdateLocationParams,\n DeleteLocationParams,\n} from \"./types/api\";\n\nexport const SDK_VERSION = \"0.7.67\";\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 businessId: 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 { createBusinessApi } from \"./api/business\";\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 { createReactionApi } from \"./api/reaction\";\nexport {\n DEFAULT_REACTION_KINDS,\n REACTION_KIND_REGEX,\n isValidReactionKind,\n computeAverageStars,\n} from \"./api/reaction\";\nexport type {\n Reaction,\n ReactionTarget,\n ReactionTargetType,\n ReactionStatus,\n CreateReactionParams,\n UpdateReactionParams,\n GetReactionParams,\n FindReactionsParams,\n ModerateReactionParams,\n EngagementSummary,\n EngagementSummaryParams,\n} from \"./api/reaction\";\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 { injectGA4Script, track } from \"./utils/analytics\";\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 track,\n\n getAvailableStock,\n getReservedStock,\n hasStock,\n getInventoryAt,\n getFirstAvailableFCId,\n };\n}\n\nexport async 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 businessId: config.businessId,\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 businessApi = createBusinessApi(apiConfig);\n const platformApi = createPlatformApi(apiConfig);\n\n if (typeof window !== \"undefined\" && apiConfig.businessId) {\n businessApi.getIntegrationConfig({ businessId: apiConfig.businessId, type: 'analytics' }).then((configs: any[]) => {\n if (!configs) return;\n for (const c of Array.isArray(configs) ? configs : [configs]) {\n if (c.measurementId) {\n injectGA4Script(c.measurementId);\n }\n }\n }).catch(() => {});\n }\n\n const cmsApi = createCmsApi(apiConfig);\n const eshopApi = createEshopApi(apiConfig);\n const bookingApi = createBookingApi(apiConfig);\n const crmApi = createCustomerApi(apiConfig);\n const reactionApi = createReactionApi(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 business: {\n ...businessApi,\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 reaction: reactionApi,\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 getBusinessChats: agentApi.getBusinessChats,\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 track,\n getSummary: analyticsApi.getSummary,\n getSeries: analyticsApi.getSeries,\n getTopEntities: analyticsApi.getTopEntities,\n getStatusBreakdown: analyticsApi.getStatusBreakdown,\n },\n\n setBusinessId: (businessId: string) => {\n apiConfig.businessId = businessId;\n },\n\n getBusinessId: () => apiConfig.businessId,\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 async function createStorefront(\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({\n ...config,\n getToken,\n setToken,\n logout,\n refreshPath: `/v1/storefront/${config.businessId}/customers/auth/refresh`,\n });\n\n const apiConfig: ApiConfig = {\n httpClient,\n businessId: config.businessId,\n baseUrl: config.baseUrl,\n market: config.market,\n locale,\n setToken,\n getToken,\n };\n\n const storefrontApi = createStorefrontApi(apiConfig);\n\n let sessionPromise: Promise<void> | null = null;\n\n function ensureSession(): Promise<void> {\n if (typeof window === \"undefined\") return Promise.resolve();\n if (sessionPromise) return sessionPromise;\n\n sessionPromise = (async () => {\n const tokens = await apiConfig.getToken();\n if (tokens.accessToken) return;\n\n const result = await storefrontApi.crm.customer.initialize();\n if (result?.accessToken) {\n apiConfig.setToken(result);\n }\n })().finally(() => {\n sessionPromise = null;\n });\n\n return sessionPromise;\n }\n\n if (typeof window !== \"undefined\") {\n ensureSession().catch(() => {});\n if (apiConfig.businessId) {\n storefrontApi.business.getIntegrationConfig({ businessId: apiConfig.businessId, type: 'analytics' }).then((configs: any[]) => {\n if (!configs) return;\n for (const c of Array.isArray(configs) ? configs : [configs]) {\n if (c.measurementId) {\n injectGA4Script(c.measurementId);\n }\n }\n }).catch(() => {});\n }\n }\n\n return {\n business: storefrontApi.business,\n cms: storefrontApi.cms,\n eshop: storefrontApi.eshop,\n booking: storefrontApi.booking,\n crm: storefrontApi.crm,\n automation: storefrontApi.automation,\n analytics: {\n track,\n },\n setBusinessId: (businessId: string) => {\n apiConfig.businessId = businessId;\n },\n getBusinessId: () => apiConfig.businessId,\n setMarket: (market: string) => {\n apiConfig.market = market;\n },\n getMarket: () => apiConfig.market,\n setLocale: (locale: string) => {\n apiConfig.locale = locale;\n },\n getLocale: () => apiConfig.locale,\n isAuthenticated,\n logout,\n setToken,\n extractBlockValues,\n utils: createUtilitySurface(apiConfig),\n };\n}\n\nexport type { HttpClientConfig } from \"./services/createHttpClient\";\n"]}
|