@teez-sdk/teez-b2c-api 1.0.1 → 2.0.0
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 +0 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +139 -172
- package/dist/index.d.mts +139 -172
- package/dist/index.mjs +1 -12
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1067,17 +1067,6 @@ const LANGUAGES = {
|
|
|
1067
1067
|
KZ: "kz"
|
|
1068
1068
|
};
|
|
1069
1069
|
/**
|
|
1070
|
-
* Standard sort options for product and collection searches
|
|
1071
|
-
*/
|
|
1072
|
-
const SORT_OPTIONS = {
|
|
1073
|
-
BY_RELEVANCE: "byRelevance",
|
|
1074
|
-
POPULARITY: "popularity",
|
|
1075
|
-
HIGHEST_RATED: "highestRated",
|
|
1076
|
-
NEW: "new",
|
|
1077
|
-
PRICE: "price",
|
|
1078
|
-
PRICE_DESC: "priceDesc"
|
|
1079
|
-
};
|
|
1080
|
-
/**
|
|
1081
1070
|
* Default application version code.
|
|
1082
1071
|
*/
|
|
1083
1072
|
const DEFAULT_APP_VERSION = "193";
|
|
@@ -1496,7 +1485,6 @@ exports.ProductsStockAvailabilityTypeSchema = ProductsStockAvailabilityTypeSchem
|
|
|
1496
1485
|
exports.PromoApi = PromoApi;
|
|
1497
1486
|
exports.PromoApiItemSchema = PromoApiItemSchema;
|
|
1498
1487
|
exports.PromoApiListResponseSchema = PromoApiListResponseSchema;
|
|
1499
|
-
exports.SORT_OPTIONS = SORT_OPTIONS;
|
|
1500
1488
|
exports.ShopsApi = ShopsApi;
|
|
1501
1489
|
exports.ShopsApiContactInfoSchema = ShopsApiContactInfoSchema;
|
|
1502
1490
|
exports.ShopsApiGetMonobrandResponseSchema = ShopsApiGetMonobrandResponseSchema;
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["z","http: HttpClient","z","http: HttpClient","z","z","http: HttpClient","z","http: HttpClient","z","http: HttpClient","z","http: HttpClient","z","http: HttpClient","z","http: HttpClient","DEFAULT_CONFIG: ResolvedTeezClientConfig","z"],"sources":["../src/api/banners/schemas.ts","../src/api/banners/api.ts","../src/api/categories/schemas.ts","../src/api/categories/api.ts","../src/common/schemas.ts","../src/api/collections/schemas.ts","../src/api/collections/api.ts","../src/api/feature-flags/schemas.ts","../src/api/feature-flags/api.ts","../src/api/products/schemas.ts","../src/api/products/api.ts","../src/api/promo/schemas.ts","../src/api/promo/api.ts","../src/api/shops/schemas.ts","../src/api/shops/api.ts","../src/api/sku/schemas.ts","../src/api/sku/api.ts","../src/common/constants.ts","../src/config.ts","../src/errors/teez-error.ts","../src/errors/teez-api-error.ts","../src/errors/teez-network-error.ts","../src/errors/teez-timeout-error.ts","../src/errors/teez-validation-error.ts","../src/http/helpers.ts","../src/http/client.ts","../src/client.ts"],"sourcesContent":["import * as z from \"zod/mini\";\n\n/**\n * Type literal for banner image resource type\n */\nexport const BannerImageTypeSchema = z.literal(\"network\");\n\n/**\n * Schema for a banner image.\n */\nexport const BannersApiImageSchema = z.object({\n\t/**\n\t * Type of image resource (e.g., \"network\" for remote URLs)\n\t */\n\ttype: BannerImageTypeSchema,\n\n\t/**\n\t * Direct URL to the image\n\t */\n\turl: z.string(),\n});\n\n/**\n * Type union for banner action types\n */\nexport const BannerActionTypesSchema = z.union([\n\tz.literal(\"url\"),\n\tz.literal(\"path\"),\n\tz.literal(\"key\"),\n]);\n\n/**\n * Schema for a banner action.\n */\nexport const BannersApiActionSchema = z.object({\n\t/**\n\t * Type of action - \"url\" for external links, \"path\" for app navigation, \"key\" for special actions\n\t */\n\ttype: BannerActionTypesSchema,\n\n\t/**\n\t * Target value - full URL for \"url\" type, app path for \"path\" type (e.g., \"/collection/393\"), or action key for \"key\" type\n\t */\n\tvalue: z.string(),\n\n\t/**\n\t * Key for analytics tracking\n\t */\n\tanalyticsKey: z.nullish(z.string()),\n});\n\n/**\n * Schema for a banner item containing an image and an action.\n */\nexport const BannersApiBannerItemSchema = z.object({\n\t/**\n\t * Image details for the banner\n\t */\n\timage: BannersApiImageSchema,\n\n\t/**\n\t * Action details for the banner interaction\n\t */\n\taction: BannersApiActionSchema,\n});\n\n/**\n * Response schema for the list of banners.\n */\nexport const BannersApiListResponseSchema = z.array(BannersApiBannerItemSchema);\n","import { type HttpClient } from \"../../http/client\";\nimport { type BannersApiListResponse } from \"./schema-types\";\nimport { BannersApiListResponseSchema } from \"./schemas\";\nimport { type BannersApiListParams } from \"./types\";\n\n/**\n * API for retrieving promotional and informational banners.\n */\nexport class BannersApi {\n\t/**\n\t * Initializes a new instance of the BannersApi.\n\t *\n\t * @param http HTTP client instance.\n\t */\n\tpublic constructor(private http: HttpClient) {}\n\n\t/**\n\t * Retrieves a list of active banners.\n\t *\n\t * @example\n\t * const banners = await client.banners.list();\n\t */\n\tpublic list(\n\t\tparams: BannersApiListParams = {},\n\t): Promise<BannersApiListResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: \"/api/v3/banners\",\n\t\t\tparams,\n\t\t\tschema: BannersApiListResponseSchema,\n\t\t});\n\t}\n}\n","import * as z from \"zod/mini\";\n\n/**\n * Schema for a category list item.\n */\nexport const CategoriesApiListResponseItemSchema = z.object({\n\t/**\n\t * Unique identifier of the category\n\t */\n\tid: z.number(),\n\n\t/**\n\t * Localized display name of the category\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Depth level in the category tree\n\t */\n\tlevel: z.number(),\n\n\t/**\n\t * Identifier of the parent category\n\t */\n\tparentId: z.number(),\n\n\t/**\n\t * Indicates if there are nested subcategories\n\t */\n\thasSubcategories: z.boolean(),\n\n\t/**\n\t * Indicates if the category contains adult content\n\t */\n\tisAdult: z.boolean(),\n});\n\n/**\n * Response schema for the list of categories.\n */\nexport const CategoriesApiListResponseSchema = z.array(\n\tCategoriesApiListResponseItemSchema,\n);\n\n/**\n * Response schema for getting a specific category by ID.\n */\nexport const CategoriesApiGetResponseSchema = z.object({\n\t/**\n\t * Unique identifier of the category\n\t */\n\tid: z.number(),\n\n\t/**\n\t * Localized display name of the category\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Depth level in the category tree\n\t */\n\tlevel: z.number(),\n\n\t/**\n\t * Identifier of the parent category\n\t */\n\tparentId: z.number(),\n\n\t/**\n\t * Indicates if there are nested subcategories\n\t */\n\thasSubcategories: z.boolean(),\n\n\t/**\n\t * Indicates if the category contains adult content\n\t */\n\tisAdult: z.boolean(),\n\n\t/**\n\t * List of nested subcategories.\n\t */\n\tget subcategories() {\n\t\treturn z.nullish(z.array(CategoriesApiGetResponseSchema));\n\t},\n});\n\n/**\n * Schema for a parent category item with nesting.\n */\nexport const CategoriesApiGetParentsResponseItemSchema = z.object({\n\t/**\n\t * Unique identifier of the category\n\t */\n\tid: z.number(),\n\n\t/**\n\t * Localized display name of the category\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Depth level in the category tree\n\t */\n\tlevel: z.number(),\n\n\t/**\n\t * Indicates if there are nested subcategories\n\t */\n\thasSubcategories: z.boolean(),\n\n\t/**\n\t * List of nested subcategories.\n\t */\n\tget subcategories() {\n\t\treturn z.nullish(z.array(CategoriesApiGetParentsResponseItemSchema));\n\t},\n});\n\n/**\n * Response schema for getting parent categories.\n */\nexport const CategoriesApiGetParentsResponseSchema = z.array(\n\tCategoriesApiGetParentsResponseItemSchema,\n);\n","import { type HttpClient } from \"../../http/client\";\nimport {\n\ttype CategoriesApiGetParentsResponse,\n\ttype CategoriesApiGetResponse,\n\ttype CategoriesApiListResponse,\n} from \"./schema-types\";\nimport {\n\tCategoriesApiGetParentsResponseSchema,\n\tCategoriesApiGetResponseSchema,\n\tCategoriesApiListResponseSchema,\n} from \"./schemas\";\nimport {\n\ttype CategoriesApiGetParams,\n\ttype CategoriesApiGetParentsParams,\n\ttype CategoriesApiListParams,\n} from \"./types\";\n\n/**\n * API for retrieving product category information.\n */\nexport class CategoriesApi {\n\t/**\n\t * Initializes a new instance of the CategoriesApi.\n\t *\n\t * @param http HTTP client instance.\n\t */\n\tpublic constructor(private http: HttpClient) {}\n\n\t/**\n\t * Retrieves a list of all categories.\n\t *\n\t * @example\n\t * const categories = await client.categories.list();\n\t */\n\tpublic list(\n\t\tparams: CategoriesApiListParams = {},\n\t): Promise<CategoriesApiListResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: \"/categories\",\n\t\t\tparams,\n\t\t\tschema: CategoriesApiListResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves detailed information about a specific category by its ID.\n\t *\n\t * @example\n\t * const category = await client.categories.get({\n\t * categoryId: 1234\n\t * });\n\t */\n\tpublic get(\n\t\tparams: CategoriesApiGetParams,\n\t): Promise<CategoriesApiGetResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: `/categories/${params.categoryId}`,\n\t\t\tparams,\n\t\t\tschema: CategoriesApiGetResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves parent categories for specific category IDs.\n\t *\n\t * @example\n\t * const parents = await client.categories.getParents({\n\t * categoryId: [123, 456]\n\t * });\n\t */\n\tpublic getParents(\n\t\tparams: CategoriesApiGetParentsParams,\n\t): Promise<CategoriesApiGetParentsResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: \"/api/v1/categories/parents\",\n\t\t\tparams,\n\t\t\tschema: CategoriesApiGetParentsResponseSchema,\n\t\t});\n\t}\n}\n","import * as z from \"zod/mini\";\n\n/**\n * Schema for range filter options (e.g., price slider).\n * Common schema used by multiple APIs.\n */\nexport const RangeFilterOptionSchema = z.object({\n\t/**\n\t * Minimum value for range filters\n\t */\n\tmin: z.number(),\n\n\t/**\n\t * Maximum value for range filters\n\t */\n\tmax: z.number(),\n});\n\n/**\n * Type literal for range-based filters\n */\nexport const RangeTypeSchema = z.literal(\"range\");\n\n/**\n * Schema for range filters (e.g., price slider).\n * Use this in discriminatedUnion-based filter schemas.\n */\nexport const RangeFilterSchema = z.object({\n\t/**\n\t * Filter type: range for price slider\n\t */\n\ttype: RangeTypeSchema,\n\n\t/**\n\t * Localized display name of the filter\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Unique code identifying the filter type\n\t */\n\tcode: z.string(),\n\n\t/**\n\t * List of available options for this filter\n\t */\n\toptions: z.array(RangeFilterOptionSchema),\n});\n\n/**\n * Schema for category/brand filter options.\n * Common schema used by multiple APIs.\n */\nexport const CategoryFilterOptionSchema = z.object({\n\t/**\n\t * Display label for the filter option\n\t */\n\tlabel: z.string(),\n\n\t/**\n\t * Value for the filter option\n\t */\n\tvalue: z.number(),\n});\n\n/**\n * Type union for category filter types\n */\nexport const CategoryFilterTypesSchema = z.union([\n\tz.literal(\"category\"),\n\tz.literal(\"alphabetic_search_list\"),\n]);\n\n/**\n * Schema for category/brand filters.\n * Use this in discriminatedUnion-based filter schemas.\n */\nexport const CategoryFilterSchema = z.object({\n\t/**\n\t * Filter type: category or alphabetic_search_list\n\t */\n\ttype: CategoryFilterTypesSchema,\n\n\t/**\n\t * Localized display name of the filter\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Unique code identifying the filter type\n\t */\n\tcode: z.string(),\n\n\t/**\n\t * List of available options for this filter\n\t */\n\toptions: z.array(CategoryFilterOptionSchema),\n});\n\n/**\n * Union filter schema that can be either range or category filter.\n * This is the recommended pattern for type-safe filters.\n */\nexport const FilterSchema = z.discriminatedUnion(\"type\", [\n\tRangeFilterSchema,\n\tCategoryFilterSchema,\n]);\n","import { FilterSchema } from \"../../common/schemas\";\nimport * as z from \"zod/mini\";\n\n/**\n * Type literal for collections stock availability type\n */\nexport const CollectionsStockAvailabilityTypeSchema = z.literal(\"stock\");\n\n/**\n * Schema for stock availability information.\n */\nexport const CollectionsApiStockAvailabilitySchema = z.object({\n\t/**\n\t * Type of stock status (known value: \"stock\")\n\t */\n\ttype: CollectionsStockAvailabilityTypeSchema,\n\n\t/**\n\t * SVG icon representing stock status\n\t */\n\tsvg: z.nullish(z.string()),\n\n\t/**\n\t * Localized text describing stock status (e.g., \"В наличии - осталось всего 16 штук\")\n\t */\n\ttext: z.string(),\n\n\t/**\n\t * Maximum quantity available for purchase\n\t */\n\tmaxQty: z.number(),\n\n\t/**\n\t * Localized reason text for quantity limit (e.g., \"В наличии только 16 штук\")\n\t */\n\tmaxQtyReason: z.string(),\n});\n\n/**\n * Schema for a SKU item within a collection.\n */\nexport const CollectionsApiSkuItemSchema = z.object({\n\t/**\n\t * Unique product identifier\n\t */\n\tproductId: z.number(),\n\n\t/**\n\t * Unique stock keeping unit identifier\n\t */\n\tskuId: z.number(),\n\n\t/**\n\t * URL for the full-size image\n\t */\n\timageUrl: z.string(),\n\n\t/**\n\t * Display name of the product\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Brief description of the product\n\t */\n\tshortDescription: z.string(),\n\n\t/**\n\t * URL for the small preview image\n\t */\n\tthumbnailUrl: z.string(),\n\n\t/**\n\t * Original price before discounts\n\t */\n\toriginalPrice: z.number(),\n\n\t/**\n\t * Current selling price\n\t */\n\tprice: z.number(),\n\n\t/**\n\t * Quantity available in stock\n\t */\n\tqty: z.number(),\n\n\t/**\n\t * Stock availability details\n\t */\n\tstockAvailability: z.nullish(CollectionsApiStockAvailabilitySchema),\n\n\t/**\n\t * Indicates if the item is on promotion\n\t */\n\tisPromo: z.boolean(),\n\n\t/**\n\t * Name of the promotion\n\t */\n\tpromoName: z.string(),\n\n\t/**\n\t * Popularity text indicating purchase frequency (e.g., \"Часто покупают\")\n\t */\n\tqtyPurchasedInfo: z.nullish(z.string()),\n\n\t/**\n\t * Average rating score\n\t */\n\trating: z.nullish(z.number()),\n\n\t/**\n\t * Total number of ratings\n\t */\n\tscoreQuantity: z.nullish(z.number()),\n});\n\n/**\n * Response schema for getting SKUs from a collection.\n */\nexport const CollectionsApiGetSkusResponseSchema = z.object({\n\t/**\n\t * List of applicable filters for the collection\n\t */\n\tfilters: z.array(FilterSchema),\n\n\t/**\n\t * List of SKU items in the collection\n\t */\n\titems: z.array(CollectionsApiSkuItemSchema),\n\n\t/**\n\t * Current page number\n\t */\n\tpageNumber: z.number(),\n\n\t/**\n\t * Total number of pages available\n\t */\n\ttotalPages: z.number(),\n\n\t/**\n\t * Total number of items in the collection\n\t */\n\ttotalCount: z.number(),\n\n\t/**\n\t * Indicates if there is a previous page\n\t */\n\thasPreviousPage: z.boolean(),\n\n\t/**\n\t * Indicates if there is a next page\n\t */\n\thasNextPage: z.boolean(),\n});\n\n/**\n * Schema for a collection list item.\n */\nexport const CollectionsApiListItemSchema = z.object({\n\t/**\n\t * Unique identifier of the collection\n\t */\n\tid: z.number(),\n\n\t/**\n\t * URL or path to the collection's icon\n\t */\n\ticon: z.nullish(z.string()),\n\n\t/**\n\t * Name of the collection\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Priority for sorting or display order\n\t */\n\tpriority: z.number(),\n});\n\n/**\n * Response schema for the list of collections.\n */\nexport const CollectionsApiListResponseSchema = z.array(\n\tCollectionsApiListItemSchema,\n);\n\n/**\n * Type literal for collection type identifier\n */\nexport const CollectionTypeSchema = z.literal(\"Collection\");\n\n/**\n * Response schema for getting a specific collection by ID.\n */\nexport const CollectionsApiGetResponseSchema = z.object({\n\t/**\n\t * Type of the collection (known value: \"Collection\")\n\t */\n\ttype: CollectionTypeSchema,\n\n\t/**\n\t * Unique identifier of the collection\n\t */\n\tid: z.number(),\n\n\t/**\n\t * URL for the cover image\n\t */\n\tcover: z.string(),\n\n\t/**\n\t * Description of the collection\n\t */\n\tdescription: z.string(),\n\n\t/**\n\t * Name of the collection\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Priority for sorting or display order\n\t */\n\tpriority: z.number(),\n});\n","import { type HttpClient } from \"../../http/client\";\nimport {\n\ttype CollectionsApiGetResponse,\n\ttype CollectionsApiGetSkusResponse,\n\ttype CollectionsApiListResponse,\n} from \"./schema-types\";\nimport {\n\tCollectionsApiGetResponseSchema,\n\tCollectionsApiGetSkusResponseSchema,\n\tCollectionsApiListResponseSchema,\n} from \"./schemas\";\nimport {\n\ttype CollectionsApiGetParams,\n\ttype CollectionsApiGetSkusParams,\n\ttype CollectionsApiListParams,\n} from \"./types\";\n\n/**\n * API for retrieving curated collections of products.\n */\nexport class CollectionsApi {\n\t/**\n\t * Initializes a new instance of the CollectionsApi.\n\t *\n\t * @param http HTTP client instance.\n\t */\n\tpublic constructor(private http: HttpClient) {}\n\n\t/**\n\t * Retrieves a list of SKUs belonging to a specific collection with pagination and sorting.\n\t *\n\t * @example\n\t * const skus = await client.collections.getSkus({\n\t * collectionId: 123,\n\t * pageSize: 10\n\t * });\n\t */\n\tpublic getSkus(\n\t\tparams: CollectionsApiGetSkusParams,\n\t): Promise<CollectionsApiGetSkusResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: \"/api/v2/collections/skus\",\n\t\t\tparams,\n\t\t\tschema: CollectionsApiGetSkusResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves a list of all collections.\n\t *\n\t * @example\n\t * const collections = await client.collections.list();\n\t */\n\tpublic list(\n\t\tparams: CollectionsApiListParams = {},\n\t): Promise<CollectionsApiListResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: \"/collections\",\n\t\t\tparams,\n\t\t\tschema: CollectionsApiListResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves detailed information about a specific collection by its ID.\n\t *\n\t * @example\n\t * const collection = await client.collections.get({\n\t * collectionId: 123\n\t * });\n\t */\n\tpublic get(\n\t\tparams: CollectionsApiGetParams,\n\t): Promise<CollectionsApiGetResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: `/collections/${params.collectionId}`,\n\t\t\tparams,\n\t\t\tschema: CollectionsApiGetResponseSchema,\n\t\t});\n\t}\n}\n","import * as z from \"zod/mini\";\n\n/**\n * Schema for a feature flag item.\n */\nexport const FeatureFlagsApiItemSchema = z.object({\n\t/**\n\t * Name of the feature flag\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Indicates if the feature flag is currently active\n\t */\n\tisActive: z.boolean(),\n});\n\n/**\n * Response schema for the list of feature flags.\n */\nexport const FeatureFlagsApiListResponseSchema = z.array(\n\tFeatureFlagsApiItemSchema,\n);\n","import { type HttpClient } from \"../../http/client\";\nimport { type FeatureFlagsApiListResponse } from \"./schema-types\";\nimport { FeatureFlagsApiListResponseSchema } from \"./schemas\";\nimport { type FeatureFlagsApiListParams } from \"./types\";\n\n/**\n * API for retrieving feature flags configuration.\n */\nexport class FeatureFlagsApi {\n\t/**\n\t * Initializes a new instance of the FeatureFlagsApi.\n\t *\n\t * @param http HTTP client instance.\n\t */\n\tpublic constructor(private http: HttpClient) {}\n\n\t/**\n\t * Retrieves all active feature flags.\n\t *\n\t * @example\n\t * const flags = await client.featureFlags.list();\n\t */\n\tpublic list(\n\t\tparams: FeatureFlagsApiListParams = {},\n\t): Promise<FeatureFlagsApiListResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: \"/api/v1/feature-flags\",\n\t\t\tparams,\n\t\t\tschema: FeatureFlagsApiListResponseSchema,\n\t\t});\n\t}\n}\n","import { FilterSchema } from \"../../common/schemas\";\nimport * as z from \"zod/mini\";\n\n/**\n * Type union for product sort keys\n */\nexport const ProductSortKeySchema = z.union([\n\tz.literal(\"popularity\"),\n\tz.literal(\"highestRated\"),\n\tz.literal(\"new\"),\n\tz.literal(\"price\"),\n\tz.literal(\"priceDesc\"),\n]);\n\n/**\n * Schema for a sort option.\n */\nexport const ProductsApiSortOptionSchema = z.object({\n\t/**\n\t * Sort key - \"popularity\", \"highestRated\", \"new\", \"price\", or \"priceDesc\"\n\t */\n\tkey: ProductSortKeySchema,\n\n\t/**\n\t * Localized display name of the sort option\n\t */\n\tname: z.string(),\n});\n\n/**\n * Response schema for available sort options.\n */\nexport const ProductsApiGetSortOptionsResponseSchema = z.array(\n\tProductsApiSortOptionSchema,\n);\n\n/**\n * Schema for a product review item.\n */\nexport const ProductsApiReviewItemSchema = z.object({\n\t/**\n\t * Name of the review author\n\t */\n\tauthor: z.string(),\n\n\t/**\n\t * Text content of the review\n\t */\n\treviewText: z.string(),\n\n\t/**\n\t * Rating score given in the review\n\t */\n\tscoreValue: z.number(),\n\n\t/**\n\t * Additional attributes associated with the review\n\t */\n\tattributes: z.record(z.string(), z.string()),\n\n\t/**\n\t * Date and time when the review was created\n\t */\n\tcreatedAt: z.string(),\n});\n\n/**\n * Response schema for product reviews.\n */\nexport const ProductsApiGetReviewsResponseSchema = z.object({\n\t/**\n\t * List of review items\n\t */\n\titems: z.array(ProductsApiReviewItemSchema),\n\n\t/**\n\t * Current page number\n\t */\n\tpageNumber: z.number(),\n\n\t/**\n\t * Total number of pages available\n\t */\n\ttotalPages: z.number(),\n\n\t/**\n\t * Total number of reviews\n\t */\n\ttotalCount: z.number(),\n\n\t/**\n\t * Indicates if there is a previous page\n\t */\n\thasPreviousPage: z.boolean(),\n\n\t/**\n\t * Indicates if there is a next page\n\t */\n\thasNextPage: z.boolean(),\n});\n\n/**\n * Schema for a product badge.\n */\nexport const ProductsApiBadgeSchema = z.object({\n\t/**\n\t * Background color code\n\t */\n\tbackgroundColor: z.number(),\n\n\t/**\n\t * Text label of the badge\n\t */\n\tlabel: z.string(),\n\n\t/**\n\t * Text color code\n\t */\n\ttextColor: z.number(),\n});\n\n/**\n * Type literal for products stock availability type\n */\nexport const ProductsStockAvailabilityTypeSchema = z.literal(\"stock\");\n\n/**\n * Schema for stock availability information.\n */\nexport const ProductsApiStockAvailabilitySchema = z.object({\n\t/**\n\t * Type of stock status (known value: \"stock\")\n\t */\n\ttype: ProductsStockAvailabilityTypeSchema,\n\n\t/**\n\t * SVG icon representing stock status\n\t */\n\tsvg: z.nullish(z.string()),\n\n\t/**\n\t * Localized text describing stock status (e.g., \"В наличии - осталось всего 16 штук\")\n\t */\n\ttext: z.string(),\n\n\t/**\n\t * Maximum quantity available\n\t */\n\tmaxQty: z.number(),\n\n\t/**\n\t * Localized reason text for quantity limit (e.g., \"В наличии только 16 штук\")\n\t */\n\tmaxQtyReason: z.string(),\n});\n\n/**\n * Schema for a product item.\n */\nexport const ProductsApiProductItemSchema = z.object({\n\t/**\n\t * Unique product identifier\n\t */\n\tproductId: z.number(),\n\n\t/**\n\t * Unique stock keeping unit identifier\n\t */\n\tskuId: z.number(),\n\n\t/**\n\t * URL for the full-size image\n\t */\n\timageUrl: z.string(),\n\n\t/**\n\t * Full display name of the product\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Brief description of the product\n\t */\n\tshortDescription: z.string(),\n\n\t/**\n\t * URL for the small preview image\n\t */\n\tthumbnailUrl: z.string(),\n\n\t/**\n\t * Original price before discounts\n\t */\n\toriginalPrice: z.number(),\n\n\t/**\n\t * Current selling price\n\t */\n\tprice: z.number(),\n\n\t/**\n\t * Quantity available in stock\n\t */\n\tqty: z.number(),\n\n\t/**\n\t * Stock availability details\n\t */\n\tstockAvailability: z.nullish(ProductsApiStockAvailabilitySchema),\n\n\t/**\n\t * Indicates if the product is on promotion\n\t */\n\tisPromo: z.boolean(),\n\n\t/**\n\t * Name of the promotion\n\t */\n\tpromoName: z.string(),\n\n\t/**\n\t * List of applicable promocodes\n\t */\n\tpromocodes: z.array(z.string()),\n\n\t/**\n\t * Popularity text indicating purchase frequency (e.g., \"Часто покупают\", \"11 заказов\", \"930 заказов\")\n\t */\n\tqtyPurchasedInfo: z.nullish(z.string()),\n\n\t/**\n\t * Average rating score\n\t */\n\trating: z.nullish(z.number()),\n\n\t/**\n\t * Total number of ratings\n\t */\n\tscoreQuantity: z.nullish(z.number()),\n\n\t/**\n\t * Badge information for the product\n\t */\n\tbadge: ProductsApiBadgeSchema,\n\n\t/**\n\t * Moderation status code\n\t */\n\tmoderationStatus: z.number(),\n});\n\n/**\n * Response schema for the product list.\n */\nexport const ProductsApiListResponseSchema = z.object({\n\t/**\n\t * List of applicable filters\n\t */\n\tfilters: z.array(FilterSchema),\n\n\t/**\n\t * List of product items\n\t */\n\titems: z.array(ProductsApiProductItemSchema),\n\n\t/**\n\t * Current page number\n\t */\n\tpageNumber: z.number(),\n\n\t/**\n\t * Total number of pages available\n\t */\n\ttotalPages: z.number(),\n\n\t/**\n\t * Total number of products found\n\t */\n\ttotalCount: z.number(),\n\n\t/**\n\t * Indicates if there is a previous page\n\t */\n\thasPreviousPage: z.boolean(),\n\n\t/**\n\t * Indicates if there is a next page\n\t */\n\thasNextPage: z.boolean(),\n});\n","import { type HttpClient } from \"../../http/client\";\nimport {\n\ttype ProductsApiGetReviewsResponse,\n\ttype ProductsApiGetSortOptionsResponse,\n\ttype ProductsApiListResponse,\n} from \"./schema-types\";\nimport {\n\tProductsApiGetReviewsResponseSchema,\n\tProductsApiGetSortOptionsResponseSchema,\n\tProductsApiListResponseSchema,\n} from \"./schemas\";\nimport {\n\ttype ProductsApiGetReviewsParams,\n\ttype ProductsApiGetSortOptionsParams,\n\ttype ProductsApiListParams,\n} from \"./types\";\n\n/**\n * API for retrieving product listings, details, and reviews.\n */\nexport class ProductsApi {\n\t/**\n\t * Initializes a new instance of the ProductsApi.\n\t *\n\t * @param http HTTP client instance.\n\t */\n\tpublic constructor(private http: HttpClient) {}\n\n\t/**\n\t * Retrieves available sorting options for product lists.\n\t *\n\t * @example\n\t * const sortOptions = await client.products.getSortOptions();\n\t */\n\tpublic getSortOptions(\n\t\tparams: ProductsApiGetSortOptionsParams = {},\n\t): Promise<ProductsApiGetSortOptionsResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: \"/api/product/sort-options\",\n\t\t\tparams,\n\t\t\tschema: ProductsApiGetSortOptionsResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves a list of products with optional filtering and pagination.\n\t *\n\t * @example\n\t * const products = await client.products.list({\n\t * pageSize: 20,\n\t * pageNumber: 1\n\t * });\n\t */\n\tpublic list(\n\t\tparams: ProductsApiListParams = {},\n\t): Promise<ProductsApiListResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: \"/api/v2/product\",\n\t\t\tparams,\n\t\t\tschema: ProductsApiListResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves reviews for a specific product.\n\t *\n\t * @example\n\t * const reviews = await client.products.getReviews({\n\t * productId: 12345\n\t * });\n\t */\n\tpublic getReviews(\n\t\tparams: ProductsApiGetReviewsParams,\n\t): Promise<ProductsApiGetReviewsResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: `/api/v1/product/${params.productId}/review`,\n\t\t\tparams,\n\t\t\tschema: ProductsApiGetReviewsResponseSchema,\n\t\t});\n\t}\n}\n","import * as z from \"zod/mini\";\n\n/**\n * Schema for a promotion item.\n */\nexport const PromoApiItemSchema = z.object({\n\t/**\n\t * Unique identifier of the promotion\n\t */\n\tid: z.number(),\n\n\t/**\n\t * Localized name of the promotion\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Localized detailed description of the promotion\n\t */\n\tdescription: z.nullish(z.string()),\n\n\t/**\n\t * URL to the SVG icon for the promotion\n\t */\n\tsvgUrl: z.nullish(z.string()),\n\n\t/**\n\t * Start date of the promotion\n\t */\n\tstartDate: z.string(),\n\n\t/**\n\t * End date of the promotion\n\t */\n\tendDate: z.string(),\n});\n\n/**\n * Response schema for the list of promotions.\n */\nexport const PromoApiListResponseSchema = z.array(PromoApiItemSchema);\n","import { type HttpClient } from \"../../http/client\";\nimport { type PromoApiListResponse } from \"./schema-types\";\nimport { PromoApiListResponseSchema } from \"./schemas\";\nimport { type PromoApiListParams } from \"./types\";\n\n/**\n * API for retrieving active promotions.\n */\nexport class PromoApi {\n\t/**\n\t * Initializes a new instance of the PromoApi.\n\t *\n\t * @param http HTTP client instance.\n\t */\n\tpublic constructor(private http: HttpClient) {}\n\n\t/**\n\t * Retrieves a list of all active promotions.\n\t *\n\t * @example\n\t * const promos = await client.promo.list();\n\t */\n\tpublic list(params: PromoApiListParams = {}): Promise<PromoApiListResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: \"/api/promo\",\n\t\t\tparams,\n\t\t\tschema: PromoApiListResponseSchema,\n\t\t});\n\t}\n}\n","import { FilterSchema } from \"../../common/schemas\";\nimport * as z from \"zod/mini\";\n\n/**\n * Schema for shop contact information.\n */\nexport const ShopsApiContactInfoSchema = z.object({\n\t/**\n\t * Business Identification Number\n\t */\n\tbin: z.string(),\n\n\t/**\n\t * Number of days since the shop was registered\n\t */\n\tdaysSinceRegistration: z.number(),\n\n\t/**\n\t * Legal entity type code\n\t */\n\tlegalType: z.number(),\n});\n\n/**\n * Schema for a shop tag.\n */\nexport const ShopsApiTagSchema = z.object({\n\t/**\n\t * Description of the tag\n\t */\n\tdescription: z.string(),\n\n\t/**\n\t * URL to the raster icon for the tag\n\t */\n\ticon: z.string(),\n\n\t/**\n\t * Display name of the tag\n\t */\n\tname: z.string(),\n\n\t/**\n\t * URL to the SVG icon for the tag\n\t */\n\tsvg: z.string(),\n\n\t/**\n\t * Unique code for the tag\n\t */\n\tcode: z.string(),\n});\n\n/**\n * Response schema for getting a specific shop by ID.\n */\nexport const ShopsApiGetResponseSchema = z.object({\n\t/**\n\t * Unique identifier of the shop\n\t */\n\tid: z.number(),\n\n\t/**\n\t * URL to the shop's banner image\n\t */\n\tbanner: z.nullish(z.string()),\n\n\t/**\n\t * Description of the shop\n\t */\n\tdescription: z.string(),\n\n\t/**\n\t * URL to the shop's logo\n\t */\n\tlogo: z.nullish(z.string()),\n\n\t/**\n\t * Name of the shop\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Text about total orders/purchases (e.g., \"11 заказов\", \"930 заказов\")\n\t */\n\tqtyPurchasedInfo: z.nullish(z.string()),\n\n\t/**\n\t * Average rating of the shop\n\t */\n\trating: z.nullish(z.number()),\n\n\t/**\n\t * Total number of reviews received\n\t */\n\ttotalReviews: z.nullish(z.number()),\n\n\t/**\n\t * Contact information for the shop\n\t */\n\tcontactInfo: ShopsApiContactInfoSchema,\n\n\t/**\n\t * Indicates if the shop represents a single brand\n\t */\n\tisMonobrand: z.boolean(),\n\n\t/**\n\t * Tag associated with the shop\n\t */\n\ttag: ShopsApiTagSchema,\n});\n\n/**\n * Schema for a shop item in a list.\n */\nexport const ShopsApiShopItemSchema = z.object({\n\t/**\n\t * Unique identifier of the shop\n\t */\n\tid: z.number(),\n\n\t/**\n\t * URL to the shop's icon\n\t */\n\ticon: z.string(),\n});\n\n/**\n * Response schema for the monobrand shop list.\n */\nexport const ShopsApiGetMonobrandResponseSchema = z.object({\n\t/**\n\t * List of monobrand shops\n\t */\n\titems: z.array(ShopsApiShopItemSchema),\n\n\t/**\n\t * Current page number\n\t */\n\tpageNumber: z.number(),\n\n\t/**\n\t * Total number of pages available\n\t */\n\ttotalPages: z.number(),\n\n\t/**\n\t * Total number of shops found\n\t */\n\ttotalCount: z.number(),\n\n\t/**\n\t * Indicates if there is a previous page\n\t */\n\thasPreviousPage: z.boolean(),\n\n\t/**\n\t * Indicates if there is a next page\n\t */\n\thasNextPage: z.boolean(),\n});\n\n/**\n * Type literal for shops stock availability type\n */\nexport const ShopsStockAvailabilityTypeSchema = z.literal(\"stock\");\n\n/**\n * Schema for stock availability information.\n */\nexport const ShopsApiStockAvailabilitySchema = z.object({\n\t/**\n\t * Type of stock status (known value: \"stock\")\n\t */\n\ttype: ShopsStockAvailabilityTypeSchema,\n\n\t/**\n\t * SVG icon representing stock status\n\t */\n\tsvg: z.nullish(z.string()),\n\n\t/**\n\t * Localized text describing stock status (e.g., \"В наличии - осталось всего 16 штук\")\n\t */\n\ttext: z.string(),\n\n\t/**\n\t * Maximum quantity available\n\t */\n\tmaxQty: z.number(),\n\n\t/**\n\t * Localized reason text for quantity limit (e.g., \"В наличии только 16 штук\")\n\t */\n\tmaxQtyReason: z.string(),\n});\n\n/**\n * Schema for a product item in a shop.\n */\nexport const ShopsApiProductItemSchema = z.object({\n\t/**\n\t * Unique product identifier\n\t */\n\tproductId: z.number(),\n\n\t/**\n\t * Unique stock keeping unit identifier\n\t */\n\tskuId: z.number(),\n\n\t/**\n\t * URL for the full-size image\n\t */\n\timageUrl: z.string(),\n\n\t/**\n\t * Full display name of the product\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Brief description of the product\n\t */\n\tshortDescription: z.string(),\n\n\t/**\n\t * URL for the small preview image\n\t */\n\tthumbnailUrl: z.string(),\n\n\t/**\n\t * Original price before discounts\n\t */\n\toriginalPrice: z.number(),\n\n\t/**\n\t * Current selling price\n\t */\n\tprice: z.number(),\n\n\t/**\n\t * Indicates if the item is in stock\n\t */\n\tinStock: z.boolean(),\n\n\t/**\n\t * Quantity available in stock\n\t */\n\tqty: z.number(),\n\n\t/**\n\t * Stock availability details\n\t */\n\tstockAvailability: z.nullish(ShopsApiStockAvailabilitySchema),\n\n\t/**\n\t * Indicates if the product is on promotion\n\t */\n\tisPromo: z.boolean(),\n\n\t/**\n\t * Name of the promotion\n\t */\n\tpromoName: z.string(),\n\n\t/**\n\t * Popularity text indicating purchase frequency (e.g., \"Часто покупают\")\n\t */\n\tqtyPurchasedInfo: z.nullish(z.string()),\n\n\t/**\n\t * Average rating score\n\t */\n\trating: z.nullish(z.number()),\n\n\t/**\n\t * Total number of ratings\n\t */\n\tscoreQuantity: z.nullish(z.number()),\n\n\t/**\n\t * Moderation status code\n\t */\n\tmoderationStatus: z.number(),\n});\n\n/**\n * Response schema for products from a specific shop.\n */\nexport const ShopsApiGetProductsResponseSchema = z.object({\n\t/**\n\t * List of applicable filters\n\t */\n\tfilters: z.array(FilterSchema),\n\n\t/**\n\t * List of product items\n\t */\n\titems: z.array(ShopsApiProductItemSchema),\n\n\t/**\n\t * Current page number\n\t */\n\tpageNumber: z.number(),\n\n\t/**\n\t * Total number of pages available\n\t */\n\ttotalPages: z.number(),\n\n\t/**\n\t * Total number of products found\n\t */\n\ttotalCount: z.number(),\n\n\t/**\n\t * Indicates if there is a previous page\n\t */\n\thasPreviousPage: z.boolean(),\n\n\t/**\n\t * Indicates if there is a next page\n\t */\n\thasNextPage: z.boolean(),\n});\n","import { type HttpClient } from \"../../http/client\";\nimport {\n\ttype ShopsApiGetMonobrandResponse,\n\ttype ShopsApiGetProductsResponse,\n\ttype ShopsApiGetResponse,\n} from \"./schema-types\";\nimport {\n\tShopsApiGetMonobrandResponseSchema,\n\tShopsApiGetProductsResponseSchema,\n\tShopsApiGetResponseSchema,\n} from \"./schemas\";\nimport {\n\ttype ShopsApiGetMonobrandParams,\n\ttype ShopsApiGetParams,\n\ttype ShopsApiGetProductsParams,\n} from \"./types\";\n\n/**\n * API for interacting with shop-related endpoints.\n */\nexport class ShopsApi {\n\t/**\n\t * Initializes a new instance of the ShopsApi.\n\t *\n\t * @param http HTTP client instance.\n\t */\n\tpublic constructor(private http: HttpClient) {}\n\n\t/**\n\t * Retrieves details of a specific shop.\n\t *\n\t * @example\n\t * const shop = await client.shops.get({\n\t * shopId: 123\n\t * });\n\t */\n\tpublic get(params: ShopsApiGetParams): Promise<ShopsApiGetResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: `/api/v1/shops/${params.shopId}`,\n\t\t\tparams,\n\t\t\tschema: ShopsApiGetResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves monobrand shop details.\n\t *\n\t * @example\n\t * const monobrand = await client.shops.getMonobrand();\n\t */\n\tpublic getMonobrand(\n\t\tparams: ShopsApiGetMonobrandParams = {},\n\t): Promise<ShopsApiGetMonobrandResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: \"/api/v1/shops/monobrand\",\n\t\t\tparams,\n\t\t\tschema: ShopsApiGetMonobrandResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves products for a specific shop.\n\t *\n\t * @example\n\t * const shopProducts = await client.shops.getProducts({\n\t * shopId: 123,\n\t * pageSize: 10\n\t * });\n\t */\n\tpublic getProducts(\n\t\tparams: ShopsApiGetProductsParams,\n\t): Promise<ShopsApiGetProductsResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: `/api/v2/shops/${params.shopId}/products`,\n\t\t\tparams,\n\t\t\tschema: ShopsApiGetProductsResponseSchema,\n\t\t});\n\t}\n}\n","import * as z from \"zod/mini\";\n\n/**\n * Schema for installment payment information.\n */\nexport const SkuApiInstallmentSchema = z.object({\n\t/**\n\t * URL to the installment SVG icon\n\t */\n\tinstallmentSvg: z.string(),\n\n\t/**\n\t * Description of the installment term\n\t */\n\tinstallmentTerm: z.string(),\n});\n\n/**\n * Schema for shop details associated with a SKU.\n */\nexport const SkuApiShopSchema = z.object({\n\t/**\n\t * Unique identifier of the shop\n\t */\n\tid: z.number(),\n\n\t/**\n\t * URL to the shop's logo\n\t */\n\tlogo: z.nullish(z.string()),\n\n\t/**\n\t * Name of the shop\n\t */\n\tname: z.string(),\n\n\t/**\n\t * URL to the shop's photo\n\t */\n\tphoto: z.string(),\n\n\t/**\n\t * URL to the shop's page or resource\n\t */\n\turl: z.string(),\n\n\t/**\n\t * Indicates if installment payment is available\n\t */\n\tisInstallment: z.boolean(),\n\n\t/**\n\t * Popularity text for the shop (e.g., \"Часто покупают\", \"11 заказов\")\n\t */\n\tqtyPurchasedInfo: z.nullish(z.string()),\n\n\t/**\n\t * Average rating of the shop\n\t */\n\trating: z.nullish(z.number()),\n\n\t/**\n\t * Number of days since the shop was registered\n\t */\n\tdaysSinceRegistration: z.number(),\n\n\t/**\n\t * Indicates if the shop represents a single brand\n\t */\n\tisMonobrand: z.boolean(),\n});\n\n/**\n * Schema for brand information.\n */\nexport const SkuApiBrandSchema = z.object({\n\t/**\n\t * Unique identifier of the brand\n\t */\n\tid: z.number(),\n\n\t/**\n\t * Name of the brand\n\t */\n\tname: z.string(),\n});\n\n/**\n * Schema for a category item.\n */\nexport const SkuApiCategorySchema = z.object({\n\t/**\n\t * Unique identifier of the category\n\t */\n\tid: z.number(),\n\n\t/**\n\t * Name of the category\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Indicates if this is the primary category for the product\n\t */\n\tisPrimary: z.boolean(),\n});\n\n/**\n * Schema for an attribute property value.\n */\nexport const SkuApiAttributePropertyValueSchema = z.object({\n\t/**\n\t * Name of the property value (e.g., \"Red\", \"XL\")\n\t */\n\tname: z.string(),\n\n\t/**\n\t * URL to a photo representing this property value\n\t */\n\tphoto: z.string(),\n});\n\n/**\n * Schema for a product attribute.\n */\nexport const SkuApiAttributePropertySchema = z.object({\n\t/**\n\t * Name of the attribute (e.g., \"Color\", \"Size\")\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Value details for the attribute\n\t */\n\tvalue: SkuApiAttributePropertyValueSchema,\n});\n\n/**\n * Schema for SKU attributes configuration.\n */\nexport const SkuApiAttributeSchema = z.object({\n\t/**\n\t * SKU ID associated with this specific attribute combination\n\t */\n\tskuId: z.number(),\n\n\t/**\n\t * Quantity available for this specific variant\n\t */\n\tquantity: z.number(),\n\n\t/**\n\t * List of properties defining this variant\n\t */\n\tattributeProperties: z.array(SkuApiAttributePropertySchema),\n});\n\n/**\n * Schema for a product tag.\n */\nexport const SkuApiTagSchema = z.object({\n\t/**\n\t * Type of the tag\n\t */\n\ttype: z.string(),\n\n\t/**\n\t * Display name of the tag\n\t */\n\tname: z.string(),\n\n\t/**\n\t * URL to the SVG icon for the tag\n\t */\n\tsvg: z.string(),\n\n\t/**\n\t * Value associated with the tag\n\t */\n\tvalue: z.nullish(z.string()),\n});\n\n/**\n * Type literal for SKU stock availability type\n */\nexport const SkuStockAvailabilityTypeSchema = z.literal(\"stock\");\n\n/**\n * Schema for stock availability information.\n */\nexport const SkuApiStockAvailabilitySchema = z.object({\n\t/**\n\t * Type of stock status (known value: \"stock\")\n\t */\n\ttype: SkuStockAvailabilityTypeSchema,\n\n\t/**\n\t * SVG icon representing stock status\n\t */\n\tsvg: z.nullish(z.string()),\n\n\t/**\n\t * Localized text describing stock status (e.g., \"В наличии - осталось всего 16 штук\")\n\t */\n\ttext: z.string(),\n\n\t/**\n\t * Maximum quantity available\n\t */\n\tmaxQty: z.number(),\n\n\t/**\n\t * Localized reason text for quantity limit (e.g., \"В наличии только 16 штук\")\n\t */\n\tmaxQtyReason: z.string(),\n});\n\n/**\n * Response schema for getting a specific SKU by ID.\n */\nexport const SkuApiGetResponseSchema = z.object({\n\t/**\n\t * Unique product identifier\n\t */\n\tproductId: z.number(),\n\n\t/**\n\t * Unique stock keeping unit identifier\n\t */\n\tskuId: z.number(),\n\n\t/**\n\t * Detailed product description in HTML format\n\t */\n\tdescription: z.string(),\n\n\t/**\n\t * Full display name of the product\n\t */\n\tname: z.string(),\n\n\t/**\n\t * List of URLs for product photos\n\t */\n\tphotos: z.array(z.string()),\n\n\t/**\n\t * Brief summary of the product\n\t */\n\tshortDescription: z.string(),\n\n\t/**\n\t * Discount amount\n\t */\n\tdiscount: z.number(),\n\n\t/**\n\t * Original price before discounts\n\t */\n\toriginalPrice: z.number(),\n\n\t/**\n\t * Discount percentage\n\t */\n\tpercentDiscount: z.number(),\n\n\t/**\n\t * Current selling price\n\t */\n\tprice: z.number(),\n\n\t/**\n\t * Quantity available in stock\n\t */\n\tqty: z.number(),\n\n\t/**\n\t * Stock availability details\n\t */\n\tstockAvailability: z.nullish(SkuApiStockAvailabilitySchema),\n\n\t/**\n\t * Installment payment options\n\t */\n\tinstallment: z.nullish(SkuApiInstallmentSchema),\n\n\t/**\n\t * Indicates if the product is on promotion\n\t */\n\tisPromo: z.boolean(),\n\n\t/**\n\t * Name of the promotion\n\t */\n\tpromoName: z.string(),\n\n\t/**\n\t * List of applicable promocodes\n\t */\n\tpromocodes: z.array(z.string()),\n\n\t/**\n\t * Popularity text indicating purchase frequency (e.g., \"Часто покупают\", \"11 заказов\", \"930 заказов\")\n\t */\n\tqtyPurchasedInfo: z.nullish(z.string()),\n\n\t/**\n\t * Average rating score\n\t */\n\trating: z.nullish(z.number()),\n\n\t/**\n\t * Total number of ratings\n\t */\n\tscoreQuantity: z.nullish(z.number()),\n\n\t/**\n\t * Total number of text reviews\n\t */\n\ttextReviewQuantity: z.nullish(z.number()),\n\n\t/**\n\t * Brand information\n\t */\n\tbrand: z.nullish(SkuApiBrandSchema),\n\n\t/**\n\t * List of categories the product belongs to\n\t */\n\tcategories: z.array(SkuApiCategorySchema),\n\n\t/**\n\t * Details of the shop selling the product\n\t */\n\tshop: SkuApiShopSchema,\n\n\t/**\n\t * Dictionary of additional product information\n\t */\n\tadditionalInfo: z.record(z.string(), z.string()),\n\n\t/**\n\t * List of available attribute variants\n\t */\n\tattributes: z.array(SkuApiAttributeSchema),\n\n\t/**\n\t * List of tags associated with the product\n\t */\n\ttags: z.array(SkuApiTagSchema),\n});\n\n/**\n * Schema for a similar product item.\n */\nexport const SkuApiSimilarItemSchema = z.object({\n\t/**\n\t * Unique product identifier\n\t */\n\tproductId: z.number(),\n\n\t/**\n\t * Unique stock keeping unit identifier\n\t */\n\tskuId: z.number(),\n\n\t/**\n\t * URL for the full-size image\n\t */\n\timageUrl: z.string(),\n\n\t/**\n\t * Display name of the similar product\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Brief description of the similar product\n\t */\n\tshortDescription: z.string(),\n\n\t/**\n\t * URL for the small preview image\n\t */\n\tthumbnailUrl: z.string(),\n\n\t/**\n\t * Original price before discounts\n\t */\n\toriginalPrice: z.number(),\n\n\t/**\n\t * Current selling price\n\t */\n\tprice: z.number(),\n\n\t/**\n\t * Quantity available in stock\n\t */\n\tqty: z.number(),\n\n\t/**\n\t * Indicates if the product is on promotion\n\t */\n\tisPromo: z.boolean(),\n\n\t/**\n\t * Name of the promotion\n\t */\n\tpromoName: z.string(),\n\n\t/**\n\t * Popularity text indicating purchase frequency (e.g., \"Часто покупают\")\n\t */\n\tqtyPurchasedInfo: z.nullish(z.string()),\n\n\t/**\n\t * Average rating score\n\t */\n\trating: z.nullish(z.number()),\n\n\t/**\n\t * Total number of ratings\n\t */\n\tscoreQuantity: z.nullish(z.number()),\n\n\t/**\n\t * Moderation status code\n\t */\n\tmoderationStatus: z.number(),\n});\n\n/**\n * Response schema for similar SKUs.\n */\nexport const SkuApiGetSimilarResponseSchema = z.object({\n\t/**\n\t * List of similar product items\n\t */\n\titems: z.array(SkuApiSimilarItemSchema),\n\n\t/**\n\t * Current page number\n\t */\n\tpageNumber: z.number(),\n\n\t/**\n\t * Total number of pages available\n\t */\n\ttotalPages: z.number(),\n\n\t/**\n\t * Total number of similar items found\n\t */\n\ttotalCount: z.number(),\n\n\t/**\n\t * Indicates if there is a previous page\n\t */\n\thasPreviousPage: z.boolean(),\n\n\t/**\n\t * Indicates if there is a next page\n\t */\n\thasNextPage: z.boolean(),\n});\n\n/**\n * Schema for a collection item.\n */\nexport const SkuApiCollectionItemSchema = z.object({\n\t/**\n\t * Unique identifier of the collection\n\t */\n\tid: z.number(),\n\n\t/**\n\t * URL for the collection's cover image\n\t */\n\tcover: z.string(),\n\n\t/**\n\t * URL to the collection's icon\n\t */\n\ticon: z.string(),\n\n\t/**\n\t * Name of the collection\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Number of items in the collection\n\t */\n\tquantity: z.number(),\n\n\t/**\n\t * Priority for sorting or display order\n\t */\n\tpriority: z.number(),\n});\n\n/**\n * Response schema for SKU collections.\n */\nexport const SkuApiGetCollectionsResponseSchema = z.array(\n\tSkuApiCollectionItemSchema,\n);\n\n/**\n * Response schema for review availability check.\n */\nexport const SkuApiGetReviewAvailableResponseSchema = z.object({\n\t/**\n\t * Description of the review availability status\n\t */\n\tdescription: z.string(),\n\n\t/**\n\t * Message regarding review availability\n\t */\n\tmessage: z.string(),\n});\n","import { type HttpClient } from \"../../http/client\";\nimport {\n\ttype SkuApiGetCollectionsResponse,\n\ttype SkuApiGetResponse,\n\ttype SkuApiGetReviewAvailableResponse,\n\ttype SkuApiGetSimilarResponse,\n} from \"./schema-types\";\nimport {\n\tSkuApiGetCollectionsResponseSchema,\n\tSkuApiGetResponseSchema,\n\tSkuApiGetReviewAvailableResponseSchema,\n\tSkuApiGetSimilarResponseSchema,\n} from \"./schemas\";\nimport {\n\ttype SkuApiGetCollectionsParams,\n\ttype SkuApiGetParams,\n\ttype SkuApiGetReviewAvailableParams,\n\ttype SkuApiGetSimilarParams,\n} from \"./types\";\n\n/**\n * API for interacting with SKU-related endpoints.\n */\nexport class SkuApi {\n\t/**\n\t * Initializes a new instance of the SkuApi.\n\t *\n\t * @param http HTTP client instance.\n\t */\n\tpublic constructor(private http: HttpClient) {}\n\n\t/**\n\t * Retrieves details of a specific SKU.\n\t *\n\t * @example\n\t * const sku = await client.sku.get({\n\t * skuId: 123\n\t * });\n\t */\n\tpublic get(params: SkuApiGetParams): Promise<SkuApiGetResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: `/api/v2/sku/${params.skuId}`,\n\t\t\tparams,\n\t\t\tschema: SkuApiGetResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves similar SKUs.\n\t *\n\t * @example\n\t * const similar = await client.sku.getSimilar({\n\t * skuId: 123\n\t * });\n\t */\n\tpublic getSimilar(\n\t\tparams: SkuApiGetSimilarParams,\n\t): Promise<SkuApiGetSimilarResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: \"/api/v2/sku/similar-skus\",\n\t\t\tparams,\n\t\t\tschema: SkuApiGetSimilarResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves collections associated with a SKU.\n\t *\n\t * @example\n\t * const collections = await client.sku.getCollections({\n\t * skuId: 123\n\t * });\n\t */\n\tpublic getCollections(\n\t\tparams: SkuApiGetCollectionsParams,\n\t): Promise<SkuApiGetCollectionsResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: `/sku/${params.skuId}/collections`,\n\t\t\tparams,\n\t\t\tschema: SkuApiGetCollectionsResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Checks if a review is available for a SKU.\n\t *\n\t * @example\n\t * const isAvailable = await client.sku.getReviewAvailable({\n\t * skuId: 123\n\t * });\n\t */\n\tpublic getReviewAvailable(\n\t\tparams: SkuApiGetReviewAvailableParams,\n\t): Promise<SkuApiGetReviewAvailableResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: `/sku/${params.skuId}/review-available`,\n\t\t\tparams,\n\t\t\tschema: SkuApiGetReviewAvailableResponseSchema,\n\t\t});\n\t}\n}\n","/**\n * The default base URL for the Teez B2C API.\n */\nexport const BASE_URL = \"https://b2c-api.teez.kz\";\n\n/**\n * Supported languages for the API.\n */\nexport const LANGUAGES = {\n\t/**\n\t * Russian language\n\t */\n\tRU: \"ru\",\n\n\t/**\n\t * Kazakh language\n\t */\n\tKZ: \"kz\",\n} as const;\n\n/**\n * Standard sort options for product and collection searches\n */\nexport const SORT_OPTIONS = {\n\t/**\n\t * Sort by relevance (usually for search results)\n\t */\n\tBY_RELEVANCE: \"byRelevance\",\n\n\t/**\n\t * Sort by popularity descending\n\t */\n\tPOPULARITY: \"popularity\",\n\n\t/**\n\t * Sort by user rating descending\n\t */\n\tHIGHEST_RATED: \"highestRated\",\n\n\t/**\n\t * Sort by creation date descending\n\t */\n\tNEW: \"new\",\n\n\t/**\n\t * Sort by price ascending\n\t */\n\tPRICE: \"price\",\n\n\t/**\n\t * Sort by price descending\n\t */\n\tPRICE_DESC: \"priceDesc\",\n} as const;\n\n/**\n * Default application version code.\n */\nexport const DEFAULT_APP_VERSION = \"193\";\n","import { BASE_URL, DEFAULT_APP_VERSION } from \"./common/constants\";\nimport { type Language } from \"./common/types\";\n\n/**\n * Configuration options for the Teez client.\n */\nexport interface TeezClientConfig {\n\t/**\n\t * Base URL for the API.\n\t * @default \"https://b2c-api.teez.kz\"\n\t */\n\tbaseUrl?: string;\n\n\t/**\n\t * Application version string.\n\t * @default \"193\"\n\t */\n\tappVersion?: string;\n\n\t/**\n\t * Language for API responses.\n\t * @default \"ru\"\n\t */\n\tlanguage?: Language;\n\n\t/**\n\t * Request timeout in milliseconds.\n\t * @default 30000\n\t */\n\ttimeout?: number;\n\n\t/**\n\t * Custom headers to include in all requests.\n\t */\n\theaders?: Record<string, string>;\n}\n\n/**\n * Fully resolved configuration with defaults applied.\n */\nexport interface ResolvedTeezClientConfig {\n\t/**\n\t * Base URL for the API.\n\t */\n\treadonly baseUrl: string;\n\n\t/**\n\t * Application version string.\n\t */\n\treadonly appVersion: string;\n\n\t/**\n\t * Language for API responses.\n\t */\n\treadonly language: Language;\n\n\t/**\n\t * Request timeout in milliseconds.\n\t */\n\treadonly timeout: number;\n\n\t/**\n\t * Custom headers included in requests.\n\t */\n\treadonly headers: Readonly<Record<string, string>>;\n}\n\n/**\n * Default configuration values.\n */\nexport const DEFAULT_CONFIG: ResolvedTeezClientConfig = {\n\tbaseUrl: BASE_URL,\n\tappVersion: DEFAULT_APP_VERSION,\n\tlanguage: \"ru\",\n\ttimeout: 30_000,\n\theaders: {},\n};\n\n/**\n * Merges user configuration with defaults.\n */\nexport function resolveConfig(\n\tconfig?: TeezClientConfig,\n): ResolvedTeezClientConfig {\n\treturn {\n\t\tbaseUrl: config?.baseUrl ?? DEFAULT_CONFIG.baseUrl,\n\t\tappVersion: config?.appVersion ?? DEFAULT_CONFIG.appVersion,\n\t\tlanguage: config?.language ?? DEFAULT_CONFIG.language,\n\t\ttimeout: config?.timeout ?? DEFAULT_CONFIG.timeout,\n\t\theaders: {\n\t\t\t...DEFAULT_CONFIG.headers,\n\t\t\t...config?.headers,\n\t\t},\n\t};\n}\n\n/**\n * Builds a standard user-agent string for the Teez client.\n */\nexport function buildUserAgent(appVersion: string): string {\n\treturn `android;kz.teez.customer;${appVersion}`;\n}\n\n/**\n * Builds the headers object for API requests based on configuration.\n */\nexport function buildHeaders(\n\tconfig: ResolvedTeezClientConfig,\n): Record<string, string> {\n\treturn {\n\t\t\"accept-language\": config.language,\n\t\t\"user-agent\": buildUserAgent(config.appVersion),\n\t\t\"x-app-version\": config.appVersion,\n\t\t...config.headers,\n\t};\n}\n","/**\n * Base error class for all SDK-related errors.\n */\nexport class TeezError extends Error {\n\tpublic override name = \"TeezError\";\n}\n","import { TeezError } from \"./teez-error\";\n\n/**\n * Options for constructing a TeezApiError.\n */\nexport interface TeezApiErrorOptions extends ErrorOptions {\n\t/**\n\t * URL of the request that failed.\n\t */\n\turl: string;\n\n\t/**\n\t * HTTP status code.\n\t */\n\tstatus: number;\n\n\t/**\n\t * HTTP status text.\n\t */\n\tstatusText: string;\n\n\t/**\n\t * Response body, if any.\n\t */\n\tbody?: unknown;\n}\n\n/**\n * Error thrown when the API response indicates a failure (4xx or 5xx status).\n */\nexport class TeezApiError extends TeezError {\n\tpublic override name = \"TeezApiError\";\n\n\t/**\n\t * HTTP status code.\n\t */\n\tpublic readonly status: number;\n\n\t/**\n\t * HTTP status text.\n\t */\n\tpublic readonly statusText: string;\n\n\t/**\n\t * URL of the request that failed.\n\t */\n\tpublic readonly url: string;\n\n\t/**\n\t * Response body, if available.\n\t */\n\tpublic readonly body?: unknown;\n\n\tpublic constructor(\n\t\tmessage: string,\n\t\t{ url, status, statusText, body, ...errorOptions }: TeezApiErrorOptions,\n\t) {\n\t\tsuper(message, errorOptions);\n\n\t\tthis.status = status;\n\t\tthis.statusText = statusText;\n\t\tthis.url = url;\n\t\tthis.body = body;\n\t}\n\n\t/**\n\t * Checks if the status code is a client error (4xx).\n\t */\n\tpublic get isClientError(): boolean {\n\t\treturn this.status >= 400 && this.status < 500;\n\t}\n\n\t/**\n\t * Checks if the status code is a server error (5xx).\n\t */\n\tpublic get isServerError(): boolean {\n\t\treturn this.status >= 500;\n\t}\n\n\t/**\n\t * Checks if the status code indicates a Not Found error (404).\n\t */\n\tpublic get isNotFound(): boolean {\n\t\treturn this.status === 404;\n\t}\n}\n","import { TeezError } from \"./teez-error\";\n\n/**\n * Options for constructing a TeezNetworkError.\n */\nexport interface TeezNetworkErrorOptions extends ErrorOptions {\n\t/**\n\t * URL of the request that failed.\n\t */\n\turl: string;\n}\n\n/**\n * Error thrown when a network request fails (e.g., DNS resolution, connection refused).\n */\nexport class TeezNetworkError extends TeezError {\n\tpublic override name = \"TeezNetworkError\";\n\n\t/**\n\t * URL of the request that failed.\n\t */\n\tpublic readonly url: string;\n\n\tpublic constructor(\n\t\tmessage: string,\n\t\t{ url, ...errorOptions }: TeezNetworkErrorOptions,\n\t) {\n\t\tsuper(message, errorOptions);\n\n\t\tthis.url = url;\n\t}\n}\n","import { TeezError } from \"./teez-error\";\n\n/**\n * Options for constructing a TeezTimeoutError.\n */\nexport interface TeezTimeoutErrorOptions extends ErrorOptions {\n\t/**\n\t * URL of the request that timed out.\n\t */\n\turl: string;\n\n\t/**\n\t * Timeout duration in milliseconds.\n\t */\n\ttimeout: number;\n}\n\n/**\n * Error thrown when an API request times out.\n */\nexport class TeezTimeoutError extends TeezError {\n\tpublic override name = \"TeezTimeoutError\";\n\n\t/**\n\t * URL of the request that timed out.\n\t */\n\tpublic readonly url: string;\n\n\t/**\n\t * Timeout duration in milliseconds.\n\t */\n\tpublic readonly timeout: number;\n\n\tpublic constructor(\n\t\tmessage: string,\n\t\t{ url, timeout, ...errorOptions }: TeezTimeoutErrorOptions,\n\t) {\n\t\tsuper(message, errorOptions);\n\n\t\tthis.url = url;\n\t\tthis.timeout = timeout;\n\t}\n}\n","import { TeezError } from \"./teez-error\";\n\n/**\n * Abstract representation of a validation issue.\n */\nexport interface TeezValidationIssue {\n\t/**\n\t * Error code (e.g., \"invalid_type\", \"too_small\").\n\t */\n\tcode: string;\n\n\t/**\n\t * The path to the invalid field (array format).\n\t */\n\tpath: (string | number | symbol)[];\n\n\t/**\n\t * Human-readable error message.\n\t */\n\tmessage: string;\n}\n\n/**\n * Options for constructing a TeezValidationError.\n */\nexport interface TeezValidationErrorOptions extends ErrorOptions {\n\t/**\n\t * List of generic validation issues.\n\t */\n\tissues: TeezValidationIssue[];\n\n\t/**\n\t * The full data object that failed validation.\n\t */\n\tdata?: unknown;\n}\n\n/**\n * Error thrown when validation fails.\n */\nexport class TeezValidationError extends TeezError {\n\tpublic override name = \"TeezValidationError\";\n\n\t/**\n\t * List of standardized validation issues.\n\t */\n\tpublic readonly issues: TeezValidationIssue[];\n\n\t/**\n\t * The raw data that failed validation.\n\t */\n\tpublic readonly data: unknown;\n\n\tpublic constructor(\n\t\tmessage: string,\n\t\t{ issues, data, ...errorOptions }: TeezValidationErrorOptions,\n\t) {\n\t\tsuper(message, errorOptions);\n\n\t\tthis.issues = issues;\n\t\tthis.data = data;\n\t}\n}\n","import {\n\tTeezValidationError,\n\ttype TeezValidationIssue,\n} from \"../errors/teez-validation-error\";\nimport { type QueryParams } from \"./types\";\nimport * as z from \"zod/mini\";\n\ntype SafeParseResult = ReturnType<typeof z.safeParse>;\n\ntype SafeParseFailure = Extract<SafeParseResult, { success: false }>;\n\ntype ZodMiniError = SafeParseFailure[\"error\"];\n\n/**\n * Constructs a full URL with query parameters.\n */\nexport function buildUrl(\n\tpath: string,\n\tbaseUrl: string,\n\tqueryParams?: QueryParams,\n): string {\n\tconst url = new URL(path, baseUrl);\n\n\tif (queryParams != undefined) {\n\t\tfor (const [key, value] of Object.entries(queryParams)) {\n\t\t\tif (value == undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tfor (const item of value) {\n\t\t\t\t\turl.searchParams.append(key, String(item));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\turl.searchParams.set(key, String(value));\n\t\t\t}\n\t\t}\n\t}\n\n\treturn String(url);\n}\n\n/**\n * Converts Zod ZodError to abstract ValidationIssue[].\n */\nexport function toValidationIssues(error: ZodMiniError): TeezValidationIssue[] {\n\treturn error.issues.map((issue) => ({\n\t\tcode: issue.code,\n\t\tpath: issue.path,\n\t\tmessage: issue.message,\n\t}));\n}\n\n/**\n * Validates and parses the API response data against a schema.\n */\nexport function parseResponse<T extends z.ZodMiniType>(\n\tschema: T,\n\tdata: unknown,\n): z.output<T> {\n\tconst result = z.safeParse(schema, data);\n\n\tif (!result.success) {\n\t\tconst issues = toValidationIssues(result.error);\n\n\t\tthrow new TeezValidationError(\"Response validation failed\", {\n\t\t\tissues,\n\t\t\tdata,\n\t\t});\n\t}\n\n\treturn result.data;\n}\n","import { buildHeaders, type ResolvedTeezClientConfig } from \"../config\";\nimport { TeezApiError } from \"../errors/teez-api-error\";\nimport { TeezNetworkError } from \"../errors/teez-network-error\";\nimport { TeezTimeoutError } from \"../errors/teez-timeout-error\";\nimport { buildUrl, parseResponse } from \"./helpers\";\nimport { type HttpGetOptions, type HttpRequestOptions } from \"./types\";\nimport type * as z from \"zod/mini\";\n\n/**\n * Internal HTTP client for making API requests.\n */\nexport class HttpClient {\n\t/**\n\t * Base URL for all requests.\n\t */\n\tprivate readonly baseUrl: string;\n\n\t/**\n\t * Headers to include in all requests.\n\t */\n\tprivate readonly headers: Record<string, string>;\n\n\t/**\n\t * Request timeout in milliseconds.\n\t */\n\tprivate readonly timeout: number;\n\n\t/**\n\t * Initializes a new instance of the HttpClient.\n\t *\n\t * @param config Resolved client configuration.\n\t */\n\tpublic constructor(config: ResolvedTeezClientConfig) {\n\t\tthis.baseUrl = config.baseUrl;\n\n\t\tthis.headers = buildHeaders(config);\n\n\t\tthis.timeout = config.timeout;\n\t}\n\n\t/**\n\t * Performs a low-level HTTP request.\n\t *\n\t * @param options Request options.\n\t */\n\tpublic async request(options: HttpRequestOptions): Promise<unknown> {\n\t\tconst { url, headers, ...fetchOptions } = options;\n\n\t\tconst controller = new AbortController();\n\n\t\tconst timeoutId = setTimeout(() => {\n\t\t\tcontroller.abort();\n\t\t}, this.timeout);\n\n\t\ttry {\n\t\t\tconst response = await fetch(url, {\n\t\t\t\t...fetchOptions,\n\t\t\t\theaders: {\n\t\t\t\t\t...this.headers,\n\t\t\t\t\t...headers,\n\t\t\t\t},\n\t\t\t\tsignal: controller.signal,\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\tlet body;\n\n\t\t\t\ttry {\n\t\t\t\t\tbody = await response.json();\n\t\t\t\t} catch {\n\t\t\t\t\tbody = await response.text().catch(() => undefined);\n\t\t\t\t}\n\n\t\t\t\tthrow new TeezApiError(\n\t\t\t\t\t`API request failed: ${response.status} ${response.statusText}`,\n\t\t\t\t\t{\n\t\t\t\t\t\turl,\n\t\t\t\t\t\tstatus: response.status,\n\t\t\t\t\t\tstatusText: response.statusText,\n\t\t\t\t\t\tbody,\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn await response.json();\n\t\t} catch (error) {\n\t\t\tif (error instanceof TeezApiError) {\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tif (error instanceof DOMException && error.name === \"AbortError\") {\n\t\t\t\tthrow new TeezTimeoutError(\n\t\t\t\t\t`Request timed out after ${this.timeout}ms`,\n\t\t\t\t\t{\n\t\t\t\t\t\turl,\n\t\t\t\t\t\ttimeout: this.timeout,\n\t\t\t\t\t\tcause: error,\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthrow new TeezNetworkError(`Network request failed`, {\n\t\t\t\turl,\n\t\t\t\tcause: error,\n\t\t\t});\n\t\t} finally {\n\t\t\tclearTimeout(timeoutId);\n\t\t}\n\t}\n\n\t/**\n\t * Performs a GET request and validates the response.\n\t */\n\tpublic async get<T extends z.ZodMiniType>(\n\t\toptions: HttpGetOptions<T>,\n\t): Promise<z.output<T>> {\n\t\tconst { path, params, schema, ...rest } = options;\n\n\t\tconst url = buildUrl(path, this.baseUrl, params);\n\n\t\tconst data = await this.request({\n\t\t\turl,\n\t\t\tmethod: \"GET\",\n\t\t\t...rest,\n\t\t});\n\n\t\treturn parseResponse(schema, data);\n\t}\n}\n","import { BannersApi } from \"./api/banners/api\";\nimport { CategoriesApi } from \"./api/categories/api\";\nimport { CollectionsApi } from \"./api/collections/api\";\nimport { FeatureFlagsApi } from \"./api/feature-flags/api\";\nimport { ProductsApi } from \"./api/products/api\";\nimport { PromoApi } from \"./api/promo/api\";\nimport { ShopsApi } from \"./api/shops/api\";\nimport { SkuApi } from \"./api/sku/api\";\nimport {\n\tresolveConfig,\n\ttype ResolvedTeezClientConfig,\n\ttype TeezClientConfig,\n} from \"./config\";\nimport { HttpClient } from \"./http/client\";\n\n/**\n * Main client for interacting with the Teez B2C API.\n *\n * @example\n * const client = new TeezClient({\n * language: \"ru\",\n * timeout: 10000\n * });\n */\nexport class TeezClient {\n\t/**\n\t * Configuration used by the client.\n\t */\n\tprivate readonly config: ResolvedTeezClientConfig;\n\n\t/**\n\t * HTTP client for making requests.\n\t */\n\tprivate readonly http: HttpClient;\n\n\t/**\n\t * API for retrieving banners.\n\t */\n\tpublic readonly banners: BannersApi;\n\n\t/**\n\t * API for retrieving categories.\n\t */\n\tpublic readonly categories: CategoriesApi;\n\n\t/**\n\t * API for retrieving collections.\n\t */\n\tpublic readonly collections: CollectionsApi;\n\n\t/**\n\t * API for retrieving feature flags.\n\t */\n\tpublic readonly featureFlags: FeatureFlagsApi;\n\n\t/**\n\t * API for retrieving products.\n\t */\n\tpublic readonly products: ProductsApi;\n\n\t/**\n\t * API for retrieving promotions.\n\t */\n\tpublic readonly promo: PromoApi;\n\n\t/**\n\t * API for retrieving shops.\n\t */\n\tpublic readonly shops: ShopsApi;\n\n\t/**\n\t * API for retrieving SKU details.\n\t */\n\tpublic readonly sku: SkuApi;\n\n\t/**\n\t * Initializes a new instance of the TeezClient.\n\t *\n\t * @param config Optional client configuration.\n\t */\n\tpublic constructor(config?: TeezClientConfig) {\n\t\tthis.config = resolveConfig(config);\n\n\t\tthis.http = new HttpClient(this.config);\n\n\t\tthis.banners = new BannersApi(this.http);\n\t\tthis.categories = new CategoriesApi(this.http);\n\t\tthis.collections = new CollectionsApi(this.http);\n\t\tthis.featureFlags = new FeatureFlagsApi(this.http);\n\t\tthis.products = new ProductsApi(this.http);\n\t\tthis.promo = new PromoApi(this.http);\n\t\tthis.shops = new ShopsApi(this.http);\n\t\tthis.sku = new SkuApi(this.http);\n\t}\n\n\t/**\n\t * Returns the current client configuration.\n\t */\n\tpublic getConfig(): Readonly<ResolvedTeezClientConfig> {\n\t\treturn this.config;\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["z","http: HttpClient","z","http: HttpClient","z","z","http: HttpClient","z","http: HttpClient","z","http: HttpClient","z","http: HttpClient","z","http: HttpClient","z","http: HttpClient","DEFAULT_CONFIG: ResolvedTeezClientConfig","z"],"sources":["../src/api/banners/schemas.ts","../src/api/banners/api.ts","../src/api/categories/schemas.ts","../src/api/categories/api.ts","../src/common/schemas.ts","../src/api/collections/schemas.ts","../src/api/collections/api.ts","../src/api/feature-flags/schemas.ts","../src/api/feature-flags/api.ts","../src/api/products/schemas.ts","../src/api/products/api.ts","../src/api/promo/schemas.ts","../src/api/promo/api.ts","../src/api/shops/schemas.ts","../src/api/shops/api.ts","../src/api/sku/schemas.ts","../src/api/sku/api.ts","../src/common/constants.ts","../src/config.ts","../src/errors/teez-error.ts","../src/errors/teez-api-error.ts","../src/errors/teez-network-error.ts","../src/errors/teez-timeout-error.ts","../src/errors/teez-validation-error.ts","../src/http/helpers.ts","../src/http/client.ts","../src/client.ts"],"sourcesContent":["import * as z from \"zod/mini\";\n\n/**\n * Type literal for banner image resource type\n */\nexport const BannerImageTypeSchema = z.literal(\"network\");\n\n/**\n * Schema for a banner image.\n */\nexport const BannersApiImageSchema = z.object({\n\t/**\n\t * Type of image resource (e.g., \"network\" for remote URLs)\n\t */\n\ttype: BannerImageTypeSchema,\n\n\t/**\n\t * Direct URL to the image\n\t */\n\turl: z.string(),\n});\n\n/**\n * Type union for banner action types\n */\nexport const BannerActionTypesSchema = z.union([\n\tz.literal(\"url\"),\n\tz.literal(\"path\"),\n\tz.literal(\"key\"),\n]);\n\n/**\n * Schema for a banner action.\n */\nexport const BannersApiActionSchema = z.object({\n\t/**\n\t * Type of action - \"url\" for external links, \"path\" for app navigation, \"key\" for special actions\n\t */\n\ttype: BannerActionTypesSchema,\n\n\t/**\n\t * Target value - full URL for \"url\" type, app path for \"path\" type (e.g., \"/collection/393\"), or action key for \"key\" type\n\t */\n\tvalue: z.string(),\n\n\t/**\n\t * Key for analytics tracking\n\t */\n\tanalyticsKey: z.nullish(z.string()),\n});\n\n/**\n * Schema for a banner item containing an image and an action.\n */\nexport const BannersApiBannerItemSchema = z.object({\n\t/**\n\t * Image details for the banner\n\t */\n\timage: BannersApiImageSchema,\n\n\t/**\n\t * Action details for the banner interaction\n\t */\n\taction: BannersApiActionSchema,\n});\n\n/**\n * Response schema for the list of banners.\n */\nexport const BannersApiListResponseSchema = z.array(BannersApiBannerItemSchema);\n","import { type HttpClient } from \"../../http/client\";\nimport { type BannersApiListResponse } from \"./schema-types\";\nimport { BannersApiListResponseSchema } from \"./schemas\";\nimport { type BannersApiListParams } from \"./types\";\n\n/**\n * API for retrieving promotional and informational banners.\n */\nexport class BannersApi {\n\t/**\n\t * Initializes a new instance of the BannersApi.\n\t *\n\t * @param http HTTP client instance.\n\t */\n\tpublic constructor(private http: HttpClient) {}\n\n\t/**\n\t * Retrieves a list of active banners.\n\t *\n\t * @example\n\t * const banners = await client.banners.list();\n\t */\n\tpublic list(\n\t\tparams: BannersApiListParams = {},\n\t): Promise<BannersApiListResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: \"/api/v3/banners\",\n\t\t\tparams,\n\t\t\tschema: BannersApiListResponseSchema,\n\t\t});\n\t}\n}\n","import * as z from \"zod/mini\";\n\n/**\n * Schema for a category list item.\n */\nexport const CategoriesApiListResponseItemSchema = z.object({\n\t/**\n\t * Unique identifier of the category\n\t */\n\tid: z.number(),\n\n\t/**\n\t * Localized display name of the category\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Depth level in the category tree\n\t */\n\tlevel: z.number(),\n\n\t/**\n\t * Identifier of the parent category\n\t */\n\tparentId: z.number(),\n\n\t/**\n\t * Indicates if there are nested subcategories\n\t */\n\thasSubcategories: z.boolean(),\n\n\t/**\n\t * Indicates if the category contains adult content\n\t */\n\tisAdult: z.boolean(),\n});\n\n/**\n * Response schema for the list of categories.\n */\nexport const CategoriesApiListResponseSchema = z.array(\n\tCategoriesApiListResponseItemSchema,\n);\n\n/**\n * Response schema for getting a specific category by ID.\n */\nexport const CategoriesApiGetResponseSchema = z.object({\n\t/**\n\t * Unique identifier of the category\n\t */\n\tid: z.number(),\n\n\t/**\n\t * Localized display name of the category\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Depth level in the category tree\n\t */\n\tlevel: z.number(),\n\n\t/**\n\t * Identifier of the parent category\n\t */\n\tparentId: z.number(),\n\n\t/**\n\t * Indicates if there are nested subcategories\n\t */\n\thasSubcategories: z.boolean(),\n\n\t/**\n\t * Indicates if the category contains adult content\n\t */\n\tisAdult: z.boolean(),\n\n\t/**\n\t * List of nested subcategories.\n\t */\n\tget subcategories() {\n\t\treturn z.nullish(z.array(CategoriesApiGetResponseSchema));\n\t},\n});\n\n/**\n * Schema for a parent category item with nesting.\n */\nexport const CategoriesApiGetParentsResponseItemSchema = z.object({\n\t/**\n\t * Unique identifier of the category\n\t */\n\tid: z.number(),\n\n\t/**\n\t * Localized display name of the category\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Depth level in the category tree\n\t */\n\tlevel: z.number(),\n\n\t/**\n\t * Indicates if there are nested subcategories\n\t */\n\thasSubcategories: z.boolean(),\n\n\t/**\n\t * List of nested subcategories.\n\t */\n\tget subcategories() {\n\t\treturn z.nullish(z.array(CategoriesApiGetParentsResponseItemSchema));\n\t},\n});\n\n/**\n * Response schema for getting parent categories.\n */\nexport const CategoriesApiGetParentsResponseSchema = z.array(\n\tCategoriesApiGetParentsResponseItemSchema,\n);\n","import { type HttpClient } from \"../../http/client\";\nimport {\n\ttype CategoriesApiGetParentsResponse,\n\ttype CategoriesApiGetResponse,\n\ttype CategoriesApiListResponse,\n} from \"./schema-types\";\nimport {\n\tCategoriesApiGetParentsResponseSchema,\n\tCategoriesApiGetResponseSchema,\n\tCategoriesApiListResponseSchema,\n} from \"./schemas\";\nimport {\n\ttype CategoriesApiGetParams,\n\ttype CategoriesApiGetParentsParams,\n\ttype CategoriesApiListParams,\n} from \"./types\";\n\n/**\n * API for retrieving product category information.\n */\nexport class CategoriesApi {\n\t/**\n\t * Initializes a new instance of the CategoriesApi.\n\t *\n\t * @param http HTTP client instance.\n\t */\n\tpublic constructor(private http: HttpClient) {}\n\n\t/**\n\t * Retrieves a list of all categories.\n\t *\n\t * @example\n\t * const categories = await client.categories.list();\n\t */\n\tpublic list(\n\t\tparams: CategoriesApiListParams = {},\n\t): Promise<CategoriesApiListResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: \"/categories\",\n\t\t\tparams,\n\t\t\tschema: CategoriesApiListResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves detailed information about a specific category by its ID.\n\t *\n\t * @example\n\t * const category = await client.categories.get({\n\t * categoryId: 1234\n\t * });\n\t */\n\tpublic get(\n\t\tparams: CategoriesApiGetParams,\n\t): Promise<CategoriesApiGetResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: `/categories/${params.categoryId}`,\n\t\t\tparams,\n\t\t\tschema: CategoriesApiGetResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves parent categories for specific category IDs.\n\t *\n\t * @example\n\t * const parents = await client.categories.getParents({\n\t * categoryId: [123, 456]\n\t * });\n\t */\n\tpublic getParents(\n\t\tparams: CategoriesApiGetParentsParams,\n\t): Promise<CategoriesApiGetParentsResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: \"/api/v1/categories/parents\",\n\t\t\tparams,\n\t\t\tschema: CategoriesApiGetParentsResponseSchema,\n\t\t});\n\t}\n}\n","import * as z from \"zod/mini\";\n\n/**\n * Schema for range filter options (e.g., price slider).\n * Common schema used by multiple APIs.\n */\nexport const RangeFilterOptionSchema = z.object({\n\t/**\n\t * Minimum value for range filters\n\t */\n\tmin: z.number(),\n\n\t/**\n\t * Maximum value for range filters\n\t */\n\tmax: z.number(),\n});\n\n/**\n * Type literal for range-based filters\n */\nexport const RangeTypeSchema = z.literal(\"range\");\n\n/**\n * Schema for range filters (e.g., price slider).\n * Use this in discriminatedUnion-based filter schemas.\n */\nexport const RangeFilterSchema = z.object({\n\t/**\n\t * Filter type: range for price slider\n\t */\n\ttype: RangeTypeSchema,\n\n\t/**\n\t * Localized display name of the filter\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Unique code identifying the filter type\n\t */\n\tcode: z.string(),\n\n\t/**\n\t * List of available options for this filter\n\t */\n\toptions: z.array(RangeFilterOptionSchema),\n});\n\n/**\n * Schema for category/brand filter options.\n * Common schema used by multiple APIs.\n */\nexport const CategoryFilterOptionSchema = z.object({\n\t/**\n\t * Display label for the filter option\n\t */\n\tlabel: z.string(),\n\n\t/**\n\t * Value for the filter option\n\t */\n\tvalue: z.number(),\n});\n\n/**\n * Type union for category filter types\n */\nexport const CategoryFilterTypesSchema = z.union([\n\tz.literal(\"category\"),\n\tz.literal(\"alphabetic_search_list\"),\n]);\n\n/**\n * Schema for category/brand filters.\n * Use this in discriminatedUnion-based filter schemas.\n */\nexport const CategoryFilterSchema = z.object({\n\t/**\n\t * Filter type: category or alphabetic_search_list\n\t */\n\ttype: CategoryFilterTypesSchema,\n\n\t/**\n\t * Localized display name of the filter\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Unique code identifying the filter type\n\t */\n\tcode: z.string(),\n\n\t/**\n\t * List of available options for this filter\n\t */\n\toptions: z.array(CategoryFilterOptionSchema),\n});\n\n/**\n * Union filter schema that can be either range or category filter.\n * This is the recommended pattern for type-safe filters.\n */\nexport const FilterSchema = z.discriminatedUnion(\"type\", [\n\tRangeFilterSchema,\n\tCategoryFilterSchema,\n]);\n","import { FilterSchema } from \"../../common/schemas\";\nimport * as z from \"zod/mini\";\n\n/**\n * Type literal for collections stock availability type\n */\nexport const CollectionsStockAvailabilityTypeSchema = z.literal(\"stock\");\n\n/**\n * Schema for stock availability information.\n */\nexport const CollectionsApiStockAvailabilitySchema = z.object({\n\t/**\n\t * Type of stock status (known value: \"stock\")\n\t */\n\ttype: CollectionsStockAvailabilityTypeSchema,\n\n\t/**\n\t * SVG icon representing stock status\n\t */\n\tsvg: z.nullish(z.string()),\n\n\t/**\n\t * Localized text describing stock status (e.g., \"В наличии - осталось всего 16 штук\")\n\t */\n\ttext: z.string(),\n\n\t/**\n\t * Maximum quantity available for purchase\n\t */\n\tmaxQty: z.number(),\n\n\t/**\n\t * Localized reason text for quantity limit (e.g., \"В наличии только 16 штук\")\n\t */\n\tmaxQtyReason: z.string(),\n});\n\n/**\n * Schema for a SKU item within a collection.\n */\nexport const CollectionsApiSkuItemSchema = z.object({\n\t/**\n\t * Unique product identifier\n\t */\n\tproductId: z.number(),\n\n\t/**\n\t * Unique stock keeping unit identifier\n\t */\n\tskuId: z.number(),\n\n\t/**\n\t * URL for the full-size image\n\t */\n\timageUrl: z.string(),\n\n\t/**\n\t * Display name of the product\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Brief description of the product\n\t */\n\tshortDescription: z.string(),\n\n\t/**\n\t * URL for the small preview image\n\t */\n\tthumbnailUrl: z.string(),\n\n\t/**\n\t * Original price before discounts\n\t */\n\toriginalPrice: z.number(),\n\n\t/**\n\t * Current selling price\n\t */\n\tprice: z.number(),\n\n\t/**\n\t * Quantity available in stock\n\t */\n\tqty: z.number(),\n\n\t/**\n\t * Stock availability details\n\t */\n\tstockAvailability: z.nullish(CollectionsApiStockAvailabilitySchema),\n\n\t/**\n\t * Indicates if the item is on promotion\n\t */\n\tisPromo: z.boolean(),\n\n\t/**\n\t * Name of the promotion\n\t */\n\tpromoName: z.string(),\n\n\t/**\n\t * Popularity text indicating purchase frequency (e.g., \"Часто покупают\")\n\t */\n\tqtyPurchasedInfo: z.nullish(z.string()),\n\n\t/**\n\t * Average rating score\n\t */\n\trating: z.nullish(z.number()),\n\n\t/**\n\t * Total number of ratings\n\t */\n\tscoreQuantity: z.nullish(z.number()),\n});\n\n/**\n * Response schema for getting SKUs from a collection.\n */\nexport const CollectionsApiGetSkusResponseSchema = z.object({\n\t/**\n\t * List of applicable filters for the collection\n\t */\n\tfilters: z.array(FilterSchema),\n\n\t/**\n\t * List of SKU items in the collection\n\t */\n\titems: z.array(CollectionsApiSkuItemSchema),\n\n\t/**\n\t * Current page number\n\t */\n\tpageNumber: z.number(),\n\n\t/**\n\t * Total number of pages available\n\t */\n\ttotalPages: z.number(),\n\n\t/**\n\t * Total number of items in the collection\n\t */\n\ttotalCount: z.number(),\n\n\t/**\n\t * Indicates if there is a previous page\n\t */\n\thasPreviousPage: z.boolean(),\n\n\t/**\n\t * Indicates if there is a next page\n\t */\n\thasNextPage: z.boolean(),\n});\n\n/**\n * Schema for a collection list item.\n */\nexport const CollectionsApiListItemSchema = z.object({\n\t/**\n\t * Unique identifier of the collection\n\t */\n\tid: z.number(),\n\n\t/**\n\t * URL or path to the collection's icon\n\t */\n\ticon: z.nullish(z.string()),\n\n\t/**\n\t * Name of the collection\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Priority for sorting or display order\n\t */\n\tpriority: z.number(),\n});\n\n/**\n * Response schema for the list of collections.\n */\nexport const CollectionsApiListResponseSchema = z.array(\n\tCollectionsApiListItemSchema,\n);\n\n/**\n * Type literal for collection type identifier\n */\nexport const CollectionTypeSchema = z.literal(\"Collection\");\n\n/**\n * Response schema for getting a specific collection by ID.\n */\nexport const CollectionsApiGetResponseSchema = z.object({\n\t/**\n\t * Type of the collection (known value: \"Collection\")\n\t */\n\ttype: CollectionTypeSchema,\n\n\t/**\n\t * Unique identifier of the collection\n\t */\n\tid: z.number(),\n\n\t/**\n\t * URL for the cover image\n\t */\n\tcover: z.string(),\n\n\t/**\n\t * Description of the collection\n\t */\n\tdescription: z.string(),\n\n\t/**\n\t * Name of the collection\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Priority for sorting or display order\n\t */\n\tpriority: z.number(),\n});\n","import { type HttpClient } from \"../../http/client\";\nimport {\n\ttype CollectionsApiGetResponse,\n\ttype CollectionsApiGetSkusResponse,\n\ttype CollectionsApiListResponse,\n} from \"./schema-types\";\nimport {\n\tCollectionsApiGetResponseSchema,\n\tCollectionsApiGetSkusResponseSchema,\n\tCollectionsApiListResponseSchema,\n} from \"./schemas\";\nimport {\n\ttype CollectionsApiGetParams,\n\ttype CollectionsApiGetSkusParams,\n\ttype CollectionsApiListParams,\n} from \"./types\";\n\n/**\n * API for retrieving curated collections of products.\n */\nexport class CollectionsApi {\n\t/**\n\t * Initializes a new instance of the CollectionsApi.\n\t *\n\t * @param http HTTP client instance.\n\t */\n\tpublic constructor(private http: HttpClient) {}\n\n\t/**\n\t * Retrieves a list of SKUs belonging to a specific collection with pagination and sorting.\n\t *\n\t * @example\n\t * const skus = await client.collections.getSkus({\n\t * collectionId: 123,\n\t * pageSize: 10\n\t * });\n\t */\n\tpublic getSkus(\n\t\tparams: CollectionsApiGetSkusParams,\n\t): Promise<CollectionsApiGetSkusResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: \"/api/v2/collections/skus\",\n\t\t\tparams,\n\t\t\tschema: CollectionsApiGetSkusResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves a list of all collections.\n\t *\n\t * @example\n\t * const collections = await client.collections.list();\n\t */\n\tpublic list(\n\t\tparams: CollectionsApiListParams = {},\n\t): Promise<CollectionsApiListResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: \"/collections\",\n\t\t\tparams,\n\t\t\tschema: CollectionsApiListResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves detailed information about a specific collection by its ID.\n\t *\n\t * @example\n\t * const collection = await client.collections.get({\n\t * collectionId: 123\n\t * });\n\t */\n\tpublic get(\n\t\tparams: CollectionsApiGetParams,\n\t): Promise<CollectionsApiGetResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: `/collections/${params.collectionId}`,\n\t\t\tparams,\n\t\t\tschema: CollectionsApiGetResponseSchema,\n\t\t});\n\t}\n}\n","import * as z from \"zod/mini\";\n\n/**\n * Schema for a feature flag item.\n */\nexport const FeatureFlagsApiItemSchema = z.object({\n\t/**\n\t * Name of the feature flag\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Indicates if the feature flag is currently active\n\t */\n\tisActive: z.boolean(),\n});\n\n/**\n * Response schema for the list of feature flags.\n */\nexport const FeatureFlagsApiListResponseSchema = z.array(\n\tFeatureFlagsApiItemSchema,\n);\n","import { type HttpClient } from \"../../http/client\";\nimport { type FeatureFlagsApiListResponse } from \"./schema-types\";\nimport { FeatureFlagsApiListResponseSchema } from \"./schemas\";\nimport { type FeatureFlagsApiListParams } from \"./types\";\n\n/**\n * API for retrieving feature flags configuration.\n */\nexport class FeatureFlagsApi {\n\t/**\n\t * Initializes a new instance of the FeatureFlagsApi.\n\t *\n\t * @param http HTTP client instance.\n\t */\n\tpublic constructor(private http: HttpClient) {}\n\n\t/**\n\t * Retrieves all active feature flags.\n\t *\n\t * @example\n\t * const flags = await client.featureFlags.list();\n\t */\n\tpublic list(\n\t\tparams: FeatureFlagsApiListParams = {},\n\t): Promise<FeatureFlagsApiListResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: \"/api/v1/feature-flags\",\n\t\t\tparams,\n\t\t\tschema: FeatureFlagsApiListResponseSchema,\n\t\t});\n\t}\n}\n","import { FilterSchema } from \"../../common/schemas\";\nimport * as z from \"zod/mini\";\n\n/**\n * Type union for product sort keys\n */\nexport const ProductSortKeySchema = z.union([\n\tz.literal(\"popularity\"),\n\tz.literal(\"highestRated\"),\n\tz.literal(\"new\"),\n\tz.literal(\"price\"),\n\tz.literal(\"priceDesc\"),\n]);\n\n/**\n * Schema for a sort option.\n */\nexport const ProductsApiSortOptionSchema = z.object({\n\t/**\n\t * Sort key - \"popularity\", \"highestRated\", \"new\", \"price\", or \"priceDesc\"\n\t */\n\tkey: ProductSortKeySchema,\n\n\t/**\n\t * Localized display name of the sort option\n\t */\n\tname: z.string(),\n});\n\n/**\n * Response schema for available sort options.\n */\nexport const ProductsApiGetSortOptionsResponseSchema = z.array(\n\tProductsApiSortOptionSchema,\n);\n\n/**\n * Schema for a product review item.\n */\nexport const ProductsApiReviewItemSchema = z.object({\n\t/**\n\t * Name of the review author\n\t */\n\tauthor: z.string(),\n\n\t/**\n\t * Text content of the review\n\t */\n\treviewText: z.string(),\n\n\t/**\n\t * Rating score given in the review\n\t */\n\tscoreValue: z.number(),\n\n\t/**\n\t * Additional attributes associated with the review\n\t */\n\tattributes: z.record(z.string(), z.string()),\n\n\t/**\n\t * Date and time when the review was created\n\t */\n\tcreatedAt: z.string(),\n});\n\n/**\n * Response schema for product reviews.\n */\nexport const ProductsApiGetReviewsResponseSchema = z.object({\n\t/**\n\t * List of review items\n\t */\n\titems: z.array(ProductsApiReviewItemSchema),\n\n\t/**\n\t * Current page number\n\t */\n\tpageNumber: z.number(),\n\n\t/**\n\t * Total number of pages available\n\t */\n\ttotalPages: z.number(),\n\n\t/**\n\t * Total number of reviews\n\t */\n\ttotalCount: z.number(),\n\n\t/**\n\t * Indicates if there is a previous page\n\t */\n\thasPreviousPage: z.boolean(),\n\n\t/**\n\t * Indicates if there is a next page\n\t */\n\thasNextPage: z.boolean(),\n});\n\n/**\n * Schema for a product badge.\n */\nexport const ProductsApiBadgeSchema = z.object({\n\t/**\n\t * Background color code\n\t */\n\tbackgroundColor: z.number(),\n\n\t/**\n\t * Text label of the badge\n\t */\n\tlabel: z.string(),\n\n\t/**\n\t * Text color code\n\t */\n\ttextColor: z.number(),\n});\n\n/**\n * Type literal for products stock availability type\n */\nexport const ProductsStockAvailabilityTypeSchema = z.literal(\"stock\");\n\n/**\n * Schema for stock availability information.\n */\nexport const ProductsApiStockAvailabilitySchema = z.object({\n\t/**\n\t * Type of stock status (known value: \"stock\")\n\t */\n\ttype: ProductsStockAvailabilityTypeSchema,\n\n\t/**\n\t * SVG icon representing stock status\n\t */\n\tsvg: z.nullish(z.string()),\n\n\t/**\n\t * Localized text describing stock status (e.g., \"В наличии - осталось всего 16 штук\")\n\t */\n\ttext: z.string(),\n\n\t/**\n\t * Maximum quantity available\n\t */\n\tmaxQty: z.number(),\n\n\t/**\n\t * Localized reason text for quantity limit (e.g., \"В наличии только 16 штук\")\n\t */\n\tmaxQtyReason: z.string(),\n});\n\n/**\n * Schema for a product item.\n */\nexport const ProductsApiProductItemSchema = z.object({\n\t/**\n\t * Unique product identifier\n\t */\n\tproductId: z.number(),\n\n\t/**\n\t * Unique stock keeping unit identifier\n\t */\n\tskuId: z.number(),\n\n\t/**\n\t * URL for the full-size image\n\t */\n\timageUrl: z.string(),\n\n\t/**\n\t * Full display name of the product\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Brief description of the product\n\t */\n\tshortDescription: z.string(),\n\n\t/**\n\t * URL for the small preview image\n\t */\n\tthumbnailUrl: z.string(),\n\n\t/**\n\t * Original price before discounts\n\t */\n\toriginalPrice: z.number(),\n\n\t/**\n\t * Current selling price\n\t */\n\tprice: z.number(),\n\n\t/**\n\t * Quantity available in stock\n\t */\n\tqty: z.number(),\n\n\t/**\n\t * Stock availability details\n\t */\n\tstockAvailability: z.nullish(ProductsApiStockAvailabilitySchema),\n\n\t/**\n\t * Indicates if the product is on promotion\n\t */\n\tisPromo: z.boolean(),\n\n\t/**\n\t * Name of the promotion\n\t */\n\tpromoName: z.string(),\n\n\t/**\n\t * List of applicable promocodes\n\t */\n\tpromocodes: z.array(z.string()),\n\n\t/**\n\t * Popularity text indicating purchase frequency (e.g., \"Часто покупают\", \"11 заказов\", \"930 заказов\")\n\t */\n\tqtyPurchasedInfo: z.nullish(z.string()),\n\n\t/**\n\t * Average rating score\n\t */\n\trating: z.nullish(z.number()),\n\n\t/**\n\t * Total number of ratings\n\t */\n\tscoreQuantity: z.nullish(z.number()),\n\n\t/**\n\t * Badge information for the product\n\t */\n\tbadge: ProductsApiBadgeSchema,\n\n\t/**\n\t * Moderation status code\n\t */\n\tmoderationStatus: z.number(),\n});\n\n/**\n * Response schema for the product list.\n */\nexport const ProductsApiListResponseSchema = z.object({\n\t/**\n\t * List of applicable filters\n\t */\n\tfilters: z.array(FilterSchema),\n\n\t/**\n\t * List of product items\n\t */\n\titems: z.array(ProductsApiProductItemSchema),\n\n\t/**\n\t * Current page number\n\t */\n\tpageNumber: z.number(),\n\n\t/**\n\t * Total number of pages available\n\t */\n\ttotalPages: z.number(),\n\n\t/**\n\t * Total number of products found\n\t */\n\ttotalCount: z.number(),\n\n\t/**\n\t * Indicates if there is a previous page\n\t */\n\thasPreviousPage: z.boolean(),\n\n\t/**\n\t * Indicates if there is a next page\n\t */\n\thasNextPage: z.boolean(),\n});\n","import { type HttpClient } from \"../../http/client\";\nimport {\n\ttype ProductsApiGetReviewsResponse,\n\ttype ProductsApiGetSortOptionsResponse,\n\ttype ProductsApiListResponse,\n} from \"./schema-types\";\nimport {\n\tProductsApiGetReviewsResponseSchema,\n\tProductsApiGetSortOptionsResponseSchema,\n\tProductsApiListResponseSchema,\n} from \"./schemas\";\nimport {\n\ttype ProductsApiGetReviewsParams,\n\ttype ProductsApiGetSortOptionsParams,\n\ttype ProductsApiListParams,\n} from \"./types\";\n\n/**\n * API for retrieving product listings, details, and reviews.\n */\nexport class ProductsApi {\n\t/**\n\t * Initializes a new instance of the ProductsApi.\n\t *\n\t * @param http HTTP client instance.\n\t */\n\tpublic constructor(private http: HttpClient) {}\n\n\t/**\n\t * Retrieves available sorting options for product lists.\n\t *\n\t * @example\n\t * const sortOptions = await client.products.getSortOptions();\n\t */\n\tpublic getSortOptions(\n\t\tparams: ProductsApiGetSortOptionsParams = {},\n\t): Promise<ProductsApiGetSortOptionsResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: \"/api/product/sort-options\",\n\t\t\tparams,\n\t\t\tschema: ProductsApiGetSortOptionsResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves a list of products with optional filtering and pagination.\n\t *\n\t * @example\n\t * const products = await client.products.list({\n\t * pageSize: 20,\n\t * pageNumber: 1\n\t * });\n\t */\n\tpublic list(\n\t\tparams: ProductsApiListParams = {},\n\t): Promise<ProductsApiListResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: \"/api/v2/product\",\n\t\t\tparams,\n\t\t\tschema: ProductsApiListResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves reviews for a specific product.\n\t *\n\t * @example\n\t * const reviews = await client.products.getReviews({\n\t * productId: 12345\n\t * });\n\t */\n\tpublic getReviews(\n\t\tparams: ProductsApiGetReviewsParams,\n\t): Promise<ProductsApiGetReviewsResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: `/api/v1/product/${params.productId}/review`,\n\t\t\tparams,\n\t\t\tschema: ProductsApiGetReviewsResponseSchema,\n\t\t});\n\t}\n}\n","import * as z from \"zod/mini\";\n\n/**\n * Schema for a promotion item.\n */\nexport const PromoApiItemSchema = z.object({\n\t/**\n\t * Unique identifier of the promotion\n\t */\n\tid: z.number(),\n\n\t/**\n\t * Localized name of the promotion\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Localized detailed description of the promotion\n\t */\n\tdescription: z.nullish(z.string()),\n\n\t/**\n\t * URL to the SVG icon for the promotion\n\t */\n\tsvgUrl: z.nullish(z.string()),\n\n\t/**\n\t * Start date of the promotion\n\t */\n\tstartDate: z.string(),\n\n\t/**\n\t * End date of the promotion\n\t */\n\tendDate: z.string(),\n});\n\n/**\n * Response schema for the list of promotions.\n */\nexport const PromoApiListResponseSchema = z.array(PromoApiItemSchema);\n","import { type HttpClient } from \"../../http/client\";\nimport { type PromoApiListResponse } from \"./schema-types\";\nimport { PromoApiListResponseSchema } from \"./schemas\";\nimport { type PromoApiListParams } from \"./types\";\n\n/**\n * API for retrieving active promotions.\n */\nexport class PromoApi {\n\t/**\n\t * Initializes a new instance of the PromoApi.\n\t *\n\t * @param http HTTP client instance.\n\t */\n\tpublic constructor(private http: HttpClient) {}\n\n\t/**\n\t * Retrieves a list of all active promotions.\n\t *\n\t * @example\n\t * const promos = await client.promo.list();\n\t */\n\tpublic list(params: PromoApiListParams = {}): Promise<PromoApiListResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: \"/api/promo\",\n\t\t\tparams,\n\t\t\tschema: PromoApiListResponseSchema,\n\t\t});\n\t}\n}\n","import { FilterSchema } from \"../../common/schemas\";\nimport * as z from \"zod/mini\";\n\n/**\n * Schema for shop contact information.\n */\nexport const ShopsApiContactInfoSchema = z.object({\n\t/**\n\t * Business Identification Number\n\t */\n\tbin: z.string(),\n\n\t/**\n\t * Number of days since the shop was registered\n\t */\n\tdaysSinceRegistration: z.number(),\n\n\t/**\n\t * Legal entity type code\n\t */\n\tlegalType: z.number(),\n});\n\n/**\n * Schema for a shop tag.\n */\nexport const ShopsApiTagSchema = z.object({\n\t/**\n\t * Description of the tag\n\t */\n\tdescription: z.string(),\n\n\t/**\n\t * URL to the raster icon for the tag\n\t */\n\ticon: z.string(),\n\n\t/**\n\t * Display name of the tag\n\t */\n\tname: z.string(),\n\n\t/**\n\t * URL to the SVG icon for the tag\n\t */\n\tsvg: z.string(),\n\n\t/**\n\t * Unique code for the tag\n\t */\n\tcode: z.string(),\n});\n\n/**\n * Response schema for getting a specific shop by ID.\n */\nexport const ShopsApiGetResponseSchema = z.object({\n\t/**\n\t * Unique identifier of the shop\n\t */\n\tid: z.number(),\n\n\t/**\n\t * URL to the shop's banner image\n\t */\n\tbanner: z.nullish(z.string()),\n\n\t/**\n\t * Description of the shop\n\t */\n\tdescription: z.string(),\n\n\t/**\n\t * URL to the shop's logo\n\t */\n\tlogo: z.nullish(z.string()),\n\n\t/**\n\t * Name of the shop\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Text about total orders/purchases (e.g., \"11 заказов\", \"930 заказов\")\n\t */\n\tqtyPurchasedInfo: z.nullish(z.string()),\n\n\t/**\n\t * Average rating of the shop\n\t */\n\trating: z.nullish(z.number()),\n\n\t/**\n\t * Total number of reviews received\n\t */\n\ttotalReviews: z.nullish(z.number()),\n\n\t/**\n\t * Contact information for the shop\n\t */\n\tcontactInfo: ShopsApiContactInfoSchema,\n\n\t/**\n\t * Indicates if the shop represents a single brand\n\t */\n\tisMonobrand: z.boolean(),\n\n\t/**\n\t * Tag associated with the shop\n\t */\n\ttag: ShopsApiTagSchema,\n});\n\n/**\n * Schema for a shop item in a list.\n */\nexport const ShopsApiShopItemSchema = z.object({\n\t/**\n\t * Unique identifier of the shop\n\t */\n\tid: z.number(),\n\n\t/**\n\t * URL to the shop's icon\n\t */\n\ticon: z.string(),\n});\n\n/**\n * Response schema for the monobrand shop list.\n */\nexport const ShopsApiGetMonobrandResponseSchema = z.object({\n\t/**\n\t * List of monobrand shops\n\t */\n\titems: z.array(ShopsApiShopItemSchema),\n\n\t/**\n\t * Current page number\n\t */\n\tpageNumber: z.number(),\n\n\t/**\n\t * Total number of pages available\n\t */\n\ttotalPages: z.number(),\n\n\t/**\n\t * Total number of shops found\n\t */\n\ttotalCount: z.number(),\n\n\t/**\n\t * Indicates if there is a previous page\n\t */\n\thasPreviousPage: z.boolean(),\n\n\t/**\n\t * Indicates if there is a next page\n\t */\n\thasNextPage: z.boolean(),\n});\n\n/**\n * Type literal for shops stock availability type\n */\nexport const ShopsStockAvailabilityTypeSchema = z.literal(\"stock\");\n\n/**\n * Schema for stock availability information.\n */\nexport const ShopsApiStockAvailabilitySchema = z.object({\n\t/**\n\t * Type of stock status (known value: \"stock\")\n\t */\n\ttype: ShopsStockAvailabilityTypeSchema,\n\n\t/**\n\t * SVG icon representing stock status\n\t */\n\tsvg: z.nullish(z.string()),\n\n\t/**\n\t * Localized text describing stock status (e.g., \"В наличии - осталось всего 16 штук\")\n\t */\n\ttext: z.string(),\n\n\t/**\n\t * Maximum quantity available\n\t */\n\tmaxQty: z.number(),\n\n\t/**\n\t * Localized reason text for quantity limit (e.g., \"В наличии только 16 штук\")\n\t */\n\tmaxQtyReason: z.string(),\n});\n\n/**\n * Schema for a product item in a shop.\n */\nexport const ShopsApiProductItemSchema = z.object({\n\t/**\n\t * Unique product identifier\n\t */\n\tproductId: z.number(),\n\n\t/**\n\t * Unique stock keeping unit identifier\n\t */\n\tskuId: z.number(),\n\n\t/**\n\t * URL for the full-size image\n\t */\n\timageUrl: z.string(),\n\n\t/**\n\t * Full display name of the product\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Brief description of the product\n\t */\n\tshortDescription: z.string(),\n\n\t/**\n\t * URL for the small preview image\n\t */\n\tthumbnailUrl: z.string(),\n\n\t/**\n\t * Original price before discounts\n\t */\n\toriginalPrice: z.number(),\n\n\t/**\n\t * Current selling price\n\t */\n\tprice: z.number(),\n\n\t/**\n\t * Indicates if the item is in stock\n\t */\n\tinStock: z.boolean(),\n\n\t/**\n\t * Quantity available in stock\n\t */\n\tqty: z.number(),\n\n\t/**\n\t * Stock availability details\n\t */\n\tstockAvailability: z.nullish(ShopsApiStockAvailabilitySchema),\n\n\t/**\n\t * Indicates if the product is on promotion\n\t */\n\tisPromo: z.boolean(),\n\n\t/**\n\t * Name of the promotion\n\t */\n\tpromoName: z.string(),\n\n\t/**\n\t * Popularity text indicating purchase frequency (e.g., \"Часто покупают\")\n\t */\n\tqtyPurchasedInfo: z.nullish(z.string()),\n\n\t/**\n\t * Average rating score\n\t */\n\trating: z.nullish(z.number()),\n\n\t/**\n\t * Total number of ratings\n\t */\n\tscoreQuantity: z.nullish(z.number()),\n\n\t/**\n\t * Moderation status code\n\t */\n\tmoderationStatus: z.number(),\n});\n\n/**\n * Response schema for products from a specific shop.\n */\nexport const ShopsApiGetProductsResponseSchema = z.object({\n\t/**\n\t * List of applicable filters\n\t */\n\tfilters: z.array(FilterSchema),\n\n\t/**\n\t * List of product items\n\t */\n\titems: z.array(ShopsApiProductItemSchema),\n\n\t/**\n\t * Current page number\n\t */\n\tpageNumber: z.number(),\n\n\t/**\n\t * Total number of pages available\n\t */\n\ttotalPages: z.number(),\n\n\t/**\n\t * Total number of products found\n\t */\n\ttotalCount: z.number(),\n\n\t/**\n\t * Indicates if there is a previous page\n\t */\n\thasPreviousPage: z.boolean(),\n\n\t/**\n\t * Indicates if there is a next page\n\t */\n\thasNextPage: z.boolean(),\n});\n","import { type HttpClient } from \"../../http/client\";\nimport {\n\ttype ShopsApiGetMonobrandResponse,\n\ttype ShopsApiGetProductsResponse,\n\ttype ShopsApiGetResponse,\n} from \"./schema-types\";\nimport {\n\tShopsApiGetMonobrandResponseSchema,\n\tShopsApiGetProductsResponseSchema,\n\tShopsApiGetResponseSchema,\n} from \"./schemas\";\nimport {\n\ttype ShopsApiGetMonobrandParams,\n\ttype ShopsApiGetParams,\n\ttype ShopsApiGetProductsParams,\n} from \"./types\";\n\n/**\n * API for interacting with shop-related endpoints.\n */\nexport class ShopsApi {\n\t/**\n\t * Initializes a new instance of the ShopsApi.\n\t *\n\t * @param http HTTP client instance.\n\t */\n\tpublic constructor(private http: HttpClient) {}\n\n\t/**\n\t * Retrieves details of a specific shop.\n\t *\n\t * @example\n\t * const shop = await client.shops.get({\n\t * shopId: 123\n\t * });\n\t */\n\tpublic get(params: ShopsApiGetParams): Promise<ShopsApiGetResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: `/api/v1/shops/${params.shopId}`,\n\t\t\tparams,\n\t\t\tschema: ShopsApiGetResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves monobrand shop details.\n\t *\n\t * @example\n\t * const monobrand = await client.shops.getMonobrand();\n\t */\n\tpublic getMonobrand(\n\t\tparams: ShopsApiGetMonobrandParams = {},\n\t): Promise<ShopsApiGetMonobrandResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: \"/api/v1/shops/monobrand\",\n\t\t\tparams,\n\t\t\tschema: ShopsApiGetMonobrandResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves products for a specific shop.\n\t *\n\t * @example\n\t * const shopProducts = await client.shops.getProducts({\n\t * shopId: 123,\n\t * pageSize: 10\n\t * });\n\t */\n\tpublic getProducts(\n\t\tparams: ShopsApiGetProductsParams,\n\t): Promise<ShopsApiGetProductsResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: `/api/v2/shops/${params.shopId}/products`,\n\t\t\tparams,\n\t\t\tschema: ShopsApiGetProductsResponseSchema,\n\t\t});\n\t}\n}\n","import * as z from \"zod/mini\";\n\n/**\n * Schema for installment payment information.\n */\nexport const SkuApiInstallmentSchema = z.object({\n\t/**\n\t * URL to the installment SVG icon\n\t */\n\tinstallmentSvg: z.string(),\n\n\t/**\n\t * Description of the installment term\n\t */\n\tinstallmentTerm: z.string(),\n});\n\n/**\n * Schema for shop details associated with a SKU.\n */\nexport const SkuApiShopSchema = z.object({\n\t/**\n\t * Unique identifier of the shop\n\t */\n\tid: z.number(),\n\n\t/**\n\t * URL to the shop's logo\n\t */\n\tlogo: z.nullish(z.string()),\n\n\t/**\n\t * Name of the shop\n\t */\n\tname: z.string(),\n\n\t/**\n\t * URL to the shop's photo\n\t */\n\tphoto: z.string(),\n\n\t/**\n\t * URL to the shop's page or resource\n\t */\n\turl: z.string(),\n\n\t/**\n\t * Indicates if installment payment is available\n\t */\n\tisInstallment: z.boolean(),\n\n\t/**\n\t * Popularity text for the shop (e.g., \"Часто покупают\", \"11 заказов\")\n\t */\n\tqtyPurchasedInfo: z.nullish(z.string()),\n\n\t/**\n\t * Average rating of the shop\n\t */\n\trating: z.nullish(z.number()),\n\n\t/**\n\t * Number of days since the shop was registered\n\t */\n\tdaysSinceRegistration: z.number(),\n\n\t/**\n\t * Indicates if the shop represents a single brand\n\t */\n\tisMonobrand: z.boolean(),\n});\n\n/**\n * Schema for brand information.\n */\nexport const SkuApiBrandSchema = z.object({\n\t/**\n\t * Unique identifier of the brand\n\t */\n\tid: z.number(),\n\n\t/**\n\t * Name of the brand\n\t */\n\tname: z.string(),\n});\n\n/**\n * Schema for a category item.\n */\nexport const SkuApiCategorySchema = z.object({\n\t/**\n\t * Unique identifier of the category\n\t */\n\tid: z.number(),\n\n\t/**\n\t * Name of the category\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Indicates if this is the primary category for the product\n\t */\n\tisPrimary: z.boolean(),\n});\n\n/**\n * Schema for an attribute property value.\n */\nexport const SkuApiAttributePropertyValueSchema = z.object({\n\t/**\n\t * Name of the property value (e.g., \"Red\", \"XL\")\n\t */\n\tname: z.string(),\n\n\t/**\n\t * URL to a photo representing this property value\n\t */\n\tphoto: z.string(),\n});\n\n/**\n * Schema for a product attribute.\n */\nexport const SkuApiAttributePropertySchema = z.object({\n\t/**\n\t * Name of the attribute (e.g., \"Color\", \"Size\")\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Value details for the attribute\n\t */\n\tvalue: SkuApiAttributePropertyValueSchema,\n});\n\n/**\n * Schema for SKU attributes configuration.\n */\nexport const SkuApiAttributeSchema = z.object({\n\t/**\n\t * SKU ID associated with this specific attribute combination\n\t */\n\tskuId: z.number(),\n\n\t/**\n\t * Quantity available for this specific variant\n\t */\n\tquantity: z.number(),\n\n\t/**\n\t * List of properties defining this variant\n\t */\n\tattributeProperties: z.array(SkuApiAttributePropertySchema),\n});\n\n/**\n * Schema for a product tag.\n */\nexport const SkuApiTagSchema = z.object({\n\t/**\n\t * Type of the tag\n\t */\n\ttype: z.string(),\n\n\t/**\n\t * Display name of the tag\n\t */\n\tname: z.string(),\n\n\t/**\n\t * URL to the SVG icon for the tag\n\t */\n\tsvg: z.string(),\n\n\t/**\n\t * Value associated with the tag\n\t */\n\tvalue: z.nullish(z.string()),\n});\n\n/**\n * Type literal for SKU stock availability type\n */\nexport const SkuStockAvailabilityTypeSchema = z.literal(\"stock\");\n\n/**\n * Schema for stock availability information.\n */\nexport const SkuApiStockAvailabilitySchema = z.object({\n\t/**\n\t * Type of stock status (known value: \"stock\")\n\t */\n\ttype: SkuStockAvailabilityTypeSchema,\n\n\t/**\n\t * SVG icon representing stock status\n\t */\n\tsvg: z.nullish(z.string()),\n\n\t/**\n\t * Localized text describing stock status (e.g., \"В наличии - осталось всего 16 штук\")\n\t */\n\ttext: z.string(),\n\n\t/**\n\t * Maximum quantity available\n\t */\n\tmaxQty: z.number(),\n\n\t/**\n\t * Localized reason text for quantity limit (e.g., \"В наличии только 16 штук\")\n\t */\n\tmaxQtyReason: z.string(),\n});\n\n/**\n * Response schema for getting a specific SKU by ID.\n */\nexport const SkuApiGetResponseSchema = z.object({\n\t/**\n\t * Unique product identifier\n\t */\n\tproductId: z.number(),\n\n\t/**\n\t * Unique stock keeping unit identifier\n\t */\n\tskuId: z.number(),\n\n\t/**\n\t * Detailed product description in HTML format\n\t */\n\tdescription: z.string(),\n\n\t/**\n\t * Full display name of the product\n\t */\n\tname: z.string(),\n\n\t/**\n\t * List of URLs for product photos\n\t */\n\tphotos: z.array(z.string()),\n\n\t/**\n\t * Brief summary of the product\n\t */\n\tshortDescription: z.string(),\n\n\t/**\n\t * Discount amount\n\t */\n\tdiscount: z.number(),\n\n\t/**\n\t * Original price before discounts\n\t */\n\toriginalPrice: z.number(),\n\n\t/**\n\t * Discount percentage\n\t */\n\tpercentDiscount: z.number(),\n\n\t/**\n\t * Current selling price\n\t */\n\tprice: z.number(),\n\n\t/**\n\t * Quantity available in stock\n\t */\n\tqty: z.number(),\n\n\t/**\n\t * Stock availability details\n\t */\n\tstockAvailability: z.nullish(SkuApiStockAvailabilitySchema),\n\n\t/**\n\t * Installment payment options\n\t */\n\tinstallment: z.nullish(SkuApiInstallmentSchema),\n\n\t/**\n\t * Indicates if the product is on promotion\n\t */\n\tisPromo: z.boolean(),\n\n\t/**\n\t * Name of the promotion\n\t */\n\tpromoName: z.string(),\n\n\t/**\n\t * List of applicable promocodes\n\t */\n\tpromocodes: z.array(z.string()),\n\n\t/**\n\t * Popularity text indicating purchase frequency (e.g., \"Часто покупают\", \"11 заказов\", \"930 заказов\")\n\t */\n\tqtyPurchasedInfo: z.nullish(z.string()),\n\n\t/**\n\t * Average rating score\n\t */\n\trating: z.nullish(z.number()),\n\n\t/**\n\t * Total number of ratings\n\t */\n\tscoreQuantity: z.nullish(z.number()),\n\n\t/**\n\t * Total number of text reviews\n\t */\n\ttextReviewQuantity: z.nullish(z.number()),\n\n\t/**\n\t * Brand information\n\t */\n\tbrand: z.nullish(SkuApiBrandSchema),\n\n\t/**\n\t * List of categories the product belongs to\n\t */\n\tcategories: z.array(SkuApiCategorySchema),\n\n\t/**\n\t * Details of the shop selling the product\n\t */\n\tshop: SkuApiShopSchema,\n\n\t/**\n\t * Dictionary of additional product information\n\t */\n\tadditionalInfo: z.record(z.string(), z.string()),\n\n\t/**\n\t * List of available attribute variants\n\t */\n\tattributes: z.array(SkuApiAttributeSchema),\n\n\t/**\n\t * List of tags associated with the product\n\t */\n\ttags: z.array(SkuApiTagSchema),\n});\n\n/**\n * Schema for a similar product item.\n */\nexport const SkuApiSimilarItemSchema = z.object({\n\t/**\n\t * Unique product identifier\n\t */\n\tproductId: z.number(),\n\n\t/**\n\t * Unique stock keeping unit identifier\n\t */\n\tskuId: z.number(),\n\n\t/**\n\t * URL for the full-size image\n\t */\n\timageUrl: z.string(),\n\n\t/**\n\t * Display name of the similar product\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Brief description of the similar product\n\t */\n\tshortDescription: z.string(),\n\n\t/**\n\t * URL for the small preview image\n\t */\n\tthumbnailUrl: z.string(),\n\n\t/**\n\t * Original price before discounts\n\t */\n\toriginalPrice: z.number(),\n\n\t/**\n\t * Current selling price\n\t */\n\tprice: z.number(),\n\n\t/**\n\t * Quantity available in stock\n\t */\n\tqty: z.number(),\n\n\t/**\n\t * Indicates if the product is on promotion\n\t */\n\tisPromo: z.boolean(),\n\n\t/**\n\t * Name of the promotion\n\t */\n\tpromoName: z.string(),\n\n\t/**\n\t * Popularity text indicating purchase frequency (e.g., \"Часто покупают\")\n\t */\n\tqtyPurchasedInfo: z.nullish(z.string()),\n\n\t/**\n\t * Average rating score\n\t */\n\trating: z.nullish(z.number()),\n\n\t/**\n\t * Total number of ratings\n\t */\n\tscoreQuantity: z.nullish(z.number()),\n\n\t/**\n\t * Moderation status code\n\t */\n\tmoderationStatus: z.number(),\n});\n\n/**\n * Response schema for similar SKUs.\n */\nexport const SkuApiGetSimilarResponseSchema = z.object({\n\t/**\n\t * List of similar product items\n\t */\n\titems: z.array(SkuApiSimilarItemSchema),\n\n\t/**\n\t * Current page number\n\t */\n\tpageNumber: z.number(),\n\n\t/**\n\t * Total number of pages available\n\t */\n\ttotalPages: z.number(),\n\n\t/**\n\t * Total number of similar items found\n\t */\n\ttotalCount: z.number(),\n\n\t/**\n\t * Indicates if there is a previous page\n\t */\n\thasPreviousPage: z.boolean(),\n\n\t/**\n\t * Indicates if there is a next page\n\t */\n\thasNextPage: z.boolean(),\n});\n\n/**\n * Schema for a collection item.\n */\nexport const SkuApiCollectionItemSchema = z.object({\n\t/**\n\t * Unique identifier of the collection\n\t */\n\tid: z.number(),\n\n\t/**\n\t * URL for the collection's cover image\n\t */\n\tcover: z.string(),\n\n\t/**\n\t * URL to the collection's icon\n\t */\n\ticon: z.string(),\n\n\t/**\n\t * Name of the collection\n\t */\n\tname: z.string(),\n\n\t/**\n\t * Number of items in the collection\n\t */\n\tquantity: z.number(),\n\n\t/**\n\t * Priority for sorting or display order\n\t */\n\tpriority: z.number(),\n});\n\n/**\n * Response schema for SKU collections.\n */\nexport const SkuApiGetCollectionsResponseSchema = z.array(\n\tSkuApiCollectionItemSchema,\n);\n\n/**\n * Response schema for review availability check.\n */\nexport const SkuApiGetReviewAvailableResponseSchema = z.object({\n\t/**\n\t * Description of the review availability status\n\t */\n\tdescription: z.string(),\n\n\t/**\n\t * Message regarding review availability\n\t */\n\tmessage: z.string(),\n});\n","import { type HttpClient } from \"../../http/client\";\nimport {\n\ttype SkuApiGetCollectionsResponse,\n\ttype SkuApiGetResponse,\n\ttype SkuApiGetReviewAvailableResponse,\n\ttype SkuApiGetSimilarResponse,\n} from \"./schema-types\";\nimport {\n\tSkuApiGetCollectionsResponseSchema,\n\tSkuApiGetResponseSchema,\n\tSkuApiGetReviewAvailableResponseSchema,\n\tSkuApiGetSimilarResponseSchema,\n} from \"./schemas\";\nimport {\n\ttype SkuApiGetCollectionsParams,\n\ttype SkuApiGetParams,\n\ttype SkuApiGetReviewAvailableParams,\n\ttype SkuApiGetSimilarParams,\n} from \"./types\";\n\n/**\n * API for interacting with SKU-related endpoints.\n */\nexport class SkuApi {\n\t/**\n\t * Initializes a new instance of the SkuApi.\n\t *\n\t * @param http HTTP client instance.\n\t */\n\tpublic constructor(private http: HttpClient) {}\n\n\t/**\n\t * Retrieves details of a specific SKU.\n\t *\n\t * @example\n\t * const sku = await client.sku.get({\n\t * skuId: 123\n\t * });\n\t */\n\tpublic get(params: SkuApiGetParams): Promise<SkuApiGetResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: `/api/v2/sku/${params.skuId}`,\n\t\t\tparams,\n\t\t\tschema: SkuApiGetResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves similar SKUs.\n\t *\n\t * @example\n\t * const similar = await client.sku.getSimilar({\n\t * skuId: 123\n\t * });\n\t */\n\tpublic getSimilar(\n\t\tparams: SkuApiGetSimilarParams,\n\t): Promise<SkuApiGetSimilarResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: \"/api/v2/sku/similar-skus\",\n\t\t\tparams,\n\t\t\tschema: SkuApiGetSimilarResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves collections associated with a SKU.\n\t *\n\t * @example\n\t * const collections = await client.sku.getCollections({\n\t * skuId: 123\n\t * });\n\t */\n\tpublic getCollections(\n\t\tparams: SkuApiGetCollectionsParams,\n\t): Promise<SkuApiGetCollectionsResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: `/sku/${params.skuId}/collections`,\n\t\t\tparams,\n\t\t\tschema: SkuApiGetCollectionsResponseSchema,\n\t\t});\n\t}\n\n\t/**\n\t * Checks if a review is available for a SKU.\n\t *\n\t * @example\n\t * const isAvailable = await client.sku.getReviewAvailable({\n\t * skuId: 123\n\t * });\n\t */\n\tpublic getReviewAvailable(\n\t\tparams: SkuApiGetReviewAvailableParams,\n\t): Promise<SkuApiGetReviewAvailableResponse> {\n\t\treturn this.http.get({\n\t\t\tpath: `/sku/${params.skuId}/review-available`,\n\t\t\tparams,\n\t\t\tschema: SkuApiGetReviewAvailableResponseSchema,\n\t\t});\n\t}\n}\n","/**\n * The default base URL for the Teez B2C API.\n */\nexport const BASE_URL = \"https://b2c-api.teez.kz\";\n\n/**\n * Supported languages for the API.\n */\nexport const LANGUAGES = {\n\t/**\n\t * Russian language\n\t */\n\tRU: \"ru\",\n\n\t/**\n\t * Kazakh language\n\t */\n\tKZ: \"kz\",\n} as const;\n\n/**\n * Default application version code.\n */\nexport const DEFAULT_APP_VERSION = \"193\";\n","import { BASE_URL, DEFAULT_APP_VERSION } from \"./common/constants\";\nimport { type Language } from \"./common/types\";\n\n/**\n * Configuration options for the Teez client.\n */\nexport interface TeezClientConfig {\n\t/**\n\t * Base URL for the API.\n\t * @default \"https://b2c-api.teez.kz\"\n\t */\n\tbaseUrl?: string;\n\n\t/**\n\t * Application version string.\n\t * @default \"193\"\n\t */\n\tappVersion?: string;\n\n\t/**\n\t * Language for API responses.\n\t * @default \"ru\"\n\t */\n\tlanguage?: Language;\n\n\t/**\n\t * Request timeout in milliseconds.\n\t * @default 30000\n\t */\n\ttimeout?: number;\n\n\t/**\n\t * Custom headers to include in all requests.\n\t */\n\theaders?: Record<string, string>;\n}\n\n/**\n * Fully resolved configuration with defaults applied.\n */\nexport interface ResolvedTeezClientConfig {\n\t/**\n\t * Base URL for the API.\n\t */\n\treadonly baseUrl: string;\n\n\t/**\n\t * Application version string.\n\t */\n\treadonly appVersion: string;\n\n\t/**\n\t * Language for API responses.\n\t */\n\treadonly language: Language;\n\n\t/**\n\t * Request timeout in milliseconds.\n\t */\n\treadonly timeout: number;\n\n\t/**\n\t * Custom headers included in requests.\n\t */\n\treadonly headers: Readonly<Record<string, string>>;\n}\n\n/**\n * Default configuration values.\n */\nexport const DEFAULT_CONFIG: ResolvedTeezClientConfig = {\n\tbaseUrl: BASE_URL,\n\tappVersion: DEFAULT_APP_VERSION,\n\tlanguage: \"ru\",\n\ttimeout: 30_000,\n\theaders: {},\n};\n\n/**\n * Merges user configuration with defaults.\n */\nexport function resolveConfig(\n\tconfig?: TeezClientConfig,\n): ResolvedTeezClientConfig {\n\treturn {\n\t\tbaseUrl: config?.baseUrl ?? DEFAULT_CONFIG.baseUrl,\n\t\tappVersion: config?.appVersion ?? DEFAULT_CONFIG.appVersion,\n\t\tlanguage: config?.language ?? DEFAULT_CONFIG.language,\n\t\ttimeout: config?.timeout ?? DEFAULT_CONFIG.timeout,\n\t\theaders: {\n\t\t\t...DEFAULT_CONFIG.headers,\n\t\t\t...config?.headers,\n\t\t},\n\t};\n}\n\n/**\n * Builds a standard user-agent string for the Teez client.\n */\nexport function buildUserAgent(appVersion: string): string {\n\treturn `android;kz.teez.customer;${appVersion}`;\n}\n\n/**\n * Builds the headers object for API requests based on configuration.\n */\nexport function buildHeaders(\n\tconfig: ResolvedTeezClientConfig,\n): Record<string, string> {\n\treturn {\n\t\t\"accept-language\": config.language,\n\t\t\"user-agent\": buildUserAgent(config.appVersion),\n\t\t\"x-app-version\": config.appVersion,\n\t\t...config.headers,\n\t};\n}\n","/**\n * Base error class for all SDK-related errors.\n */\nexport class TeezError extends Error {\n\tpublic override name = \"TeezError\";\n}\n","import { TeezError } from \"./teez-error\";\n\n/**\n * Options for constructing a TeezApiError.\n */\nexport interface TeezApiErrorOptions extends ErrorOptions {\n\t/**\n\t * URL of the request that failed.\n\t */\n\turl: string;\n\n\t/**\n\t * HTTP status code.\n\t */\n\tstatus: number;\n\n\t/**\n\t * HTTP status text.\n\t */\n\tstatusText: string;\n\n\t/**\n\t * Response body, if any.\n\t */\n\tbody?: unknown;\n}\n\n/**\n * Error thrown when the API response indicates a failure (4xx or 5xx status).\n */\nexport class TeezApiError extends TeezError {\n\tpublic override name = \"TeezApiError\";\n\n\t/**\n\t * HTTP status code.\n\t */\n\tpublic readonly status: number;\n\n\t/**\n\t * HTTP status text.\n\t */\n\tpublic readonly statusText: string;\n\n\t/**\n\t * URL of the request that failed.\n\t */\n\tpublic readonly url: string;\n\n\t/**\n\t * Response body, if available.\n\t */\n\tpublic readonly body?: unknown;\n\n\tpublic constructor(\n\t\tmessage: string,\n\t\t{ url, status, statusText, body, ...errorOptions }: TeezApiErrorOptions,\n\t) {\n\t\tsuper(message, errorOptions);\n\n\t\tthis.status = status;\n\t\tthis.statusText = statusText;\n\t\tthis.url = url;\n\t\tthis.body = body;\n\t}\n\n\t/**\n\t * Checks if the status code is a client error (4xx).\n\t */\n\tpublic get isClientError(): boolean {\n\t\treturn this.status >= 400 && this.status < 500;\n\t}\n\n\t/**\n\t * Checks if the status code is a server error (5xx).\n\t */\n\tpublic get isServerError(): boolean {\n\t\treturn this.status >= 500;\n\t}\n\n\t/**\n\t * Checks if the status code indicates a Not Found error (404).\n\t */\n\tpublic get isNotFound(): boolean {\n\t\treturn this.status === 404;\n\t}\n}\n","import { TeezError } from \"./teez-error\";\n\n/**\n * Options for constructing a TeezNetworkError.\n */\nexport interface TeezNetworkErrorOptions extends ErrorOptions {\n\t/**\n\t * URL of the request that failed.\n\t */\n\turl: string;\n}\n\n/**\n * Error thrown when a network request fails (e.g., DNS resolution, connection refused).\n */\nexport class TeezNetworkError extends TeezError {\n\tpublic override name = \"TeezNetworkError\";\n\n\t/**\n\t * URL of the request that failed.\n\t */\n\tpublic readonly url: string;\n\n\tpublic constructor(\n\t\tmessage: string,\n\t\t{ url, ...errorOptions }: TeezNetworkErrorOptions,\n\t) {\n\t\tsuper(message, errorOptions);\n\n\t\tthis.url = url;\n\t}\n}\n","import { TeezError } from \"./teez-error\";\n\n/**\n * Options for constructing a TeezTimeoutError.\n */\nexport interface TeezTimeoutErrorOptions extends ErrorOptions {\n\t/**\n\t * URL of the request that timed out.\n\t */\n\turl: string;\n\n\t/**\n\t * Timeout duration in milliseconds.\n\t */\n\ttimeout: number;\n}\n\n/**\n * Error thrown when an API request times out.\n */\nexport class TeezTimeoutError extends TeezError {\n\tpublic override name = \"TeezTimeoutError\";\n\n\t/**\n\t * URL of the request that timed out.\n\t */\n\tpublic readonly url: string;\n\n\t/**\n\t * Timeout duration in milliseconds.\n\t */\n\tpublic readonly timeout: number;\n\n\tpublic constructor(\n\t\tmessage: string,\n\t\t{ url, timeout, ...errorOptions }: TeezTimeoutErrorOptions,\n\t) {\n\t\tsuper(message, errorOptions);\n\n\t\tthis.url = url;\n\t\tthis.timeout = timeout;\n\t}\n}\n","import { TeezError } from \"./teez-error\";\n\n/**\n * Abstract representation of a validation issue.\n */\nexport interface TeezValidationIssue {\n\t/**\n\t * Error code (e.g., \"invalid_type\", \"too_small\").\n\t */\n\tcode: string;\n\n\t/**\n\t * The path to the invalid field (array format).\n\t */\n\tpath: (string | number | symbol)[];\n\n\t/**\n\t * Human-readable error message.\n\t */\n\tmessage: string;\n}\n\n/**\n * Options for constructing a TeezValidationError.\n */\nexport interface TeezValidationErrorOptions extends ErrorOptions {\n\t/**\n\t * List of generic validation issues.\n\t */\n\tissues: TeezValidationIssue[];\n\n\t/**\n\t * The full data object that failed validation.\n\t */\n\tdata?: unknown;\n}\n\n/**\n * Error thrown when validation fails.\n */\nexport class TeezValidationError extends TeezError {\n\tpublic override name = \"TeezValidationError\";\n\n\t/**\n\t * List of standardized validation issues.\n\t */\n\tpublic readonly issues: TeezValidationIssue[];\n\n\t/**\n\t * The raw data that failed validation.\n\t */\n\tpublic readonly data: unknown;\n\n\tpublic constructor(\n\t\tmessage: string,\n\t\t{ issues, data, ...errorOptions }: TeezValidationErrorOptions,\n\t) {\n\t\tsuper(message, errorOptions);\n\n\t\tthis.issues = issues;\n\t\tthis.data = data;\n\t}\n}\n","import {\n\tTeezValidationError,\n\ttype TeezValidationIssue,\n} from \"../errors/teez-validation-error\";\nimport { type QueryParams } from \"./types\";\nimport * as z from \"zod/mini\";\n\ntype SafeParseResult = ReturnType<typeof z.safeParse>;\n\ntype SafeParseFailure = Extract<SafeParseResult, { success: false }>;\n\ntype ZodMiniError = SafeParseFailure[\"error\"];\n\n/**\n * Constructs a full URL with query parameters.\n */\nexport function buildUrl(\n\tpath: string,\n\tbaseUrl: string,\n\tqueryParams?: QueryParams,\n): string {\n\tconst url = new URL(path, baseUrl);\n\n\tif (queryParams != undefined) {\n\t\tfor (const [key, value] of Object.entries(queryParams)) {\n\t\t\tif (value == undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tfor (const item of value) {\n\t\t\t\t\turl.searchParams.append(key, String(item));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\turl.searchParams.set(key, String(value));\n\t\t\t}\n\t\t}\n\t}\n\n\treturn String(url);\n}\n\n/**\n * Converts Zod ZodError to abstract ValidationIssue[].\n */\nexport function toValidationIssues(error: ZodMiniError): TeezValidationIssue[] {\n\treturn error.issues.map((issue) => ({\n\t\tcode: issue.code,\n\t\tpath: issue.path,\n\t\tmessage: issue.message,\n\t}));\n}\n\n/**\n * Validates and parses the API response data against a schema.\n */\nexport function parseResponse<T extends z.ZodMiniType>(\n\tschema: T,\n\tdata: unknown,\n): z.output<T> {\n\tconst result = z.safeParse(schema, data);\n\n\tif (!result.success) {\n\t\tconst issues = toValidationIssues(result.error);\n\n\t\tthrow new TeezValidationError(\"Response validation failed\", {\n\t\t\tissues,\n\t\t\tdata,\n\t\t});\n\t}\n\n\treturn result.data;\n}\n","import { buildHeaders, type ResolvedTeezClientConfig } from \"../config\";\nimport { TeezApiError } from \"../errors/teez-api-error\";\nimport { TeezNetworkError } from \"../errors/teez-network-error\";\nimport { TeezTimeoutError } from \"../errors/teez-timeout-error\";\nimport { buildUrl, parseResponse } from \"./helpers\";\nimport { type HttpGetOptions, type HttpRequestOptions } from \"./types\";\nimport type * as z from \"zod/mini\";\n\n/**\n * Internal HTTP client for making API requests.\n */\nexport class HttpClient {\n\t/**\n\t * Base URL for all requests.\n\t */\n\tprivate readonly baseUrl: string;\n\n\t/**\n\t * Headers to include in all requests.\n\t */\n\tprivate readonly headers: Record<string, string>;\n\n\t/**\n\t * Request timeout in milliseconds.\n\t */\n\tprivate readonly timeout: number;\n\n\t/**\n\t * Initializes a new instance of the HttpClient.\n\t *\n\t * @param config Resolved client configuration.\n\t */\n\tpublic constructor(config: ResolvedTeezClientConfig) {\n\t\tthis.baseUrl = config.baseUrl;\n\n\t\tthis.headers = buildHeaders(config);\n\n\t\tthis.timeout = config.timeout;\n\t}\n\n\t/**\n\t * Performs a low-level HTTP request.\n\t *\n\t * @param options Request options.\n\t */\n\tpublic async request(options: HttpRequestOptions): Promise<unknown> {\n\t\tconst { url, headers, ...fetchOptions } = options;\n\n\t\tconst controller = new AbortController();\n\n\t\tconst timeoutId = setTimeout(() => {\n\t\t\tcontroller.abort();\n\t\t}, this.timeout);\n\n\t\ttry {\n\t\t\tconst response = await fetch(url, {\n\t\t\t\t...fetchOptions,\n\t\t\t\theaders: {\n\t\t\t\t\t...this.headers,\n\t\t\t\t\t...headers,\n\t\t\t\t},\n\t\t\t\tsignal: controller.signal,\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\tlet body;\n\n\t\t\t\ttry {\n\t\t\t\t\tbody = await response.json();\n\t\t\t\t} catch {\n\t\t\t\t\tbody = await response.text().catch(() => undefined);\n\t\t\t\t}\n\n\t\t\t\tthrow new TeezApiError(\n\t\t\t\t\t`API request failed: ${response.status} ${response.statusText}`,\n\t\t\t\t\t{\n\t\t\t\t\t\turl,\n\t\t\t\t\t\tstatus: response.status,\n\t\t\t\t\t\tstatusText: response.statusText,\n\t\t\t\t\t\tbody,\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn await response.json();\n\t\t} catch (error) {\n\t\t\tif (error instanceof TeezApiError) {\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tif (error instanceof DOMException && error.name === \"AbortError\") {\n\t\t\t\tthrow new TeezTimeoutError(\n\t\t\t\t\t`Request timed out after ${this.timeout}ms`,\n\t\t\t\t\t{\n\t\t\t\t\t\turl,\n\t\t\t\t\t\ttimeout: this.timeout,\n\t\t\t\t\t\tcause: error,\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthrow new TeezNetworkError(`Network request failed`, {\n\t\t\t\turl,\n\t\t\t\tcause: error,\n\t\t\t});\n\t\t} finally {\n\t\t\tclearTimeout(timeoutId);\n\t\t}\n\t}\n\n\t/**\n\t * Performs a GET request and validates the response.\n\t */\n\tpublic async get<T extends z.ZodMiniType>(\n\t\toptions: HttpGetOptions<T>,\n\t): Promise<z.output<T>> {\n\t\tconst { path, params, schema, ...rest } = options;\n\n\t\tconst url = buildUrl(path, this.baseUrl, params);\n\n\t\tconst data = await this.request({\n\t\t\turl,\n\t\t\tmethod: \"GET\",\n\t\t\t...rest,\n\t\t});\n\n\t\treturn parseResponse(schema, data);\n\t}\n}\n","import { BannersApi } from \"./api/banners/api\";\nimport { CategoriesApi } from \"./api/categories/api\";\nimport { CollectionsApi } from \"./api/collections/api\";\nimport { FeatureFlagsApi } from \"./api/feature-flags/api\";\nimport { ProductsApi } from \"./api/products/api\";\nimport { PromoApi } from \"./api/promo/api\";\nimport { ShopsApi } from \"./api/shops/api\";\nimport { SkuApi } from \"./api/sku/api\";\nimport {\n\tresolveConfig,\n\ttype ResolvedTeezClientConfig,\n\ttype TeezClientConfig,\n} from \"./config\";\nimport { HttpClient } from \"./http/client\";\n\n/**\n * Main client for interacting with the Teez B2C API.\n *\n * @example\n * const client = new TeezClient({\n * language: \"ru\",\n * timeout: 10000\n * });\n */\nexport class TeezClient {\n\t/**\n\t * Configuration used by the client.\n\t */\n\tprivate readonly config: ResolvedTeezClientConfig;\n\n\t/**\n\t * HTTP client for making requests.\n\t */\n\tprivate readonly http: HttpClient;\n\n\t/**\n\t * API for retrieving banners.\n\t */\n\tpublic readonly banners: BannersApi;\n\n\t/**\n\t * API for retrieving categories.\n\t */\n\tpublic readonly categories: CategoriesApi;\n\n\t/**\n\t * API for retrieving collections.\n\t */\n\tpublic readonly collections: CollectionsApi;\n\n\t/**\n\t * API for retrieving feature flags.\n\t */\n\tpublic readonly featureFlags: FeatureFlagsApi;\n\n\t/**\n\t * API for retrieving products.\n\t */\n\tpublic readonly products: ProductsApi;\n\n\t/**\n\t * API for retrieving promotions.\n\t */\n\tpublic readonly promo: PromoApi;\n\n\t/**\n\t * API for retrieving shops.\n\t */\n\tpublic readonly shops: ShopsApi;\n\n\t/**\n\t * API for retrieving SKU details.\n\t */\n\tpublic readonly sku: SkuApi;\n\n\t/**\n\t * Initializes a new instance of the TeezClient.\n\t *\n\t * @param config Optional client configuration.\n\t */\n\tpublic constructor(config?: TeezClientConfig) {\n\t\tthis.config = resolveConfig(config);\n\n\t\tthis.http = new HttpClient(this.config);\n\n\t\tthis.banners = new BannersApi(this.http);\n\t\tthis.categories = new CategoriesApi(this.http);\n\t\tthis.collections = new CollectionsApi(this.http);\n\t\tthis.featureFlags = new FeatureFlagsApi(this.http);\n\t\tthis.products = new ProductsApi(this.http);\n\t\tthis.promo = new PromoApi(this.http);\n\t\tthis.shops = new ShopsApi(this.http);\n\t\tthis.sku = new SkuApi(this.http);\n\t}\n\n\t/**\n\t * Returns the current client configuration.\n\t */\n\tpublic getConfig(): Readonly<ResolvedTeezClientConfig> {\n\t\treturn this.config;\n\t}\n}\n"],"mappings":"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"}
|