@basedone/core 0.2.0 → 0.2.2

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/ecommerce.js CHANGED
@@ -727,6 +727,224 @@ var CustomerEcommerceClient = class extends BaseEcommerceClient {
727
727
  async trackBanner(bannerId, request) {
728
728
  return this.post(`/api/marketplace/banners/${bannerId}/track`, request);
729
729
  }
730
+ // ============================================================================
731
+ // Messages API
732
+ // ============================================================================
733
+ /**
734
+ * List messages for customer
735
+ *
736
+ * Returns all conversations grouped by order, where each order represents
737
+ * a conversation with a merchant.
738
+ *
739
+ * @returns List of conversations with messages and stats
740
+ *
741
+ * @example
742
+ * ```typescript
743
+ * const result = await client.listMessages();
744
+ * console.log("Unread:", result.stats.unread);
745
+ * result.conversations.forEach(conv => {
746
+ * console.log(`Order ${conv.orderNumber}: ${conv.unreadCount} unread`);
747
+ * });
748
+ * ```
749
+ */
750
+ async listMessages() {
751
+ return this.get("/api/marketplace/messages");
752
+ }
753
+ /**
754
+ * Get message stats (unread count)
755
+ *
756
+ * Lightweight endpoint for notification badges.
757
+ *
758
+ * @returns Unread message count
759
+ *
760
+ * @example
761
+ * ```typescript
762
+ * const stats = await client.getMessageStats();
763
+ * console.log("Unread messages:", stats.unread);
764
+ * ```
765
+ */
766
+ async getMessageStats() {
767
+ return this.get("/api/marketplace/messages/stats");
768
+ }
769
+ /**
770
+ * Send a message to a merchant about an order
771
+ *
772
+ * @param request - Message data including orderId, recipientId (merchant user ID), and message
773
+ * @returns Sent message
774
+ *
775
+ * @example
776
+ * ```typescript
777
+ * await client.sendMessage({
778
+ * orderId: "ord_123",
779
+ * recipientId: "user_merchant_456",
780
+ * message: "When will my order ship?"
781
+ * });
782
+ * ```
783
+ */
784
+ async sendMessage(request) {
785
+ return this.post("/api/marketplace/messages/send", request);
786
+ }
787
+ /**
788
+ * Mark a message as read
789
+ *
790
+ * @param messageId - Message ID
791
+ * @returns Updated message
792
+ *
793
+ * @example
794
+ * ```typescript
795
+ * await client.markMessageAsRead("msg_123");
796
+ * ```
797
+ */
798
+ async markMessageAsRead(messageId) {
799
+ return this.patch(`/api/marketplace/messages/${messageId}/read`, {});
800
+ }
801
+ // ============================================================================
802
+ // Flash Sales API
803
+ // ============================================================================
804
+ /**
805
+ * Get active flash sales
806
+ *
807
+ * Returns currently running flash sales with their discounted products.
808
+ * Includes countdown timer information for UI display.
809
+ *
810
+ * @param params - Query parameters
811
+ * @returns List of active flash sales with time remaining
812
+ *
813
+ * @example
814
+ * ```typescript
815
+ * const result = await client.getActiveFlashSales({ limit: 5 });
816
+ *
817
+ * result.flashSales.forEach(sale => {
818
+ * console.log(`${sale.name} - ends at ${sale.endsAt}`);
819
+ * sale.items.forEach(item => {
820
+ * console.log(` ${item.product.title}: $${item.salePrice} (${item.discountPercent}% off)`);
821
+ * });
822
+ * });
823
+ *
824
+ * // Use timeRemaining for countdown UI
825
+ * if (result.timeRemaining) {
826
+ * console.log(`Featured sale ends in ${result.timeRemaining.remainingSeconds} seconds`);
827
+ * }
828
+ * ```
829
+ */
830
+ async getActiveFlashSales(params) {
831
+ const queryString = params ? buildQueryString(params) : "";
832
+ return this.get(`/api/marketplace/flash-sales/active${queryString}`);
833
+ }
834
+ // ============================================================================
835
+ // Merchant Storefront API
836
+ // ============================================================================
837
+ /**
838
+ * Get public merchant profile
839
+ *
840
+ * Fetches public information about a merchant for the storefront page.
841
+ *
842
+ * @param merchantId - Merchant ID
843
+ * @returns Public merchant profile with stats
844
+ *
845
+ * @example
846
+ * ```typescript
847
+ * const result = await client.getMerchantProfile("merchant_123");
848
+ * console.log(result.merchant.name, result.merchant.productCount);
849
+ * ```
850
+ */
851
+ async getMerchantProfile(merchantId) {
852
+ return this.get(`/api/marketplace/merchants/${merchantId}`);
853
+ }
854
+ /**
855
+ * List merchant products
856
+ *
857
+ * Fetches products for a specific merchant with search, filter, and sort options.
858
+ *
859
+ * @param merchantId - Merchant ID
860
+ * @param params - Query parameters for filtering and pagination
861
+ * @returns Paginated list of products
862
+ *
863
+ * @example
864
+ * ```typescript
865
+ * const result = await client.getMerchantProducts("merchant_123", {
866
+ * search: "laptop",
867
+ * sortBy: "popular",
868
+ * limit: 20,
869
+ * });
870
+ *
871
+ * result.items.forEach(product => {
872
+ * console.log(product.title, product.priceUSDC);
873
+ * });
874
+ * ```
875
+ */
876
+ async getMerchantProducts(merchantId, params) {
877
+ const queryString = params ? buildQueryString(params) : "";
878
+ return this.get(`/api/marketplace/merchants/${merchantId}/products${queryString}`);
879
+ }
880
+ // ============================================================================
881
+ // Shop Following API
882
+ // ============================================================================
883
+ /**
884
+ * Check if following a merchant
885
+ *
886
+ * @param merchantId - Merchant ID
887
+ * @returns Follow status with follow date if applicable
888
+ *
889
+ * @example
890
+ * ```typescript
891
+ * const status = await client.isFollowingMerchant("merchant_123");
892
+ * if (status.isFollowing) {
893
+ * console.log(`Following since ${status.followedAt}`);
894
+ * }
895
+ * ```
896
+ */
897
+ async isFollowingMerchant(merchantId) {
898
+ return this.get(`/api/marketplace/merchants/${merchantId}/follow`);
899
+ }
900
+ /**
901
+ * Follow a merchant
902
+ *
903
+ * @param merchantId - Merchant ID to follow
904
+ * @returns Follow action result
905
+ *
906
+ * @example
907
+ * ```typescript
908
+ * const result = await client.followMerchant("merchant_123");
909
+ * console.log(result.message); // "Now following Awesome Store"
910
+ * ```
911
+ */
912
+ async followMerchant(merchantId) {
913
+ return this.post(`/api/marketplace/merchants/${merchantId}/follow`);
914
+ }
915
+ /**
916
+ * Unfollow a merchant
917
+ *
918
+ * @param merchantId - Merchant ID to unfollow
919
+ * @returns Unfollow action result
920
+ *
921
+ * @example
922
+ * ```typescript
923
+ * const result = await client.unfollowMerchant("merchant_123");
924
+ * console.log(result.message); // "Unfollowed successfully"
925
+ * ```
926
+ */
927
+ async unfollowMerchant(merchantId) {
928
+ return this.delete(`/api/marketplace/merchants/${merchantId}/follow`);
929
+ }
930
+ /**
931
+ * Get list of followed merchants
932
+ *
933
+ * @param params - Query parameters for pagination and sorting
934
+ * @returns Paginated list of followed merchants with their info
935
+ *
936
+ * @example
937
+ * ```typescript
938
+ * const result = await client.getFollowedMerchants({ limit: 20, sortBy: "recent" });
939
+ * result.items.forEach(item => {
940
+ * console.log(`${item.merchant.name} - followed on ${item.followedAt}`);
941
+ * });
942
+ * ```
943
+ */
944
+ async getFollowedMerchants(params) {
945
+ const queryString = params ? buildQueryString(params) : "";
946
+ return this.get(`/api/marketplace/following${queryString}`);
947
+ }
730
948
  };
731
949
 
732
950
  // lib/ecommerce/client/merchant.ts
@@ -1,2 +1,2 @@
1
- export { BannerType, BaseEcommerceClient, CustomerEcommerceClient, DiscountMethod, DiscountScope, DiscountType, EcommerceApiError, InventoryAuditAction, MerchantEcommerceClient, MerchantStatus, OrderStatus, PaymentMethod, PaymentStatus, ProductSortBy, ReturnStatus, ReviewSortBy, ReviewStatus, ShipmentStatus, SortOrder, TaxBehavior, TaxReportPeriodType, TaxReportStatus, TaxType, buildQueryString, calculateDiscountAmount, calculateFinalPrice, formatPrice, getBackoffDelay, isRetryableError, isValidAddress, isValidEmail, parseError, retryWithBackoff, sleep, truncateAddress } from './chunk-4GAKANLT.mjs';
1
+ export { BannerType, BaseEcommerceClient, CustomerEcommerceClient, DiscountMethod, DiscountScope, DiscountType, EcommerceApiError, InventoryAuditAction, MerchantEcommerceClient, MerchantStatus, OrderStatus, PaymentMethod, PaymentStatus, ProductSortBy, ReturnStatus, ReviewSortBy, ReviewStatus, ShipmentStatus, SortOrder, TaxBehavior, TaxReportPeriodType, TaxReportStatus, TaxType, buildQueryString, calculateDiscountAmount, calculateFinalPrice, formatPrice, getBackoffDelay, isRetryableError, isValidAddress, isValidEmail, parseError, retryWithBackoff, sleep, truncateAddress } from './chunk-Z5OW2FDP.mjs';
2
2
  import './chunk-4UEJOM6W.mjs';
package/dist/index.d.mts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { SpotToken, MarginTables, PerpsAssetCtx, SpotMeta, ExchangeClient, SuccessResponse, InfoClient } from '@nktkas/hyperliquid';
2
2
  import { Hex } from '@nktkas/hyperliquid/types';
3
3
  export { A as AllPerpsMeta, d as AssetIdUtils, B as BaseInstrument, I as InstrumentClient, M as MarketInstrument, c as PerpsInstrument, P as PerpsMeta, a as PerpsMetaAndAssetCtxs, b as PerpsUniverse, S as SpotInstrument, g as getAllPerpsMeta } from './client-CgmiTuEX.mjs';
4
- export { AnalyticsOverview, ApiResponse, AppliedDiscount, Banner, BannerResponse, BannerType, BaseEcommerceClient, BaseEntity, CalculateCartDiscountsRequest, CalculateCartDiscountsResponse, CalculateTaxRequest, CalculateTaxResponse, CartItem, ConfirmEscrowDepositResponse, Coupon, CouponResponse, CouponUsage, CreateBannerRequest, CreateCouponRequest, CreateOrderEventRequest, CreateOrderEventResponse, CreateOrderRequest, CreateOrderResponse, CreateProductRequest, CreateProductVariantRequest, CreateReviewRequest, CreateShippingMethodRequest, CreateTaxNexusRequest, CreateTaxRuleRequest, CustomerEcommerceClient, CustomerSummary, DiscountMethod, DiscountScope, DiscountType, EcommerceApiError, EcommerceClientConfig, GenerateTaxReportRequest, GetAnalyticsParams, GetAnalyticsResponse, GetCouponResponse, GetOrderResponse, GetProductMetricsResponse, GetProductResponse, GetTaxReportResponse, InventoryAuditAction, InventoryAuditEntry, ListActiveBannersParams, ListBannersResponse, ListCouponsResponse, ListCustomersParams, ListCustomersResponse, ListInventoryAuditResponse, ListMediaAssetsResponse, ListMessagesResponse, ListOrdersParams, ListOrdersResponse, ListProductVariantsResponse, ListProductsParams, ListProductsResponse, ListReturnsResponse, ListReviewsParams, ListReviewsResponse, ListShipmentsResponse, ListShippingAddressesResponse, ListShippingMethodsResponse, ListTaxNexusResponse, ListTaxReportsParams, ListTaxReportsResponse, ListTaxRulesResponse, MediaAsset, MediaAssetResponse, Merchant, MerchantEcommerceClient, MerchantProfileRequest, MerchantProfileResponse, MerchantStatus, Message, MessageResponse, Order, OrderEvent, OrderItem, OrderReceiptResponse, OrderStatus, OrdersByStatus, PaginatedResponse, PaginationParams, Payment, PaymentMethod, PaymentStatus, Product, ProductDimensions, ProductDiscountsResponse, ProductMetrics, ProductResponse, ProductReview, ProductSortBy, ProductVariant, ProductVariantResponse, RecentOrderSummary, RespondToReviewRequest, Return, ReturnItem, ReturnResponse, ReturnStatus, RevenueByDay, ReviewResponse, ReviewSortBy, ReviewStatus, SendMessageRequest, Settlement, Shipment, ShipmentResponse, ShipmentStatus, ShippingAddress, ShippingAddressRequest, ShippingAddressResponse, ShippingMethod, ShippingMethodResponse, SortOrder, SuccessResponse, TaxBehavior, TaxBreakdownItem, TaxNexus, TaxNexusResponse, TaxReport, TaxReportDetails, TaxReportPeriodType, TaxReportResponse, TaxReportStatus, TaxRule, TaxRuleResponse, TaxSettings, TaxSettingsResponse, TaxType, TopProduct, TrackBannerRequest, UpdateBannerRequest, UpdateCouponRequest, UpdateOrderResponse, UpdateOrderStatusRequest, UpdateProductRequest, UpdateProductVariantRequest, UpdateShipmentRequest, UpdateShippingMethodRequest, UpdateTaxNexusRequest, UpdateTaxReportStatusRequest, UpdateTaxRuleRequest, UpdateTaxSettingsRequest, UserShippingAddress, ValidateDiscountRequest, ValidateDiscountResponse, buildQueryString, calculateDiscountAmount, calculateFinalPrice, formatPrice, getBackoffDelay, isRetryableError, isValidAddress, isValidEmail, parseError, retryWithBackoff, sleep, truncateAddress } from './ecommerce.mjs';
4
+ export { ActiveFlashSalesResponse, AnalyticsOverview, ApiResponse, AppliedDiscount, Banner, BannerResponse, BannerType, BaseEcommerceClient, BaseEntity, CalculateCartDiscountsRequest, CalculateCartDiscountsResponse, CalculateTaxRequest, CalculateTaxResponse, CartItem, ConfirmEscrowDepositResponse, Coupon, CouponResponse, CouponUsage, CreateBannerRequest, CreateCouponRequest, CreateFlashSaleRequest, CreateOrderEventRequest, CreateOrderEventResponse, CreateOrderRequest, CreateOrderResponse, CreateProductRequest, CreateProductVariantRequest, CreateReviewRequest, CreateShippingMethodRequest, CreateTaxNexusRequest, CreateTaxRuleRequest, CustomerEcommerceClient, CustomerMessagesResponse, CustomerSummary, DiscountMethod, DiscountScope, DiscountType, EcommerceApiError, EcommerceClientConfig, FlashSale, FlashSaleItem, FlashSaleItemInput, FollowActionResponse, FollowStatusResponse, FollowedMerchantSummary, GenerateTaxReportRequest, GetAnalyticsParams, GetAnalyticsResponse, GetCouponResponse, GetOrderResponse, GetProductMetricsResponse, GetProductResponse, GetTaxReportResponse, InventoryAuditAction, InventoryAuditEntry, ListActiveBannersParams, ListActiveFlashSalesParams, ListBannersResponse, ListCouponsResponse, ListCustomersParams, ListCustomersResponse, ListFollowingParams, ListFollowingResponse, ListInventoryAuditResponse, ListMediaAssetsResponse, ListMerchantProductsParams, ListMessagesResponse, ListOrdersParams, ListOrdersResponse, ListProductVariantsResponse, ListProductsParams, ListProductsResponse, ListReturnsResponse, ListReviewsParams, ListReviewsResponse, ListShipmentsResponse, ListShippingAddressesResponse, ListShippingMethodsResponse, ListTaxNexusResponse, ListTaxReportsParams, ListTaxReportsResponse, ListTaxRulesResponse, MediaAsset, MediaAssetResponse, Merchant, MerchantEcommerceClient, MerchantProductsResponse, MerchantProfileRequest, MerchantProfileResponse, MerchantStatus, Message, MessageResponse, MessageStatsResponse, Order, OrderEvent, OrderItem, OrderReceiptResponse, OrderStatus, OrdersByStatus, PaginatedResponse, PaginationParams, Payment, PaymentMethod, PaymentStatus, Product, ProductDimensions, ProductDiscountsResponse, ProductMetrics, ProductResponse, ProductReview, ProductSortBy, ProductVariant, ProductVariantResponse, PublicMerchantProfile, PublicMerchantProfileResponse, RecentOrderSummary, RespondToReviewRequest, Return, ReturnItem, ReturnResponse, ReturnStatus, RevenueByDay, ReviewResponse, ReviewSortBy, ReviewStatus, SendMessageRequest, Settlement, Shipment, ShipmentResponse, ShipmentStatus, ShippingAddress, ShippingAddressRequest, ShippingAddressResponse, ShippingMethod, ShippingMethodResponse, SortOrder, SuccessResponse, TaxBehavior, TaxBreakdownItem, TaxNexus, TaxNexusResponse, TaxReport, TaxReportDetails, TaxReportPeriodType, TaxReportResponse, TaxReportStatus, TaxRule, TaxRuleResponse, TaxSettings, TaxSettingsResponse, TaxType, TopProduct, TrackBannerRequest, UpdateBannerRequest, UpdateCouponRequest, UpdateFlashSaleRequest, UpdateOrderResponse, UpdateOrderStatusRequest, UpdateProductRequest, UpdateProductVariantRequest, UpdateShipmentRequest, UpdateShippingMethodRequest, UpdateTaxNexusRequest, UpdateTaxReportStatusRequest, UpdateTaxRuleRequest, UpdateTaxSettingsRequest, UserShippingAddress, ValidateDiscountRequest, ValidateDiscountResponse, buildQueryString, calculateDiscountAmount, calculateFinalPrice, formatPrice, getBackoffDelay, isRetryableError, isValidAddress, isValidEmail, parseError, retryWithBackoff, sleep, truncateAddress } from './ecommerce.mjs';
5
5
  import 'axios';
6
6
 
7
7
  declare function encodeSlug(slug: string): bigint;
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { SpotToken, MarginTables, PerpsAssetCtx, SpotMeta, ExchangeClient, SuccessResponse, InfoClient } from '@nktkas/hyperliquid';
2
2
  import { Hex } from '@nktkas/hyperliquid/types';
3
3
  export { A as AllPerpsMeta, d as AssetIdUtils, B as BaseInstrument, I as InstrumentClient, M as MarketInstrument, c as PerpsInstrument, P as PerpsMeta, a as PerpsMetaAndAssetCtxs, b as PerpsUniverse, S as SpotInstrument, g as getAllPerpsMeta } from './client-CgmiTuEX.js';
4
- export { AnalyticsOverview, ApiResponse, AppliedDiscount, Banner, BannerResponse, BannerType, BaseEcommerceClient, BaseEntity, CalculateCartDiscountsRequest, CalculateCartDiscountsResponse, CalculateTaxRequest, CalculateTaxResponse, CartItem, ConfirmEscrowDepositResponse, Coupon, CouponResponse, CouponUsage, CreateBannerRequest, CreateCouponRequest, CreateOrderEventRequest, CreateOrderEventResponse, CreateOrderRequest, CreateOrderResponse, CreateProductRequest, CreateProductVariantRequest, CreateReviewRequest, CreateShippingMethodRequest, CreateTaxNexusRequest, CreateTaxRuleRequest, CustomerEcommerceClient, CustomerSummary, DiscountMethod, DiscountScope, DiscountType, EcommerceApiError, EcommerceClientConfig, GenerateTaxReportRequest, GetAnalyticsParams, GetAnalyticsResponse, GetCouponResponse, GetOrderResponse, GetProductMetricsResponse, GetProductResponse, GetTaxReportResponse, InventoryAuditAction, InventoryAuditEntry, ListActiveBannersParams, ListBannersResponse, ListCouponsResponse, ListCustomersParams, ListCustomersResponse, ListInventoryAuditResponse, ListMediaAssetsResponse, ListMessagesResponse, ListOrdersParams, ListOrdersResponse, ListProductVariantsResponse, ListProductsParams, ListProductsResponse, ListReturnsResponse, ListReviewsParams, ListReviewsResponse, ListShipmentsResponse, ListShippingAddressesResponse, ListShippingMethodsResponse, ListTaxNexusResponse, ListTaxReportsParams, ListTaxReportsResponse, ListTaxRulesResponse, MediaAsset, MediaAssetResponse, Merchant, MerchantEcommerceClient, MerchantProfileRequest, MerchantProfileResponse, MerchantStatus, Message, MessageResponse, Order, OrderEvent, OrderItem, OrderReceiptResponse, OrderStatus, OrdersByStatus, PaginatedResponse, PaginationParams, Payment, PaymentMethod, PaymentStatus, Product, ProductDimensions, ProductDiscountsResponse, ProductMetrics, ProductResponse, ProductReview, ProductSortBy, ProductVariant, ProductVariantResponse, RecentOrderSummary, RespondToReviewRequest, Return, ReturnItem, ReturnResponse, ReturnStatus, RevenueByDay, ReviewResponse, ReviewSortBy, ReviewStatus, SendMessageRequest, Settlement, Shipment, ShipmentResponse, ShipmentStatus, ShippingAddress, ShippingAddressRequest, ShippingAddressResponse, ShippingMethod, ShippingMethodResponse, SortOrder, SuccessResponse, TaxBehavior, TaxBreakdownItem, TaxNexus, TaxNexusResponse, TaxReport, TaxReportDetails, TaxReportPeriodType, TaxReportResponse, TaxReportStatus, TaxRule, TaxRuleResponse, TaxSettings, TaxSettingsResponse, TaxType, TopProduct, TrackBannerRequest, UpdateBannerRequest, UpdateCouponRequest, UpdateOrderResponse, UpdateOrderStatusRequest, UpdateProductRequest, UpdateProductVariantRequest, UpdateShipmentRequest, UpdateShippingMethodRequest, UpdateTaxNexusRequest, UpdateTaxReportStatusRequest, UpdateTaxRuleRequest, UpdateTaxSettingsRequest, UserShippingAddress, ValidateDiscountRequest, ValidateDiscountResponse, buildQueryString, calculateDiscountAmount, calculateFinalPrice, formatPrice, getBackoffDelay, isRetryableError, isValidAddress, isValidEmail, parseError, retryWithBackoff, sleep, truncateAddress } from './ecommerce.js';
4
+ export { ActiveFlashSalesResponse, AnalyticsOverview, ApiResponse, AppliedDiscount, Banner, BannerResponse, BannerType, BaseEcommerceClient, BaseEntity, CalculateCartDiscountsRequest, CalculateCartDiscountsResponse, CalculateTaxRequest, CalculateTaxResponse, CartItem, ConfirmEscrowDepositResponse, Coupon, CouponResponse, CouponUsage, CreateBannerRequest, CreateCouponRequest, CreateFlashSaleRequest, CreateOrderEventRequest, CreateOrderEventResponse, CreateOrderRequest, CreateOrderResponse, CreateProductRequest, CreateProductVariantRequest, CreateReviewRequest, CreateShippingMethodRequest, CreateTaxNexusRequest, CreateTaxRuleRequest, CustomerEcommerceClient, CustomerMessagesResponse, CustomerSummary, DiscountMethod, DiscountScope, DiscountType, EcommerceApiError, EcommerceClientConfig, FlashSale, FlashSaleItem, FlashSaleItemInput, FollowActionResponse, FollowStatusResponse, FollowedMerchantSummary, GenerateTaxReportRequest, GetAnalyticsParams, GetAnalyticsResponse, GetCouponResponse, GetOrderResponse, GetProductMetricsResponse, GetProductResponse, GetTaxReportResponse, InventoryAuditAction, InventoryAuditEntry, ListActiveBannersParams, ListActiveFlashSalesParams, ListBannersResponse, ListCouponsResponse, ListCustomersParams, ListCustomersResponse, ListFollowingParams, ListFollowingResponse, ListInventoryAuditResponse, ListMediaAssetsResponse, ListMerchantProductsParams, ListMessagesResponse, ListOrdersParams, ListOrdersResponse, ListProductVariantsResponse, ListProductsParams, ListProductsResponse, ListReturnsResponse, ListReviewsParams, ListReviewsResponse, ListShipmentsResponse, ListShippingAddressesResponse, ListShippingMethodsResponse, ListTaxNexusResponse, ListTaxReportsParams, ListTaxReportsResponse, ListTaxRulesResponse, MediaAsset, MediaAssetResponse, Merchant, MerchantEcommerceClient, MerchantProductsResponse, MerchantProfileRequest, MerchantProfileResponse, MerchantStatus, Message, MessageResponse, MessageStatsResponse, Order, OrderEvent, OrderItem, OrderReceiptResponse, OrderStatus, OrdersByStatus, PaginatedResponse, PaginationParams, Payment, PaymentMethod, PaymentStatus, Product, ProductDimensions, ProductDiscountsResponse, ProductMetrics, ProductResponse, ProductReview, ProductSortBy, ProductVariant, ProductVariantResponse, PublicMerchantProfile, PublicMerchantProfileResponse, RecentOrderSummary, RespondToReviewRequest, Return, ReturnItem, ReturnResponse, ReturnStatus, RevenueByDay, ReviewResponse, ReviewSortBy, ReviewStatus, SendMessageRequest, Settlement, Shipment, ShipmentResponse, ShipmentStatus, ShippingAddress, ShippingAddressRequest, ShippingAddressResponse, ShippingMethod, ShippingMethodResponse, SortOrder, SuccessResponse, TaxBehavior, TaxBreakdownItem, TaxNexus, TaxNexusResponse, TaxReport, TaxReportDetails, TaxReportPeriodType, TaxReportResponse, TaxReportStatus, TaxRule, TaxRuleResponse, TaxSettings, TaxSettingsResponse, TaxType, TopProduct, TrackBannerRequest, UpdateBannerRequest, UpdateCouponRequest, UpdateFlashSaleRequest, UpdateOrderResponse, UpdateOrderStatusRequest, UpdateProductRequest, UpdateProductVariantRequest, UpdateShipmentRequest, UpdateShippingMethodRequest, UpdateTaxNexusRequest, UpdateTaxReportStatusRequest, UpdateTaxRuleRequest, UpdateTaxSettingsRequest, UserShippingAddress, ValidateDiscountRequest, ValidateDiscountResponse, buildQueryString, calculateDiscountAmount, calculateFinalPrice, formatPrice, getBackoffDelay, isRetryableError, isValidAddress, isValidEmail, parseError, retryWithBackoff, sleep, truncateAddress } from './ecommerce.js';
5
5
  import 'axios';
6
6
 
7
7
  declare function encodeSlug(slug: string): bigint;
package/dist/index.js CHANGED
@@ -43047,6 +43047,224 @@ var CustomerEcommerceClient = class extends BaseEcommerceClient {
43047
43047
  async trackBanner(bannerId, request) {
43048
43048
  return this.post(`/api/marketplace/banners/${bannerId}/track`, request);
43049
43049
  }
43050
+ // ============================================================================
43051
+ // Messages API
43052
+ // ============================================================================
43053
+ /**
43054
+ * List messages for customer
43055
+ *
43056
+ * Returns all conversations grouped by order, where each order represents
43057
+ * a conversation with a merchant.
43058
+ *
43059
+ * @returns List of conversations with messages and stats
43060
+ *
43061
+ * @example
43062
+ * ```typescript
43063
+ * const result = await client.listMessages();
43064
+ * console.log("Unread:", result.stats.unread);
43065
+ * result.conversations.forEach(conv => {
43066
+ * console.log(`Order ${conv.orderNumber}: ${conv.unreadCount} unread`);
43067
+ * });
43068
+ * ```
43069
+ */
43070
+ async listMessages() {
43071
+ return this.get("/api/marketplace/messages");
43072
+ }
43073
+ /**
43074
+ * Get message stats (unread count)
43075
+ *
43076
+ * Lightweight endpoint for notification badges.
43077
+ *
43078
+ * @returns Unread message count
43079
+ *
43080
+ * @example
43081
+ * ```typescript
43082
+ * const stats = await client.getMessageStats();
43083
+ * console.log("Unread messages:", stats.unread);
43084
+ * ```
43085
+ */
43086
+ async getMessageStats() {
43087
+ return this.get("/api/marketplace/messages/stats");
43088
+ }
43089
+ /**
43090
+ * Send a message to a merchant about an order
43091
+ *
43092
+ * @param request - Message data including orderId, recipientId (merchant user ID), and message
43093
+ * @returns Sent message
43094
+ *
43095
+ * @example
43096
+ * ```typescript
43097
+ * await client.sendMessage({
43098
+ * orderId: "ord_123",
43099
+ * recipientId: "user_merchant_456",
43100
+ * message: "When will my order ship?"
43101
+ * });
43102
+ * ```
43103
+ */
43104
+ async sendMessage(request) {
43105
+ return this.post("/api/marketplace/messages/send", request);
43106
+ }
43107
+ /**
43108
+ * Mark a message as read
43109
+ *
43110
+ * @param messageId - Message ID
43111
+ * @returns Updated message
43112
+ *
43113
+ * @example
43114
+ * ```typescript
43115
+ * await client.markMessageAsRead("msg_123");
43116
+ * ```
43117
+ */
43118
+ async markMessageAsRead(messageId) {
43119
+ return this.patch(`/api/marketplace/messages/${messageId}/read`, {});
43120
+ }
43121
+ // ============================================================================
43122
+ // Flash Sales API
43123
+ // ============================================================================
43124
+ /**
43125
+ * Get active flash sales
43126
+ *
43127
+ * Returns currently running flash sales with their discounted products.
43128
+ * Includes countdown timer information for UI display.
43129
+ *
43130
+ * @param params - Query parameters
43131
+ * @returns List of active flash sales with time remaining
43132
+ *
43133
+ * @example
43134
+ * ```typescript
43135
+ * const result = await client.getActiveFlashSales({ limit: 5 });
43136
+ *
43137
+ * result.flashSales.forEach(sale => {
43138
+ * console.log(`${sale.name} - ends at ${sale.endsAt}`);
43139
+ * sale.items.forEach(item => {
43140
+ * console.log(` ${item.product.title}: $${item.salePrice} (${item.discountPercent}% off)`);
43141
+ * });
43142
+ * });
43143
+ *
43144
+ * // Use timeRemaining for countdown UI
43145
+ * if (result.timeRemaining) {
43146
+ * console.log(`Featured sale ends in ${result.timeRemaining.remainingSeconds} seconds`);
43147
+ * }
43148
+ * ```
43149
+ */
43150
+ async getActiveFlashSales(params) {
43151
+ const queryString = params ? buildQueryString(params) : "";
43152
+ return this.get(`/api/marketplace/flash-sales/active${queryString}`);
43153
+ }
43154
+ // ============================================================================
43155
+ // Merchant Storefront API
43156
+ // ============================================================================
43157
+ /**
43158
+ * Get public merchant profile
43159
+ *
43160
+ * Fetches public information about a merchant for the storefront page.
43161
+ *
43162
+ * @param merchantId - Merchant ID
43163
+ * @returns Public merchant profile with stats
43164
+ *
43165
+ * @example
43166
+ * ```typescript
43167
+ * const result = await client.getMerchantProfile("merchant_123");
43168
+ * console.log(result.merchant.name, result.merchant.productCount);
43169
+ * ```
43170
+ */
43171
+ async getMerchantProfile(merchantId) {
43172
+ return this.get(`/api/marketplace/merchants/${merchantId}`);
43173
+ }
43174
+ /**
43175
+ * List merchant products
43176
+ *
43177
+ * Fetches products for a specific merchant with search, filter, and sort options.
43178
+ *
43179
+ * @param merchantId - Merchant ID
43180
+ * @param params - Query parameters for filtering and pagination
43181
+ * @returns Paginated list of products
43182
+ *
43183
+ * @example
43184
+ * ```typescript
43185
+ * const result = await client.getMerchantProducts("merchant_123", {
43186
+ * search: "laptop",
43187
+ * sortBy: "popular",
43188
+ * limit: 20,
43189
+ * });
43190
+ *
43191
+ * result.items.forEach(product => {
43192
+ * console.log(product.title, product.priceUSDC);
43193
+ * });
43194
+ * ```
43195
+ */
43196
+ async getMerchantProducts(merchantId, params) {
43197
+ const queryString = params ? buildQueryString(params) : "";
43198
+ return this.get(`/api/marketplace/merchants/${merchantId}/products${queryString}`);
43199
+ }
43200
+ // ============================================================================
43201
+ // Shop Following API
43202
+ // ============================================================================
43203
+ /**
43204
+ * Check if following a merchant
43205
+ *
43206
+ * @param merchantId - Merchant ID
43207
+ * @returns Follow status with follow date if applicable
43208
+ *
43209
+ * @example
43210
+ * ```typescript
43211
+ * const status = await client.isFollowingMerchant("merchant_123");
43212
+ * if (status.isFollowing) {
43213
+ * console.log(`Following since ${status.followedAt}`);
43214
+ * }
43215
+ * ```
43216
+ */
43217
+ async isFollowingMerchant(merchantId) {
43218
+ return this.get(`/api/marketplace/merchants/${merchantId}/follow`);
43219
+ }
43220
+ /**
43221
+ * Follow a merchant
43222
+ *
43223
+ * @param merchantId - Merchant ID to follow
43224
+ * @returns Follow action result
43225
+ *
43226
+ * @example
43227
+ * ```typescript
43228
+ * const result = await client.followMerchant("merchant_123");
43229
+ * console.log(result.message); // "Now following Awesome Store"
43230
+ * ```
43231
+ */
43232
+ async followMerchant(merchantId) {
43233
+ return this.post(`/api/marketplace/merchants/${merchantId}/follow`);
43234
+ }
43235
+ /**
43236
+ * Unfollow a merchant
43237
+ *
43238
+ * @param merchantId - Merchant ID to unfollow
43239
+ * @returns Unfollow action result
43240
+ *
43241
+ * @example
43242
+ * ```typescript
43243
+ * const result = await client.unfollowMerchant("merchant_123");
43244
+ * console.log(result.message); // "Unfollowed successfully"
43245
+ * ```
43246
+ */
43247
+ async unfollowMerchant(merchantId) {
43248
+ return this.delete(`/api/marketplace/merchants/${merchantId}/follow`);
43249
+ }
43250
+ /**
43251
+ * Get list of followed merchants
43252
+ *
43253
+ * @param params - Query parameters for pagination and sorting
43254
+ * @returns Paginated list of followed merchants with their info
43255
+ *
43256
+ * @example
43257
+ * ```typescript
43258
+ * const result = await client.getFollowedMerchants({ limit: 20, sortBy: "recent" });
43259
+ * result.items.forEach(item => {
43260
+ * console.log(`${item.merchant.name} - followed on ${item.followedAt}`);
43261
+ * });
43262
+ * ```
43263
+ */
43264
+ async getFollowedMerchants(params) {
43265
+ const queryString = params ? buildQueryString(params) : "";
43266
+ return this.get(`/api/marketplace/following${queryString}`);
43267
+ }
43050
43268
  };
43051
43269
 
43052
43270
  // lib/ecommerce/client/merchant.ts
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- export { BannerType, BaseEcommerceClient, CustomerEcommerceClient, DiscountMethod, DiscountScope, DiscountType, EcommerceApiError, InventoryAuditAction, MerchantEcommerceClient, MerchantStatus, OrderStatus, PaymentMethod, PaymentStatus, ProductSortBy, ReturnStatus, ReviewSortBy, ReviewStatus, ShipmentStatus, SortOrder, TaxBehavior, TaxReportPeriodType, TaxReportStatus, TaxType, buildQueryString, calculateDiscountAmount, calculateFinalPrice, formatPrice, getBackoffDelay, isRetryableError, isValidAddress, isValidEmail, parseError, retryWithBackoff, sleep, truncateAddress } from './chunk-4GAKANLT.mjs';
1
+ export { BannerType, BaseEcommerceClient, CustomerEcommerceClient, DiscountMethod, DiscountScope, DiscountType, EcommerceApiError, InventoryAuditAction, MerchantEcommerceClient, MerchantStatus, OrderStatus, PaymentMethod, PaymentStatus, ProductSortBy, ReturnStatus, ReviewSortBy, ReviewStatus, ShipmentStatus, SortOrder, TaxBehavior, TaxReportPeriodType, TaxReportStatus, TaxType, buildQueryString, calculateDiscountAmount, calculateFinalPrice, formatPrice, getBackoffDelay, isRetryableError, isValidAddress, isValidEmail, parseError, retryWithBackoff, sleep, truncateAddress } from './chunk-Z5OW2FDP.mjs';
2
2
  export { AssetIdUtils, InstrumentClient } from './chunk-VBC6EQ7Q.mjs';
3
3
  import { __glob } from './chunk-4UEJOM6W.mjs';
4
4
  import Decimal, { Decimal as Decimal$1 } from 'decimal.js';