@sayren/store-sdk 0.20.0 → 0.21.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.d.mts CHANGED
@@ -165,8 +165,8 @@ export declare const auditLogPageSchema: z.ZodObject<{
165
165
  }, z.core.$strip>;
166
166
  export type AuditLogPage = z.infer<typeof auditLogPageSchema>;
167
167
  export declare const agentPolicyDecisionSchema: z.ZodEnum<{
168
- DENIED: "DENIED";
169
168
  APPROVAL_REQUIRED: "APPROVAL_REQUIRED";
169
+ DENIED: "DENIED";
170
170
  ALLOW: "ALLOW";
171
171
  }>;
172
172
  export type AgentPolicyDecision = z.infer<typeof agentPolicyDecisionSchema>;
@@ -190,8 +190,8 @@ export type WritePreview = z.infer<typeof writePreviewSchema>;
190
190
  export declare const writeDryRunResultSchema: z.ZodObject<{
191
191
  dryRun: z.ZodLiteral<true>;
192
192
  decision: z.ZodEnum<{
193
- DENIED: "DENIED";
194
193
  APPROVAL_REQUIRED: "APPROVAL_REQUIRED";
194
+ DENIED: "DENIED";
195
195
  ALLOW: "ALLOW";
196
196
  }>;
197
197
  reason: z.ZodNullable<z.ZodString>;
@@ -921,8 +921,8 @@ export declare const oauthClientRegistrationRequestSchema: z.ZodObject<{
921
921
  }>>;
922
922
  redirect_uris: z.ZodOptional<z.ZodArray<z.ZodString>>;
923
923
  grant_types: z.ZodOptional<z.ZodArray<z.ZodEnum<{
924
- refresh_token: "refresh_token";
925
924
  authorization_code: "authorization_code";
925
+ refresh_token: "refresh_token";
926
926
  client_credentials: "client_credentials";
927
927
  "urn:ietf:params:oauth:grant-type:token-exchange": "urn:ietf:params:oauth:grant-type:token-exchange";
928
928
  }>>>;
@@ -1171,11 +1171,11 @@ export type ApiTokenCreateRequest = z.infer<typeof apiTokenCreateRequestSchema>;
1171
1171
  //#endregion
1172
1172
  //#region src/schemas/category.d.ts
1173
1173
  export declare const categoryProductSortSchema: z.ZodEnum<{
1174
+ NAME: "NAME";
1174
1175
  RECENT: "RECENT";
1175
1176
  POPULAR: "POPULAR";
1176
1177
  PRICE_LOW: "PRICE_LOW";
1177
1178
  PRICE_HIGH: "PRICE_HIGH";
1178
- NAME: "NAME";
1179
1179
  }>;
1180
1180
  export type CategoryProductSort = z.infer<typeof categoryProductSortSchema>;
1181
1181
  export declare const categorySchema: z.ZodObject<{
@@ -1191,11 +1191,11 @@ export declare const categorySchema: z.ZodObject<{
1191
1191
  showPc: z.ZodBoolean;
1192
1192
  showMobile: z.ZodBoolean;
1193
1193
  productSort: z.ZodEnum<{
1194
+ NAME: "NAME";
1194
1195
  RECENT: "RECENT";
1195
1196
  POPULAR: "POPULAR";
1196
1197
  PRICE_LOW: "PRICE_LOW";
1197
1198
  PRICE_HIGH: "PRICE_HIGH";
1198
- NAME: "NAME";
1199
1199
  }>;
1200
1200
  metaTitle: z.ZodNullable<z.ZodString>;
1201
1201
  metaDescription: z.ZodNullable<z.ZodString>;
@@ -1221,11 +1221,11 @@ export declare const categoryWithPathSchema: z.ZodObject<{
1221
1221
  showPc: z.ZodBoolean;
1222
1222
  showMobile: z.ZodBoolean;
1223
1223
  productSort: z.ZodEnum<{
1224
+ NAME: "NAME";
1224
1225
  RECENT: "RECENT";
1225
1226
  POPULAR: "POPULAR";
1226
1227
  PRICE_LOW: "PRICE_LOW";
1227
1228
  PRICE_HIGH: "PRICE_HIGH";
1228
- NAME: "NAME";
1229
1229
  }>;
1230
1230
  metaTitle: z.ZodNullable<z.ZodString>;
1231
1231
  metaDescription: z.ZodNullable<z.ZodString>;
@@ -1246,11 +1246,11 @@ export declare const categoryWithPathSchema: z.ZodObject<{
1246
1246
  showPc: z.ZodBoolean;
1247
1247
  showMobile: z.ZodBoolean;
1248
1248
  productSort: z.ZodEnum<{
1249
+ NAME: "NAME";
1249
1250
  RECENT: "RECENT";
1250
1251
  POPULAR: "POPULAR";
1251
1252
  PRICE_LOW: "PRICE_LOW";
1252
1253
  PRICE_HIGH: "PRICE_HIGH";
1253
- NAME: "NAME";
1254
1254
  }>;
1255
1255
  metaTitle: z.ZodNullable<z.ZodString>;
1256
1256
  metaDescription: z.ZodNullable<z.ZodString>;
@@ -1274,11 +1274,11 @@ export declare const categorySearchResultSchema: z.ZodObject<{
1274
1274
  showPc: z.ZodBoolean;
1275
1275
  showMobile: z.ZodBoolean;
1276
1276
  productSort: z.ZodEnum<{
1277
+ NAME: "NAME";
1277
1278
  RECENT: "RECENT";
1278
1279
  POPULAR: "POPULAR";
1279
1280
  PRICE_LOW: "PRICE_LOW";
1280
1281
  PRICE_HIGH: "PRICE_HIGH";
1281
- NAME: "NAME";
1282
1282
  }>;
1283
1283
  metaTitle: z.ZodNullable<z.ZodString>;
1284
1284
  metaDescription: z.ZodNullable<z.ZodString>;
@@ -1299,11 +1299,11 @@ export declare const categorySearchResultSchema: z.ZodObject<{
1299
1299
  showPc: z.ZodBoolean;
1300
1300
  showMobile: z.ZodBoolean;
1301
1301
  productSort: z.ZodEnum<{
1302
+ NAME: "NAME";
1302
1303
  RECENT: "RECENT";
1303
1304
  POPULAR: "POPULAR";
1304
1305
  PRICE_LOW: "PRICE_LOW";
1305
1306
  PRICE_HIGH: "PRICE_HIGH";
1306
- NAME: "NAME";
1307
1307
  }>;
1308
1308
  metaTitle: z.ZodNullable<z.ZodString>;
1309
1309
  metaDescription: z.ZodNullable<z.ZodString>;
@@ -1335,11 +1335,11 @@ export declare const categoryCreateRequestSchema: z.ZodObject<{
1335
1335
  showPc: z.ZodOptional<z.ZodBoolean>;
1336
1336
  showMobile: z.ZodOptional<z.ZodBoolean>;
1337
1337
  productSort: z.ZodOptional<z.ZodEnum<{
1338
+ NAME: "NAME";
1338
1339
  RECENT: "RECENT";
1339
1340
  POPULAR: "POPULAR";
1340
1341
  PRICE_LOW: "PRICE_LOW";
1341
1342
  PRICE_HIGH: "PRICE_HIGH";
1342
- NAME: "NAME";
1343
1343
  }>>;
1344
1344
  metaTitle: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1345
1345
  metaDescription: z.ZodOptional<z.ZodNullable<z.ZodString>>;
@@ -1354,11 +1354,11 @@ export declare const categoryPatchRequestSchema: z.ZodObject<{
1354
1354
  showPc: z.ZodOptional<z.ZodBoolean>;
1355
1355
  showMobile: z.ZodOptional<z.ZodBoolean>;
1356
1356
  productSort: z.ZodOptional<z.ZodEnum<{
1357
+ NAME: "NAME";
1357
1358
  RECENT: "RECENT";
1358
1359
  POPULAR: "POPULAR";
1359
1360
  PRICE_LOW: "PRICE_LOW";
1360
1361
  PRICE_HIGH: "PRICE_HIGH";
1361
- NAME: "NAME";
1362
1362
  }>>;
1363
1363
  metaTitle: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1364
1364
  metaDescription: z.ZodOptional<z.ZodNullable<z.ZodString>>;
@@ -3238,6 +3238,16 @@ export declare const orderItemSchema: z.ZodObject<{
3238
3238
  productName: z.ZodString;
3239
3239
  optionId: z.ZodNullable<z.ZodString>;
3240
3240
  optionName: z.ZodNullable<z.ZodString>;
3241
+ optionSelections: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
3242
+ kind: z.ZodString;
3243
+ groupName: z.ZodString;
3244
+ valueName: z.ZodString;
3245
+ additionalPrice: z.ZodNumber;
3246
+ }, z.core.$strip>>>>;
3247
+ customInputs: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
3248
+ label: z.ZodString;
3249
+ value: z.ZodString;
3250
+ }, z.core.$strip>>>>;
3241
3251
  sellerCode: z.ZodNullable<z.ZodString>;
3242
3252
  fulfillmentSnapshot: z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
3243
3253
  type: z.ZodLiteral<"SHIPPING">;
@@ -3387,6 +3397,16 @@ export declare const orderSchema: z.ZodObject<{
3387
3397
  productName: z.ZodString;
3388
3398
  optionId: z.ZodNullable<z.ZodString>;
3389
3399
  optionName: z.ZodNullable<z.ZodString>;
3400
+ optionSelections: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
3401
+ kind: z.ZodString;
3402
+ groupName: z.ZodString;
3403
+ valueName: z.ZodString;
3404
+ additionalPrice: z.ZodNumber;
3405
+ }, z.core.$strip>>>>;
3406
+ customInputs: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
3407
+ label: z.ZodString;
3408
+ value: z.ZodString;
3409
+ }, z.core.$strip>>>>;
3390
3410
  sellerCode: z.ZodNullable<z.ZodString>;
3391
3411
  fulfillmentSnapshot: z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
3392
3412
  type: z.ZodLiteral<"SHIPPING">;
@@ -3493,6 +3513,16 @@ export declare const orderItemPageSchema: z.ZodObject<{
3493
3513
  productName: z.ZodString;
3494
3514
  optionId: z.ZodNullable<z.ZodString>;
3495
3515
  optionName: z.ZodNullable<z.ZodString>;
3516
+ optionSelections: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
3517
+ kind: z.ZodString;
3518
+ groupName: z.ZodString;
3519
+ valueName: z.ZodString;
3520
+ additionalPrice: z.ZodNumber;
3521
+ }, z.core.$strip>>>>;
3522
+ customInputs: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
3523
+ label: z.ZodString;
3524
+ value: z.ZodString;
3525
+ }, z.core.$strip>>>>;
3496
3526
  sellerCode: z.ZodNullable<z.ZodString>;
3497
3527
  fulfillmentSnapshot: z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
3498
3528
  type: z.ZodLiteral<"SHIPPING">;
@@ -4851,8 +4881,124 @@ export declare const productVariantSchema: z.ZodObject<{
4851
4881
  weightGram: z.ZodNullable<z.ZodNumber>;
4852
4882
  sellerCode: z.ZodNullable<z.ZodString>;
4853
4883
  usable: z.ZodBoolean;
4884
+ hasOrders: z.ZodOptional<z.ZodBoolean>;
4854
4885
  }, z.core.$strip>;
4855
4886
  export type ProductVariant = z.infer<typeof productVariantSchema>;
4887
+ /** 옵션 축(그룹) 최대 개수 — 스키마 상한의 단일 원천 */
4888
+ export declare const MAX_OPTION_GROUPS = 3;
4889
+ /** 축 하나가 가질 수 있는 값의 최대 개수 */
4890
+ export declare const MAX_VALUES_PER_GROUP = 100;
4891
+ /** 상품 하나가 가질 수 있는 variant(SKU) 최대 개수 */
4892
+ export declare const MAX_VARIANTS = 500;
4893
+ /** 추가 선택 옵션명 최대 개수 */
4894
+ export declare const MAX_ADDON_GROUPS = 5;
4895
+ /** 직접 입력 항목 최대 개수 */
4896
+ export declare const MAX_CUSTOM_INPUTS = 5;
4897
+ /** 직접 입력 항목 최대 글자 수의 상한 */
4898
+ export declare const MAX_CUSTOM_INPUT_LENGTH = 200;
4899
+ /** 조합 수가 이 값 이상이면 콘솔이 경고한다(상한은 `MAX_VARIANTS`) */
4900
+ export declare const VARIANT_COUNT_WARNING = 100;
4901
+ /**
4902
+ * 옵션 값 정렬 순서 — 등록순·가나다순·낮은 추가금순·높은 추가금순. 서버가 저장할 때 이 순서로 값의 `sortOrder`를 매긴다.
4903
+ * 추가금순은 추가 선택 값이면 값의 추가금, 조합 값이면 그 값이 든 조합 추가금의 최솟값으로 비교하고 같으면 등록순이다.
4904
+ */
4905
+ export declare const optionSortSchema: z.ZodEnum<{
4906
+ REGISTERED: "REGISTERED";
4907
+ NAME: "NAME";
4908
+ PRICE_ASC: "PRICE_ASC";
4909
+ PRICE_DESC: "PRICE_DESC";
4910
+ }>;
4911
+ export type OptionSort = z.infer<typeof optionSortSchema>;
4912
+ /** 추가 선택 값 — 예: 옵션명 "선물 포장"의 값 "포장함"(+2,000원) */
4913
+ export declare const addonValueSchema: z.ZodObject<{
4914
+ valueId: z.ZodString;
4915
+ name: z.ZodString;
4916
+ sortOrder: z.ZodNumber;
4917
+ additionalPrice: z.ZodNumber;
4918
+ usable: z.ZodBoolean;
4919
+ }, z.core.$strip>;
4920
+ export type AddonValue = z.infer<typeof addonValueSchema>;
4921
+ /** 추가 선택 옵션명 */
4922
+ export declare const addonGroupSchema: z.ZodObject<{
4923
+ groupId: z.ZodString;
4924
+ name: z.ZodString;
4925
+ sortOrder: z.ZodNumber;
4926
+ required: z.ZodBoolean;
4927
+ values: z.ZodArray<z.ZodObject<{
4928
+ valueId: z.ZodString;
4929
+ name: z.ZodString;
4930
+ sortOrder: z.ZodNumber;
4931
+ additionalPrice: z.ZodNumber;
4932
+ usable: z.ZodBoolean;
4933
+ }, z.core.$strip>>;
4934
+ }, z.core.$strip>;
4935
+ export type AddonGroup = z.infer<typeof addonGroupSchema>;
4936
+ /** 직접 입력 항목 — 예: 각인 문구 */
4937
+ export declare const customInputSchema: z.ZodObject<{
4938
+ inputId: z.ZodString;
4939
+ label: z.ZodString;
4940
+ placeholder: z.ZodNullable<z.ZodString>;
4941
+ maxLength: z.ZodNumber;
4942
+ required: z.ZodBoolean;
4943
+ usable: z.ZodBoolean;
4944
+ sortOrder: z.ZodNumber;
4945
+ }, z.core.$strip>;
4946
+ export type CustomInput = z.infer<typeof customInputSchema>;
4947
+ /**
4948
+ * 직접 입력 항목명에 쓸 수 없는 개인정보성 단어 — 콘솔 검사와 서버 400(`CUSTOM_INPUT_LABEL_FORBIDDEN`)이 이 목록 하나를 쓴다.
4949
+ * 구매자 개인정보는 주문 정보로 받는다. 직접 입력 항목으로 받으면 보관·파기 규칙 밖에 남는다.
4950
+ */
4951
+ export declare const CUSTOM_INPUT_FORBIDDEN_WORDS: readonly ["연락처", "전화", "휴대폰", "핸드폰", "폰번호", "메일", "주소", "주민", "생년월일", "생일", "실명", "계좌", "카드번호", "비밀번호", "여권", "통관", "phone", "mobile", "mail", "address"];
4952
+ /**
4953
+ * 직접 입력 항목명·입력 안내에 든 개인정보성 금지어. 없으면 null. 공백·기호·대소문자·전각을 무시한다.
4954
+ * 서버는 항목명과 입력 안내 둘 다 이 함수로 검사한다(안내에 「연락처를 적어 주십시오」라고 쓰는 우회를 막는다).
4955
+ */
4956
+ export declare function customInputLabelForbiddenWord(label: string): string | null;
4957
+ export declare const addonValueRequestSchema: z.ZodObject<{
4958
+ valueId: z.ZodOptional<z.ZodString>;
4959
+ name: z.ZodString;
4960
+ additionalPrice: z.ZodDefault<z.ZodNumber>;
4961
+ usable: z.ZodDefault<z.ZodBoolean>;
4962
+ }, z.core.$strip>;
4963
+ export type AddonValueRequest = z.infer<typeof addonValueRequestSchema>;
4964
+ export declare const addonGroupRequestSchema: z.ZodObject<{
4965
+ groupId: z.ZodOptional<z.ZodString>;
4966
+ name: z.ZodString;
4967
+ required: z.ZodDefault<z.ZodBoolean>;
4968
+ values: z.ZodArray<z.ZodObject<{
4969
+ valueId: z.ZodOptional<z.ZodString>;
4970
+ name: z.ZodString;
4971
+ additionalPrice: z.ZodDefault<z.ZodNumber>;
4972
+ usable: z.ZodDefault<z.ZodBoolean>;
4973
+ }, z.core.$strip>>;
4974
+ }, z.core.$strip>;
4975
+ export type AddonGroupRequest = z.infer<typeof addonGroupRequestSchema>;
4976
+ export declare const customInputRequestSchema: z.ZodObject<{
4977
+ inputId: z.ZodOptional<z.ZodString>;
4978
+ label: z.ZodString;
4979
+ placeholder: z.ZodOptional<z.ZodNullable<z.ZodString>>;
4980
+ maxLength: z.ZodNumber;
4981
+ required: z.ZodDefault<z.ZodBoolean>;
4982
+ usable: z.ZodDefault<z.ZodBoolean>;
4983
+ }, z.core.$strip>;
4984
+ export type CustomInputRequest = z.infer<typeof customInputRequestSchema>;
4985
+ /**
4986
+ * 주문상품·장바구니·주문서 줄의 옵션 선택 스냅샷 한 칸 — 주문 시점 이름이다(상품을 고쳐도 바뀌지 않는다).
4987
+ * 조합 옵션은 옵션명마다 한 칸이고 추가금은 조합 단위라 0이다(조합 추가금은 단가에 들어 있다). 추가 선택은 값의 추가금이다.
4988
+ */
4989
+ export declare const optionSelectionSchema: z.ZodObject<{
4990
+ kind: z.ZodString;
4991
+ groupName: z.ZodString;
4992
+ valueName: z.ZodString;
4993
+ additionalPrice: z.ZodNumber;
4994
+ }, z.core.$strip>;
4995
+ export type OptionSelection = z.infer<typeof optionSelectionSchema>;
4996
+ /** 구매자가 적은 직접 입력값 — 주문 시점 항목명과 값 */
4997
+ export declare const customInputValueSchema: z.ZodObject<{
4998
+ label: z.ZodString;
4999
+ value: z.ZodString;
5000
+ }, z.core.$strip>;
5001
+ export type CustomInputValue = z.infer<typeof customInputValueSchema>;
4856
5002
  export declare const discountSchema: z.ZodObject<{
4857
5003
  productId: z.ZodString;
4858
5004
  discountType: z.ZodEnum<{
@@ -4911,7 +5057,36 @@ export declare const productSchema: z.ZodObject<{
4911
5057
  weightGram: z.ZodNullable<z.ZodNumber>;
4912
5058
  sellerCode: z.ZodNullable<z.ZodString>;
4913
5059
  usable: z.ZodBoolean;
5060
+ hasOrders: z.ZodOptional<z.ZodBoolean>;
4914
5061
  }, z.core.$strip>>;
5062
+ addonGroups: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
5063
+ groupId: z.ZodString;
5064
+ name: z.ZodString;
5065
+ sortOrder: z.ZodNumber;
5066
+ required: z.ZodBoolean;
5067
+ values: z.ZodArray<z.ZodObject<{
5068
+ valueId: z.ZodString;
5069
+ name: z.ZodString;
5070
+ sortOrder: z.ZodNumber;
5071
+ additionalPrice: z.ZodNumber;
5072
+ usable: z.ZodBoolean;
5073
+ }, z.core.$strip>>;
5074
+ }, z.core.$strip>>>>;
5075
+ customInputs: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
5076
+ inputId: z.ZodString;
5077
+ label: z.ZodString;
5078
+ placeholder: z.ZodNullable<z.ZodString>;
5079
+ maxLength: z.ZodNumber;
5080
+ required: z.ZodBoolean;
5081
+ usable: z.ZodBoolean;
5082
+ sortOrder: z.ZodNumber;
5083
+ }, z.core.$strip>>>>;
5084
+ optionSort: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
5085
+ REGISTERED: "REGISTERED";
5086
+ NAME: "NAME";
5087
+ PRICE_ASC: "PRICE_ASC";
5088
+ PRICE_DESC: "PRICE_DESC";
5089
+ }>>>;
4915
5090
  fulfillment: z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
4916
5091
  type: z.ZodLiteral<"SHIPPING">;
4917
5092
  shipping: z.ZodObject<{
@@ -4982,12 +5157,6 @@ export interface ProductImageRejection {
4982
5157
  * — 외부 이미지 CDN은 확장자 없는 키를 쓰는 경우가 흔하고, 주소만으로는 실제 형식을 알 수 없다.
4983
5158
  */
4984
5159
  export declare function productImageRejection(url: string): ProductImageRejection | null;
4985
- /** 옵션 축(그룹) 최대 개수 — 스키마 상한의 단일 원천 */
4986
- export declare const MAX_OPTION_GROUPS = 3;
4987
- /** 축 하나가 가질 수 있는 값의 최대 개수 */
4988
- export declare const MAX_VALUES_PER_GROUP = 100;
4989
- /** 상품 하나가 가질 수 있는 variant(SKU) 최대 개수 */
4990
- export declare const MAX_VARIANTS = 500;
4991
5160
  export declare const optionValueRequestSchema: z.ZodObject<{
4992
5161
  valueId: z.ZodOptional<z.ZodString>;
4993
5162
  name: z.ZodString;
@@ -5037,6 +5206,31 @@ export declare const optionModelRequestSchema: z.ZodObject<{
5037
5206
  sellerCode: z.ZodOptional<z.ZodString>;
5038
5207
  usable: z.ZodDefault<z.ZodBoolean>;
5039
5208
  }, z.core.$strip>>;
5209
+ addonGroups: z.ZodOptional<z.ZodArray<z.ZodObject<{
5210
+ groupId: z.ZodOptional<z.ZodString>;
5211
+ name: z.ZodString;
5212
+ required: z.ZodDefault<z.ZodBoolean>;
5213
+ values: z.ZodArray<z.ZodObject<{
5214
+ valueId: z.ZodOptional<z.ZodString>;
5215
+ name: z.ZodString;
5216
+ additionalPrice: z.ZodDefault<z.ZodNumber>;
5217
+ usable: z.ZodDefault<z.ZodBoolean>;
5218
+ }, z.core.$strip>>;
5219
+ }, z.core.$strip>>>;
5220
+ customInputs: z.ZodOptional<z.ZodArray<z.ZodObject<{
5221
+ inputId: z.ZodOptional<z.ZodString>;
5222
+ label: z.ZodString;
5223
+ placeholder: z.ZodOptional<z.ZodNullable<z.ZodString>>;
5224
+ maxLength: z.ZodNumber;
5225
+ required: z.ZodDefault<z.ZodBoolean>;
5226
+ usable: z.ZodDefault<z.ZodBoolean>;
5227
+ }, z.core.$strip>>>;
5228
+ optionSort: z.ZodOptional<z.ZodEnum<{
5229
+ REGISTERED: "REGISTERED";
5230
+ NAME: "NAME";
5231
+ PRICE_ASC: "PRICE_ASC";
5232
+ PRICE_DESC: "PRICE_DESC";
5233
+ }>>;
5040
5234
  }, z.core.$strip>;
5041
5235
  export type OptionModelRequest = z.infer<typeof optionModelRequestSchema>;
5042
5236
  /** GET /products/{productId}/options 응답 */
@@ -5063,7 +5257,36 @@ export declare const optionModelSchema: z.ZodObject<{
5063
5257
  weightGram: z.ZodNullable<z.ZodNumber>;
5064
5258
  sellerCode: z.ZodNullable<z.ZodString>;
5065
5259
  usable: z.ZodBoolean;
5260
+ hasOrders: z.ZodOptional<z.ZodBoolean>;
5066
5261
  }, z.core.$strip>>;
5262
+ addonGroups: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
5263
+ groupId: z.ZodString;
5264
+ name: z.ZodString;
5265
+ sortOrder: z.ZodNumber;
5266
+ required: z.ZodBoolean;
5267
+ values: z.ZodArray<z.ZodObject<{
5268
+ valueId: z.ZodString;
5269
+ name: z.ZodString;
5270
+ sortOrder: z.ZodNumber;
5271
+ additionalPrice: z.ZodNumber;
5272
+ usable: z.ZodBoolean;
5273
+ }, z.core.$strip>>;
5274
+ }, z.core.$strip>>>>;
5275
+ customInputs: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
5276
+ inputId: z.ZodString;
5277
+ label: z.ZodString;
5278
+ placeholder: z.ZodNullable<z.ZodString>;
5279
+ maxLength: z.ZodNumber;
5280
+ required: z.ZodBoolean;
5281
+ usable: z.ZodBoolean;
5282
+ sortOrder: z.ZodNumber;
5283
+ }, z.core.$strip>>>>;
5284
+ optionSort: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
5285
+ REGISTERED: "REGISTERED";
5286
+ NAME: "NAME";
5287
+ PRICE_ASC: "PRICE_ASC";
5288
+ PRICE_DESC: "PRICE_DESC";
5289
+ }>>>;
5067
5290
  }, z.core.$strip>;
5068
5291
  export type OptionModel = z.infer<typeof optionModelSchema>;
5069
5292
  /**
@@ -5103,6 +5326,7 @@ export declare const productCreateRequestSchema: z.ZodObject<{
5103
5326
  }, z.core.$strict>, z.ZodObject<{
5104
5327
  type: z.ZodLiteral<"MANUAL">;
5105
5328
  }, z.core.$strict>], "type">>;
5329
+ sourceOptionSetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
5106
5330
  optionGroups: z.ZodDefault<z.ZodArray<z.ZodObject<{
5107
5331
  groupId: z.ZodOptional<z.ZodString>;
5108
5332
  name: z.ZodString;
@@ -5123,6 +5347,31 @@ export declare const productCreateRequestSchema: z.ZodObject<{
5123
5347
  sellerCode: z.ZodOptional<z.ZodString>;
5124
5348
  usable: z.ZodDefault<z.ZodBoolean>;
5125
5349
  }, z.core.$strip>>;
5350
+ addonGroups: z.ZodOptional<z.ZodArray<z.ZodObject<{
5351
+ groupId: z.ZodOptional<z.ZodString>;
5352
+ name: z.ZodString;
5353
+ required: z.ZodDefault<z.ZodBoolean>;
5354
+ values: z.ZodArray<z.ZodObject<{
5355
+ valueId: z.ZodOptional<z.ZodString>;
5356
+ name: z.ZodString;
5357
+ additionalPrice: z.ZodDefault<z.ZodNumber>;
5358
+ usable: z.ZodDefault<z.ZodBoolean>;
5359
+ }, z.core.$strip>>;
5360
+ }, z.core.$strip>>>;
5361
+ customInputs: z.ZodOptional<z.ZodArray<z.ZodObject<{
5362
+ inputId: z.ZodOptional<z.ZodString>;
5363
+ label: z.ZodString;
5364
+ placeholder: z.ZodOptional<z.ZodNullable<z.ZodString>>;
5365
+ maxLength: z.ZodNumber;
5366
+ required: z.ZodDefault<z.ZodBoolean>;
5367
+ usable: z.ZodDefault<z.ZodBoolean>;
5368
+ }, z.core.$strip>>>;
5369
+ optionSort: z.ZodOptional<z.ZodEnum<{
5370
+ REGISTERED: "REGISTERED";
5371
+ NAME: "NAME";
5372
+ PRICE_ASC: "PRICE_ASC";
5373
+ PRICE_DESC: "PRICE_DESC";
5374
+ }>>;
5126
5375
  name: z.ZodString;
5127
5376
  categoryId: z.ZodString;
5128
5377
  salePrice: z.ZodNumber;
@@ -5162,6 +5411,7 @@ export declare const productReplaceRequestSchema: z.ZodObject<{
5162
5411
  }, z.core.$strict>, z.ZodObject<{
5163
5412
  type: z.ZodLiteral<"MANUAL">;
5164
5413
  }, z.core.$strict>], "type">>;
5414
+ sourceOptionSetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
5165
5415
  optionGroups: z.ZodDefault<z.ZodArray<z.ZodObject<{
5166
5416
  groupId: z.ZodOptional<z.ZodString>;
5167
5417
  name: z.ZodString;
@@ -5182,6 +5432,31 @@ export declare const productReplaceRequestSchema: z.ZodObject<{
5182
5432
  sellerCode: z.ZodOptional<z.ZodString>;
5183
5433
  usable: z.ZodDefault<z.ZodBoolean>;
5184
5434
  }, z.core.$strip>>;
5435
+ addonGroups: z.ZodOptional<z.ZodArray<z.ZodObject<{
5436
+ groupId: z.ZodOptional<z.ZodString>;
5437
+ name: z.ZodString;
5438
+ required: z.ZodDefault<z.ZodBoolean>;
5439
+ values: z.ZodArray<z.ZodObject<{
5440
+ valueId: z.ZodOptional<z.ZodString>;
5441
+ name: z.ZodString;
5442
+ additionalPrice: z.ZodDefault<z.ZodNumber>;
5443
+ usable: z.ZodDefault<z.ZodBoolean>;
5444
+ }, z.core.$strip>>;
5445
+ }, z.core.$strip>>>;
5446
+ customInputs: z.ZodOptional<z.ZodArray<z.ZodObject<{
5447
+ inputId: z.ZodOptional<z.ZodString>;
5448
+ label: z.ZodString;
5449
+ placeholder: z.ZodOptional<z.ZodNullable<z.ZodString>>;
5450
+ maxLength: z.ZodNumber;
5451
+ required: z.ZodDefault<z.ZodBoolean>;
5452
+ usable: z.ZodDefault<z.ZodBoolean>;
5453
+ }, z.core.$strip>>>;
5454
+ optionSort: z.ZodOptional<z.ZodEnum<{
5455
+ REGISTERED: "REGISTERED";
5456
+ NAME: "NAME";
5457
+ PRICE_ASC: "PRICE_ASC";
5458
+ PRICE_DESC: "PRICE_DESC";
5459
+ }>>;
5185
5460
  name: z.ZodString;
5186
5461
  categoryId: z.ZodString;
5187
5462
  salePrice: z.ZodNumber;
@@ -5284,6 +5559,210 @@ export declare const discountRequestSchema: z.ZodObject<{
5284
5559
  }, z.core.$strip>;
5285
5560
  export type DiscountRequest = z.infer<typeof discountRequestSchema>;
5286
5561
  //#endregion
5562
+ //#region src/schemas/saved-option-set.d.ts
5563
+ /**
5564
+ * 저장 옵션 (이슈 #59) — 자주 쓰는 옵션 구성을 이름 붙여 두고 상품 등록에서 불러온다.
5565
+ *
5566
+ * **불러오기는 복사다.** 저장 옵션을 고치거나 지워도 이미 불러온 상품의 옵션은 그대로다. 재고·SKU·사용 여부는 상품마다
5567
+ * 달라 저장하지 않는다. 추가금은 조합별이 아니라 **값별**로 둔다 — 조합 옵션으로 불러오면 조합 추가금은 고른 값 추가금의 합이다.
5568
+ */
5569
+ /** 스토어당 저장 옵션 최대 개수 */
5570
+ export declare const MAX_SAVED_OPTION_SETS = 200;
5571
+ /** 저장 옵션 이름 최대 글자 수 */
5572
+ export declare const MAX_SAVED_OPTION_SET_NAME = 50;
5573
+ /** 옵션명 방식 — `combination`(조합: 값의 조합이 판매 단위가 된다)·`addon`(추가 선택: 재고 없이 추가금만) */
5574
+ export declare const optionGroupKindSchema: z.ZodEnum<{
5575
+ combination: "combination";
5576
+ addon: "addon";
5577
+ }>;
5578
+ export type OptionGroupKind = z.infer<typeof optionGroupKindSchema>;
5579
+ export declare const savedOptionValueSchema: z.ZodObject<{
5580
+ name: z.ZodString;
5581
+ additionalPrice: z.ZodNumber;
5582
+ }, z.core.$strip>;
5583
+ export declare const savedOptionGroupSchema: z.ZodObject<{
5584
+ name: z.ZodString;
5585
+ kind: z.ZodString;
5586
+ required: z.ZodBoolean;
5587
+ values: z.ZodArray<z.ZodObject<{
5588
+ name: z.ZodString;
5589
+ additionalPrice: z.ZodNumber;
5590
+ }, z.core.$strip>>;
5591
+ }, z.core.$strip>;
5592
+ export type SavedOptionGroup = z.infer<typeof savedOptionGroupSchema>;
5593
+ export declare const savedCustomInputSchema: z.ZodObject<{
5594
+ label: z.ZodString;
5595
+ placeholder: z.ZodNullable<z.ZodString>;
5596
+ maxLength: z.ZodNumber;
5597
+ required: z.ZodBoolean;
5598
+ }, z.core.$strip>;
5599
+ export type SavedCustomInput = z.infer<typeof savedCustomInputSchema>;
5600
+ export declare const savedOptionSetSchema: z.ZodObject<{
5601
+ optionSetId: z.ZodString;
5602
+ name: z.ZodString;
5603
+ optionSort: z.ZodEnum<{
5604
+ REGISTERED: "REGISTERED";
5605
+ NAME: "NAME";
5606
+ PRICE_ASC: "PRICE_ASC";
5607
+ PRICE_DESC: "PRICE_DESC";
5608
+ }>;
5609
+ groups: z.ZodArray<z.ZodObject<{
5610
+ name: z.ZodString;
5611
+ kind: z.ZodString;
5612
+ required: z.ZodBoolean;
5613
+ values: z.ZodArray<z.ZodObject<{
5614
+ name: z.ZodString;
5615
+ additionalPrice: z.ZodNumber;
5616
+ }, z.core.$strip>>;
5617
+ }, z.core.$strip>>;
5618
+ customInputs: z.ZodArray<z.ZodObject<{
5619
+ label: z.ZodString;
5620
+ placeholder: z.ZodNullable<z.ZodString>;
5621
+ maxLength: z.ZodNumber;
5622
+ required: z.ZodBoolean;
5623
+ }, z.core.$strip>>;
5624
+ importedProductCount: z.ZodNumber;
5625
+ createdAt: z.ZodString;
5626
+ updatedAt: z.ZodString;
5627
+ }, z.core.$strip>;
5628
+ export type SavedOptionSet = z.infer<typeof savedOptionSetSchema>;
5629
+ export declare const savedOptionValueRequestSchema: z.ZodObject<{
5630
+ name: z.ZodString;
5631
+ additionalPrice: z.ZodDefault<z.ZodNumber>;
5632
+ }, z.core.$strip>;
5633
+ export declare const savedOptionGroupRequestSchema: z.ZodObject<{
5634
+ name: z.ZodString;
5635
+ kind: z.ZodEnum<{
5636
+ combination: "combination";
5637
+ addon: "addon";
5638
+ }>;
5639
+ required: z.ZodDefault<z.ZodBoolean>;
5640
+ values: z.ZodArray<z.ZodObject<{
5641
+ name: z.ZodString;
5642
+ additionalPrice: z.ZodDefault<z.ZodNumber>;
5643
+ }, z.core.$strip>>;
5644
+ }, z.core.$strip>;
5645
+ export type SavedOptionGroupRequest = z.infer<typeof savedOptionGroupRequestSchema>;
5646
+ export declare const savedCustomInputRequestSchema: z.ZodObject<{
5647
+ label: z.ZodString;
5648
+ placeholder: z.ZodOptional<z.ZodNullable<z.ZodString>>;
5649
+ maxLength: z.ZodNumber;
5650
+ required: z.ZodDefault<z.ZodBoolean>;
5651
+ }, z.core.$strip>;
5652
+ /**
5653
+ * 저장 옵션 만들기·수정 본문. 조합 옵션명은 최대 `MAX_OPTION_GROUPS`개, 추가 선택은 최대 `MAX_ADDON_GROUPS`개이고
5654
+ * 옵션명과 직접 입력 항목이 모두 비면 400이다. 수정(PUT)은 통째로 바꾼다.
5655
+ */
5656
+ export declare const savedOptionSetRequestSchema: z.ZodObject<{
5657
+ name: z.ZodString;
5658
+ optionSort: z.ZodDefault<z.ZodEnum<{
5659
+ REGISTERED: "REGISTERED";
5660
+ NAME: "NAME";
5661
+ PRICE_ASC: "PRICE_ASC";
5662
+ PRICE_DESC: "PRICE_DESC";
5663
+ }>>;
5664
+ groups: z.ZodDefault<z.ZodArray<z.ZodObject<{
5665
+ name: z.ZodString;
5666
+ kind: z.ZodEnum<{
5667
+ combination: "combination";
5668
+ addon: "addon";
5669
+ }>;
5670
+ required: z.ZodDefault<z.ZodBoolean>;
5671
+ values: z.ZodArray<z.ZodObject<{
5672
+ name: z.ZodString;
5673
+ additionalPrice: z.ZodDefault<z.ZodNumber>;
5674
+ }, z.core.$strip>>;
5675
+ }, z.core.$strip>>>;
5676
+ customInputs: z.ZodDefault<z.ZodArray<z.ZodObject<{
5677
+ label: z.ZodString;
5678
+ placeholder: z.ZodOptional<z.ZodNullable<z.ZodString>>;
5679
+ maxLength: z.ZodNumber;
5680
+ required: z.ZodDefault<z.ZodBoolean>;
5681
+ }, z.core.$strip>>>;
5682
+ }, z.core.$strip>;
5683
+ export type SavedOptionSetRequest = z.infer<typeof savedOptionSetRequestSchema>;
5684
+ export type SavedOptionSetRequestInput = z.input<typeof savedOptionSetRequestSchema>;
5685
+ /**
5686
+ * 상품에서 저장 (`POST /v1/saved-option-sets/from-product`) — 상품의 현재 옵션을 저장 옵션으로 만든다.
5687
+ *
5688
+ * 조합 추가금이 값별 추가금의 합으로 되돌려지면 값별로 저장하고, 조합마다 제각각이면 추가금을 빼고
5689
+ * 응답 `additionalPriceDropped: true`로 알린다. `replaceOptionSetId`를 주면 그 저장 옵션을 덮어쓴다(이름 중복의 덮어쓰기).
5690
+ */
5691
+ export declare const savedOptionSetFromProductRequestSchema: z.ZodObject<{
5692
+ productId: z.ZodString;
5693
+ name: z.ZodString;
5694
+ includeOptions: z.ZodDefault<z.ZodBoolean>;
5695
+ includeCustomInputs: z.ZodDefault<z.ZodBoolean>;
5696
+ replaceOptionSetId: z.ZodOptional<z.ZodString>;
5697
+ }, z.core.$strip>;
5698
+ export type SavedOptionSetFromProductRequest = z.infer<typeof savedOptionSetFromProductRequestSchema>;
5699
+ export type SavedOptionSetFromProductRequestInput = z.input<typeof savedOptionSetFromProductRequestSchema>;
5700
+ export declare const savedOptionSetFromProductResultSchema: z.ZodObject<{
5701
+ optionSet: z.ZodObject<{
5702
+ optionSetId: z.ZodString;
5703
+ name: z.ZodString;
5704
+ optionSort: z.ZodEnum<{
5705
+ REGISTERED: "REGISTERED";
5706
+ NAME: "NAME";
5707
+ PRICE_ASC: "PRICE_ASC";
5708
+ PRICE_DESC: "PRICE_DESC";
5709
+ }>;
5710
+ groups: z.ZodArray<z.ZodObject<{
5711
+ name: z.ZodString;
5712
+ kind: z.ZodString;
5713
+ required: z.ZodBoolean;
5714
+ values: z.ZodArray<z.ZodObject<{
5715
+ name: z.ZodString;
5716
+ additionalPrice: z.ZodNumber;
5717
+ }, z.core.$strip>>;
5718
+ }, z.core.$strip>>;
5719
+ customInputs: z.ZodArray<z.ZodObject<{
5720
+ label: z.ZodString;
5721
+ placeholder: z.ZodNullable<z.ZodString>;
5722
+ maxLength: z.ZodNumber;
5723
+ required: z.ZodBoolean;
5724
+ }, z.core.$strip>>;
5725
+ importedProductCount: z.ZodNumber;
5726
+ createdAt: z.ZodString;
5727
+ updatedAt: z.ZodString;
5728
+ }, z.core.$strip>;
5729
+ additionalPriceDropped: z.ZodBoolean;
5730
+ }, z.core.$strip>;
5731
+ export type SavedOptionSetFromProductResult = z.infer<typeof savedOptionSetFromProductResultSchema>;
5732
+ /** 구성 필터 — 조합 옵션명·추가 선택 옵션명·직접 입력 항목을 가진 저장 옵션 */
5733
+ export declare const savedOptionSetCompositionSchema: z.ZodEnum<{
5734
+ combination: "combination";
5735
+ addon: "addon";
5736
+ customInput: "customInput";
5737
+ }>;
5738
+ export declare const savedOptionSetSortSchema: z.ZodEnum<{
5739
+ "updatedAt.desc": "updatedAt.desc";
5740
+ "name.asc": "name.asc";
5741
+ "importedProductCount.desc": "importedProductCount.desc";
5742
+ }>;
5743
+ export type SavedOptionSetSort = z.infer<typeof savedOptionSetSortSchema>;
5744
+ export interface SavedOptionSetListParams extends PageParams {
5745
+ keyword?: string;
5746
+ composition?: z.infer<typeof savedOptionSetCompositionSchema>;
5747
+ sort?: SavedOptionSetSort;
5748
+ }
5749
+ /** `GET /v1/saved-option-sets` 쿼리 — OpenAPI 문서용 형태(값은 쿼리 문자열) */
5750
+ export declare const savedOptionSetListQuerySchema: z.ZodObject<{
5751
+ page: z.ZodOptional<z.ZodString>;
5752
+ size: z.ZodOptional<z.ZodString>;
5753
+ keyword: z.ZodOptional<z.ZodString>;
5754
+ composition: z.ZodOptional<z.ZodEnum<{
5755
+ combination: "combination";
5756
+ addon: "addon";
5757
+ customInput: "customInput";
5758
+ }>>;
5759
+ sort: z.ZodOptional<z.ZodEnum<{
5760
+ "updatedAt.desc": "updatedAt.desc";
5761
+ "name.asc": "name.asc";
5762
+ "importedProductCount.desc": "importedProductCount.desc";
5763
+ }>>;
5764
+ }, z.core.$strip>;
5765
+ //#endregion
5287
5766
  //#region src/schemas/store.d.ts
5288
5767
  /**
5289
5768
  * 스토어 코드 규칙 — 스토어프론트 API가 테넌트를 가르는 값이다(`X-Store-Code` 헤더).
@@ -5540,6 +6019,7 @@ export type SellerAddressRequest = z.infer<typeof sellerAddressRequestSchema>;
5540
6019
  * - 409 `STOREFRONT_SITE_CREATE_LIMIT` — 사이트는 스토어당 30일에 3번까지 만든다
5541
6020
  * - 409 `STOREFRONT_SITE_CHANGED` — 읽은 상태(`expected*`)와 현재 상태가 다르다. 다시 읽고 시도한다
5542
6021
  * - 409 `STOREFRONT_SITE_NOT_ACTIVE` — 정지(`SUSPENDED`)된 사이트는 바꾸거나 끌 수 없다
6022
+ * - 409 `STORE_SUSPENDED` — 정지된 스토어에는 사이트를 만들 수 없다
5543
6023
  * - 409 `STOREFRONT_VERSION_NOT_READY` — 빌드가 끝나지 않았거나 실패한 버전은 발행할 수 없다
5544
6024
  * - 409 `STOREFRONT_NO_ROLLBACK_TARGET` — 되돌릴 이전 발행 버전이 없다
5545
6025
  * - 400 `STOREFRONT_SLUG_CONFIRM_MISMATCH` — 호스팅 끄기 확인 입력이 현재 슬러그와 다르다
@@ -5685,6 +6165,15 @@ export declare const storefrontEditPreviewSchema: z.ZodObject<{
5685
6165
  hostname: z.ZodNullable<z.ZodString>;
5686
6166
  }, z.core.$strip>;
5687
6167
  export type StorefrontEditPreview = z.infer<typeof storefrontEditPreviewSchema>;
6168
+ /**
6169
+ * 사이트 정지 — 운영 정책에 따라 플랫폼 운영자가 사이트를 정지한다. 정지 중에는 방문자에게 정지 안내가 보이고 발행·되돌리기·템플릿 변경·
6170
+ * 공개 전환·슬러그 변경·끄기·편집이 409 `STOREFRONT_SITE_NOT_ACTIVE`다. 셀러가 풀 수 없다(고객센터로 문의한다).
6171
+ */
6172
+ export declare const storefrontSuspensionSchema: z.ZodObject<{
6173
+ reason: z.ZodNullable<z.ZodString>;
6174
+ suspendedAt: z.ZodNullable<z.ZodString>;
6175
+ }, z.core.$strip>;
6176
+ export type StorefrontSuspension = z.infer<typeof storefrontSuspensionSchema>;
5688
6177
  export declare const storefrontSiteSchema: z.ZodObject<{
5689
6178
  siteId: z.ZodString;
5690
6179
  slug: z.ZodString;
@@ -5751,6 +6240,10 @@ export declare const storefrontSiteSchema: z.ZodObject<{
5751
6240
  hostname: z.ZodNullable<z.ZodString>;
5752
6241
  }, z.core.$strip>;
5753
6242
  slugChangesRemaining: z.ZodNumber;
6243
+ suspension: z.ZodOptional<z.ZodNullable<z.ZodObject<{
6244
+ reason: z.ZodNullable<z.ZodString>;
6245
+ suspendedAt: z.ZodNullable<z.ZodString>;
6246
+ }, z.core.$strip>>>;
5754
6247
  createdAt: z.ZodString;
5755
6248
  updatedAt: z.ZodString;
5756
6249
  }, z.core.$strip>;
@@ -5826,6 +6319,10 @@ export declare const storefrontHostingSchema: z.ZodObject<{
5826
6319
  hostname: z.ZodNullable<z.ZodString>;
5827
6320
  }, z.core.$strip>;
5828
6321
  slugChangesRemaining: z.ZodNumber;
6322
+ suspension: z.ZodOptional<z.ZodNullable<z.ZodObject<{
6323
+ reason: z.ZodNullable<z.ZodString>;
6324
+ suspendedAt: z.ZodNullable<z.ZodString>;
6325
+ }, z.core.$strip>>>;
5829
6326
  createdAt: z.ZodString;
5830
6327
  updatedAt: z.ZodString;
5831
6328
  }, z.core.$strip>>;
@@ -6817,7 +7314,31 @@ export declare function createStoreClient(options: StoreClientOptions): {
6817
7314
  weightGram: number | null;
6818
7315
  sellerCode: string | null;
6819
7316
  usable: boolean;
7317
+ hasOrders?: boolean | undefined;
6820
7318
  }[];
7319
+ addonGroups: {
7320
+ groupId: string;
7321
+ name: string;
7322
+ sortOrder: number;
7323
+ required: boolean;
7324
+ values: {
7325
+ valueId: string;
7326
+ name: string;
7327
+ sortOrder: number;
7328
+ additionalPrice: number;
7329
+ usable: boolean;
7330
+ }[];
7331
+ }[];
7332
+ customInputs: {
7333
+ inputId: string;
7334
+ label: string;
7335
+ placeholder: string | null;
7336
+ maxLength: number;
7337
+ required: boolean;
7338
+ usable: boolean;
7339
+ sortOrder: number;
7340
+ }[];
7341
+ optionSort: "REGISTERED" | "NAME" | "PRICE_ASC" | "PRICE_DESC";
6821
7342
  fulfillment: UnknownFulfillment | {
6822
7343
  type: "SHIPPING";
6823
7344
  shipping: {
@@ -6889,7 +7410,31 @@ export declare function createStoreClient(options: StoreClientOptions): {
6889
7410
  weightGram: number | null;
6890
7411
  sellerCode: string | null;
6891
7412
  usable: boolean;
7413
+ hasOrders?: boolean | undefined;
6892
7414
  }[];
7415
+ addonGroups: {
7416
+ groupId: string;
7417
+ name: string;
7418
+ sortOrder: number;
7419
+ required: boolean;
7420
+ values: {
7421
+ valueId: string;
7422
+ name: string;
7423
+ sortOrder: number;
7424
+ additionalPrice: number;
7425
+ usable: boolean;
7426
+ }[];
7427
+ }[];
7428
+ customInputs: {
7429
+ inputId: string;
7430
+ label: string;
7431
+ placeholder: string | null;
7432
+ maxLength: number;
7433
+ required: boolean;
7434
+ usable: boolean;
7435
+ sortOrder: number;
7436
+ }[];
7437
+ optionSort: "REGISTERED" | "NAME" | "PRICE_ASC" | "PRICE_DESC";
6893
7438
  fulfillment: UnknownFulfillment | {
6894
7439
  type: "SHIPPING";
6895
7440
  shipping: {
@@ -6961,7 +7506,31 @@ export declare function createStoreClient(options: StoreClientOptions): {
6961
7506
  weightGram: number | null;
6962
7507
  sellerCode: string | null;
6963
7508
  usable: boolean;
7509
+ hasOrders?: boolean | undefined;
7510
+ }[];
7511
+ addonGroups: {
7512
+ groupId: string;
7513
+ name: string;
7514
+ sortOrder: number;
7515
+ required: boolean;
7516
+ values: {
7517
+ valueId: string;
7518
+ name: string;
7519
+ sortOrder: number;
7520
+ additionalPrice: number;
7521
+ usable: boolean;
7522
+ }[];
7523
+ }[];
7524
+ customInputs: {
7525
+ inputId: string;
7526
+ label: string;
7527
+ placeholder: string | null;
7528
+ maxLength: number;
7529
+ required: boolean;
7530
+ usable: boolean;
7531
+ sortOrder: number;
6964
7532
  }[];
7533
+ optionSort: "REGISTERED" | "NAME" | "PRICE_ASC" | "PRICE_DESC";
6965
7534
  fulfillment: UnknownFulfillment | {
6966
7535
  type: "SHIPPING";
6967
7536
  shipping: {
@@ -7037,7 +7606,31 @@ export declare function createStoreClient(options: StoreClientOptions): {
7037
7606
  weightGram: number | null;
7038
7607
  sellerCode: string | null;
7039
7608
  usable: boolean;
7609
+ hasOrders?: boolean | undefined;
7040
7610
  }[];
7611
+ addonGroups: {
7612
+ groupId: string;
7613
+ name: string;
7614
+ sortOrder: number;
7615
+ required: boolean;
7616
+ values: {
7617
+ valueId: string;
7618
+ name: string;
7619
+ sortOrder: number;
7620
+ additionalPrice: number;
7621
+ usable: boolean;
7622
+ }[];
7623
+ }[];
7624
+ customInputs: {
7625
+ inputId: string;
7626
+ label: string;
7627
+ placeholder: string | null;
7628
+ maxLength: number;
7629
+ required: boolean;
7630
+ usable: boolean;
7631
+ sortOrder: number;
7632
+ }[];
7633
+ optionSort: "REGISTERED" | "NAME" | "PRICE_ASC" | "PRICE_DESC";
7041
7634
  }>;
7042
7635
  /**
7043
7636
  * 옵션 모델 전체 교체 — variants는 valueNames로 축 값을 지목한다.
@@ -7066,7 +7659,31 @@ export declare function createStoreClient(options: StoreClientOptions): {
7066
7659
  weightGram: number | null;
7067
7660
  sellerCode: string | null;
7068
7661
  usable: boolean;
7662
+ hasOrders?: boolean | undefined;
7069
7663
  }[];
7664
+ addonGroups: {
7665
+ groupId: string;
7666
+ name: string;
7667
+ sortOrder: number;
7668
+ required: boolean;
7669
+ values: {
7670
+ valueId: string;
7671
+ name: string;
7672
+ sortOrder: number;
7673
+ additionalPrice: number;
7674
+ usable: boolean;
7675
+ }[];
7676
+ }[];
7677
+ customInputs: {
7678
+ inputId: string;
7679
+ label: string;
7680
+ placeholder: string | null;
7681
+ maxLength: number;
7682
+ required: boolean;
7683
+ usable: boolean;
7684
+ sortOrder: number;
7685
+ }[];
7686
+ optionSort: "REGISTERED" | "NAME" | "PRICE_ASC" | "PRICE_DESC";
7070
7687
  }>;
7071
7688
  /** 재고 변경 — stockQuantity(절대값) 또는 adjustment(증감) 하나만 전달한다 */
7072
7689
  updateVariantStock: (productId: string, variantId: string, body: VariantStockRequest) => Promise<{
@@ -7091,6 +7708,140 @@ export declare function createStoreClient(options: StoreClientOptions): {
7091
7708
  }>;
7092
7709
  removeDiscount: (productId: string) => Promise<void>;
7093
7710
  };
7711
+ /**
7712
+ * 저장 옵션 (이슈 #59) — 자주 쓰는 옵션 구성. 불러오기는 복사라 저장 옵션을 고쳐도 불러온 상품은 바뀌지 않는다.
7713
+ * 권한은 상품과 같다(`product:r`·`product:rw`).
7714
+ */
7715
+ savedOptionSets: {
7716
+ list: (params?: SavedOptionSetListParams) => Promise<{
7717
+ page: number;
7718
+ size: number;
7719
+ totalElements: number;
7720
+ totalPages: number;
7721
+ contents: {
7722
+ optionSetId: string;
7723
+ name: string;
7724
+ optionSort: "REGISTERED" | "NAME" | "PRICE_ASC" | "PRICE_DESC";
7725
+ groups: {
7726
+ name: string;
7727
+ kind: string;
7728
+ required: boolean;
7729
+ values: {
7730
+ name: string;
7731
+ additionalPrice: number;
7732
+ }[];
7733
+ }[];
7734
+ customInputs: {
7735
+ label: string;
7736
+ placeholder: string | null;
7737
+ maxLength: number;
7738
+ required: boolean;
7739
+ }[];
7740
+ importedProductCount: number;
7741
+ createdAt: string;
7742
+ updatedAt: string;
7743
+ }[];
7744
+ }>;
7745
+ get: (optionSetId: string) => Promise<{
7746
+ optionSetId: string;
7747
+ name: string;
7748
+ optionSort: "REGISTERED" | "NAME" | "PRICE_ASC" | "PRICE_DESC";
7749
+ groups: {
7750
+ name: string;
7751
+ kind: string;
7752
+ required: boolean;
7753
+ values: {
7754
+ name: string;
7755
+ additionalPrice: number;
7756
+ }[];
7757
+ }[];
7758
+ customInputs: {
7759
+ label: string;
7760
+ placeholder: string | null;
7761
+ maxLength: number;
7762
+ required: boolean;
7763
+ }[];
7764
+ importedProductCount: number;
7765
+ createdAt: string;
7766
+ updatedAt: string;
7767
+ }>;
7768
+ /** 이름이 겹치면 409 `OPTION_SET_NAME_TAKEN`, 스토어당 200개를 넘으면 409 `OPTION_SET_LIMIT_EXCEEDED` */
7769
+ create: (body: SavedOptionSetRequestInput) => Promise<{
7770
+ optionSetId: string;
7771
+ name: string;
7772
+ optionSort: "REGISTERED" | "NAME" | "PRICE_ASC" | "PRICE_DESC";
7773
+ groups: {
7774
+ name: string;
7775
+ kind: string;
7776
+ required: boolean;
7777
+ values: {
7778
+ name: string;
7779
+ additionalPrice: number;
7780
+ }[];
7781
+ }[];
7782
+ customInputs: {
7783
+ label: string;
7784
+ placeholder: string | null;
7785
+ maxLength: number;
7786
+ required: boolean;
7787
+ }[];
7788
+ importedProductCount: number;
7789
+ createdAt: string;
7790
+ updatedAt: string;
7791
+ }>;
7792
+ /** 통째로 바꾼다. 불러온 상품은 바뀌지 않는다 */
7793
+ update: (optionSetId: string, body: SavedOptionSetRequestInput) => Promise<{
7794
+ optionSetId: string;
7795
+ name: string;
7796
+ optionSort: "REGISTERED" | "NAME" | "PRICE_ASC" | "PRICE_DESC";
7797
+ groups: {
7798
+ name: string;
7799
+ kind: string;
7800
+ required: boolean;
7801
+ values: {
7802
+ name: string;
7803
+ additionalPrice: number;
7804
+ }[];
7805
+ }[];
7806
+ customInputs: {
7807
+ label: string;
7808
+ placeholder: string | null;
7809
+ maxLength: number;
7810
+ required: boolean;
7811
+ }[];
7812
+ importedProductCount: number;
7813
+ createdAt: string;
7814
+ updatedAt: string;
7815
+ }>;
7816
+ remove: (optionSetId: string) => Promise<void>;
7817
+ /** 상품의 현재 옵션을 저장 옵션으로 만든다(또는 `replaceOptionSetId`를 덮어쓴다) */
7818
+ saveFromProduct: (body: SavedOptionSetFromProductRequestInput) => Promise<{
7819
+ optionSet: {
7820
+ optionSetId: string;
7821
+ name: string;
7822
+ optionSort: "REGISTERED" | "NAME" | "PRICE_ASC" | "PRICE_DESC";
7823
+ groups: {
7824
+ name: string;
7825
+ kind: string;
7826
+ required: boolean;
7827
+ values: {
7828
+ name: string;
7829
+ additionalPrice: number;
7830
+ }[];
7831
+ }[];
7832
+ customInputs: {
7833
+ label: string;
7834
+ placeholder: string | null;
7835
+ maxLength: number;
7836
+ required: boolean;
7837
+ }[];
7838
+ importedProductCount: number;
7839
+ createdAt: string;
7840
+ updatedAt: string;
7841
+ };
7842
+ additionalPriceDropped: boolean;
7843
+ }>;
7844
+ };
7094
7845
  categories: {
7095
7846
  list: (params?: {
7096
7847
  parentId?: string;
@@ -7107,7 +7858,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
7107
7858
  visible: boolean;
7108
7859
  showPc: boolean;
7109
7860
  showMobile: boolean;
7110
- productSort: "RECENT" | "POPULAR" | "PRICE_LOW" | "PRICE_HIGH" | "NAME";
7861
+ productSort: "NAME" | "RECENT" | "POPULAR" | "PRICE_LOW" | "PRICE_HIGH";
7111
7862
  metaTitle: string | null;
7112
7863
  metaDescription: string | null;
7113
7864
  metaKeywords: string | null;
@@ -7127,7 +7878,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
7127
7878
  visible: boolean;
7128
7879
  showPc: boolean;
7129
7880
  showMobile: boolean;
7130
- productSort: "RECENT" | "POPULAR" | "PRICE_LOW" | "PRICE_HIGH" | "NAME";
7881
+ productSort: "NAME" | "RECENT" | "POPULAR" | "PRICE_LOW" | "PRICE_HIGH";
7131
7882
  metaTitle: string | null;
7132
7883
  metaDescription: string | null;
7133
7884
  metaKeywords: string | null;
@@ -7146,7 +7897,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
7146
7897
  visible: boolean;
7147
7898
  showPc: boolean;
7148
7899
  showMobile: boolean;
7149
- productSort: "RECENT" | "POPULAR" | "PRICE_LOW" | "PRICE_HIGH" | "NAME";
7900
+ productSort: "NAME" | "RECENT" | "POPULAR" | "PRICE_LOW" | "PRICE_HIGH";
7150
7901
  metaTitle: string | null;
7151
7902
  metaDescription: string | null;
7152
7903
  metaKeywords: string | null;
@@ -7166,7 +7917,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
7166
7917
  visible: boolean;
7167
7918
  showPc: boolean;
7168
7919
  showMobile: boolean;
7169
- productSort: "RECENT" | "POPULAR" | "PRICE_LOW" | "PRICE_HIGH" | "NAME";
7920
+ productSort: "NAME" | "RECENT" | "POPULAR" | "PRICE_LOW" | "PRICE_HIGH";
7170
7921
  metaTitle: string | null;
7171
7922
  metaDescription: string | null;
7172
7923
  metaKeywords: string | null;
@@ -7185,7 +7936,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
7185
7936
  visible: boolean;
7186
7937
  showPc: boolean;
7187
7938
  showMobile: boolean;
7188
- productSort: "RECENT" | "POPULAR" | "PRICE_LOW" | "PRICE_HIGH" | "NAME";
7939
+ productSort: "NAME" | "RECENT" | "POPULAR" | "PRICE_LOW" | "PRICE_HIGH";
7189
7940
  metaTitle: string | null;
7190
7941
  metaDescription: string | null;
7191
7942
  metaKeywords: string | null;
@@ -7214,7 +7965,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
7214
7965
  visible: boolean;
7215
7966
  showPc: boolean;
7216
7967
  showMobile: boolean;
7217
- productSort: "RECENT" | "POPULAR" | "PRICE_LOW" | "PRICE_HIGH" | "NAME";
7968
+ productSort: "NAME" | "RECENT" | "POPULAR" | "PRICE_LOW" | "PRICE_HIGH";
7218
7969
  metaTitle: string | null;
7219
7970
  metaDescription: string | null;
7220
7971
  metaKeywords: string | null;
@@ -7233,7 +7984,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
7233
7984
  visible: boolean;
7234
7985
  showPc: boolean;
7235
7986
  showMobile: boolean;
7236
- productSort: "RECENT" | "POPULAR" | "PRICE_LOW" | "PRICE_HIGH" | "NAME";
7987
+ productSort: "NAME" | "RECENT" | "POPULAR" | "PRICE_LOW" | "PRICE_HIGH";
7237
7988
  metaTitle: string | null;
7238
7989
  metaDescription: string | null;
7239
7990
  metaKeywords: string | null;
@@ -7330,6 +8081,16 @@ export declare function createStoreClient(options: StoreClientOptions): {
7330
8081
  productName: string;
7331
8082
  optionId: string | null;
7332
8083
  optionName: string | null;
8084
+ optionSelections: {
8085
+ kind: string;
8086
+ groupName: string;
8087
+ valueName: string;
8088
+ additionalPrice: number;
8089
+ }[];
8090
+ customInputs: {
8091
+ label: string;
8092
+ value: string;
8093
+ }[];
7333
8094
  sellerCode: string | null;
7334
8095
  fulfillmentSnapshot: UnknownFulfillment | {
7335
8096
  type: "SHIPPING";
@@ -7405,6 +8166,16 @@ export declare function createStoreClient(options: StoreClientOptions): {
7405
8166
  productName: string;
7406
8167
  optionId: string | null;
7407
8168
  optionName: string | null;
8169
+ optionSelections: {
8170
+ kind: string;
8171
+ groupName: string;
8172
+ valueName: string;
8173
+ additionalPrice: number;
8174
+ }[];
8175
+ customInputs: {
8176
+ label: string;
8177
+ value: string;
8178
+ }[];
7408
8179
  sellerCode: string | null;
7409
8180
  fulfillmentSnapshot: UnknownFulfillment | {
7410
8181
  type: "SHIPPING";
@@ -7508,6 +8279,16 @@ export declare function createStoreClient(options: StoreClientOptions): {
7508
8279
  productName: string;
7509
8280
  optionId: string | null;
7510
8281
  optionName: string | null;
8282
+ optionSelections: {
8283
+ kind: string;
8284
+ groupName: string;
8285
+ valueName: string;
8286
+ additionalPrice: number;
8287
+ }[];
8288
+ customInputs: {
8289
+ label: string;
8290
+ value: string;
8291
+ }[];
7511
8292
  sellerCode: string | null;
7512
8293
  fulfillmentSnapshot: UnknownFulfillment | {
7513
8294
  type: "SHIPPING";
@@ -7566,6 +8347,16 @@ export declare function createStoreClient(options: StoreClientOptions): {
7566
8347
  productName: string;
7567
8348
  optionId: string | null;
7568
8349
  optionName: string | null;
8350
+ optionSelections: {
8351
+ kind: string;
8352
+ groupName: string;
8353
+ valueName: string;
8354
+ additionalPrice: number;
8355
+ }[];
8356
+ customInputs: {
8357
+ label: string;
8358
+ value: string;
8359
+ }[];
7569
8360
  sellerCode: string | null;
7570
8361
  fulfillmentSnapshot: UnknownFulfillment | {
7571
8362
  type: "SHIPPING";
@@ -10169,6 +10960,10 @@ export declare function createStoreClient(options: StoreClientOptions): {
10169
10960
  slugChangesRemaining: number;
10170
10961
  createdAt: string;
10171
10962
  updatedAt: string;
10963
+ suspension?: {
10964
+ reason: string | null;
10965
+ suspendedAt: string | null;
10966
+ } | null | undefined;
10172
10967
  } | null;
10173
10968
  }>;
10174
10969
  /** `GET /v1/storefront/slug-availability?slug=` — 슬러그를 쓸 수 있는가 */
@@ -10219,6 +11014,10 @@ export declare function createStoreClient(options: StoreClientOptions): {
10219
11014
  slugChangesRemaining: number;
10220
11015
  createdAt: string;
10221
11016
  updatedAt: string;
11017
+ suspension?: {
11018
+ reason: string | null;
11019
+ suspendedAt: string | null;
11020
+ } | null | undefined;
10222
11021
  }>;
10223
11022
  /** `POST /v1/storefront/site/template` — 템플릿을 바꾼다. 새 버전을 만들고 기본으로 곧바로 발행한다 */
10224
11023
  changeTemplate: (body: ChangeStorefrontTemplateRequest) => Promise<{
@@ -10262,6 +11061,10 @@ export declare function createStoreClient(options: StoreClientOptions): {
10262
11061
  slugChangesRemaining: number;
10263
11062
  createdAt: string;
10264
11063
  updatedAt: string;
11064
+ suspension?: {
11065
+ reason: string | null;
11066
+ suspendedAt: string | null;
11067
+ } | null | undefined;
10265
11068
  }>;
10266
11069
  /** `GET /v1/storefront/site/versions` — 버전 목록(최신 먼저) */
10267
11070
  listVersions: () => Promise<{
@@ -10320,6 +11123,10 @@ export declare function createStoreClient(options: StoreClientOptions): {
10320
11123
  slugChangesRemaining: number;
10321
11124
  createdAt: string;
10322
11125
  updatedAt: string;
11126
+ suspension?: {
11127
+ reason: string | null;
11128
+ suspendedAt: string | null;
11129
+ } | null | undefined;
10323
11130
  }>;
10324
11131
  /** `POST /v1/storefront/site/rollback` — 이전 발행 버전으로 되돌린다(재빌드 없음) */
10325
11132
  rollback: (body?: RollbackStorefrontRequest) => Promise<{
@@ -10363,6 +11170,10 @@ export declare function createStoreClient(options: StoreClientOptions): {
10363
11170
  slugChangesRemaining: number;
10364
11171
  createdAt: string;
10365
11172
  updatedAt: string;
11173
+ suspension?: {
11174
+ reason: string | null;
11175
+ suspendedAt: string | null;
11176
+ } | null | undefined;
10366
11177
  }>;
10367
11178
  /** `PUT /v1/storefront/site/slug` — 슬러그를 바꾼다. 옛 슬러그는 90일 보류되고 새 주소로 301한다 */
10368
11179
  changeSlug: (body: ChangeStorefrontSlugRequest) => Promise<{
@@ -10406,6 +11217,10 @@ export declare function createStoreClient(options: StoreClientOptions): {
10406
11217
  slugChangesRemaining: number;
10407
11218
  createdAt: string;
10408
11219
  updatedAt: string;
11220
+ suspension?: {
11221
+ reason: string | null;
11222
+ suspendedAt: string | null;
11223
+ } | null | undefined;
10409
11224
  }>;
10410
11225
  /** `PUT /v1/storefront/site/visibility` — 오픈 준비 중 ↔ 공개 */
10411
11226
  setVisibility: (body: SetStorefrontVisibilityRequest) => Promise<{
@@ -10449,6 +11264,10 @@ export declare function createStoreClient(options: StoreClientOptions): {
10449
11264
  slugChangesRemaining: number;
10450
11265
  createdAt: string;
10451
11266
  updatedAt: string;
11267
+ suspension?: {
11268
+ reason: string | null;
11269
+ suspendedAt: string | null;
11270
+ } | null | undefined;
10452
11271
  }>;
10453
11272
  /**
10454
11273
  * `POST /v1/storefront/site/preview-link` — 오픈 준비 중인 사이트를 구성원이 볼 수 있는 5분짜리 링크.
@@ -10500,6 +11319,10 @@ export declare function createStoreClient(options: StoreClientOptions): {
10500
11319
  slugChangesRemaining: number;
10501
11320
  createdAt: string;
10502
11321
  updatedAt: string;
11322
+ suspension?: {
11323
+ reason: string | null;
11324
+ suspendedAt: string | null;
11325
+ } | null | undefined;
10503
11326
  }>;
10504
11327
  /** `GET /v1/storefront/site/editing` — 편집 환경 상태(열린 환경·동시 상한·미리보기 인증서) */
10505
11328
  getEditing: () => Promise<{
@@ -11172,6 +11995,7 @@ export declare const couponRejectReasonSchema: z.ZodEnum<{
11172
11995
  NO_ELIGIBLE_ITEMS: "NO_ELIGIBLE_ITEMS";
11173
11996
  MIN_ORDER_AMOUNT: "MIN_ORDER_AMOUNT";
11174
11997
  LINE_NOT_ELIGIBLE: "LINE_NOT_ELIGIBLE";
11998
+ LINE_AMBIGUOUS: "LINE_AMBIGUOUS";
11175
11999
  NO_DISCOUNT: "NO_DISCOUNT";
11176
12000
  }>;
11177
12001
  export type CouponRejectReason = z.infer<typeof couponRejectReasonSchema>;
@@ -11841,6 +12665,19 @@ export declare const orderWebhookEventDataSchema: z.ZodObject<{
11841
12665
  [x: string]: unknown;
11842
12666
  type: string;
11843
12667
  }>>]>>;
12668
+ itemOptions: z.ZodOptional<z.ZodArray<z.ZodObject<{
12669
+ orderItemId: z.ZodString;
12670
+ optionSelections: z.ZodArray<z.ZodObject<{
12671
+ kind: z.ZodString;
12672
+ groupName: z.ZodString;
12673
+ valueName: z.ZodString;
12674
+ additionalPrice: z.ZodNumber;
12675
+ }, z.core.$strip>>;
12676
+ customInputs: z.ZodArray<z.ZodObject<{
12677
+ label: z.ZodString;
12678
+ value: z.ZodString;
12679
+ }, z.core.$strip>>;
12680
+ }, z.core.$strip>>>;
11844
12681
  }, z.core.$strip>;
11845
12682
  export type OrderWebhookEventData = z.infer<typeof orderWebhookEventDataSchema>;
11846
12683
  /**
@@ -12004,6 +12841,19 @@ export declare const orderWebhookEventSchema: z.ZodObject<{
12004
12841
  [x: string]: unknown;
12005
12842
  type: string;
12006
12843
  }>>]>>;
12844
+ itemOptions: z.ZodOptional<z.ZodArray<z.ZodObject<{
12845
+ orderItemId: z.ZodString;
12846
+ optionSelections: z.ZodArray<z.ZodObject<{
12847
+ kind: z.ZodString;
12848
+ groupName: z.ZodString;
12849
+ valueName: z.ZodString;
12850
+ additionalPrice: z.ZodNumber;
12851
+ }, z.core.$strip>>;
12852
+ customInputs: z.ZodArray<z.ZodObject<{
12853
+ label: z.ZodString;
12854
+ value: z.ZodString;
12855
+ }, z.core.$strip>>;
12856
+ }, z.core.$strip>>>;
12007
12857
  }, z.core.$strip>;
12008
12858
  id: z.ZodString;
12009
12859
  createdAt: z.ZodString;
@@ -12204,6 +13054,19 @@ export declare const webhookEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
12204
13054
  [x: string]: unknown;
12205
13055
  type: string;
12206
13056
  }>>]>>;
13057
+ itemOptions: z.ZodOptional<z.ZodArray<z.ZodObject<{
13058
+ orderItemId: z.ZodString;
13059
+ optionSelections: z.ZodArray<z.ZodObject<{
13060
+ kind: z.ZodString;
13061
+ groupName: z.ZodString;
13062
+ valueName: z.ZodString;
13063
+ additionalPrice: z.ZodNumber;
13064
+ }, z.core.$strip>>;
13065
+ customInputs: z.ZodArray<z.ZodObject<{
13066
+ label: z.ZodString;
13067
+ value: z.ZodString;
13068
+ }, z.core.$strip>>;
13069
+ }, z.core.$strip>>>;
12207
13070
  }, z.core.$strip>;
12208
13071
  id: z.ZodString;
12209
13072
  createdAt: z.ZodString;