arky-sdk 0.4.72 → 0.4.73
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.js.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +1 -2
- package/dist/types.d.ts +1 -2
- package/dist/types.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/reservation.ts","../src/api/database.ts","../src/api/location.ts","../src/api/network.ts","../src/api/workflow.ts","../src/api/audience.ts","../src/api/platform.ts","../src/api/shipping.ts","../src/api/events.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 interface PaymentRefund {\n\tid: string;\n\tentity: string;\n\ttotal: number;\n\tproviderRefundId?: string;\n\tstatus: string;\n\tcreatedAt: number;\n}\n\nexport interface Payment {\n\tcurrency: string;\n\tmarket: string;\n\tsubtotal: number;\n\tshipping: number;\n\tdiscount: number;\n\ttotal: number;\n\tpaid: number;\n\ttax?: {\n\t\tamount: number;\n\t\tmodeSnapshot?: string;\n\t\trateBps: number;\n\t\tlines: Array<{ rateBps: number; amount: number; label?: string; scope?: string }>;\n\t};\n\tpromoCode?: {\n\t\tid: string;\n\t\tcode: string;\n\t\ttype: string;\n\t\tvalue: number;\n\t};\n\ttype: PaymentMethodType;\n\tprovider?: {\n\t\tcustomerId: string;\n\t\tpaymentIntentId?: string;\n\t\tsubscriptionId?: string;\n\t\tpriceId?: string;\n\t};\n\trefunds: PaymentRefund[];\n\tzoneId?: string;\n\tpaymentMethodId?: string;\n\tshippingMethodId?: string;\n}\n\nexport enum PaymentMethodType {\n\tCash = \"cash\",\n\tCreditCard = \"credit_card\",\n\t// Free REMOVED - handled with logic: if total == 0, skip payment\n\t// NOTE: Apple Pay and Google Pay are NOT separate PaymentMethodTypes\n\t// They are handled automatically by Stripe's Payment Element\n}\n\nexport interface PromoCodeValidation {\n\tpromoCodeId: string;\n\tcode: string;\n\tdiscounts: any[];\n\tconditions: any[];\n}\n\nexport interface Quote {\n\tmarket: string;\n\tzone: Zone;\n\tsubtotal: number;\n\tshipping: number;\n\tdiscount: number;\n\ttax: number;\n\ttotal: number;\n\tshippingMethod: ShippingMethod | null;\n\tpaymentMethod: PaymentMethod | null;\n\tpromoCode: PromoCodeValidation | null;\n\tpayment: Payment;\n\tchargeAmount: number;\n\tid?: string;\n\texpiresAt?: number;\n}\n\n/** Price for products and services (market-based, no provider fields) */\nexport interface Price {\n\tcurrency: string;\n\tmarket: string;\n\tamount: number;\n\tcompareAt?: number;\n}\n\n/** Interval period for subscription pricing */\nexport type IntervalPeriod = 'month' | 'year';\n\n/** Subscription interval configuration */\nexport interface SubscriptionInterval {\n\tperiod: IntervalPeriod;\n\tcount: number;\n}\n\n/** Price provider configuration (e.g., Stripe) */\nexport interface PriceProvider {\n\ttype: string;\n\tid: string;\n}\n\n/** Price for audiences/subscriptions (provider-based with interval) */\nexport interface SubscriptionPrice {\n\tcurrency: string;\n\tamount: number;\n\tcompareAt?: number;\n\tinterval?: SubscriptionInterval;\n\tproviders: PriceProvider[];\n}\n\n/**\n * Full address for shipping, billing, and fulfillment centers.\n * Used for order addresses and shipping labels.\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/**\n * Simple geo location for CMS map/location blocks.\n * Just coordinates and an optional label for display.\n */\nexport interface GeoLocation {\n\tcoordinates?: { lat: number; lon: number } | null;\n\tlabel?: string | null;\n}\n\n/**\n * @deprecated Use Address for shipping/billing addresses, GeoLocation for map coordinates\n */\nexport type Location = Address & { coordinates?: { lat: number; lon: number } | null };\n\n/**\n * Used for zone matching - simplified location with optional fields.\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}\n\nexport interface ReservationCartItem {\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\tblocks: any[];\n}\n\n/** Card payment processor - business picks ONE\n * Handles: Credit/Debit Cards, Apple Pay, Google Pay\n * Note: Wallet payments are controlled via Stripe Dashboard and detected automatically\n */\nexport interface CardProvider {\n\ttype: \"stripe\";\n\taccountId: string;\n\tcurrency: string;\n}\n\n\n/** @deprecated Use CardProvider instead */\nexport interface PaymentProviderConfig {\n\ttype: \"stripe\";\n\tpublicKey: string;\n\tsecretKey: string;\n\twebhookSecret: string;\n}\n\nexport interface AnalyticsConfig {\n\ttype: \"google_analytics4\";\n\tmeasurementId: string;\n}\n\nexport interface ShippingWeightTier {\n\tupToGrams: number;\n\tamount: number;\n}\n\nexport interface PaymentMethod {\n\tid: string;\n\tname: Record<string, string>;\n\ttype: PaymentMethodType;\n}\n\nexport interface ShippingMethod {\n\tid: string;\n\tname: Record<string, string>;\n\ttaxable: boolean;\n\tetaText: string;\n\tfulfillmentCenterId?: string;\n\tamount: number;\n\tfreeAbove?: number;\n\tweightTiers?: ShippingWeightTier[];\n}\n\nexport interface FulfillmentCenter {\n\tid: string;\n\tkey: string;\n\t/** Ship-from address for shipping labels */\n\taddress: Address;\n\tisPickupLocation: boolean;\n}\n\nexport interface InventoryLevel {\n\tfulfillmentCenterId: string;\n\tavailable: number;\n\treserved: number;\n}\n\nexport type ZoneScope = \"all\" | \"order\" | \"reservation\";\n\nexport interface Zone {\n\tid: string;\n\tname: string;\n\tmarketId: string;\n\tscope: ZoneScope;\n\tcountries: string[];\n\tstates: string[];\n\tpostalCodes: string[];\n\ttaxBps: number;\n\tpaymentMethods: PaymentMethod[];\n\tshippingMethods: ShippingMethod[];\n}\n\nexport interface Market {\n\tid: string;\n\tcurrency: string;\n\ttaxMode: \"exclusive\" | \"inclusive\";\n}\n\nexport interface Language {\n\tid: string;\n}\n\nexport interface BusinessEmails {\n\tbilling: string;\n\tsupport: string;\n}\n\nexport interface BusinessConfig {\n\tlanguages: Language[];\n\tmarkets: Market[];\n\tzones: Zone[];\n\tfulfillmentCenters: FulfillmentCenter[];\n\tbuildHooks: string[];\n\twebhooks: any[];\n\t/** Card payment processor (handles cards + Apple Pay + Google Pay) */\n\tcardProvider?: CardProvider;\n\taiProvider?: any;\n\tanalytics?: AnalyticsConfig;\n\temails: BusinessEmails;\n\t/** Configured shipping providers (e.g., Shippo) */\n\tshippingProviders?: BusinessShippingProvider[];\n}\n\nexport interface Subscription {\n\tid: string;\n\ttarget: string;\n\tplanId: string;\n\tpendingPlanId: string | null;\n\tpayment: any;\n\tstatus: SubscriptionStatus;\n\tendDate: number;\n\tusage: Record<string, any>;\n\ttoken: string;\n}\n\nexport interface Business {\n\tid: string;\n\tkey: string;\n\tnetworkKey: string | null;\n\ttimezone: string;\n\tconfigs?: BusinessConfig;\n\tsubscriptions?: Subscription[];\n\tstatus: Status;\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 BlockType =\n\t| \"text\"\n\t| \"localized_text\"\n\t| \"number\"\n\t| \"boolean\"\n\t| \"block\"\n\t| \"relationship_entry\"\n\t| \"relationship_media\"\n\t| \"markdown\"\n\t| \"geo_location\";\n\nexport interface GeoLocationBlockProperties {}\n\n/** @deprecated Use GeoLocation instead */\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 ReservationStoreState {\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\treservationBlocks: Block[];\n\tapiUrl: string;\n\tbusinessId: string;\n\ttimezone: string;\n\ttzGroups: any;\n\titems: ReservationCartItem[];\n\tallowedPaymentMethods: string[];\n\tpaymentConfig: {\n\t\tprovider: CardProvider | null;\n\t\tenabled: boolean;\n\t};\n}\n\nexport type Status = 'draft' | 'active' | 'archived';\n\nexport type OrderStatus = 'created' | 'pending' | 'authorized' | 'confirmed' | 'shipped' | 'completed' | 'cancelled' | 'failed';\n\nexport type ReservationStatus = 'created' | 'pending' | 'authorized' | 'confirmed' | 'completed' | 'cancelled' | 'failed';\n\nexport type SubscriptionStatus = 'pending' | 'active' | 'cancellation_scheduled' | 'cancelled' | 'expired';\n\nexport interface ReservationItem {\n\tid: string;\n\tserviceId: string;\n\tproviderId: string;\n\tbusinessId: string;\n\treservationId: string;\n\tuserId: string;\n\tfrom: number;\n\tto: number;\n\tblocks: Block[];\n\tprice: Price;\n}\n\nexport interface Reservation {\n\tid: string;\n\tnumber: string;\n\tuserId: string;\n\tblocks: Block[];\n\tbusinessId: string;\n\tstatus: ReservationStatus;\n\tserviceIds: string[];\n\tproviderIds: string[];\n\tpayment: Payment;\n\tbusiness?: Business;\n\tuser?: any;\n\titems: ReservationItem[];\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\tstatus: Status;\n\tslug: Record<string, string>;\n\taccess: Access;\n\twriteAccess: Access;\n\temailSubject?: Record<string, string>;\n\tchildren: Node[];\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\tworkingTime: {\n\t\tworkingDays: Array<{ day: string; workingHours: Array<{ from: number; to: number }> }>;\n\t\toutcastDates: Array<{ month: number; day: number; workingHours: Array<{ from: number; to: number }> }>;\n\t\tspecificDates: Array<{ date: number; workingHours: Array<{ from: number; to: number }> }>;\n\t};\n\tprovider?: Provider;\n}\n\nexport interface Service {\n\tid: string;\n\tkey: string;\n\tslug: Record<string, string>;\n\taccess: Access;\n\tbusinessId: string;\n\tprices: Price[];\n\tdurations: ServiceDuration[];\n\tblocks: Block[];\n\tnodeIds: string[];\n\tisApprovalRequired: boolean;\n\tproviders: ServiceProvider[];\n\tcreatedAt: number;\n\tupdatedAt: number;\n\tstatus: Status;\n}\n\nexport interface ProviderTimelinePoint {\n\ttimestamp: number;\n\tconcurrent: number;\n}\n\nexport interface Provider {\n\tid: string;\n\tkey: string;\n\tslug: Record<string, string>;\n\taccess: Access;\n\tbusinessId: string;\n\tstatus: Status;\n\tconcurrentLimit: number;\n\tnodeIds: string[];\n\tblocks: Block[];\n\ttimeline: ProviderTimelinePoint[];\n\tcreatedAt: number;\n\tupdatedAt: number;\n}\n\nexport interface Workflow {\n\tid: string;\n\tkey: string;\n\tbusinessId: string;\n\tsecret: string;\n\tstatus: Status;\n\tnodes: Record<string, WorkflowNode>;\n\tedges: WorkflowEdge[];\n\t\n\tschedule?: string;\n\tcreatedAt: number;\n\tupdatedAt: number;\n}\n\nexport interface WorkflowEdge {\n\tid: string;\n\tsource: string;\n\tsourceOutput: string;\n\ttarget: string;\n}\n\nexport type WorkflowNode =\n\t| WorkflowTriggerNode\n\t| WorkflowHttpNode\n\t| WorkflowSwitchNode\n\t| WorkflowLoopNode\n\t| WorkflowTransformNode;\n\nexport interface WorkflowTriggerNode {\n\ttype: 'trigger';\n\tevent?: string;\n\tdelayMs?: number;\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\tintegration?: {\n\t\tid: string;\n\t\tresource: string;\n\t\toperation: string;\n\t};\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\tsendToAllMatching?: boolean;\n\tdelayMs?: number;\n}\n\nexport interface WorkflowLoopNode {\n\ttype: 'loop';\n\tarray: string;\n\tdelayMs?: number;\n}\n\nexport interface WorkflowTransformNode {\n\ttype: 'transform';\n\tcode: 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 interface Audience {\n\tid: string;\n\tbusinessId: string;\n\tkey: string;\n\taccess: Access;\n\tnodeIds: string[];\n\tprices: SubscriptionPrice[];\n\tstatus: Status;\n}\n\nexport interface AudienceAccessResponse {\n\thasAccess: boolean;\n\tsubscription?: Subscription;\n}\n\nexport interface AudienceSubscribeResponse {\n\tcheckoutUrl?: string;\n\tsubscription?: Subscription;\n}\n\nexport type EventAction =\n\t// Order events\n\t| { action: 'order_created' }\n\t| { action: 'order_updated' }\n\t| { action: 'order_status_changed'; data: { from: string; to: string } }\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_completed' }\n\t| { action: 'order_cancelled'; data: { reason?: string } }\n\t// Order shipment events\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// Reservation events\n\t| { action: 'reservation_created' }\n\t| { action: 'reservation_updated' }\n\t| { action: 'reservation_status_changed'; data: { from: string; to: string } }\n\t| { action: 'reservation_payment_received'; data: { amount: number; currency: string } }\n\t| { action: 'reservation_payment_failed'; data: { reason?: string } }\n\t| { action: 'reservation_refunded'; data: { amount: number; currency: string; reason?: string } }\n\t| { action: 'reservation_completed' }\n\t| { action: 'reservation_cancelled'; data: { reason?: string } }\n\t// Product events\n\t| { action: 'product_created' }\n\t| { action: 'product_updated' }\n\t| { action: 'product_deleted' }\n\t// Node events\n\t| { action: 'node_created' }\n\t| { action: 'node_updated' }\n\t| { action: 'node_deleted' }\n\t// Provider events\n\t| { action: 'provider_created' }\n\t| { action: 'provider_updated' }\n\t| { action: 'provider_deleted' }\n\t// Service events\n\t| { action: 'service_created' }\n\t| { action: 'service_updated' }\n\t| { action: 'service_deleted' }\n\t// Account events\n\t| { action: 'account_created' }\n\t| { action: 'account_updated' }\n\t| { action: 'account_deleted' }\n\t// Media events\n\t| { action: 'media_created' }\n\t| { action: 'media_deleted' }\n\t// Business events\n\t| { action: 'business_created' }\n\t| { action: 'business_updated' }\n\t| { action: 'business_deleted' }\n\t// Audience events\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// Shipping Types\n\n/** Shipping status for order fulfillment tracking */\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/** Order shipping information (legacy - kept for backward compatibility) */\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/** Line item in a shipment with quantity (for partial fulfillment) */\nexport interface ShipmentLine {\n\torderItemId: string;\n\tquantity: number;\n}\n\n/** Individual shipment for an order (ships from one fulfillment center) */\nexport interface Shipment {\n\tid: string;\n\tfulfillmentCenterId: string;\n\tlines: ShipmentLine[]; // OrderItem IDs + quantities in this shipment\n\tcarrier?: string | null; // Set when label purchased\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/** Shipping rate from provider */\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/**\n * @deprecated Use Address instead\n * Shipping address for rate requests\n */\nexport type ShippingAddress = Address;\n\n/** Parcel dimensions for shipping */\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/** Result from purchasing a shipping label */\nexport interface PurchaseLabelResult {\n\ttrackingNumber: string;\n\ttrackingUrl?: string | null;\n\tlabelUrl: string;\n\tcarrier: string;\n\tservice: string;\n}\n\n/** Result from ship operation */\nexport interface ShipResult {\n\tshipmentId: string;\n\ttrackingNumber: string;\n\ttrackingUrl?: string | null;\n\tlabelUrl: string;\n}\n\n/** Individual item in a customs declaration */\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/** Customs declaration for international shipments */\nexport interface CustomsDeclaration {\n\tcontentsType: string; // \"MERCHANDISE\" | \"GIFT\" | \"SAMPLE\" | \"DOCUMENTS\" | \"RETURN\"\n\tcontentsExplanation?: string | null;\n\tnonDeliveryOption: string; // \"RETURN\" | \"ABANDON\"\n\tcertify: boolean;\n\tcertifySigner: string;\n\titems: CustomsItem[];\n}\n\n/** Shipping provider status */\nexport type ShippingProviderStatus = 'active' | 'inactive';\n\n/** Shippo shipping provider configuration */\nexport interface ShippingProviderShippo {\n\ttype: 'shippo';\n\tid: string;\n\tstatus: ShippingProviderStatus;\n\tapiToken: string;\n}\n\n/** Business shipping provider (union type for extensibility) */\nexport type BusinessShippingProvider = ShippingProviderShippo;\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}","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\texpiresAt?: number;\n\taccountId?: string;\n}\n\nexport interface HttpClientConfig {\n\tbaseUrl: string;\n\n\tbusinessId: 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 refreshEndpoint = `${cfg.baseUrl}/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 cfg.getToken();\n\t\t\tif (!refreshToken) {\n\t\t\t\tcfg.logout();\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\tcfg.logout();\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\tcfg.setToken(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, expiresAt } = await cfg.getToken();\n\n\tconst nowSec = Date.now() / 1000;\n\tif (expiresAt && nowSec > expiresAt) {\n\t\tawait ensureFreshToken();\n\t\tconst tokens = await cfg.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 cfg.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 AddPhoneNumberParams,\n PhoneNumberConfirmParams,\n SearchAccountsParams,\n DeleteAccountParams,\n GetMeParams,\n AccountSubscribeParams,\n RequestOptions\n} from '../types/api';\n\nexport const createAccountApi = (apiConfig: ApiConfig) => {\n return {\n \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 addPhoneNumber(params: AddPhoneNumberParams, options?: RequestOptions) {\n return apiConfig.httpClient.post('/v1/accounts/phone-number', params, options);\n },\n\n async phoneNumberConfirm(params: PhoneNumberConfirmParams, options?: RequestOptions) {\n return apiConfig.httpClient.post('/v1/accounts/phone-number/confirm', params, 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 async subscribe(params: AccountSubscribeParams, options?: RequestOptions) {\n return apiConfig.httpClient.post('/v1/accounts/subscribe', params, options);\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 session(options?: RequestOptions) {\n return apiConfig.httpClient.post('/v1/auth/session', {}, options);\n },\n\n async signInAnonymously(options?: RequestOptions) {\n const tokens = await apiConfig.getToken();\n if (tokens?.accessToken) {\n \n return tokens;\n }\n \n const result = await apiConfig.httpClient.post('/v1/auth/session', {}, options);\n if (result?.accessToken) {\n apiConfig.setToken({ ...result, isGuest: true });\n }\n return result;\n },\n\n async isGuest(): Promise<boolean> {\n const tokens = await apiConfig.getToken();\n if (!tokens?.accessToken) return true;\n const email = (tokens as any).email || \"\";\n return !email || email.startsWith(\"guest+\");\n },\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, isGuest: false });\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, isGuest: false });\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 GetBusinessParentsParams,\n TriggerBuildsParams,\n GetSubscriptionParams,\n GetSubscriptionPlansParams,\n SubscribeParams,\n CreatePortalSessionParams,\n InviteUserParams,\n HandleInvitationParams,\n TestWebhookParams,\n GetBusinessMediaParams2,\n ProcessRefundParams,\n ConnectStripeParams,\n DisconnectStripeParams,\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 getBusinessParents(\n params: GetBusinessParentsParams,\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/parents`,\n options\n );\n },\n\n async triggerBuilds(params: TriggerBuildsParams, options?: RequestOptions) {\n return apiConfig.httpClient.post(\n `/v1/businesses/${params.id}/trigger-builds`,\n {},\n options\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 getSubscription(\n params: GetSubscriptionParams,\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/subscription`,\n 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 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 processRefund(params: ProcessRefundParams, options?: RequestOptions) {\n const { id, ...payload } = params;\n return apiConfig.httpClient.post(\n `/v1/businesses/${id}/refund`,\n payload,\n options\n );\n },\n\n async connectStripe(\n params: ConnectStripeParams,\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.post(\n `/v1/businesses/${params.businessId}/stripe/connect`,\n { code: params.code },\n options\n );\n },\n\n async disconnectStripe(\n params: DisconnectStripeParams,\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.post(\n `/v1/businesses/${params.businessId}/stripe/disconnect`,\n {},\n options\n );\n },\n };\n};\n","import type { ApiConfig } from '../index';\nimport type {\n UploadBusinessMediaParams,\n DeleteBusinessMediaParams,\n GetBusinessMediaParams,\n UpdateMediaParams,\n RequestOptions\n} from '../types/api';\n\nexport const createMediaApi = (apiConfig: ApiConfig) => {\n return {\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\tGetDeliveryStatsParams,\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/email/${params.trackingPixelId}`,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync getDeliveryStats(params: GetDeliveryStatsParams, options?: RequestOptions) {\n\t\t\treturn apiConfig.httpClient.get(\n\t\t\t\t`/v1/notifications/track/stats/${apiConfig.businessId}`,\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, locale: string = \"en\"): string {\n if (!block) return \"\";\n const label = block.properties?.label;\n if (typeof label === \"string\") return label;\n if (label && typeof label === \"object\") return label[locale] ?? label[\"en\"] ?? \"\";\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] === 'block' && !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 // For localized_text and markdown, value is { en: \"...\", bs: \"...\" }\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 // For TEXT and other simple types, value is a string\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 // For block type, value is an array of child blocks\n if (block.type === \"block\" && 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 === \"block\") {\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 === \"text_filter\" || block.type === \"number_filter\") {\n return block.value;\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 !== \"block\" || !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 === \"block\" && 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 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 GenerateBlocksParams,\n GetVariableMetadataParams,\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 async generateBlocks(params: GenerateBlocksParams, options?: RequestOptions) {\n return apiConfig.httpClient.post(\n `/v1/businesses/${apiConfig.businessId}/nodes/blocks/generate`,\n params,\n options\n );\n },\n\n async getVariableMetadata(params: GetVariableMetadataParams, options?: RequestOptions) {\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/nodes/types/${params.nodeType}/variables`,\n options\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 OrderCheckoutParams,\n CreateOrderParams,\n UpdateOrderParams,\n GetOrderParams,\n GetOrdersParams,\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 payload = {\n market: apiConfig.market,\n items: params.items,\n blocks: params.blocks || [],\n paymentMethodId: params.paymentMethodId,\n shippingMethodId: params.shippingMethodId,\n promoCode: params.promoCode,\n location: params.location,\n };\n\n return apiConfig.httpClient.post(\n `/v1/businesses/${apiConfig.businessId}/orders/quote`,\n payload,\n options,\n );\n },\n\n async checkout(params: OrderCheckoutParams, options?: RequestOptions) {\n const payload = {\n businessId: apiConfig.businessId,\n market: apiConfig.market,\n items: params.items,\n blocks: params.blocks || [],\n paymentMethodId: params.paymentMethodId,\n shippingMethodId: params.shippingMethodId,\n promoCodeId: params.promoCodeId,\n shippingAddress: params.shippingAddress,\n billingAddress: params.billingAddress,\n };\n\n return apiConfig.httpClient.post(\n `/v1/businesses/${apiConfig.businessId}/orders/checkout`,\n payload,\n options,\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateReservationParams,\n UpdateReservationParams,\n ReservationCheckoutParams,\n GetReservationParams,\n SearchReservationsParams,\n CreateServiceParams,\n UpdateServiceParams,\n DeleteServiceParams,\n GetServiceParams,\n GetServicesParams,\n BulkScheduleParams,\n CreateProviderParams,\n UpdateProviderParams,\n DeleteProviderParams,\n GetProviderParams,\n GetProvidersParams,\n GetBusinessServiceWorkingTimeParams,\n GetReservationQuoteParams,\n RequestOptions,\n Slot,\n} from \"../types/api\";\n\nexport const createReservationApi = (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 createReservation(\n params: CreateReservationParams,\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}/reservations`,\n { market: apiConfig.market, ...payload },\n options,\n );\n },\n\n async updateReservation(\n params: UpdateReservationParams,\n options?: RequestOptions,\n ) {\n const { id, ...payload } = params;\n return apiConfig.httpClient.put(\n `/v1/businesses/${apiConfig.businessId}/reservations/${id}`,\n payload,\n options,\n );\n },\n\n async checkout(\n params?: Partial<ReservationCheckoutParams>,\n options?: RequestOptions,\n ) {\n const { businessId, items: paramItems, ...payload } = params || {};\n const targetBusinessId = businessId || apiConfig.businessId;\n\n const items = paramItems || cart.map((s) => ({\n serviceId: s.serviceId,\n providerId: s.providerId,\n from: s.from,\n to: s.to,\n }));\n\n return apiConfig.httpClient.post(\n `/v1/businesses/${targetBusinessId}/reservations/checkout`,\n { market: apiConfig.market, ...payload, items },\n options,\n );\n },\n\n async getReservation(\n params: GetReservationParams,\n options?: RequestOptions,\n ) {\n const targetBusinessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/reservations/${params.id}`,\n options,\n );\n },\n\n async searchReservations(\n params: SearchReservationsParams,\n options?: RequestOptions,\n ) {\n const { businessId, ...queryParams } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/reservations`,\n {\n ...options,\n params: queryParams,\n },\n );\n },\n\n async getQuote(\n params: GetReservationQuoteParams,\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}/reservations/quote`,\n { market: apiConfig.market, ...payload },\n options,\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 bulkSchedule(params: BulkScheduleParams, options?: RequestOptions) {\n return apiConfig.httpClient.post(\n `/v1/businesses/${apiConfig.businessId}/services/bulk-schedule`,\n params,\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 getProviderWorkingTime(\n params: GetBusinessServiceWorkingTimeParams,\n options?: RequestOptions,\n ) {\n const { providerId, ...queryParams } = params;\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/providers/${providerId}/working-time`,\n {\n ...options,\n params: queryParams,\n },\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type { RequestOptions } from \"../types/api\";\n\nexport interface ScanDataParams {\n key: string;\n limit?: number;\n}\n\nexport interface PutDataParams {\n key: string;\n value: any;\n oldKey?: string;\n}\n\nexport interface DeleteDataParams {\n key: string;\n}\n\nexport interface RunScriptParams {\n name: string;\n value?: string;\n username?: string;\n password?: string;\n}\n\nexport interface RunScriptResponse {\n success: boolean;\n message: string;\n}\n\nexport const createDatabaseApi = (apiConfig: ApiConfig) => {\n return {\n async scanData(\n params: ScanDataParams,\n options?: RequestOptions\n ): Promise<any[]> {\n const response = await apiConfig.httpClient.get(\n `/v1/operations/data`,\n {\n ...options,\n params: {\n key: params.key,\n limit: params.limit || 200,\n },\n }\n );\n return response.value || [];\n },\n\n async putData(\n params: PutDataParams,\n options?: RequestOptions\n ): Promise<void> {\n return apiConfig.httpClient.post(\n `/v1/operations/data`,\n params,\n options\n );\n },\n\n async deleteData(\n params: DeleteDataParams,\n options?: RequestOptions\n ): Promise<void> {\n return apiConfig.httpClient.delete(\n `/v1/operations/data`,\n {\n ...options,\n params: {\n key: params.key,\n },\n }\n );\n },\n\n async runScript(\n params: RunScriptParams,\n options?: RequestOptions\n ): Promise<RunScriptResponse> {\n return apiConfig.httpClient.post(`/v1/operations/scripts`, params, options);\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type { RequestOptions } from \"../types/api\";\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/operations/location/countries`, options);\n },\n\n async getCountryStates(\n countryCode: string,\n options?: RequestOptions\n ): Promise<LocationCountry> {\n return apiConfig.httpClient.get(\n `/v1/operations/location/countries/${countryCode}/states`,\n options\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type { RequestOptions } from \"../types/api\";\n\nexport interface NetworkSearchParams {\n query?: string;\n limit?: number;\n cursor?: string;\n nodeId?: string;\n nodeIds?: string[];\n statuses?: string[];\n blocks?: any[];\n sortField?: string;\n sortDirection?: \"asc\" | \"desc\";\n createdAtFrom?: number;\n createdAtTo?: number;\n priceFrom?: number;\n priceTo?: number;\n matchAll?: boolean;\n}\n\nexport const createNetworkApi = (apiConfig: ApiConfig) => {\n return {\n \n async searchServices(\n networkKey: string,\n params?: NetworkSearchParams,\n options?: RequestOptions\n ) {\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?.nodeId) queryParams.nodeId = params.nodeId;\n if (params?.nodeIds && params.nodeIds.length > 0)\n queryParams.nodeIds = params.nodeIds.join(\",\");\n if (params?.statuses && params.statuses.length > 0)\n queryParams.statuses = params.statuses.join(\",\");\n if (params?.sortField) queryParams.sortField = params.sortField;\n if (params?.sortDirection) queryParams.sortDirection = params.sortDirection;\n if (params?.createdAtFrom !== undefined)\n queryParams.createdAtFrom = params.createdAtFrom;\n if (params?.createdAtTo !== undefined)\n queryParams.createdAtTo = params.createdAtTo;\n if (params?.priceFrom !== undefined) queryParams.priceFrom = params.priceFrom;\n if (params?.priceTo !== undefined) queryParams.priceTo = params.priceTo;\n if (params?.matchAll !== undefined) queryParams.matchAll = params.matchAll;\n if (params?.blocks && params.blocks.length > 0)\n queryParams.blocks = JSON.stringify(params.blocks);\n\n return apiConfig.httpClient.get(`/v1/networks/${networkKey}/services`, {\n ...options,\n params: queryParams,\n });\n },\n\n async searchProducts(\n networkKey: string,\n params?: NetworkSearchParams,\n options?: RequestOptions\n ) {\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?.nodeId) queryParams.nodeId = params.nodeId;\n if (params?.nodeIds && params.nodeIds.length > 0)\n queryParams.nodeIds = params.nodeIds.join(\",\");\n if (params?.statuses && params.statuses.length > 0)\n queryParams.statuses = params.statuses.join(\",\");\n if (params?.sortField) queryParams.sortField = params.sortField;\n if (params?.sortDirection) queryParams.sortDirection = params.sortDirection;\n if (params?.createdAtFrom !== undefined)\n queryParams.createdAtFrom = params.createdAtFrom;\n if (params?.createdAtTo !== undefined)\n queryParams.createdAtTo = params.createdAtTo;\n if (params?.priceFrom !== undefined) queryParams.priceFrom = params.priceFrom;\n if (params?.priceTo !== undefined) queryParams.priceTo = params.priceTo;\n if (params?.matchAll !== undefined) queryParams.matchAll = params.matchAll;\n if (params?.blocks && params.blocks.length > 0)\n queryParams.blocks = JSON.stringify(params.blocks);\n\n return apiConfig.httpClient.get(`/v1/networks/${networkKey}/products`, {\n ...options,\n params: queryParams,\n });\n },\n\n async searchProviders(\n networkKey: string,\n params?: NetworkSearchParams,\n options?: RequestOptions\n ) {\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?.nodeId) queryParams.nodeId = params.nodeId;\n if (params?.nodeIds && params.nodeIds.length > 0)\n queryParams.nodeIds = params.nodeIds.join(\",\");\n if (params?.statuses && params.statuses.length > 0)\n queryParams.statuses = params.statuses.join(\",\");\n if (params?.sortField) queryParams.sortField = params.sortField;\n if (params?.sortDirection) queryParams.sortDirection = params.sortDirection;\n if (params?.createdAtFrom !== undefined)\n queryParams.createdAtFrom = params.createdAtFrom;\n if (params?.createdAtTo !== undefined)\n queryParams.createdAtTo = params.createdAtTo;\n if (params?.matchAll !== undefined) queryParams.matchAll = params.matchAll;\n if (params?.blocks && params.blocks.length > 0)\n queryParams.blocks = JSON.stringify(params.blocks);\n\n return apiConfig.httpClient.get(`/v1/networks/${networkKey}/providers`, {\n ...options,\n params: queryParams,\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\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\t};\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateAudienceParams,\n UpdateAudienceParams,\n GetAudienceParams,\n GetAudiencesParams,\n SubscribeAudienceParams,\n GetAudienceSubscribersParams,\n RevokeAudienceSubscriptionParams,\n RequestOptions,\n} from \"../types/api\";\n\nexport const createAudienceApi = (apiConfig: ApiConfig) => {\n return {\n async createAudience(params: CreateAudienceParams, options?: RequestOptions) {\n return apiConfig.httpClient.post(\n `/v1/businesses/${apiConfig.businessId}/audiences`,\n params,\n options,\n );\n },\n\n async updateAudience(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 deleteAudience(params: { id: string }, options?: RequestOptions) {\n return apiConfig.httpClient.delete(\n `/v1/businesses/${apiConfig.businessId}/audiences/${params.id}`,\n options,\n );\n },\n\n async getAudience(params: GetAudienceParams, options?: RequestOptions) {\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/audiences/${params.id}`,\n options,\n );\n },\n\n async getAudiences(params: GetAudiencesParams, options?: RequestOptions) {\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/audiences`,\n { ...options, params },\n );\n },\n\n async subscribe(params: SubscribeAudienceParams, options?: RequestOptions) {\n return apiConfig.httpClient.post(\n `/v1/businesses/${apiConfig.businessId}/audiences/${params.id}/subscribe`,\n {\n priceId: params.priceId,\n successUrl: params.successUrl,\n cancelUrl: params.cancelUrl,\n },\n options,\n );\n },\n\n async checkAccess(params: { id: string }, options?: RequestOptions) {\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/audiences/${params.id}/access`,\n options,\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: {\n limit: params.limit,\n cursor: params.cursor,\n },\n },\n );\n },\n\n async revokeSubscription(params: RevokeAudienceSubscriptionParams, options?: RequestOptions) {\n return apiConfig.httpClient.delete(\n `/v1/businesses/${apiConfig.businessId}/audiences/${params.id}/subscribers/${params.accountId}`,\n options,\n );\n },\n };\n};\n","import type { ApiConfig } from '../index';\nimport type { RequestOptions } from '../types/api';\n\nexport interface PlatformConfig {\n\tstripePublicKey: string;\n\tstripeConnectClientId: string;\n}\n\nlet cachedConfig: PlatformConfig | null = null;\n\nexport const createPlatformApi = (apiConfig: ApiConfig) => {\n\treturn {\n\t\tasync getConfig(options?: RequestOptions): Promise<PlatformConfig> {\n\t\t\tif (cachedConfig) return cachedConfig;\n\t\t\tconst config = await apiConfig.httpClient.get('/v1/platform/config', options);\n\t\t\tcachedConfig = config;\n\t\t\treturn config;\n\t\t},\n\n\t\tgetConfigCache(): PlatformConfig | null {\n\t\t\treturn cachedConfig;\n\t\t},\n\n\t\tasync getCurrencies(options?: RequestOptions): Promise<string[]> {\n\t\t\treturn apiConfig.httpClient.get('/v1/platform/currencies', 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 * Get available shipping rates for a shipment\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}/rates`,\n payload,\n options\n );\n },\n\n /**\n * Ship items: creates shipment + purchases label atomically\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 { GetEventsParams, UpdateEventParams, RequestOptions } from \"../types/api\";\n\nexport function createEventsApi(apiConfig: ApiConfig) {\n return {\n async getEvents(params: GetEventsParams, options?: RequestOptions) {\n return apiConfig.httpClient.get(`/v1/events`, {\n ...options,\n params: {\n entity: params.entity,\n limit: params.limit,\n cursor: params.cursor,\n },\n });\n },\n\n async updateEvent(params: UpdateEventParams, options?: RequestOptions) {\n return apiConfig.httpClient.put(\n `/v1/events/${params.eventId}`,\n {\n eventId: params.eventId,\n event: params.event,\n },\n options\n );\n },\n\n async getWebhookEvents(options?: RequestOptions): Promise<{ data: string[] }> {\n return apiConfig.httpClient.get(`/v1/operations/events/metadata`, options);\n },\n };\n}\n","import type { Payment, Price } from '../types';\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; // Default fallback\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: Payment): 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}","\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}","\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}","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}","\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, FulfillmentCenter } from '../types';\n\nexport interface VariantWithInventory {\n inventory: InventoryLevel[];\n}\n\n/**\n * Get total available stock across all fulfillment centers for a variant\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/**\n * Get total reserved stock across all fulfillment centers for a variant\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/**\n * Check if variant has any available stock\n */\nexport function hasStock(variant: VariantWithInventory, quantity: number = 1): boolean {\n return getAvailableStock(variant) >= quantity;\n}\n\n/**\n * Get inventory level at a specific fulfillment center\n */\nexport function getInventoryAt(\n variant: VariantWithInventory,\n fulfillmentCenterId: string\n): InventoryLevel | undefined {\n return variant?.inventory?.find(inv => inv.fulfillmentCenterId === fulfillmentCenterId);\n}\n\n/**\n * Get the first fulfillment center with available stock\n * Returns the fulfillmentCenterId of the first center that has stock\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?.fulfillmentCenterId;\n}\n","\nexport type {\n ApiResponse,\n EshopCartItem,\n EshopStoreState,\n ReservationStoreState,\n ReservationCartItem,\n Business,\n BusinessConfig,\n Block,\n Price,\n Payment,\n PaymentRefund,\n PaymentMethod,\n PaymentProviderConfig,\n AnalyticsConfig,\n ShippingMethod,\n ShippingWeightTier,\n Zone,\n Market,\n // Address types\n Address,\n GeoLocation,\n ZoneLocation,\n Location, // deprecated - use Address for addresses, GeoLocation for map pins\n Quote,\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 WorkflowLoopNode,\n WorkflowTransformNode,\n WorkflowHttpMethod,\n WorkflowExecution,\n ExecutionStatus,\n NodeResult,\n Audience,\n AudienceAccessResponse,\n AudienceSubscribeResponse,\n AudienceSubscriber,\n Event,\n EventAction,\n // Shipping types\n ShippingStatus,\n OrderShipping,\n ShippingRate,\n ShippingAddress, // deprecated - use Address\n Parcel,\n PurchaseLabelResult,\n ShipResult,\n ShipmentLine,\n Shipment,\n CustomsItem,\n CustomsDeclaration,\n ShippingProviderStatus,\n ShippingProviderShippo,\n BusinessShippingProvider,\n // Block types\n GeoLocationBlock,\n} from \"./types\";\n\nexport { PaymentMethodType } from \"./types\";\n\nexport type {\n GetSlotsForDateParams,\n GetAvailabilityParams,\n DayAvailability,\n Slot,\n SystemTemplateKey,\n // Shipping API params\n GetShippingRatesParams,\n ShipParams,\n} from \"./types/api\";\n\nexport type {\n LocationState,\n LocationCountry,\n GetCountriesResponse,\n} from \"./api/location\";\n\nexport const SDK_VERSION = \"0.4.71\";\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 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 { createReservationApi } from \"./api/reservation\";\nimport { createDatabaseApi } from \"./api/database\";\nimport { createLocationApi } from \"./api/location\";\nimport { createNetworkApi } from \"./api/network\";\nimport { createWorkflowApi } from \"./api/workflow\";\nimport { createAudienceApi } from \"./api/audience\";\nimport { createPlatformApi } from \"./api/platform\";\nimport { createShippingApi } from \"./api/shipping\";\nimport { createEventsApi } from \"./api/events\";\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\nexport async function createArkySDK(\n config: HttpClientConfig & {\n market: string;\n locale?: string;\n }\n) {\n const locale = config.locale || \"en\";\n\n const httpClient = createHttpClient(config);\n\n const apiConfig: ApiConfig = {\n httpClient,\n businessId: config.businessId,\n baseUrl: config.baseUrl,\n market: config.market,\n locale,\n setToken: config.setToken,\n getToken: config.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\") {\n // Fetch business config for analytics\n businessApi.getBusiness({}).then(({ data: business }) => {\n if (business?.config?.analytics?.measurementId) {\n injectGA4Script(business.config.analytics.measurementId);\n }\n }).catch(() => {});\n\n // Fetch platform config for Stripe keys\n platformApi.getConfig().catch(() => {});\n }\n\n const sdk = {\n auth: authApi,\n account: accountApi,\n business: businessApi,\n media: createMediaApi(apiConfig),\n notification: createNotificationApi(apiConfig),\n promoCode: createPromoCodeApi(apiConfig),\n platform: platformApi,\n cms: createCmsApi(apiConfig),\n eshop: createEshopApi(apiConfig),\n reservation: createReservationApi(apiConfig),\n database: createDatabaseApi(apiConfig),\n location: createLocationApi(apiConfig),\n network: createNetworkApi(apiConfig),\n workflow: createWorkflowApi(apiConfig),\n audience: createAudienceApi(apiConfig),\n shipping: createShippingApi(apiConfig),\n events: createEventsApi(apiConfig),\n\n analytics: {\n track,\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: config.isAuthenticated || (() => false),\n logout: config.logout,\n setToken: config.setToken,\n\n extractBlockValues,\n\n utils: {\n\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 // Platform config helpers\n getPlatformConfig: () => platformApi.getConfigCache(),\n getStripePublicKey: () => platformApi.getConfigCache()?.stripePublicKey,\n getStripeConnectClientId: () => platformApi.getConfigCache()?.stripeConnectClientId,\n };\n\n return sdk;\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/reservation.ts","../src/api/database.ts","../src/api/location.ts","../src/api/network.ts","../src/api/workflow.ts","../src/api/audience.ts","../src/api/platform.ts","../src/api/shipping.ts","../src/api/events.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 interface PaymentRefund {\n\tid: string;\n\tentity: string;\n\ttotal: number;\n\tproviderRefundId?: string;\n\tstatus: string;\n\tcreatedAt: number;\n}\n\nexport interface Payment {\n\tcurrency: string;\n\tmarket: string;\n\tsubtotal: number;\n\tshipping: number;\n\tdiscount: number;\n\ttotal: number;\n\tpaid: number;\n\ttax?: {\n\t\tamount: number;\n\t\tmodeSnapshot?: string;\n\t\trateBps: number;\n\t\tlines: Array<{ rateBps: number; amount: number; label?: string; scope?: string }>;\n\t};\n\tpromoCode?: {\n\t\tid: string;\n\t\tcode: string;\n\t\ttype: string;\n\t\tvalue: number;\n\t};\n\ttype: PaymentMethodType;\n\tprovider?: {\n\t\tcustomerId: string;\n\t\tpaymentIntentId?: string;\n\t\tsubscriptionId?: string;\n\t\tpriceId?: string;\n\t};\n\trefunds: PaymentRefund[];\n\tzoneId?: string;\n\tpaymentMethodId?: string;\n\tshippingMethodId?: string;\n}\n\nexport enum PaymentMethodType {\n\tCash = \"cash\",\n\tCreditCard = \"credit_card\",\n\t// Free REMOVED - handled with logic: if total == 0, skip payment\n\t// NOTE: Apple Pay and Google Pay are NOT separate PaymentMethodTypes\n\t// They are handled automatically by Stripe's Payment Element\n}\n\nexport interface PromoCodeValidation {\n\tpromoCodeId: string;\n\tcode: string;\n\tdiscounts: any[];\n\tconditions: any[];\n}\n\nexport interface Quote {\n\tmarket: string;\n\tzone: Zone;\n\tsubtotal: number;\n\tshipping: number;\n\tdiscount: number;\n\ttax: number;\n\ttotal: number;\n\tshippingMethod: ShippingMethod | null;\n\tpaymentMethod: PaymentMethod | null;\n\tpromoCode: PromoCodeValidation | null;\n\tpayment: Payment;\n\tchargeAmount: number;\n\tid?: string;\n\texpiresAt?: number;\n}\n\n/** Price for products and services (market-based, no provider fields) */\nexport interface Price {\n\tcurrency: string;\n\tmarket: string;\n\tamount: number;\n\tcompareAt?: number;\n}\n\n/** Interval period for subscription pricing */\nexport type IntervalPeriod = 'month' | 'year';\n\n/** Subscription interval configuration */\nexport interface SubscriptionInterval {\n\tperiod: IntervalPeriod;\n\tcount: number;\n}\n\n/** Price provider configuration (e.g., Stripe) */\nexport interface PriceProvider {\n\ttype: string;\n\tid: string;\n}\n\n/** Price for audiences/subscriptions (provider-based with interval) */\nexport interface SubscriptionPrice {\n\tcurrency: string;\n\tamount: number;\n\tcompareAt?: number;\n\tinterval?: SubscriptionInterval;\n\tproviders: PriceProvider[];\n}\n\n/**\n * Full address for shipping, billing, and fulfillment centers.\n * Used for order addresses and shipping labels.\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/**\n * Simple geo location for CMS map/location blocks.\n * Just coordinates and an optional label for display.\n */\nexport interface GeoLocation {\n\tcoordinates?: { lat: number; lon: number } | null;\n\tlabel?: string | null;\n}\n\n/**\n * @deprecated Use Address for shipping/billing addresses, GeoLocation for map coordinates\n */\nexport type Location = Address & { coordinates?: { lat: number; lon: number } | null };\n\n/**\n * Used for zone matching - simplified location with optional fields.\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}\n\nexport interface ReservationCartItem {\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\tblocks: any[];\n}\n\n/** Card payment processor - business picks ONE\n * Handles: Credit/Debit Cards, Apple Pay, Google Pay\n * Note: Wallet payments are controlled via Stripe Dashboard and detected automatically\n */\nexport interface CardProvider {\n\ttype: \"stripe\";\n\taccountId: string;\n\tcurrency: string;\n}\n\n\n/** @deprecated Use CardProvider instead */\nexport interface PaymentProviderConfig {\n\ttype: \"stripe\";\n\tpublicKey: string;\n\tsecretKey: string;\n\twebhookSecret: string;\n}\n\nexport interface AnalyticsConfig {\n\ttype: \"google_analytics4\";\n\tmeasurementId: string;\n}\n\nexport interface ShippingWeightTier {\n\tupToGrams: number;\n\tamount: number;\n}\n\nexport interface PaymentMethod {\n\tid: string;\n\tname: Record<string, string>;\n\ttype: PaymentMethodType;\n}\n\nexport interface ShippingMethod {\n\tid: string;\n\tname: Record<string, string>;\n\ttaxable: boolean;\n\tetaText: string;\n\tfulfillmentCenterId?: string;\n\tamount: number;\n\tfreeAbove?: number;\n\tweightTiers?: ShippingWeightTier[];\n}\n\nexport interface FulfillmentCenter {\n\tid: string;\n\tkey: string;\n\t/** Ship-from address for shipping labels */\n\taddress: Address;\n\tisPickupLocation: boolean;\n}\n\nexport interface InventoryLevel {\n\tfulfillmentCenterId: string;\n\tavailable: number;\n\treserved: number;\n}\n\nexport type ZoneScope = \"all\" | \"order\" | \"reservation\";\n\nexport interface Zone {\n\tid: string;\n\tname: string;\n\tmarketId: string;\n\tscope: ZoneScope;\n\tcountries: string[];\n\tstates: string[];\n\tpostalCodes: string[];\n\ttaxBps: number;\n\tpaymentMethods: PaymentMethod[];\n\tshippingMethods: ShippingMethod[];\n}\n\nexport interface Market {\n\tid: string;\n\tcurrency: string;\n\ttaxMode: \"exclusive\" | \"inclusive\";\n}\n\nexport interface Language {\n\tid: string;\n}\n\nexport interface BusinessEmails {\n\tbilling: string;\n\tsupport: string;\n}\n\nexport interface BusinessConfig {\n\tlanguages: Language[];\n\tmarkets: Market[];\n\tzones: Zone[];\n\tfulfillmentCenters: FulfillmentCenter[];\n\tbuildHooks: string[];\n\twebhooks: any[];\n\t/** Card payment processor (handles cards + Apple Pay + Google Pay) */\n\tcardProvider?: CardProvider;\n\taiProvider?: any;\n\tanalytics?: AnalyticsConfig;\n\temails: BusinessEmails;\n\t/** Configured shipping providers (e.g., Shippo) */\n\tshippingProviders?: BusinessShippingProvider[];\n}\n\nexport interface Subscription {\n\tid: string;\n\ttarget: string;\n\tplanId: string;\n\tpendingPlanId: string | null;\n\tpayment: any;\n\tstatus: SubscriptionStatus;\n\tendDate: number;\n\tusage: Record<string, any>;\n\ttoken: string;\n}\n\nexport interface Business {\n\tid: string;\n\tkey: string;\n\tnetworkKey: string | null;\n\ttimezone: string;\n\tconfigs?: BusinessConfig;\n\tsubscriptions?: Subscription[];\n\tstatus: Status;\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 BlockType =\n\t| \"text\"\n\t| \"localized_text\"\n\t| \"number\"\n\t| \"boolean\"\n\t| \"block\"\n\t| \"relationship_entry\"\n\t| \"relationship_media\"\n\t| \"markdown\"\n\t| \"geo_location\";\n\nexport interface GeoLocationBlockProperties {}\n\n/** @deprecated Use GeoLocation instead */\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 ReservationStoreState {\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\treservationBlocks: Block[];\n\tapiUrl: string;\n\tbusinessId: string;\n\ttimezone: string;\n\ttzGroups: any;\n\titems: ReservationCartItem[];\n\tallowedPaymentMethods: string[];\n\tpaymentConfig: {\n\t\tprovider: CardProvider | null;\n\t\tenabled: boolean;\n\t};\n}\n\nexport type Status = 'draft' | 'active' | 'archived';\n\nexport type OrderStatus = 'created' | 'pending' | 'authorized' | 'confirmed' | 'shipped' | 'completed' | 'cancelled' | 'failed';\n\nexport type ReservationStatus = 'created' | 'pending' | 'authorized' | 'confirmed' | 'completed' | 'cancelled' | 'failed';\n\nexport type SubscriptionStatus = 'pending' | 'active' | 'cancellation_scheduled' | 'cancelled' | 'expired';\n\nexport interface ReservationItem {\n\tid: string;\n\tserviceId: string;\n\tproviderId: string;\n\tbusinessId: string;\n\treservationId: string;\n\tuserId: string;\n\tfrom: number;\n\tto: number;\n\tblocks: Block[];\n\tprice: Price;\n}\n\nexport interface Reservation {\n\tid: string;\n\tnumber: string;\n\tuserId: string;\n\tblocks: Block[];\n\tbusinessId: string;\n\tstatus: ReservationStatus;\n\tserviceIds: string[];\n\tproviderIds: string[];\n\tpayment: Payment;\n\tbusiness?: Business;\n\tuser?: any;\n\titems: ReservationItem[];\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\tstatus: Status;\n\tslug: Record<string, string>;\n\taccess: Access;\n\twriteAccess: Access;\n\temailSubject?: Record<string, string>;\n\tchildren: Node[];\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\tworkingTime: {\n\t\tworkingDays: Array<{ day: string; workingHours: Array<{ from: number; to: number }> }>;\n\t\toutcastDates: Array<{ month: number; day: number; workingHours: Array<{ from: number; to: number }> }>;\n\t\tspecificDates: Array<{ date: number; workingHours: Array<{ from: number; to: number }> }>;\n\t};\n\tprovider?: Provider;\n}\n\nexport interface Service {\n\tid: string;\n\tkey: string;\n\tslug: Record<string, string>;\n\taccess: Access;\n\tbusinessId: string;\n\tprices: Price[];\n\tdurations: ServiceDuration[];\n\tblocks: Block[];\n\tnodeIds: string[];\n\tisApprovalRequired: boolean;\n\tproviders: ServiceProvider[];\n\tcreatedAt: number;\n\tupdatedAt: number;\n\tstatus: Status;\n}\n\nexport interface ProviderTimelinePoint {\n\ttimestamp: number;\n\tconcurrent: number;\n}\n\nexport interface Provider {\n\tid: string;\n\tkey: string;\n\tslug: Record<string, string>;\n\taccess: Access;\n\tbusinessId: string;\n\tstatus: Status;\n\tconcurrentLimit: number;\n\tnodeIds: string[];\n\tblocks: Block[];\n\ttimeline: ProviderTimelinePoint[];\n\tcreatedAt: number;\n\tupdatedAt: number;\n}\n\nexport interface Workflow {\n\tid: string;\n\tkey: string;\n\tbusinessId: string;\n\tsecret: string;\n\tstatus: Status;\n\tnodes: Record<string, WorkflowNode>;\n\tedges: WorkflowEdge[];\n\t\n\tschedule?: string;\n\tcreatedAt: number;\n\tupdatedAt: number;\n}\n\nexport interface WorkflowEdge {\n\tid: string;\n\tsource: string;\n\toutput: string;\n\ttarget: string;\n}\n\nexport type WorkflowNode =\n\t| WorkflowTriggerNode\n\t| WorkflowHttpNode\n\t| WorkflowSwitchNode\n\t| WorkflowLoopNode\n\t| WorkflowTransformNode;\n\nexport interface WorkflowTriggerNode {\n\ttype: 'trigger';\n\tevent?: string;\n\tdelayMs?: number;\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\tintegration?: {\n\t\tid: string;\n\t\tresource: string;\n\t\toperation: string;\n\t};\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 WorkflowLoopNode {\n\ttype: 'loop';\n\tarray: string;\n\tdelayMs?: number;\n}\n\nexport interface WorkflowTransformNode {\n\ttype: 'transform';\n\tcode: 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 interface Audience {\n\tid: string;\n\tbusinessId: string;\n\tkey: string;\n\taccess: Access;\n\tnodeIds: string[];\n\tprices: SubscriptionPrice[];\n\tstatus: Status;\n}\n\nexport interface AudienceAccessResponse {\n\thasAccess: boolean;\n\tsubscription?: Subscription;\n}\n\nexport interface AudienceSubscribeResponse {\n\tcheckoutUrl?: string;\n\tsubscription?: Subscription;\n}\n\nexport type EventAction =\n\t// Order events\n\t| { action: 'order_created' }\n\t| { action: 'order_updated' }\n\t| { action: 'order_status_changed'; data: { from: string; to: string } }\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_completed' }\n\t| { action: 'order_cancelled'; data: { reason?: string } }\n\t// Order shipment events\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// Reservation events\n\t| { action: 'reservation_created' }\n\t| { action: 'reservation_updated' }\n\t| { action: 'reservation_status_changed'; data: { from: string; to: string } }\n\t| { action: 'reservation_payment_received'; data: { amount: number; currency: string } }\n\t| { action: 'reservation_payment_failed'; data: { reason?: string } }\n\t| { action: 'reservation_refunded'; data: { amount: number; currency: string; reason?: string } }\n\t| { action: 'reservation_completed' }\n\t| { action: 'reservation_cancelled'; data: { reason?: string } }\n\t// Product events\n\t| { action: 'product_created' }\n\t| { action: 'product_updated' }\n\t| { action: 'product_deleted' }\n\t// Node events\n\t| { action: 'node_created' }\n\t| { action: 'node_updated' }\n\t| { action: 'node_deleted' }\n\t// Provider events\n\t| { action: 'provider_created' }\n\t| { action: 'provider_updated' }\n\t| { action: 'provider_deleted' }\n\t// Service events\n\t| { action: 'service_created' }\n\t| { action: 'service_updated' }\n\t| { action: 'service_deleted' }\n\t// Account events\n\t| { action: 'account_created' }\n\t| { action: 'account_updated' }\n\t| { action: 'account_deleted' }\n\t// Media events\n\t| { action: 'media_created' }\n\t| { action: 'media_deleted' }\n\t// Business events\n\t| { action: 'business_created' }\n\t| { action: 'business_updated' }\n\t| { action: 'business_deleted' }\n\t// Audience events\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// Shipping Types\n\n/** Shipping status for order fulfillment tracking */\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/** Order shipping information (legacy - kept for backward compatibility) */\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/** Line item in a shipment with quantity (for partial fulfillment) */\nexport interface ShipmentLine {\n\torderItemId: string;\n\tquantity: number;\n}\n\n/** Individual shipment for an order (ships from one fulfillment center) */\nexport interface Shipment {\n\tid: string;\n\tfulfillmentCenterId: string;\n\tlines: ShipmentLine[]; // OrderItem IDs + quantities in this shipment\n\tcarrier?: string | null; // Set when label purchased\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/** Shipping rate from provider */\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/**\n * @deprecated Use Address instead\n * Shipping address for rate requests\n */\nexport type ShippingAddress = Address;\n\n/** Parcel dimensions for shipping */\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/** Result from purchasing a shipping label */\nexport interface PurchaseLabelResult {\n\ttrackingNumber: string;\n\ttrackingUrl?: string | null;\n\tlabelUrl: string;\n\tcarrier: string;\n\tservice: string;\n}\n\n/** Result from ship operation */\nexport interface ShipResult {\n\tshipmentId: string;\n\ttrackingNumber: string;\n\ttrackingUrl?: string | null;\n\tlabelUrl: string;\n}\n\n/** Individual item in a customs declaration */\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/** Customs declaration for international shipments */\nexport interface CustomsDeclaration {\n\tcontentsType: string; // \"MERCHANDISE\" | \"GIFT\" | \"SAMPLE\" | \"DOCUMENTS\" | \"RETURN\"\n\tcontentsExplanation?: string | null;\n\tnonDeliveryOption: string; // \"RETURN\" | \"ABANDON\"\n\tcertify: boolean;\n\tcertifySigner: string;\n\titems: CustomsItem[];\n}\n\n/** Shipping provider status */\nexport type ShippingProviderStatus = 'active' | 'inactive';\n\n/** Shippo shipping provider configuration */\nexport interface ShippingProviderShippo {\n\ttype: 'shippo';\n\tid: string;\n\tstatus: ShippingProviderStatus;\n\tapiToken: string;\n}\n\n/** Business shipping provider (union type for extensibility) */\nexport type BusinessShippingProvider = ShippingProviderShippo;\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}","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\texpiresAt?: number;\n\taccountId?: string;\n}\n\nexport interface HttpClientConfig {\n\tbaseUrl: string;\n\n\tbusinessId: 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 refreshEndpoint = `${cfg.baseUrl}/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 cfg.getToken();\n\t\t\tif (!refreshToken) {\n\t\t\t\tcfg.logout();\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\tcfg.logout();\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\tcfg.setToken(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, expiresAt } = await cfg.getToken();\n\n\tconst nowSec = Date.now() / 1000;\n\tif (expiresAt && nowSec > expiresAt) {\n\t\tawait ensureFreshToken();\n\t\tconst tokens = await cfg.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 cfg.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 AddPhoneNumberParams,\n PhoneNumberConfirmParams,\n SearchAccountsParams,\n DeleteAccountParams,\n GetMeParams,\n AccountSubscribeParams,\n RequestOptions\n} from '../types/api';\n\nexport const createAccountApi = (apiConfig: ApiConfig) => {\n return {\n \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 addPhoneNumber(params: AddPhoneNumberParams, options?: RequestOptions) {\n return apiConfig.httpClient.post('/v1/accounts/phone-number', params, options);\n },\n\n async phoneNumberConfirm(params: PhoneNumberConfirmParams, options?: RequestOptions) {\n return apiConfig.httpClient.post('/v1/accounts/phone-number/confirm', params, 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 async subscribe(params: AccountSubscribeParams, options?: RequestOptions) {\n return apiConfig.httpClient.post('/v1/accounts/subscribe', params, options);\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 session(options?: RequestOptions) {\n return apiConfig.httpClient.post('/v1/auth/session', {}, options);\n },\n\n async signInAnonymously(options?: RequestOptions) {\n const tokens = await apiConfig.getToken();\n if (tokens?.accessToken) {\n \n return tokens;\n }\n \n const result = await apiConfig.httpClient.post('/v1/auth/session', {}, options);\n if (result?.accessToken) {\n apiConfig.setToken({ ...result, isGuest: true });\n }\n return result;\n },\n\n async isGuest(): Promise<boolean> {\n const tokens = await apiConfig.getToken();\n if (!tokens?.accessToken) return true;\n const email = (tokens as any).email || \"\";\n return !email || email.startsWith(\"guest+\");\n },\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, isGuest: false });\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, isGuest: false });\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 GetBusinessParentsParams,\n TriggerBuildsParams,\n GetSubscriptionParams,\n GetSubscriptionPlansParams,\n SubscribeParams,\n CreatePortalSessionParams,\n InviteUserParams,\n HandleInvitationParams,\n TestWebhookParams,\n GetBusinessMediaParams2,\n ProcessRefundParams,\n ConnectStripeParams,\n DisconnectStripeParams,\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 getBusinessParents(\n params: GetBusinessParentsParams,\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/parents`,\n options\n );\n },\n\n async triggerBuilds(params: TriggerBuildsParams, options?: RequestOptions) {\n return apiConfig.httpClient.post(\n `/v1/businesses/${params.id}/trigger-builds`,\n {},\n options\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 getSubscription(\n params: GetSubscriptionParams,\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/subscription`,\n 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 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 processRefund(params: ProcessRefundParams, options?: RequestOptions) {\n const { id, ...payload } = params;\n return apiConfig.httpClient.post(\n `/v1/businesses/${id}/refund`,\n payload,\n options\n );\n },\n\n async connectStripe(\n params: ConnectStripeParams,\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.post(\n `/v1/businesses/${params.businessId}/stripe/connect`,\n { code: params.code },\n options\n );\n },\n\n async disconnectStripe(\n params: DisconnectStripeParams,\n options?: RequestOptions\n ) {\n return apiConfig.httpClient.post(\n `/v1/businesses/${params.businessId}/stripe/disconnect`,\n {},\n options\n );\n },\n };\n};\n","import type { ApiConfig } from '../index';\nimport type {\n UploadBusinessMediaParams,\n DeleteBusinessMediaParams,\n GetBusinessMediaParams,\n UpdateMediaParams,\n RequestOptions\n} from '../types/api';\n\nexport const createMediaApi = (apiConfig: ApiConfig) => {\n return {\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\tGetDeliveryStatsParams,\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/email/${params.trackingPixelId}`,\n\t\t\t\toptions\n\t\t\t);\n\t\t},\n\n\t\tasync getDeliveryStats(params: GetDeliveryStatsParams, options?: RequestOptions) {\n\t\t\treturn apiConfig.httpClient.get(\n\t\t\t\t`/v1/notifications/track/stats/${apiConfig.businessId}`,\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, locale: string = \"en\"): string {\n if (!block) return \"\";\n const label = block.properties?.label;\n if (typeof label === \"string\") return label;\n if (label && typeof label === \"object\") return label[locale] ?? label[\"en\"] ?? \"\";\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] === 'block' && !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 // For localized_text and markdown, value is { en: \"...\", bs: \"...\" }\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 // For TEXT and other simple types, value is a string\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 // For block type, value is an array of child blocks\n if (block.type === \"block\" && 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 === \"block\") {\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 === \"text_filter\" || block.type === \"number_filter\") {\n return block.value;\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 !== \"block\" || !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 === \"block\" && 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 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 GenerateBlocksParams,\n GetVariableMetadataParams,\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 async generateBlocks(params: GenerateBlocksParams, options?: RequestOptions) {\n return apiConfig.httpClient.post(\n `/v1/businesses/${apiConfig.businessId}/nodes/blocks/generate`,\n params,\n options\n );\n },\n\n async getVariableMetadata(params: GetVariableMetadataParams, options?: RequestOptions) {\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/nodes/types/${params.nodeType}/variables`,\n options\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 OrderCheckoutParams,\n CreateOrderParams,\n UpdateOrderParams,\n GetOrderParams,\n GetOrdersParams,\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 payload = {\n market: apiConfig.market,\n items: params.items,\n blocks: params.blocks || [],\n paymentMethodId: params.paymentMethodId,\n shippingMethodId: params.shippingMethodId,\n promoCode: params.promoCode,\n location: params.location,\n };\n\n return apiConfig.httpClient.post(\n `/v1/businesses/${apiConfig.businessId}/orders/quote`,\n payload,\n options,\n );\n },\n\n async checkout(params: OrderCheckoutParams, options?: RequestOptions) {\n const payload = {\n businessId: apiConfig.businessId,\n market: apiConfig.market,\n items: params.items,\n blocks: params.blocks || [],\n paymentMethodId: params.paymentMethodId,\n shippingMethodId: params.shippingMethodId,\n promoCodeId: params.promoCodeId,\n shippingAddress: params.shippingAddress,\n billingAddress: params.billingAddress,\n };\n\n return apiConfig.httpClient.post(\n `/v1/businesses/${apiConfig.businessId}/orders/checkout`,\n payload,\n options,\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateReservationParams,\n UpdateReservationParams,\n ReservationCheckoutParams,\n GetReservationParams,\n SearchReservationsParams,\n CreateServiceParams,\n UpdateServiceParams,\n DeleteServiceParams,\n GetServiceParams,\n GetServicesParams,\n BulkScheduleParams,\n CreateProviderParams,\n UpdateProviderParams,\n DeleteProviderParams,\n GetProviderParams,\n GetProvidersParams,\n GetBusinessServiceWorkingTimeParams,\n GetReservationQuoteParams,\n RequestOptions,\n Slot,\n} from \"../types/api\";\n\nexport const createReservationApi = (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 createReservation(\n params: CreateReservationParams,\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}/reservations`,\n { market: apiConfig.market, ...payload },\n options,\n );\n },\n\n async updateReservation(\n params: UpdateReservationParams,\n options?: RequestOptions,\n ) {\n const { id, ...payload } = params;\n return apiConfig.httpClient.put(\n `/v1/businesses/${apiConfig.businessId}/reservations/${id}`,\n payload,\n options,\n );\n },\n\n async checkout(\n params?: Partial<ReservationCheckoutParams>,\n options?: RequestOptions,\n ) {\n const { businessId, items: paramItems, ...payload } = params || {};\n const targetBusinessId = businessId || apiConfig.businessId;\n\n const items = paramItems || cart.map((s) => ({\n serviceId: s.serviceId,\n providerId: s.providerId,\n from: s.from,\n to: s.to,\n }));\n\n return apiConfig.httpClient.post(\n `/v1/businesses/${targetBusinessId}/reservations/checkout`,\n { market: apiConfig.market, ...payload, items },\n options,\n );\n },\n\n async getReservation(\n params: GetReservationParams,\n options?: RequestOptions,\n ) {\n const targetBusinessId = params.businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/reservations/${params.id}`,\n options,\n );\n },\n\n async searchReservations(\n params: SearchReservationsParams,\n options?: RequestOptions,\n ) {\n const { businessId, ...queryParams } = params;\n const targetBusinessId = businessId || apiConfig.businessId;\n return apiConfig.httpClient.get(\n `/v1/businesses/${targetBusinessId}/reservations`,\n {\n ...options,\n params: queryParams,\n },\n );\n },\n\n async getQuote(\n params: GetReservationQuoteParams,\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}/reservations/quote`,\n { market: apiConfig.market, ...payload },\n options,\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 bulkSchedule(params: BulkScheduleParams, options?: RequestOptions) {\n return apiConfig.httpClient.post(\n `/v1/businesses/${apiConfig.businessId}/services/bulk-schedule`,\n params,\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 getProviderWorkingTime(\n params: GetBusinessServiceWorkingTimeParams,\n options?: RequestOptions,\n ) {\n const { providerId, ...queryParams } = params;\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/providers/${providerId}/working-time`,\n {\n ...options,\n params: queryParams,\n },\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type { RequestOptions } from \"../types/api\";\n\nexport interface ScanDataParams {\n key: string;\n limit?: number;\n}\n\nexport interface PutDataParams {\n key: string;\n value: any;\n oldKey?: string;\n}\n\nexport interface DeleteDataParams {\n key: string;\n}\n\nexport interface RunScriptParams {\n name: string;\n value?: string;\n username?: string;\n password?: string;\n}\n\nexport interface RunScriptResponse {\n success: boolean;\n message: string;\n}\n\nexport const createDatabaseApi = (apiConfig: ApiConfig) => {\n return {\n async scanData(\n params: ScanDataParams,\n options?: RequestOptions\n ): Promise<any[]> {\n const response = await apiConfig.httpClient.get(\n `/v1/operations/data`,\n {\n ...options,\n params: {\n key: params.key,\n limit: params.limit || 200,\n },\n }\n );\n return response.value || [];\n },\n\n async putData(\n params: PutDataParams,\n options?: RequestOptions\n ): Promise<void> {\n return apiConfig.httpClient.post(\n `/v1/operations/data`,\n params,\n options\n );\n },\n\n async deleteData(\n params: DeleteDataParams,\n options?: RequestOptions\n ): Promise<void> {\n return apiConfig.httpClient.delete(\n `/v1/operations/data`,\n {\n ...options,\n params: {\n key: params.key,\n },\n }\n );\n },\n\n async runScript(\n params: RunScriptParams,\n options?: RequestOptions\n ): Promise<RunScriptResponse> {\n return apiConfig.httpClient.post(`/v1/operations/scripts`, params, options);\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type { RequestOptions } from \"../types/api\";\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/operations/location/countries`, options);\n },\n\n async getCountryStates(\n countryCode: string,\n options?: RequestOptions\n ): Promise<LocationCountry> {\n return apiConfig.httpClient.get(\n `/v1/operations/location/countries/${countryCode}/states`,\n options\n );\n },\n };\n};\n","import type { ApiConfig } from \"../index\";\nimport type { RequestOptions } from \"../types/api\";\n\nexport interface NetworkSearchParams {\n query?: string;\n limit?: number;\n cursor?: string;\n nodeId?: string;\n nodeIds?: string[];\n statuses?: string[];\n blocks?: any[];\n sortField?: string;\n sortDirection?: \"asc\" | \"desc\";\n createdAtFrom?: number;\n createdAtTo?: number;\n priceFrom?: number;\n priceTo?: number;\n matchAll?: boolean;\n}\n\nexport const createNetworkApi = (apiConfig: ApiConfig) => {\n return {\n \n async searchServices(\n networkKey: string,\n params?: NetworkSearchParams,\n options?: RequestOptions\n ) {\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?.nodeId) queryParams.nodeId = params.nodeId;\n if (params?.nodeIds && params.nodeIds.length > 0)\n queryParams.nodeIds = params.nodeIds.join(\",\");\n if (params?.statuses && params.statuses.length > 0)\n queryParams.statuses = params.statuses.join(\",\");\n if (params?.sortField) queryParams.sortField = params.sortField;\n if (params?.sortDirection) queryParams.sortDirection = params.sortDirection;\n if (params?.createdAtFrom !== undefined)\n queryParams.createdAtFrom = params.createdAtFrom;\n if (params?.createdAtTo !== undefined)\n queryParams.createdAtTo = params.createdAtTo;\n if (params?.priceFrom !== undefined) queryParams.priceFrom = params.priceFrom;\n if (params?.priceTo !== undefined) queryParams.priceTo = params.priceTo;\n if (params?.matchAll !== undefined) queryParams.matchAll = params.matchAll;\n if (params?.blocks && params.blocks.length > 0)\n queryParams.blocks = JSON.stringify(params.blocks);\n\n return apiConfig.httpClient.get(`/v1/networks/${networkKey}/services`, {\n ...options,\n params: queryParams,\n });\n },\n\n async searchProducts(\n networkKey: string,\n params?: NetworkSearchParams,\n options?: RequestOptions\n ) {\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?.nodeId) queryParams.nodeId = params.nodeId;\n if (params?.nodeIds && params.nodeIds.length > 0)\n queryParams.nodeIds = params.nodeIds.join(\",\");\n if (params?.statuses && params.statuses.length > 0)\n queryParams.statuses = params.statuses.join(\",\");\n if (params?.sortField) queryParams.sortField = params.sortField;\n if (params?.sortDirection) queryParams.sortDirection = params.sortDirection;\n if (params?.createdAtFrom !== undefined)\n queryParams.createdAtFrom = params.createdAtFrom;\n if (params?.createdAtTo !== undefined)\n queryParams.createdAtTo = params.createdAtTo;\n if (params?.priceFrom !== undefined) queryParams.priceFrom = params.priceFrom;\n if (params?.priceTo !== undefined) queryParams.priceTo = params.priceTo;\n if (params?.matchAll !== undefined) queryParams.matchAll = params.matchAll;\n if (params?.blocks && params.blocks.length > 0)\n queryParams.blocks = JSON.stringify(params.blocks);\n\n return apiConfig.httpClient.get(`/v1/networks/${networkKey}/products`, {\n ...options,\n params: queryParams,\n });\n },\n\n async searchProviders(\n networkKey: string,\n params?: NetworkSearchParams,\n options?: RequestOptions\n ) {\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?.nodeId) queryParams.nodeId = params.nodeId;\n if (params?.nodeIds && params.nodeIds.length > 0)\n queryParams.nodeIds = params.nodeIds.join(\",\");\n if (params?.statuses && params.statuses.length > 0)\n queryParams.statuses = params.statuses.join(\",\");\n if (params?.sortField) queryParams.sortField = params.sortField;\n if (params?.sortDirection) queryParams.sortDirection = params.sortDirection;\n if (params?.createdAtFrom !== undefined)\n queryParams.createdAtFrom = params.createdAtFrom;\n if (params?.createdAtTo !== undefined)\n queryParams.createdAtTo = params.createdAtTo;\n if (params?.matchAll !== undefined) queryParams.matchAll = params.matchAll;\n if (params?.blocks && params.blocks.length > 0)\n queryParams.blocks = JSON.stringify(params.blocks);\n\n return apiConfig.httpClient.get(`/v1/networks/${networkKey}/providers`, {\n ...options,\n params: queryParams,\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\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\t};\n};\n","import type { ApiConfig } from \"../index\";\nimport type {\n CreateAudienceParams,\n UpdateAudienceParams,\n GetAudienceParams,\n GetAudiencesParams,\n SubscribeAudienceParams,\n GetAudienceSubscribersParams,\n RevokeAudienceSubscriptionParams,\n RequestOptions,\n} from \"../types/api\";\n\nexport const createAudienceApi = (apiConfig: ApiConfig) => {\n return {\n async createAudience(params: CreateAudienceParams, options?: RequestOptions) {\n return apiConfig.httpClient.post(\n `/v1/businesses/${apiConfig.businessId}/audiences`,\n params,\n options,\n );\n },\n\n async updateAudience(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 deleteAudience(params: { id: string }, options?: RequestOptions) {\n return apiConfig.httpClient.delete(\n `/v1/businesses/${apiConfig.businessId}/audiences/${params.id}`,\n options,\n );\n },\n\n async getAudience(params: GetAudienceParams, options?: RequestOptions) {\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/audiences/${params.id}`,\n options,\n );\n },\n\n async getAudiences(params: GetAudiencesParams, options?: RequestOptions) {\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/audiences`,\n { ...options, params },\n );\n },\n\n async subscribe(params: SubscribeAudienceParams, options?: RequestOptions) {\n return apiConfig.httpClient.post(\n `/v1/businesses/${apiConfig.businessId}/audiences/${params.id}/subscribe`,\n {\n priceId: params.priceId,\n successUrl: params.successUrl,\n cancelUrl: params.cancelUrl,\n },\n options,\n );\n },\n\n async checkAccess(params: { id: string }, options?: RequestOptions) {\n return apiConfig.httpClient.get(\n `/v1/businesses/${apiConfig.businessId}/audiences/${params.id}/access`,\n options,\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: {\n limit: params.limit,\n cursor: params.cursor,\n },\n },\n );\n },\n\n async revokeSubscription(params: RevokeAudienceSubscriptionParams, options?: RequestOptions) {\n return apiConfig.httpClient.delete(\n `/v1/businesses/${apiConfig.businessId}/audiences/${params.id}/subscribers/${params.accountId}`,\n options,\n );\n },\n };\n};\n","import type { ApiConfig } from '../index';\nimport type { RequestOptions } from '../types/api';\n\nexport interface PlatformConfig {\n\tstripePublicKey: string;\n\tstripeConnectClientId: string;\n}\n\nlet cachedConfig: PlatformConfig | null = null;\n\nexport const createPlatformApi = (apiConfig: ApiConfig) => {\n\treturn {\n\t\tasync getConfig(options?: RequestOptions): Promise<PlatformConfig> {\n\t\t\tif (cachedConfig) return cachedConfig;\n\t\t\tconst config = await apiConfig.httpClient.get('/v1/platform/config', options);\n\t\t\tcachedConfig = config;\n\t\t\treturn config;\n\t\t},\n\n\t\tgetConfigCache(): PlatformConfig | null {\n\t\t\treturn cachedConfig;\n\t\t},\n\n\t\tasync getCurrencies(options?: RequestOptions): Promise<string[]> {\n\t\t\treturn apiConfig.httpClient.get('/v1/platform/currencies', 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 * Get available shipping rates for a shipment\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}/rates`,\n payload,\n options\n );\n },\n\n /**\n * Ship items: creates shipment + purchases label atomically\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 { GetEventsParams, UpdateEventParams, RequestOptions } from \"../types/api\";\n\nexport function createEventsApi(apiConfig: ApiConfig) {\n return {\n async getEvents(params: GetEventsParams, options?: RequestOptions) {\n return apiConfig.httpClient.get(`/v1/events`, {\n ...options,\n params: {\n entity: params.entity,\n limit: params.limit,\n cursor: params.cursor,\n },\n });\n },\n\n async updateEvent(params: UpdateEventParams, options?: RequestOptions) {\n return apiConfig.httpClient.put(\n `/v1/events/${params.eventId}`,\n {\n eventId: params.eventId,\n event: params.event,\n },\n options\n );\n },\n\n async getWebhookEvents(options?: RequestOptions): Promise<{ data: string[] }> {\n return apiConfig.httpClient.get(`/v1/operations/events/metadata`, options);\n },\n };\n}\n","import type { Payment, Price } from '../types';\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; // Default fallback\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: Payment): 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}","\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}","\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}","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}","\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, FulfillmentCenter } from '../types';\n\nexport interface VariantWithInventory {\n inventory: InventoryLevel[];\n}\n\n/**\n * Get total available stock across all fulfillment centers for a variant\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/**\n * Get total reserved stock across all fulfillment centers for a variant\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/**\n * Check if variant has any available stock\n */\nexport function hasStock(variant: VariantWithInventory, quantity: number = 1): boolean {\n return getAvailableStock(variant) >= quantity;\n}\n\n/**\n * Get inventory level at a specific fulfillment center\n */\nexport function getInventoryAt(\n variant: VariantWithInventory,\n fulfillmentCenterId: string\n): InventoryLevel | undefined {\n return variant?.inventory?.find(inv => inv.fulfillmentCenterId === fulfillmentCenterId);\n}\n\n/**\n * Get the first fulfillment center with available stock\n * Returns the fulfillmentCenterId of the first center that has stock\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?.fulfillmentCenterId;\n}\n","\nexport type {\n ApiResponse,\n EshopCartItem,\n EshopStoreState,\n ReservationStoreState,\n ReservationCartItem,\n Business,\n BusinessConfig,\n Block,\n Price,\n Payment,\n PaymentRefund,\n PaymentMethod,\n PaymentProviderConfig,\n AnalyticsConfig,\n ShippingMethod,\n ShippingWeightTier,\n Zone,\n Market,\n // Address types\n Address,\n GeoLocation,\n ZoneLocation,\n Location, // deprecated - use Address for addresses, GeoLocation for map pins\n Quote,\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 WorkflowLoopNode,\n WorkflowTransformNode,\n WorkflowHttpMethod,\n WorkflowExecution,\n ExecutionStatus,\n NodeResult,\n Audience,\n AudienceAccessResponse,\n AudienceSubscribeResponse,\n AudienceSubscriber,\n Event,\n EventAction,\n // Shipping types\n ShippingStatus,\n OrderShipping,\n ShippingRate,\n ShippingAddress, // deprecated - use Address\n Parcel,\n PurchaseLabelResult,\n ShipResult,\n ShipmentLine,\n Shipment,\n CustomsItem,\n CustomsDeclaration,\n ShippingProviderStatus,\n ShippingProviderShippo,\n BusinessShippingProvider,\n // Block types\n GeoLocationBlock,\n} from \"./types\";\n\nexport { PaymentMethodType } from \"./types\";\n\nexport type {\n GetSlotsForDateParams,\n GetAvailabilityParams,\n DayAvailability,\n Slot,\n SystemTemplateKey,\n // Shipping API params\n GetShippingRatesParams,\n ShipParams,\n} from \"./types/api\";\n\nexport type {\n LocationState,\n LocationCountry,\n GetCountriesResponse,\n} from \"./api/location\";\n\nexport const SDK_VERSION = \"0.4.71\";\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 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 { createReservationApi } from \"./api/reservation\";\nimport { createDatabaseApi } from \"./api/database\";\nimport { createLocationApi } from \"./api/location\";\nimport { createNetworkApi } from \"./api/network\";\nimport { createWorkflowApi } from \"./api/workflow\";\nimport { createAudienceApi } from \"./api/audience\";\nimport { createPlatformApi } from \"./api/platform\";\nimport { createShippingApi } from \"./api/shipping\";\nimport { createEventsApi } from \"./api/events\";\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\nexport async function createArkySDK(\n config: HttpClientConfig & {\n market: string;\n locale?: string;\n }\n) {\n const locale = config.locale || \"en\";\n\n const httpClient = createHttpClient(config);\n\n const apiConfig: ApiConfig = {\n httpClient,\n businessId: config.businessId,\n baseUrl: config.baseUrl,\n market: config.market,\n locale,\n setToken: config.setToken,\n getToken: config.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\") {\n // Fetch business config for analytics\n businessApi.getBusiness({}).then(({ data: business }) => {\n if (business?.config?.analytics?.measurementId) {\n injectGA4Script(business.config.analytics.measurementId);\n }\n }).catch(() => {});\n\n // Fetch platform config for Stripe keys\n platformApi.getConfig().catch(() => {});\n }\n\n const sdk = {\n auth: authApi,\n account: accountApi,\n business: businessApi,\n media: createMediaApi(apiConfig),\n notification: createNotificationApi(apiConfig),\n promoCode: createPromoCodeApi(apiConfig),\n platform: platformApi,\n cms: createCmsApi(apiConfig),\n eshop: createEshopApi(apiConfig),\n reservation: createReservationApi(apiConfig),\n database: createDatabaseApi(apiConfig),\n location: createLocationApi(apiConfig),\n network: createNetworkApi(apiConfig),\n workflow: createWorkflowApi(apiConfig),\n audience: createAudienceApi(apiConfig),\n shipping: createShippingApi(apiConfig),\n events: createEventsApi(apiConfig),\n\n analytics: {\n track,\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: config.isAuthenticated || (() => false),\n logout: config.logout,\n setToken: config.setToken,\n\n extractBlockValues,\n\n utils: {\n\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 // Platform config helpers\n getPlatformConfig: () => platformApi.getConfigCache(),\n getStripePublicKey: () => platformApi.getConfigCache()?.stripePublicKey,\n getStripeConnectClientId: () => platformApi.getConfigCache()?.stripeConnectClientId,\n };\n\n return sdk;\n}\n\nexport type { HttpClientConfig } from \"./services/createHttpClient\";\n"]}
|